var W3CDOM = (document.createElement && document.getElementsByTagName);

document.getElementsByClassName = function(className, container){
   var data = tags = [];
   var obj = document.getElementById("wrapper");
   var node = aux = null;
	var strClassName = className.replace(/\-/g, "\\-");
    var pattern = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	if(container) node = (typeof(container) == "object") ? container : document.getElementById(container);
	else node = (obj) ? obj : document;
	aux = node.getElementsByTagName("*");
	tags = (document.all) ? node.all : aux;
   for(var i=0;i<tags.length;i++) { if(pattern.test(tags[i].className)) data.push(tags[i]);}
   return data;
}

String.prototype.trim = function() { return this.replace(/^[\s]+|[\s]+$/g,'') }

String.prototype.numOfCharacters = function(character){
	var rep = 0;
	for(var i=0; i<=this.length-1;i++) if(this.charAt(i) == character) rep++;
	return rep;
}

var e = {
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		}else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}else {
			return false;
		}
	}
}

var behaviours = {
	success:{
		history:null,
		texts:[],
		init:function(){
			var obj = document.getElementsByClassName("gridType2", document.getElementById("success"))[0];
			var lis = obj.getElementsByTagName("li");
			var aux = null;
			behaviours.success.texts = document.getElementsByClassName("text", obj);
			behaviours.success.history = behaviours.success.texts[0];
			for(var i = 0; i < lis.length; i++){
				aux = lis[i].getElementsByTagName("a")[0];
				aux.onclick = function(i){
					return function(e){
						behaviours.success.action(i);
						return false;
					};
				}(i);
			}
		},
		action:function(idx){
			var obj = behaviours.success.texts[idx];
			var bl = document.getElementsByClassName("cBl", obj.parentNode)[4];
			var br = document.getElementsByClassName("cBr", obj.parentNode)[4];
			var hObj = 0;
			if(behaviours.success.history != null) behaviours.success.history.className = behaviours.success.history.className.replace("block","none");
			obj.className = obj.className.replace("none","block");
			hObj = parseInt(obj.offsetHeight) + 40;
			bl.style.top = hObj + "px";
			br.style.top = hObj + "px";
			behaviours.success.history = obj;
		}
	},
	employment:{
		history:null,
		init:function(){
			var formEmployments = inscriptions = [];
			var obj = document.getElementById("employment");
			formEmployments = obj.getElementsByTagName("form");
			inscriptions = document.getElementsByClassName("inscription", obj);
			for(var i = 0; i < formEmployments.length; i++){
				formEmployments[i].onsubmit = function(i){
					return function(e){
						formsValidations.validateFormEmployment(i, this);
						return false;
					}
				}(i);
			}
			for(var i = 0; i < inscriptions.length; i++){
				inscriptions[i].getElementsByTagName("a")[0].onclick = function(){
					behaviours.employment.checkForOk();
					behaviours.employment.action(this);
					return false;
				}
			}
		},
		checkForOk:function(){
			var obj = document.getElementById("employment");
			var blockForms = document.getElementsByClassName("form", obj);
			for(var i = 0; i < blockForms.length; i++){
				if(blockForms[i].className.search(/block/) != -1){
					blockForms[i].className = blockForms[i].className.replace("block", "");
					behaviours.employment.history = blockForms[i];
				}
			}
		},
		action:function(obj){
			var parent = obj.parentNode.parentNode.parentNode.parentNode;
			var formWrap = document.getElementsByClassName("form", parent)[0];
			var liElement = formWrap.parentNode;
			var msgError = [];
			var employment = document.getElementById("employment");
			var main = document.getElementById("main");
			var reference = document.getElementsByClassName("paging", main)[0];
			if(behaviours.employment.history != null){
				behaviours.employment.history.style.display = "none";
				document.getElementsByClassName("inscription", behaviours.employment.history.parentNode)[0].style.display = "block";
				msgError = document.getElementsByClassName("msgError", behaviours.employment.history);
				if(msgError.length != 0) behaviours.employment.history.removeChild(msgError[0]);
			}
			fixes.updateMain(employment);
			formWrap.style.display = "block";
			obj.parentNode.style.display = "none";
			behaviours.employment.history = formWrap;
		}
	},
	home: {
		history: null,
		historyText:0,
		texts: [],
		obj:null,
		elements:[],
		init: function(){
			var obj = document.getElementById("tabs");
			behaviours.home.elements = obj.getElementsByTagName("li");
			var aux = null;
			behaviours.home.obj = document.getElementsByClassName("columnType2", document.getElementById("content"))[0];
			behaviours.home.history = behaviours.home.elements[0].getElementsByTagName("a")[0]; //inicializamos el historico con el primer elemento q sale al principio
			for (var i = 0; i < behaviours.home.elements.length; i++) {
				aux = behaviours.home.elements[i].getElementsByTagName("a")[0];
				aux.onclick = function(i){
					return function(){
						behaviours.home.action(i);
						return false;
					};
				}(i);
			}
		},
		action: function(idx){
			if (behaviours.home.history != null) {
				var a = behaviours.home.history;
				var li = behaviours.home.history.parentNode.parentNode;
				li.className = "";
				behaviours.home.history.parentNode.parentNode.removeChild(behaviours.home.history.parentNode);
				li.appendChild(a);
				var capa = document.getElementsByClassName("text", behaviours.home.obj)[behaviours.home.historyText];
				capa.className = "text hidden";
			}
			behaviours.home.elements[idx].className = "sel"
			var enlace = behaviours.home.elements[idx].getElementsByTagName("a")[0];
			eDiv = document.createElement("h2");
			eDiv.appendChild(enlace);
			behaviours.home.elements[idx].appendChild(eDiv);

			var capa1 = document.getElementsByClassName("text", behaviours.home.obj)[idx];
			capa1.className = "text";

			behaviours.home.history = behaviours.home.elements[idx].getElementsByTagName("a")[0]; //pasamos al historico la capa actual*/
			behaviours.home.historyText = idx; //pasamos al historico la capa actual*/
		}

	}
}


