var codIdiomaGeral = document.getElementsByTagName("html")[0].lang.toUpperCase();
var valida={
	alertaContinua:true,
	tipoAlerta:"capa",
	aspectoAlerta:"f_mens_error",
	f:null,
	layErrorStr:"layErrors",	
	datos:[],
	correcto:true,
	esp:true,
	expecial:[],
	cumpleDependencias:true,
	dependencias:[],
	edadMax:120,
	rutaIdiomas:"/StaticFiles/MinisterioIgualdad/js/idiomas/",
	strAlertaContinua:"",
	idsAlertaContinua:[],
	controlError:true,
	ids:null,
	esCorrecto:[],
	msgInicial:true,
	W3CDOM:(document.createElement && document.getElementsByTagName),
	cuentaErr:0,
	cpErrColor:["FFF","FFF"],	
	letras: new Array("t","r","w","a","g","m","y","f","p","d","x","b","n","j","z","s","q","v","h","l","c","k","e"),
	cargaIdioma:function(){
		var codIdioma="ES";
		if (document.location.href.indexOf("language") != -1){
			//quiere decir que en la url esta incluida la variable language
			aux_lang = document.location.href.split("language=");
			qLang = aux_lang[1].split("_");
			aux_qLang = qLang[0];
			if (aux_qLang == "cas") { aux_qLang = "es";}
			codIdioma = aux_qLang.toUpperCase();
		}
		var htmlHead=document.getElementsByTagName("head")[0]
		var eleScript=document.createElement("script")
		eleScript.src=valida.rutaIdiomas+'lang'+codIdioma;
		htmlHead.appendChild(eleScript)
	},
	captura:function(){
		if(arguments.length>0){
			valida.obj=arguments[0]
			var cform =arguments[0].id
		}else{
			valida.obj=(this.id)? this : window.event.srcElement;
			var cform = (this.id)? this : window.event.srcElement;
		}		
		valida.f=valida.obj.name;
		valida.nforms+=1;
		valida.ids=valida.obj.id.toString();
		var dts=new Array();
		dts[valida.ids]=(valida.datos[valida.ids])?  valida.datos[valida.ids]:valida.datos;
		valida.esCorrecto[valida.ids]=false;
		los_datos=dts[valida.ids];
		valida.ejecuta();
		
		if(valida.correcto) {
			if(valida.esp && valida.cumpleDependencias){
				valida.esCorrecto[valida.ids]=true;
				if(arguments.length==0){
					cform.submit()
				}else {
					return true;
				}
			}
		}
		return false;
	},
	rf:function(id,cp_esp){
		var cp=(isNaN(parseInt(id)))? id:los_datos[id][0];
		if(cp_esp)return eval("document."+valida.f+ "." +cp+"[0]");
		return eval("document."+valida.f+ "." +cp);
	},
	setId:function(id){
		valida.ids=id;
		if(!valida.datos[id])valida.datos[id]=[];
		if(!valida.dependencias[id])valida.dependencias[id]=[];
		if(!valida.expecial[id])valida.expecial[id]=[];
	},
	addValidacion:function(){valida.datos[valida.ids][valida.datos[valida.ids].length]=[arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]]},
	addEspecial:function(){valida.expecial[valida.ids][valida.expecial[valida.ids].length]=[arguments[0],arguments[1],arguments[2]]},	
	dotarDeAspecto:function (node,reset){
		if(node && node.type!="radio" && node.type!="checkbox"){
			var color=(reset)? "CCC":"FFF";
			valida.cpErrColor[0]
			var color=(reset)?valida.cpErrColor[0]:valida.cpErrColor[1];
			if (campoAct[3] == "obligatorio") { }
		}
	}, 
	muestraError:function(err){
		switch (valida.tipoAlerta){
		    case "alerta":alert(err);break
		    case "capa":
				var ancla="<a name='anclaValidaErr'></a>"
				if(err.indexOf("\n"))err=err.replace(/\n/gi, "<br/>");
				var arrErrs=err.split("<br/>")
				var theLi=""
				for(var x=0;x<arrErrs.length-1;x++){
					theLi+="<li>"+arrErrs[x]+"</li>"
				}
				/*
					si existe la capa de error relleno capa error con listado errores 
					si no existe capa error creacion dom de capa error relleno capa error con listado errores
				*/
				if(document.getElementById("capaValidaErr")){
					document.getElementById("capaValidaErr").innerHTML="<div class='f_mens_error'><span class='titulo'>Mensaje de Error</span><ul>"+theLi+"</ul></div>";
				}
				return false;
				location.hash="anclaValidaErr"
				break
		    default:explica="";
		}
	},
	ejecuta:function(){
		valida.correcto=true;
		valida.cumpleDependencias=true;
		valida.esp=true;
		valida.strAlertaContinua="";
		valida.idsAlertaContinua=[];
		valida.cuentaErr=0
		
		var idFoco=null;
		for(var xx=0;xx<los_datos.length;xx++){	
			campoAct=los_datos[xx]
			campoEsp=(campoAct[2]=="esRadio" || campoAct[2]=="esCheck" )
			if(!campoEsp) {
				valida.rf(xx).value=valida.rf(xx).value.trim()//.replace(/\'/gi, "\"");
				valida.dotarDeAspecto(valida.rf(xx),true)
			}else{valida.dotarDeAspecto(valida.rf(xx,true),true)}
			if(campoAct[3]=="obligatorio" || campoAct[3]=="forced" || valida.rf(xx).value!=""){
				var compVal=false;
				if(campoAct[2].indexOf(",")==-1){
					if(campoAct[2]=="esCheck"){
						compVal=eval("valida."+campoAct[2]+"('"+campoAct[0]+"')")
					}else{
						compVal=eval("valida."+campoAct[2]+"('"+valida.rf(xx).value+"')")
					}
				}else{
					arrValAux=campoAct[2].split(",")
					for(var dd in arrValAux){
						if(eval("valida."+arrValAux[dd]+"('"+valida.rf(xx).value+"')")){compVal=true;break;}
					}
				}
				if(compVal){	
					if(!campoEsp){
						if(valida.rf(xx).value.length<campoAct[4]){
							if(idFoco==null) idFoco=xx; valida.error(xx,"min");if(!valida.alertaContinua)break; 
						}else if(valida.rf(xx).value.length>campoAct[5]){
							if(idFoco==null) idFoco=xx; valida.error(xx,"max");if(!valida.alertaContinua)break;
						}
					}
				}else{							
					if(idFoco==null) idFoco=xx;
					valida.error(xx);
					if(!valida.alertaContinua)break;
				}
			}
		}
		if(valida.strAlertaContinua!="")valida.muestraError(valida.strAlertaContinua,valida.idsAlertaContinua)
		if( valida.expecial[valida.ids]!=null && valida.expecial[valida.ids].length>0 && valida.correcto){			
			for(var pp=0;pp<valida.expecial[valida.ids].length;pp++){
				if(!eval("window." + valida.expecial[valida.ids][pp][0])){
					valida.cuentaErr+=1
					valida.errorDeValidacionEspecial(pp)
					break;
				}
			}
		}
	},
	errorDeValidacionEspecial:function(id){
		valida.esp=false;
		valida.idsAlertaContinua[valida.idsAlertaContinua.length]=eval("document."+valida.f+"."+valida.expecial[valida.ids][id][2])
		valida.muestraError(valida.expecial[valida.ids][id][1])
	},
	error:function(id,maxmin){
		var explica="";
		var strAlerta="";
		valida.correcto=false;
		var cpObligatorio=(los_datos[id][3]=="obligatorio")? " (campo obligatorio)" :"";
		switch (los_datos[id][2]){
		    case "esCadena":explica=literal["Recuerde_caracteres"];break;
		    case "esNumero":explica=literal["Recuerde_numero"];break;
		    case "esNumeroDecimal":explica=literal["Recuerde_numeroDecimal"];break;
		    case "esLista":explica=literal["debeSelecionarOpcion"];break;
		    //case "esLista":explica=literal["debeSelecionarOpcion"];break;
		    //case "esRadio":explica="Debe seleccionar al menos un elemento";break;
		    case "esRadio":explica=literal["debeSelecionarUnAlMenos"];break;
		    case "esCheck":explica=literal["Recuerde_chequear"];break;
		    case "esCodigoPostal":explica=literal["codigoNoEspaniol"];break;
			case "esDNI":explica=literal["noEsCorrecto"];break;
			case "esNIF":explica=literal["recuerdaQueEl"] +" " +literal["elFormatoCorrectoEs"]   + " 00000000L (" + literal["num8CifrasYletra"]+")";break;
			case "esNIE":explica=literal["recuerdaQueEl"] +" " +literal["elFormatoCorrectoEs"]   + " L00000000L (" + literal["num8CifrasYletra"]+")";break;
			default:explica="";
		}
		if(!maxmin || maxmin==null){
			strAlerta= literal["debesIntroducirUn"]+ " '" + los_datos[id][1] + "'"+cpObligatorio+" "+literal["valido"]+  ". " + explica
		}else{
			if((los_datos[id][4]==los_datos[id][5]) && (los_datos[id][4] !=null))
				strAlerta=literal["elCampo"] +" '"+los_datos[id][1]+"'"+cpObligatorio+" "+literal["debeTenerExactamente"] +" "+los_datos[id][4]+" " +literal["caracteres"]
			else if(maxmin=="min" && valida.rf(id).value.length<los_datos[id][4])
				strAlerta=literal["elCampo"] +" '"+los_datos[id][1]+"'"+cpObligatorio+" "+literal["esDemasiado"]+ " " +literal["corto"]+ ", "+literal["suLongMinimaEsDe"]+"  "+los_datos[id][4]+" " + literal["caracteres"]
			else if(maxmin=="max" && valida.rf(id).value.length>los_datos[id][5])
				strAlerta=literal["elCampo"]  +" '"+los_datos[id][1]+"'"+cpObligatorio+" "+literal["esDemasiado"]+ " " +literal["largo"]+ ", "+literal["suLongMaximaEsDe"]+"  "+los_datos[id][5]+" " + literal["caracteres"]
		}
		if(!valida.alertaContinua){
			valida.muestraError(strAlerta);
			if(!campoEsp) valida.rf(id).focus();
		}else {
			valida.strAlertaContinua+=strAlerta +" \n"
			valida.cuentaErr+=1
			valida.idsAlertaContinua[valida.idsAlertaContinua.length]=(los_datos[id][2]=="esRadio")? valida.rf(id,true):valida.rf(id)
		}
		return false;
	},
	esCadena:function(c){ return /^[0-9A-Za-z-\\-\\.\\/\\/ÑñÁÉÍÓÚáéíóúÜüÄäËëÏïÖöºª!"'´·$%&/()=?¿^*¨Ç;:_,/\\t\n\r ]+$/.test(c);},
	esAlfabetico:function(c){ return /^[0-9A-Za-z-\\-\\.\\/\\/ÑñÁÉÍÓÚáéíóúÜüÄäËëÏïÖöºª!"'´·$%&/()=?¿^*¨Ç;:_,/\\t\n\r ]+$/.test(c);},
	//esAlfabetico:function(c){ return /^[A-Za-z-\\-\\.\\/\\/ÑñÁÉÍÓÚáéíóúÜüÄäËëÏïÖö\n\r ]+$/.test(c);},
	esNumero:function(c){return /^[0-9]+$/.test(c);},
	esNumeroDecimal:function(c){return (valida.esNumero(c) || /^[0-9]\.{1}[0-9]+$/.test(c));},
	esMail:function(c){return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(c)},
	esCodigoPostal:function(c){return /^([0-4]{1}[1-9]{1}|10|20|30|40|50|51|52)([0-9]{3})+$/.test(c);},
	esLista:function(c) { return !((campoAct[3]=="obligatorio") &&  (c=="-1" ||c=="")) },
	esCheck:function(idObject){return document.getElementById(idObject).checked},
	esRadio:function(c){
		var rdb=(c!="undefined")? c:campoAct[0]
		var obl=(c)? "obligatorio":campoAct[3]
		var radio=valida.rf(rdb);
	
		if(obl=="obligatorio"){
			if(radio.length>0) {
				for(var uu=0;uu<radio.length;uu++){
					if(radio[uu].checked)return true 
				}
			}else {return radio.checked}
			return false;
		}return true;
	},
	esFecha:function(c){
		if(!/^([0-2]{1}[1-9]{1}|10|20|30|31)\/(0[1-9]{1}|10|11|12)\/([0-9]{4})+$/.test(c))return false;
		var fch=c.split("/")
		var bisiesto=((fch[2] % 4 == 0 && fch[2] % 100 != 0) || (fch[2] % 400 == 0))? 29 : 28;
		var diasMes=[31,bisiesto,31,30,31,30,31,31,30,31,30,31];
		if(fch[0]>diasMes[fch[1]-1]) return false;
		return true;
	},
	esDNI:function(c){
		if ((c.length > 7) && (c.length < 10)){
			var dni = parseInt(c.substring(0,c.length-1),10);
			var letra = c.charAt(c.length-1);
			letra = letra.toLowerCase();
			letraCorrecta = valida.letras[ dni % 23];
			if (letra!=letraCorrecta) return false;
			if (dni > 99999999) return false;
			return true;
		}
	},
	esNIF:function(c){
		if (c.length < 9) { c = "0"+c;}
		if(!/^[0-9]{8}([A-Za-z]{1})$/.test(c)) return false
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
		return (c.substr(8,9).toUpperCase()==letras.charAt(c.substr(0,8)%23)) ;
	},
	esComprobarNIE:function(c){
		if(!/^[0-9]{7}([A-Za-z]{1})$/.test(c)) return false
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';		
		return (c.substr(7,8).toUpperCase()==letras.charAt(c.substr(0,7)%23)) ;
	},
	esNIE:function(c){
		if(c.charAt(0).toUpperCase()!="X") return false	
		return valida.esComprobarNIE(c.substr(1,c.length))
	},
	esCIF:function(c){
		if (!/^[A-Za-z0-9]{9}$/.test(c) || !/^[ABCDEFGHKLMNPQS]/.test(c)) return false;
		var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
		var digCrtl=c.charAt(c.length-1);
		var temp = 0;
		for(i=2;i<=6;i+=2 ) {
		      temp = temp + v1[ parseInt(c.substr(i-1,1)) ];
		      temp = temp + parseInt(c.substr(i,1));
		};
		temp = temp + v1[ parseInt(c.substr(7,1)) ];                   
		temp = (10 - ( temp % 10));
		if( temp == 10 ){if(!(digCrtl=="J" || digCrtl=="0")) return false;
		}else{if(digCrtl!=temp) return false; }
		return true;
	},
	comparaFechas:function(){
		if(valida.obj.id=='form_bus_avanz'){
			alert(1);
			date_desde = dom.$("fechadesde").value;
			date_hasta = dom.$("fechahasta").value;
			if (date_desde > date_hasta){ return false;}
			else { return true;}
		}
	}
}
valida.cargaIdioma()