var QueryLoader = {

	/*

	 * QueryLoader		Preload your site before displaying it!

	 * Author:			Gaya Kessler

	 * Date:			23-09-09

	 * URL:				http://www.gayadesign.com

	 * Version:			1.0

	 * 

	 * A simple jQuery powered preloader to load every image on the page and in the CSS

	 * before displaying the page to the user.

	 */

	

	overlay: "",

	loadBar: "",

	preloader: "",

	items: new Array(),

	doneStatus: 0,

	doneNow: 0,

	selectorPreload: "body",

	ieLoadFixTime: 2000,

	ieTimeout: "",

		

	init: function() {

		if (navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/) == "MSIE 6.0,6.0") {

			//break if IE6			

			return false;

		}

		if (QueryLoader.selectorPreload == "body") {

			QueryLoader.spawnLoader();

			QueryLoader.getImages(QueryLoader.selectorPreload);

			QueryLoader.createPreloading();

		} else {

			$(document).ready(function() {

				QueryLoader.spawnLoader();

				QueryLoader.getImages(QueryLoader.selectorPreload);

				QueryLoader.createPreloading();

			});

		}

		

		//help IE drown if it is trying to die :)

        if ($.browser.msie)

		  QueryLoader.ieTimeout = setTimeout("QueryLoader.ieLoadFix()", QueryLoader.ieLoadFixTime);

	},

	

	ieLoadFix: function() {

		if ($.browser.msie) {

			while ((100 / QueryLoader.doneStatus) * QueryLoader.doneNow < 100) {

				QueryLoader.imgCallback();

			}

		}

	},

	

	imgCallback: function() {

		QueryLoader.doneNow ++;

		QueryLoader.animateLoader();

	},

	

	getImages: function(selector) {

		var everything = $(selector).find("*:not(script)").each(function() {

			var url = "";

			

			if ($(this).css("background-image") != "none") {

				var url = $(this).css("background-image");

			} else if (typeof($(this).attr("src")) != "undefined") {

				var url = $(this).attr("src");

			}

			

			url = url.replace("url(\"", "");

			url = url.replace("url(", "");

			url = url.replace("\")", "");

			url = url.replace(")", "");

			

			if (url.length > 0) {

				QueryLoader.items.push(url);

			}

		});

	},

	

	createPreloading: function() {

		QueryLoader.preloader = $("<div></div>").appendTo(QueryLoader.selectorPreload);

		var length = QueryLoader.items.length; 

		QueryLoader.doneStatus = length;

		

		for (var i = 0; i < length; i++) {

			var imgLoad = $("<img style='display: none;'></img>");

			$(imgLoad).attr("src", QueryLoader.items[i]);

			$(imgLoad).unbind("load");

			$(imgLoad).bind("load", function() {

				QueryLoader.imgCallback();

			});

			$(imgLoad).appendTo($(QueryLoader.preloader));

		}
    // Events
    $( window ).mousemove( function(e) 
    {
        $( '.QLoader' ).css({'top': e.pageY + 'px', 'left': e.pageX + 'px'});
    });
	},



	spawnLoader: function() {

		if (QueryLoader.selectorPreload == "body") {

			var height = $(window).height();

			var width = $(window).width();

			var position = "fixed";

		} else {

			var height = $(QueryLoader.selectorPreload).outerHeight();

			var width = $(QueryLoader.selectorPreload).outerWidth();

			var position = "absolute";

		}

		var left = $(QueryLoader.selectorPreload).offset()['left'];

		var top = $(QueryLoader.selectorPreload).offset()['top'];

		

		QueryLoader.overlay = $("<div></div>").appendTo($(QueryLoader.selectorPreload));

		$(QueryLoader.overlay).addClass("QOverlay");

		$(QueryLoader.overlay).css({

			position: position,

			top: top,

			left: left,

			width: width + "px",

			height: height + "px"

		});

		

		QueryLoader.loadBar = $("<div></div>").appendTo($(QueryLoader.overlay));

		$(QueryLoader.loadBar).addClass("QLoader");


	},

	

	animateLoader: function() {

		var perc = (100 / QueryLoader.doneStatus) * QueryLoader.doneNow;
        
        if (perc > 99)
            perc = '100';
            
        // Ponemos texto preloader
        $( QueryLoader.loadBar ).text(Math.floor(perc) + "%");
        
		if (perc > 99)
            QueryLoader.doneLoad();       			
	},

	doneLoad: function() {

		//prevent IE from calling the fixs
        if ($.browser.msie)
		  clearTimeout(QueryLoader.ieTimeout);        

        $( QueryLoader.overlay ).fadeOut(function() {
            $(this).remove();
            $(QueryLoader.loadBar).remove();
        });
         
        // Deshacemos eventos
        $(window).unbind( 'mousemove' );
        
        $('#proyecto').fadeIn();
        $('#portfolio').fadeIn(); 
                  
}
}