var fixes={
	setImgHome:function(){
		var obj = document.getElementsByClassName("gridType3", document.getElementById("content"))[0];
		var columnType1 = document.getElementsByClassName("columnType1", obj)[0];
		var img = document.createElement("img");
		img.src = photo_soventia;
		img.alt = "";
		img.className = "fix";
		columnType1.appendChild(img);
	},
	setPrint:function(){
		var objs = document.getElementsByClassName("print", document.getElementById("content"));
		for(var i = 0; i < objs.length; i++){
			objs[i].onclick = function() { window.print(); return false }
		}
	},
	updateMain:function(obj, noInsertBefore){
		// rodeo para el ajuste de las curvas al crear/mostrar contenido dinámico en ie6 en el bloque principal
		var main = document.getElementById("main");
		var reference = document.getElementsByClassName("paging", main);
		var reference2 = document.getElementsByClassName("suscriptionReports", main);
		var aux = null;
		if(reference == 0 && reference2 == 0) aux = main.lastChild;
		else if(reference != 0) aux = reference[0];
		else aux = reference2[0];
		main.removeChild(obj);
		main.appendChild(obj);
		if(!noInsertBefore) main.insertBefore(obj, aux);
	}
}
var curves={
	setGraficasModule:function(){
		var obj = document.getElementById("graficasModule");
		var cTl = cTr = cBl = cBr = null;
		cBl = curves.createElementsCurves("cBl");
		cBr = curves.createElementsCurves("cBr");
		obj.appendChild(cBl);
		obj.appendChild(cBr);
	},
	home:{
		setGridType1:function(){
			var obj = document.getElementsByClassName("gridType1", document.getElementById("content"))[0];
			var cTl = cTr = cBl = cBr = null;
			var columnType1 = document.getElementsByClassName("columnType1", obj)[0];
			var columnType2 = document.getElementsByClassName("columnType2", obj)[0];
			curves.roundModule(columnType1);
			curves.roundModule(columnType2);
		},
		setGridType2:function(){
			var obj = document.getElementsByClassName("gridType2", document.getElementById("content"))[0];
			var cTl = cTr = cBl = cBr = null;
			curves.roundModule(obj);
		},
		setGridType3:function(){
			var obj = document.getElementsByClassName("gridType3", document.getElementById("content"))[0];
			var cTl = cTr = cBl = cBr = null;
			var columnType1 = document.getElementsByClassName("columnType1", obj)[0];
			var columnType2 = document.getElementsByClassName("columnType2", obj)[0];
			cTl = curves.createElementsCurves("cTl");
			cTr = curves.createElementsCurves("cTr");
			cBl = curves.createElementsCurves("cBl");
			cBr = curves.createElementsCurves("cBr");
			columnType1.appendChild(cTl);
			columnType1.appendChild(cTr);
			columnType2.appendChild(cBl);
			columnType2.appendChild(cBr);
		},
		setPest:function(){
			var obj =document.getElementsByClassName("grafica", document.getElementById("graficasModule"))[0];
			//var obj = document.getElementsByClassName("grafica", document.getElementById("graficasModule"))[0];
			var cTl = cTr  = null;
			var tab = document.getElementsByClassName("tab", obj)[0];
			cTl = curves.createElementsCurves("cTl");
			cTr = curves.createElementsCurves("cTr");
			tab.appendChild(cTl);
			tab.appendChild(cTr);
		}
	},
	roundModule:function(obj){
		var cTl = cTr = cBl = cBr = null;
		cTl = curves.createElementsCurves("cTl");
		cTr = curves.createElementsCurves("cTr");
		cBl = curves.createElementsCurves("cBl");
		cBr = curves.createElementsCurves("cBr");
		obj.appendChild(cTl);
		obj.appendChild(cTr);
		obj.appendChild(cBl);
		obj.appendChild(cBr);
	},
	roundModules:function(obj){
		for(var i = 0; i < obj.length; i++) curves.roundModule(obj[i])
	},
	createElementsCurves:function(style){
		var element = document.createElement("div");
		element.className = style + " sp";
		element.appendChild(document.createTextNode(" "));
		return element;
	}
}




