/**
 * Maseto
 * ------------------------------------------
 *
 * autor:               Josep (josepramon@alcaraz.com)
 * fitxa:               6842
 * data creacio:        25-07-2007
 * ultima modificacio:  17-11-2008
 *
 *
 */


$(document).ready(function()
{
  $("#submitBtn, .submitBtn").after("<div class='buttonEnding'></div>");
  
  $("body.home #main").append("<div id='bottomStrip'></div>");
  
  $(".external").attr("target", "_blank");
  
  $("ul#nuestra_gama_menuHome a").parent("li").bind( "click", function(e){ window.location = $("a", this)[0]; } ).css({cursor:'pointer'});
  $("ul#tBuscador").css("cursor", "pointer");
  
  $("#tryAgain, #volver").bind( "click", function(){ history.back(); return false; } );
  
  
  // rotación fotos maquinas
  $("#maquinasFoto li a").bind("click", function()
    {
      var oldImgPath = $("li.big img").attr("src");
      $("li.big img").attr("src", String($(this).attr("href")).replace(/thumbs/, "full")  );
      $(this).attr("href", oldImgPath).children("img").attr("src", oldImgPath.replace(/full/, "thumbs"));
      return false;
    }
  );
    
  navMenu.init();

  formContacto.init();
  
  // css adicional popups
  var style = document.createElement("link");
  style.setAttribute("type", "text/css");
  style.setAttribute("media", "screen");
  style.setAttribute("rel", "stylesheet");
  style.setAttribute("href", "/css/?thickBox.css");
  document.getElementsByTagName("head")[0].appendChild(style);
  
  
  // flash home
  if(document.getElementById("imgPrincipalHome"))
  {
    var fo = new SWFObject("/images/flash/maseto.swf", "fHome", "621", "168", "8.0.15", "#cccccc", true);
    fo.addParam("allowScriptAccess", "always");
    fo.write("imgPrincipalHome");
  }
  
  // flash mapa
  if(document.getElementById("mapaMaseto"))
  {
    var fo = new SWFObject("/images/flash/mapa.swf", "fMapa", "645", "415", "8.0.15", "#cccccc", true);
    fo.addParam("allowScriptAccess", "always");
    fo.addParam("wmode", "transparent");
    fo.write("mapaMaseto");
  }
  if(document.getElementById("mapaMaseto_in"))
  {
    var fo = new SWFObject("/images/flash/mapa_in.swf", "fMapa", "645", "415", "8.0.15", "#cccccc", true);
    fo.addParam("allowScriptAccess", "always");
    fo.addParam("wmode", "transparent");
    fo.write("mapaMaseto_in");
  }

	//video
	if(document.getElementById("videoES"))
	{
		var fo = new SWFObject("/images/flash/videoES.swf", "fVideoES", "512", "288", "9.0.0", "#cccccc", true);
		fo.addParam("allowScriptAccess", "always");
		fo.write("videoES");
	}
	if(document.getElementById("videoEN"))
	{
		var fo = new SWFObject("/images/flash/videoEN.swf", "fVideoEN", "512", "288", "9.0.0", "#cccccc", true);
		fo.addParam("allowScriptAccess", "always");
		fo.write("videoEN");
	}
	
	//buscador
	$("#fBuscador").hide();
	$("#tBuscador").css("cursor", "pointer").bind( "click", function(){ $("#fBuscador").slideToggle("fast"); } );
	

  setInterval("mainHeightFixer.fix()", 300);
  

	/*
		varios 'hacks' para solventar la lamentable implementación de css en el explorer
		como la falta de soporte para los child, adjacent sibling, y attribute selectors, y
		también para corregir algunas cositas sin sentido alguno que se producen solo en ese magnifico navegador o lo que sea
	*/
  if( $.browser.msie )
  {
    // no doporta contenido generado por css...
    $("ul.additionalInfo a").prepend("+ ");
    $("#header ul#utilities li").not($(":first-child")).prepend("/");
    
    // no doporta attribute selectors...
    $("input[@type='text']").addClass("text");
		
		
		// reglas solo para explorer 6.x
		if( parseFloat($.browser.version) < 7 )
		{
			$("#main > *:first-child").css("margin-top", "4.2em");
			
			$("body.home #main > *:first-child").css("margin-top", "0px");
			
			$("body.panel #main > *:first-child").css("margin-top", "1em");			
			
			$("div.novedades_home div.left, Div.ades_home div.right").each(function(i){ $(this).css("background", "#ededef url(" + $(this).find("img").attr("src") + ") no-repeat 20px 20px").find("img").remove(); });
			
			$("#nuestra_gama_menuHome li").each(function(i){ $(this).css("background", "url(" + String($(this).find("img").attr("src")).replace(/.png/, ".jpg") + ") no-repeat right bottom").find("img").remove(); });
			
			$("img[@src$=.png]").not($(".opaque")).ifixpng();
		}
  }

});


$("form").submit( function(){$("*:disabled").removeAttr("disabled");});




