/* !preload */

(function($)
{
	
	$.fn.luglio7ImagePreload = function(params)
	{
		// settings
	
		var settings = {
			easing      : 'swing',
			duration	: 750,
			cssInit		: {"opacity" : 0},
			cssComplete	: {"opacity" : 1},
			init		: null,
			complete	: null,
	    };
	    
	    if(typeof(params) == "object")
	    {
	    	$.extend(settings, params);
	    }
	    
	    var img, classes, src, alt;
	    
	    // verify callbacks
	    
	    var completeEvent = false;
	    if(settings.complete)
	    	if(settings.complete.constructor == Function)
	    		completeEvent = true;
	    		
	    var initEvent = false;
	    if(settings.init)
	    	if(settings.init.constructor == Function)
	    		initEvent = true;
	    
	    this.each(function()
	    {
	    	alt		= $(this).attr("alt");
	    	classes	= $(this).attr("class");
	    	id		= $(this).attr("id");
	    	src		= $(this).attr("src");
	    	img 	= document.createElement("img");
	    	
	    	if(alt)
	    		img.setAttribute("alt", alt);
	    		
	    	if(id)
	    		img.setAttribute("id", id);
	    		
	    	if(classes)
	    		img.setAttribute("class", classes);
	    		
	    	$(img).css(settings.cssInit);
	    	$(this).replaceWith(img);
	    	
	    	// callback
	    	
	    	if(initEvent)
	    		settings.init(img);
	    	
	    	$(img).load(function(){
	            //$(this).fadeIn();
	            $(this).animate(settings.cssComplete,
	            {
	            	duration	: settings.duration,
	            	easing		: settings.easing,
	            	complete	: (completeEvent)? settings.complete(this) : null
	            });
	            $(this).removeClass("preload");
	        }).attr('src', src);
	    	
	    });
	    
	}
	
})(jQuery);