/* validaciones de formularios */
var formsValidations = {
	setMsgError:function(txt, form){
		var parentForm = form.parentNode;
		var msgError = document.getElementsByClassName("msgError", parentForm);
		var divElement = (msgError.length != 0) ? msgError[0] : document.createElement("div");
		var ulElement = document.createElement("ul");
		var liElement = null;
		var errors = txt.split("|");
		divElement.className = "msgError";
		divElement.style.display = "none";
		if(divElement.getElementsByTagName("ul").length != 0) divElement.removeChild(divElement.getElementsByTagName("ul")[0])
		for(var i = 0; i < errors.length - 1; i++){
			liElement = document.createElement("li");
			liElement.appendChild(document.createTextNode(errors[i]));
			ulElement.appendChild(liElement);
		}
		divElement.appendChild(ulElement);
		divElement.tabIndex = -1;
		if(msgError.length == 0){
			// rodeo para el ajuste de las curvas al crear/mostrar contenido dinámico en ie6 en el bloque de error
			parentForm.appendChild(divElement);
			parentForm.insertBefore(divElement,form);
		}
		divElement.style.display = "block";
		divElement.focus();
	},
	validateFormConsulta:function(){
		var f = document.forms.formConsulta;
		var errorTxt = "";
		if(f.nombre.value == "") errorTxt += literal["formConsulta"][0];
		if(f.pregunta.value == "") errorTxt += literal["formConsulta"][1];
		else{
			if(f.pregunta.length > 180)  errorTxt += literal["formConsulta"][2];
		}
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formConsulta"));
			return false;
		}
	},
	validateFormLogin:function(){
		var f = document.forms.formLogin;
		var errorTxt = "";
		if(f.usuario.value == "") errorTxt += literal["formLogin"][0];
		if(f.pass.value == "") errorTxt += literal["formLogin"][1];
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formLogin"));
			return false;
		}
	},
	validateFormSuscription:function(){
		var f = document.forms.formSuscription;
		var errorTxt = "";
		if(f.tuNombre.value == "") errorTxt += literal["formSuscription"][0];
		if(f.tuEmail.value == "") errorTxt += literal["formSuscription"][1];
		else{
			if(!regularExpressions.isValidEmail(f.tuEmail.value)) errorTxt += literal["formSuscription"][2];
		}
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formSuscription"));
			return false;
		}
	},
	validateFormEmployment:function(idx, obj){
		var f = obj;
		var errorTxt = "";
		if(f["nombre"+idx].value == "") errorTxt += literal["formEmployment"][0];
		if(f["email"+idx].value == "") errorTxt += literal["formEmployment"][1];
		else{
			if(!regularExpressions.isValidEmail(f["email"+idx].value)) errorTxt += literal["formEmployment"][2];
		}
		if(f["cv"+idx].value == "") errorTxt += literal["formEmployment"][3];
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, obj);
			fixes.updateMain(document.getElementById("employment"));
			return false;
		}else f.submit();
	},
	validateFormNewsletter:function(){
		var f = document.forms.formNewsletter;
		var errorTxt = "";
		if(f.nombre.value == "") errorTxt += literal["formNewsletter"][0];
		if(f.apellidos.value == "") errorTxt += literal["formNewsletter"][1];
		if(f.email.value == "") errorTxt += literal["formNewsletter"][2];
		else{
			if(!regularExpressions.isValidEmail(f.email.value)) errorTxt += literal["formNewsletter"][3];
		}
		if(errorTxt != ""){
			formsValidations.setMsgError(errorTxt, document.getElementById("formNewsletter"));
			fixes.updateMain(document.getElementById("newsletter"), true);
			return false;
		}
	},
	validateFormContact: function(){
		var f = document.forms.contacto;
		var errorTxt = "";
		if (f.nombre.value == "")
			errorTxt += literal["contactForm"][0];
		if (f.email.value == "")
			errorTxt += literal["contactForm"][1];
		else {
			if (!regularExpressions.isValidEmail(f.email.value))
				errorTxt += literal["contactForm"][2];
		}
		if (f.consulta.value== "")
			errorTxt +=literal["contactForm"][3]
		if (!f.aceptar.checked)
			errorTxt += literal["contactForm"][4];
		if (errorTxt != "") {
			formsValidations.setMsgError(errorTxt, document.getElementById("contactForm"));
			fixes.updateMain(document.getElementById("contacto"), true);
			return false;
		}


	},
	validateFormRecomendar: function(){
		var f = document.forms.recomendar;
		var errorTxt = aux = "";
		var okMailsAmigo = true;

		if (f.YourName.value == "")
			errorTxt += literal["recomendarForm"][0];
		if (f.YourEmail.value == "")
			errorTxt += literal["recomendarForm"][1];
		else {
			if (!regularExpressions.isValidEmail(f.YourEmail.value))
				errorTxt += literal["recomendarForm"][2];
		}
		if (f.ReceiversEmail.value == "")
			errorTxt += literal["recomendarForm"][3];
		else{
			if (f.ReceiversEmail.value.numOfCharacters("@") == 0)
				 errorTxt += literal["recomendarForm"][4];
			else {
				aux = f.emailA.value.replace(/,/g, " ");
				mailsAmigo = aux.split(" ");
				for (i = 0; i < mailsAmigo.length && okMailsAmigo; i++) {
					if (mailsAmigo[i].trim() == "") {
						okMailsAmigo = true;
						continue;
					}
					okMailsAmigo = regularExpressions.isValidEmail(mailsAmigo[i]);
				}
				if (!okMailsAmigo)
					errorTxt += literal["recomendarForm"][4];
				else {
					if (aux.numOfCharacters("@") > 1 && f.ReceiversEmail.value.numOfCharacters(",") != f.ReceiversEmail.value.numOfCharacters("@") - 1) {
						errorTxt += literal["recomendarForm"][5];
					}
				}
				}
			}

		if (errorTxt != "") {
			formsValidations.setMsgError(errorTxt, document.getElementById("recomendarForm"));
			fixes.updateMain(document.getElementById("recomendar"), true);
			return false;
		}
	},
	validateFormPass: function(){
		var f = document.forms.passForm;
		var errorTxt = "";
		if (f.UserEmail.value == "")
			errorTxt += literal["passForm"][0];
		else {
			if (!regularExpressions.isValidEmail(f.UserEmail.value))
				errorTxt += literal["passForm"][1];
		}
		if (errorTxt != "") {
			formsValidations.setMsgError(errorTxt, document.getElementById("passForm"));
			fixes.updateMain(document.getElementById("pass"), true);
			return false;
		}
	},
	validateFormPerfil: function(){
		var f = document.forms.perfilForm;
		var errorTxt = "";
		if (f.contra.value == "")
			errorTxt += literal["perfilForm"][0];
		else{
			if (f.contra.value.length < 3)
				errorTxt += literal["perfilForm"][1];
		}
		if (f.repeatPass.value == "")
			errorTxt += literal["perfilForm"][2];
		else {
			if (f.contra.value != f.repeatPass.value)
				errorTxt += literal["perfilForm"][3];
		}

		if (errorTxt != "") {
			formsValidations.setMsgError(errorTxt, document.getElementById("perfilForm"));
			fixes.updateMain(document.getElementById("miPerfil"), true);
			return false;
		}
	},
	validateFormBaja: function(){
		var f = document.forms.bajaForm;
		var errorTxt = "";
		if (f.email.value == "")
			errorTxt += literal["bajaForm"][0];
		else {
			if (!regularExpressions.isValidEmail(f.email.value))
				errorTxt += literal["bajaForm"][1];
		}
		if (errorTxt != "") {
			formsValidations.setMsgError(errorTxt, document.getElementById("bajaForm"));
			fixes.updateMain(document.getElementById("suscripcion"), true);
			return false;
		}

	}


}



