// JavaScript Document
$.fn.preloader = function(options){

	var defaults = {
		delay: 200,
		preload_parent: "a",
		check_timer: 300,
		ondone: function(){ },
		oneachload: function(image){  },
		fadein: 500 
	};

	// variables declaration and precaching images and parent container
	var options = $.extend(defaults, options),
			root = $(this), images = root.find('img:not("#zoom_area")').css({'visibility':'hidden',opacity:0}), timer, counter = 0, i = 0, checkFlag = [], delaySum = options.delay,

	init = function() {

		timer = setInterval(function() {

			if ( counter >= checkFlag.length ) {
				clearInterval(timer);
				options.ondone();
				return;
			}

			for ( i = 0; i < images.length; i++ ) {
				if ( images[i].complete == true ) {
					if ( checkFlag[i] == false ) {
						checkFlag[i] = true;
						options.oneachload(images[i]);
						counter++;
						delaySum = delaySum + options.delay;
					}

					$(images[i]).css("visibility","visible").delay(delaySum).animate({
						opacity:1
					}, options.fadein, function() { 
						$(this).parent().removeClass("preloader");
					});
				}
			}

		}, options.check_timer) 
		
	};

	images.each(function() {
		if( $(this).parent(options.preload_parent).length == 0 ) {
			$(this).wrap("<a class='preloader' />");
		} else {
			$(this).parent().addClass("preloader");
			checkFlag[i++] = false;
		}
	}); 

	images = $.makeArray(images); 

	var icon = jQuery( "<img />", {
		id : 'loadingicon',
		src : '/images/kwiat_loader.gif'
	}).hide().appendTo("body");

	timer = setInterval(function() {
		if ( icon[0].complete == true ) {
			clearInterval(timer);
			init();
			icon.remove();
			return;
		}
	}, 100 );

};
