$(document).ready(function()
{
	// serveis: btn + info: generat per js pq semànticament no té sentit que estigui en la pàgina
	$("body.servicios #sectionHeader ul").after('<p id ="masInfo">Pulsar para + <abbr title="información">info</abbr></p>');
	
	var wWidth = 0;
	
	if (window.innerWidth)
	{
	  wWidth = window.innerWidth;
	}
	else if (document.documentElement && document.documentElement.clientWidth)
	{
	  wWidth = document.documentElement.clientWidth;
	}
	else if (document.body)
	{
	  wWidth = document.body.clientWidth;
	}
	
	if(wWidth > 1000)
	{
		$("body.servicios #masInfo").css("bottom", "0");
	}
	
	
	initExternalLinks();
	initVideoLinks();
	
	
	
	
	// transicions basades en ajax en la secció serveis
	$("body.servicios #contentsMain").wrap("<div id='contentsWrapper'></div");
	
	$("body.servicios #sectionHeader a").bind("click", function()
	{
		var url = $(this).attr("href");
		$("#contentsMain").fadeOut("slow", function()
		{
			$("#contentsMain").remove();
			
			$("#contentsWrapper").append('<img src="/img/ui/loadingAnimation.gif" id="loadingAnimation" />')
			
			$("#loadingAnimation").hide().fadeIn("fast");
			
			$("#contentsWrapper").load( url + " #contentsMain", function()
			{
				initExternalLinks();
				initVideoLinks();
				
				$("#loadingAnimation").fadeOut(function()
				{
					$("#contentsMain").hide().fadeIn("slow");
				});
			});
		});
		return false;
	});
	
	
	
	
	// forms
	$.each($("input[type=text], textarea"), function(i, n)
	{
		$(n).attr("rel", (($(n).attr("id") != "") && ( !$(n).is("textarea") )) ? document.getElementById($(n).attr("id")).getAttribute("value") : $(n).val() );
		
		$(n).focus( function()
		{
			if($(this).val() == $(this).attr("rel")){ $(this).val(""); }
		});
		$(n).blur( function()
		{
			if($(this).val() === ""){ $(this).val($(this).attr("rel")); }
		});
	});
	
	$("#fSubmit").css("cursor", "pointer");
	
	formContacto.init();	
	
	
	
	
	// css hacks & fixes
	$("body.clientes #sectionHeader ul").append( "<li>" + $("body.clientes #sectionHeader span").html() + "</li>" )
	$("body.clientes #sectionHeader li:last").css("text-transform", "none");
	$("body.clientes #sectionHeader span").remove();
	
	
	if( $.browser.msie )
	{
		$("body.home #contents h1 strong:first").addClass("homeDest");
		
		$("#sectionHeader li:not(:last)").append(",")
	}
	
	if( $.browser.safari )
	{
		$("#contents").css("border-bottom", "solid 1px transparent");
	}
	
	if( $.browser.msie || $.browser.mozilla )
	{
		$("body.servicios #sectionHeader li:even").addClass("even");
	}
});




/*
 * links externs
 * en xhtml extricte no existeix l'atribut 'target'
 *
 */
function initExternalLinks()
{
	$('a[@href^="http://"]').bind("click", function()
	{
		window.open($(this).attr("href"));
		return false;
	});
}

function initVideoLinks()
{
	$('#videoEscandella').bind("click", function()
	{
		window.open($(this).attr("href"), "video", "width=320, height=280");
		return false;
	});
	
	$('#videoIbersegur').bind("click", function()
	{
		window.open($(this).attr("href"), "video", "width=480, height=360");
		return false;
	});
}




var formContacto = {
	
	returnVal : true,
	
	init : function()
	{
		$("#formContacto").submit( function ()
		{
			$("#formContacto input, #formContacto textarea").removeClass("error");
			if(!formContacto.validate())
			{
				alert("Algunos de los datos introducidos en el formulario no son válidos:\n" + formValidator.errors.join("\n"));
				return false;
			}
		});
	},
	
	validate : function()
	{
		this.returnVal = true;
		
		formValidator.init();
		
		$.each($("#fNombre, #fTelefono, #fEmail"), function(i, n)
		{
			formValidator.checkRequired($(n));
		});
		
		formValidator.checkNumeric($("#fTelefono"));   
		
		if($("#fEmail").val() != $("#fEmail").attr("rel"))
		{
			formValidator.checkValidMail($("#fEmail"));
		}
		
		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);
	}
  }
  
};