
/*

	Preloader.js
	version 0.1.3
	MIT / (More accurately - X11 License)
	First Created: 5/27/2010
	Last Revised: 07/16/2010
	http://www.edwardhotchkiss.com
	edward@edwardhotchkiss.com


*/

/*

USAGE:

----

Inclusion:

<script type="text/javascript" src="Preloader.js"></script>

----

CSS File:

#preloader {
	position: absolute;
	height: 1px;
	top: 50%;
	background: #f920a2;
	width: 0;
}

----

HTML / Execution:

<script type="text/javascript">
			
	// Preload
	$.Preloader({
	
		onBefore : function() {
			// method before preloading? Optional
			doSomethingBeforeLoading();
		},
		
		onAfter : function() {
			// Optional, Display your site? .fadeIn, .animate( etc ...
			animateMySite();
			
		}
	
	});
		
</script>

*/



(function($) {

	$.Preloader = function(options) {

    	var settings = {
			itemsLoaded     : 0,
			loaded 		    : false,
			items           : new Array(),
    		onBefore        : function() {},
			onAfter         : function() {},
			onError         : function() {},
    	};

    	if (options) {
        	$.extend(settings, options);
   	 	};

		settings.onBefore.apply(this);
		
		var winWidth = $(window).width();
		var newLeft = (winWidth / 2) - 200;
		var finishLeft = (winWidth + 400) + "px"
		$("#preloader").css("left", newLeft + "px");
		
		function preloadImages() {
			$("body").find("img").each(function() {
				url = $(this).attr("src");
				settings.items.push(url);
				onProgress();
			});
		};
		
		function onProgress() {
			settings.itemsLoaded++;
			animatePreloader();
		};
		
		function animatePreloader() {
			percentage = (settings.items.length / settings.itemsLoaded) * 100;
			newWidth = percentage * 4;
			if (percentage > 99) {
				$("#preloader").stop().animate({width : newWidth + "px"}, 1000, "easeOutQuad", function() {
					$("#overlay").fadeOut("slow", function() {
						$("#overlay").remove();
					});
					settings.onAfter.apply(this);
					$("#preloader").animate({"left" : finishLeft}, 1500, "easeOutElastic", function() {
						$("#preloader").remove();
					});
				});
			} else {
				$("#preloader").stop().animate({width: newWidth + "px"}, 1000, "easeOutQuad");
			}
		};
		
		preloadImages();
	
	};
	
})(jQuery);