var mainHeightFixer = {

	isFixed : false,
	
	originalPadding : null,
	
	fix : function()
	{
		if(mainHeightFixer.isFixed){ return; }
		if(!document.getElementById("secondary") || !document.getElementById("main")) return;
		
		if(document.getElementById("secondary").offsetHeight > (document.getElementById("main").offsetHeight + parseInt($("#main").css("padding-bottom") )))
		{
			mainHeightFixer.isFixed = true;
			mainHeightFixer.originalPadding = $("#main").css("padding-bottom");
			$("#main").css("padding-bottom", "0px");
			$("#main").css("padding-bottom", document.getElementById("secondary").offsetHeight - document.getElementById("main").offsetHeight  );
		}
		else if( document.getElementById("secondary").offsetHeight < (document.getElementById("main").offsetHeight + parseInt($("#main").css("padding-bottom") )) )
		{
			if( $.browser.msie && (parseFloat($.browser.version) < 7) ) return;
			if( mainHeightFixer.isFixed && (mainHeightFixer.originalPadding != null) )
			{
				$("#main").css("padding-bottom", parseInt(mainHeightFixer.originalPadding) + "px");
				mainHeightFixer.isFixed = false;
			}
		}
	}

};




var navMenu = {
  
  isInited : false,
  
  init : function()
  {
    $("#mainMenu > ul > li ul").toggle();
    $("#mainMenu li > *:first-child").filter(function() { return $("a", this).length === 0; }).bind( "click", function(e){ $(this).next("ul").slideToggle("fast"); } );
    navMenu.isInited = true;
  }

};




var formContacto = {
	
	returnVal : true,
	
	lang : 0,
	
	errors : new Array('Todos los campos deben estar rellenos para poder enviar la solicitud', 'All the fields must be filled in to send the form'),
	
	init : function()
	{
		formContacto.lang = (String($("#fContacto").attr('action')).indexOf('/en/') > -1) ? 1 : 0;
		
		$("#fContacto").submit( function ()
		{
			$("#fContacto input, #fContacto textarea").removeClass("error");
			if(!formContacto.validate())
			{
				alert( formContacto.errors[formContacto.lang] );
				return false;
			}
		});
	},
	
	validate : function()
	{
		this.returnVal = true;
		
		formValidator.init();
		
		$.each($("#fContacto input, #fContacto textarea"), function(i, n)
		{
			formValidator.checkRequired($(n));
		});
		
		if(!formValidator.returnVal){ this.returnVal = false; }
		
		for(var i = 0; i<formValidator.erroneousFields.length; i++)
		{
			formValidator.erroneousFields[i].addClass("error");
		}
		
		return this.returnVal;
	}
};




var formValidator = {

  errors		  : Array,
  erroneousFields : Array,
  returnVal		  : true,
  
  init : function()
  {
	formValidator.errors		  = [];
	formValidator.erroneousFields = [];
	formValidator.returnVal		  = true;
  },
  
  checkRequired : function(el)
  {
	if( (el.val() === "") || (el.val() === null) || (el.val() == el.attr("rel")) )
	{
	  formValidator.errors.push("El campo " + String(el.attr("id")).replace(/^f/,"") + " es obligatorio");
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  },
  
  checkMaxLength : function(els, length)
  {
	for(var i=0; i<els.length; i++)
	{
	  if(String(els[i].val()).length > length)
	  {
		 formValidator.errors.push("El campo " + String(els[i].attr("id")).replace(/^f/,"") + " no puede contener mas de " + length + " dígitos");
		 formValidator.returnVal = false;
		 formValidator.erroneousFields.push(els[i]);
	  }
	}
  },
  
  checkValidMail : function(el)
  {
	var pattern	 = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!pattern.test(el.val()))
	{  
	  formValidator.errors.push("Debe introducir una direccion de mail correcta en el campo " + String(el.attr("id")).replace(/^f/,""));
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  },
  
  checkNumeric : function(el)
  {
	if(isNaN(el.val()))
	{
	  formValidator.errors.push("El campo " + String(el.attr("id")).replace(/^f/,"") + " solo puede contener números");
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  },
  
  checkRange : function(el, minValue, maxValue)
  {
	var val = el.val();
	if(isNaN(val) || !( (val >= minValue) && (val <= maxValue) ) )
	{
	  formValidator.errors.push("El campo " + String(el.attr("id")).replace(/^f/,"") + " debe contener un valor numérico emprendido entre " + minValue + " y " + maxValue);
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  },
  
  checkCp : function(el)
  {
	var cp = el.val();
	if( !( !isNaN(cp) && (cp.length = 5) && (parseInt(cp) >= 1001) && (parseInt(cp) <= 52999) && (String(cp).indexOf("000", 2) == -1) ) )
	{
	  formValidator.errors.push("El campo " + String(el.attr("id")).replace(/^f/,"") + " debe contener un código postal válido, formado por 5 núneros, entre el \"01001\" y el \"52999\" y no puede terminar en \"XX000\"");
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  },

  checkFileInputExtension : function(el, ext)
  {
	if(String(el.val()).toLowerCase().substr(String(el.val()).lastIndexOf('.')) != ext)
	{
	  formValidator.errors.push("El campo " + String(el.attr("id")).replace(/^f/,"") + " solo admite archivos con la extensión " + ext);
	  formValidator.returnVal = false;
	  formValidator.erroneousFields.push(el);
	}
  }
  
};