/*
*
* Preload imágenes
*
*/


jQuery.fx.off = false;


$.Preload = function( imgs, callback )
{
    if( !$.isArray(imgs) ){ imgs = [ imgs ];};
	
    var cantidad = imgs.length;
    var loaded = 0;

    $.each( imgs, function( img, url ){
        ( img = new Image() ).onload = function(e){
            this.onload = null;			
            if( ++loaded == cantidad ){
                callback(imgs);
			};
        };
        img.src = url;
    });
};


$.CuentaImagenes = function( object )
{
	var cantidad = 0;	
	for( var property in object ){
		if( object.hasOwnProperty( property ) ){
			cantidad++;
		};
    };
	return cantidad;
};


$.SetBackgroundImage = function (element, img, repeat)
{
	$( element ).css({'backgroundImage': 'url("' + img + '")'});
	
	if(!repeat){
		$( element ).css({'backgroundRepeat':'no-repeat'});
	}else{
		$( element ).css({'backgroundRepeat':repeat});
	};
};


$(function () {

	var CHUCK_WIDTH = 100;
	var CHUCK = $('#barraPreload');
	var DIV_TAPA_TODO = $('#tapaPreload');
	var DIV_LOADER = $('#txtPreload');
	var TXT_PORCENTAJE  = $( 'i', DIV_LOADER[0] );
	var CONTENIDO = $('#chupachups');
	var CONTENIDO_WIDTH = parseFloat( CONTENIDO.css('width') );	
	var CONTENIDO_HEIGHT = parseFloat($('#contenido').css('height')) + parseFloat($('#contacto').css('height'));
	
	DIV_TAPA_TODO.css('height',CONTENIDO_HEIGHT+'px');

	
	var IMAGENES = {
		"imgs/fondo.jpg": 			function( img ){$.SetBackgroundImage('#chupachups',img);},
		"imgs/mon.jpg": 			function( img ){$.SetBackgroundImage('#contenido .home',img);},
		"imgs/logo.png": 			function( img ){$.SetBackgroundImage('#logo',img);$.SetBackgroundImage('#slogan',img);},
		"imgs/promo.png":	 		function( img ){	},
		"imgs/chuck.png": 			function( img ){$.SetBackgroundImage('.chuckPreload',img);$.SetBackgroundImage('#chuck',img);},
		"imgs/destprinc.png": 		function( img ){$.SetBackgroundImage('#dest0',img);},
		"imgs/dest1.png": 			function( img ){$.SetBackgroundImage('#dest1',img);},
		"imgs/dest2.png": 			function( img ){$.SetBackgroundImage('#dest2',img);},
		/*"imgs/dest3.png": 			function( img ){$.SetBackgroundImage('#dest3',img);},*/
		"imgs/bg_form.png": 		function( img ){$.SetBackgroundImage('#formulario',img);},
		"imgs/cometa.png": 			function( img ){$.SetBackgroundImage('#cometa',img);},
		"imgs/mon_contacto.png": 	function( img ){$.SetBackgroundImage('#sat_contacto',img);}/*,
		"imgs/mon_redes.png": 		function( img ){$.SetBackgroundImage('#sat_redes',img);}*/
		
	},imagenesDelPreload = ['imgs/bg.png','imgs/logoPreload.gif','imgs/estela.png','imgs/estela-cabeza.png','imgs/chuck.png'];
	


	$.Preload(imagenesDelPreload, function()
	{
		var cantidad = $.CuentaImagenes( IMAGENES ), cantCargadas = 0;
		var update = 100/cantidad;
		var last = 0, l = 0, stopCargaImagenes = false;
		
		$.each(IMAGENES, function( url )
		{
			$.Preload( url.split(","), function( imgs )
			{
				if(stopCargaImagenes){ return;};				
				
				IMAGENES[url](imgs);
				IMAGENES[url].executed = true;		
			
				CHUCK.animate({width:Math.ceil(last += update)+'%'},100,"linear",CheckFin);
			});
		});
		
		
		$(window).load(function()
		{
			stopCargaImagenes = true;			
			CHUCK.stop(true);
			
			$.each( IMAGENES, function( url ){
				if( !this.executed ){
					this( url.split(",") );
				};
			});
			
			var f = cantCargadas, $last = cantCargadas*update;
			
			while( ++f <= cantidad ){
				CHUCK.animate( { width: Math.ceil($last += update) + '%' }, 100, "linear", CheckFin );
			};
		});
		
		
		function CheckFin()
		{		
			if( ++cantCargadas == cantidad )
			{				
				CHUCK.css( 'width', '100%' );
				TXT_PORCENTAJE .html(100);				
				
				ColaAcciones( false, function(){ /*  ACCIÓN FINAL: */	FUNCs.go();});
				
			} else {				
				TXT_PORCENTAJE .html( Math.ceil(l += update) );
			};
		};
	});
	

	function ColaAcciones(reverse, callback)
	{	
		var accionNum = 0;		
		var acciones  = [
			function(){ CHUCK.animate({'width':CONTENIDO_WIDTH+CHUCK_WIDTH+"%"},200,"swing",SiguienteAccion);},	
			
			function(){ CHUCK.animate({'opacity':"0"},300,"swing",SiguienteAccion );},
			
			function(){ DIV_LOADER.animate({'opacity':"0"},300,"swing",SiguienteAccion );},
			
			function(){ CHUCK.css('display','none'); CHUCK.remove(); DIV_LOADER.remove(); SiguienteAccion();},
			
			function(){ DIV_TAPA_TODO.animate({'opacity':"0"},800,"swing",SiguienteAccion );},
			
			function(){ DIV_TAPA_TODO.css( 'display', 'none'); SiguienteAccion();},
			
			function(){ DIV_TAPA_TODO.remove(); SiguienteAccion();}			
		];
		
		callback = callback || function(){};
		
		if( reverse ){
			var primeraAccion = acciones.length;
			acciones.unshift( callback );
		} else {
			var primeraAccion = 0;
			acciones.push( callback );
		};	
		
		acciones[primeraAccion]();		
		
		function SiguienteAccion(){
			acciones[Math.abs(primeraAccion - ++accionNum)]();
		};
	};
	
});

