// 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.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 : 'img/preloader.gif'

		

		}).hide().appendTo("body");

	

	

	

	timer = setInterval(function(){

		

		if(icon[0].complete==true)

		{

			clearInterval(timer);

			init();

			 icon.remove();

			return;

		}

		

		},100);

	

	}

	

	
