// Función que consigue dimensiones pantalla

// return : Struct (height & width)

function getWinSize()

{

	var size = new Object();

	size.w = document.documentElement.clientWidth;

	size.h = document.documentElement.clientHeight;

	return size;

} 

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() {

	    doneStatus = 0;

	    doneNow = 0;

		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 {

			jQuery(document).ready(function() {

				QueryLoader.spawnLoader();

				QueryLoader.getImages(QueryLoader.selectorPreload);

				QueryLoader.createPreloading();

			});

		}

        

        QueryLoader.assignHandlers();        

		

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

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

	},

	

	ieLoadFix: function() {

		if (jQuery.browser.msie) {

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

				QueryLoader.imgCallback();

			}

		}

	},

	

	imgCallback: function() {

		QueryLoader.doneNow ++;

		QueryLoader.animateLoader();

	},

	

	getImages: function(selector) {

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

			var url = "";

			

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

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

			} else if (typeof(jQuery(this).attr("src")) != "undefined" && jQuery(this).attr("tagName").toLowerCase() == "img") {

				var url = jQuery(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 = jQuery("<div></div>").appendTo(QueryLoader.selectorPreload);

		jQuery(QueryLoader.preloader).css({

			height: 	"0px",

			width:		"0px",

			overflow:	"hidden"

		});

		

        

		var length = QueryLoader.items.length; 

		QueryLoader.doneStatus = length;

		

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

			var imgLoad = jQuery("<img></img>");

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

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

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

				QueryLoader.imgCallback();

			});

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

		}

	},



	spawnLoader: function() {

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

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

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

			var position = "fixed";

		} else {

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

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

			var position = "absolute";

		}

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

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

		

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

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

		jQuery(QueryLoader.overlay).css({

			position: position,

			top: top,

			left: left,

			width: width + "px",

			height: height + "px"

		});

		

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

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

		

        

        // Colocamos capa en el centro

        var medidas   = getWinSize();

        var arriba    = medidas.h - jQuery('.Qloader').height() - 80;

        var izquierda = medidas.w - jQuery('.Qloader').width() - 50;

        arriba        /= 2;

        izquierda     /= 2;

        jQuery(QueryLoader.preloader).css({'top': arriba + 'px', 'left': izquierda + 'px'});

        

		jQuery(QueryLoader.loadBar).css({

			position : "absolute",

			top      : arriba + 'px',

            left     : izquierda + 'px'

		});

	},

	animateLoader: function() {

		var perc = (100 / QueryLoader.doneStatus) * QueryLoader.doneNow;

		if (perc > 99) {

            //$(QueryLoader.loadBar).css('width', '48px');

            jQuery(QueryLoader.loadBar).text('100%');	

			QueryLoader.doneLoad();			

		} else {

            //$(QueryLoader.loadBar).css('width', '48px');

            jQuery(QueryLoader.loadBar).text(Math.floor(perc) + '%');		

		}

	},

	assignHandlers: function() {

	   jQuery(window).bind('mousemove', function(e) {

        e.preventDefault();

        

        // Coords

        var x = e.clientX + 15;

        var y = e.clientY - 15;

        

        // Colocamos

        jQuery('.QLoader').css({'top': y + 'px', 'left': x +'px'});

        });

    

    jQuery(window).bind('mouseout', function(e) {

        e.preventDefault();

        // Colocamos capa en el centro

        var medidas   = getWinSize();

        var arriba    = medidas.h - jQuery('.Qloader').height();

        var izquierda = medidas.w - jQuery('.Qloader').width();

        arriba        /= 2;

        izquierda     /= 2;

        jQuery('.QLoader').css({'top': arriba + 'px', 'left': izquierda + 'px'});

        });

	},

	doneLoad: function() {

		//prevent IE from calling the fix

        if (jQuery.browser.msie)

		  clearTimeout(QueryLoader.ieTimeout);

		

		//The end animation, adjust to your likings

		jQuery(QueryLoader.overlay).fadeOut(1200, function() {

		  jQuery(QueryLoader.preloader).remove();

          jQuery('.QOverlay').remove();

          

          // Linea adicional

          if (jQuery('#capa_blur').size() == 1)

            jQuery('#capa_blur').fadeIn();

          

          jQuery(window).unbind('mousemove');

          jQuery(window).unbind('mouseout');

		});

		

		

	}

}
