/*
 	file: jquery.asyncImgLoader.js    
    file usage: load images async
    Author: Speed730
    Author URI: http://themeforest.net/user/Speed730
*/
(function($){
	$.fn.asyncLoader = function(options)
	{
		var defaults = {	
			fadeInTime: 1600, //show Image Speed,            
            imgPreloader: 'preloader', // Preloader Image Class
            callbackFn : '' // function triggred after loadding finished
            
		}, settings = $.extend({}, defaults, options);
		
		this.each(function(i)
		{
			var $this = $(this).addClass(settings.imgPreloader);
			var currentImg = $(this).find('img').css({opacity:0.0});
			var count = currentImg.length;			
			var img = new Image();
			currentImg.data('data', 
			{
				img_src : currentImg.attr("src"),
				img_alt : currentImg.attr("alt")								
			});			
			var img_data = 	currentImg.data('data');
						
			$this.css(
			{
				display : 'block'						
			});
			currentImg.remove();
			
			$(img).load(function()
			{
				$(this).css({opacity : 0}).appendTo($this)
				.animate({opacity: 1},settings.fadeInTime, function()
				{
					$this.removeClass(settings.imgPreloader);
					if(settings.callbackFn != '')
					{
						if( i == count)
						{							
							settings.callbackFn();							
						}								
					}
				});															
			}).attr("src", img_data.img_src).attr("alt", img_data.img_alt);	
		});		
		return this;
	}
})(jQuery);