/* expresiones regulares para validar formularios */
var regularExpressions = {
	isValidEmail:function (str){
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		return (filter.test(str));
	},
	esCadena:function(c) { return /^[0-9A-Za-z-\/Ññ?É?ÓÚáéíóúÜüÄäËë?ïÖö´,'/\\t\n\r\s]+$/.test(c); },
	esAlfabetico:function(c){return /^([a-zA-Z])+$/.test(c);},
	esNumero:function(c){return /^[0-9]+$/.test(c);},
	esTelefono:function(c){return /^[0-9\s\+\-)(]+$/.test(c)}
}

var load={
	existeId:function(cid){
		if(document.getElementById(cid)) return true;
		return false;
	},
	setEvents:function(){
		var bodyContent = document.getElementById("bodyContent");
		var pagings = document.getElementsByClassName("paging", bodyContent);
		var roundModules = document.getElementsByClassName("roundModule", bodyContent);
		var roundModules2 = document.getElementsByClassName("roundModule2", bodyContent);
		var roundImages = document.getElementsByClassName("roundImage", bodyContent);
		var options = document.getElementsByClassName("options", document.getElementById("content"));
		var success = document.getElementsByClassName("gridType2", document.getElementById("success"));
		if(load.existeId("home")){
			curves.home.setGridType1();
			curves.home.setGridType2();
			curves.home.setGridType3();
			fixes.setImgHome();
			behaviours.home.init();
			curves.home.setPest();
		}
		if (load.existeId("moduleBoletin")) curves.roundModule(document.getElementById("moduleBoletin"));
		if (load.existeId("graficasModule")) curves.setGraficasModule();
		if (load.existeId("breadCrumb")) curves.roundModule(document.getElementById("breadCrumb"));
		if (load.existeId("main")) curves.roundModule(document.getElementById("main"));
		if (pagings.length != 0) curves.roundModules(pagings);
		if (roundModules.length != 0) curves.roundModules(roundModules);
		if (roundModules2.length != 0) curves.roundModules(roundModules2);
		//if (roundImages.length != 0) curves.roundModules(roundImages);
		if (options.length != 0) fixes.setPrint();
		if (load.existeId("employment")) behaviours.employment.init();
		if (load.existeId("formConsulta")) document.getElementById("formConsulta").onsubmit = formsValidations.validateFormConsulta;
		if (load.existeId("formLogin")) document.getElementById("formLogin").onsubmit = formsValidations.validateFormLogin;
		if (load.existeId("formSuscription")) document.getElementById("formSuscription").onsubmit = formsValidations.validateFormSuscription;
		if (load.existeId("formNewsletter")) document.getElementById("formNewsletter").onsubmit = formsValidations.validateFormNewsletter;
		if (load.existeId("contactForm")) document.getElementById("contactForm").onsubmit = formsValidations.validateFormContact;
		if (load.existeId("recomendarForm")) document.getElementById("recomendarForm").onsubmit = formsValidations.validateFormRecomendar;
		if (load.existeId("passForm")) document.getElementById("passForm").onsubmit = formsValidations.validateFormPass;
		if (load.existeId("perfilForm")) document.getElementById("perfilForm").onsubmit = formsValidations.validateFormPerfil;
		if (load.existeId("bajaForm")) document.getElementById("bajaForm").onsubmit = formsValidations.validateFormBaja;
	}
}

if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);


