function IsNumeric(sText){
   var ValidChars = "123456789";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++)  { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;         
         }
      }
   return IsNumber;   
}

function IsNumericOtro(sText,campo){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
         }
      }
   if(IsNumber==false){alert("El campo "+campo+" debe ser numérico.");}
   return IsNumber;   
}

//check Formulario 
function checkChoice(field, i){
	var liIndex=3;
	if (i == liIndex) { 
		if (field[liIndex].checked == true) {
			for (i = 0; i < field.length; i++){
				if (i!=	liIndex)	
					field[i].checked = false;
			}
   		}			
	}
	else  	{  
		if (field[liIndex].checked == true) {
			field[liIndex].checked = false;
	    }
	}

}
//Comprueba campo fecha sea correcto pero no es obligatorio
function VerFechaNoOblig(Campo, CampoNombre) {  
	if (VerSiNulo2(Campo,CampoNombre)){  
		if (VerSiFecha(Campo,CampoNombre)){  
			return true;  
		}
		else {  
			return false;  
		}  
	}  
	else {  
		return true;  
	}
}
//Comprueba que el número del año sea un número y que esté entre 1000 y 9999.
function VerSiAnyo(Campo, CampoNombre) {  
	s = Campo.value; 
	if (isNaN(Math.abs(s))) { 
	
		if ( VerSiAnyo.arguments.length  == 1 )
			alert( " Campo numérico no valido." ); 
		else {
			alert( CampoNombre +  " - Campo numérico no valido" );
			Campo.focus(); 
			return false; 
    		} 
		}
		
		if (s < 1000 || s > 9999){
		    alert( "El año tiene que estar entre 1000 y 9999");
		    Campo.focus(); 
		    return false;
		}
		 
    return true; 
}  
//Comprueba que el número de mes sia un número y que esté entre 1 y 12.
function VerSiMes(Campo, CampoNombre) {  
	s = Campo.value; 
	if (isNaN(Math.abs(s))){ 
		if ( VerSiMes.arguments.length  == 1 )
			alert( " Campo numérico no valido." ); 
		else {
			alert( CampoNombre +  " - Campo numérico no valido." );
			Campo.focus(); 
			return false; 
		} 
	}

	if (s < 1 || s > 12){
		alert( "El número tiene que estar entre 1 y 12");
	    Campo.focus(); 
	    return false;
	}

	return true; 
}
//Función que quita los espacios en blanco	
function QuitarBlancos(inForm) {
//alert (inForm.name)  
	for (var i = 0; i < inForm.elements.length; i++) 	{
		var formField = inForm.elements[i]
		var fieldType = formField.type
		var fieldName = formField.name
		var fieldValue = formField.value
		
		if (fieldType == "text" || fieldType == "file" ) {
			while ((fieldValue.length - 1 == fieldValue.lastIndexOf(" ")) && (fieldValue.length - 1 != -1)) {
			   fieldValue = fieldValue.substring(0,fieldValue.length - 1);
			   formField.value = fieldValue;
			   if (fieldValue.length - 1 == -1) {
					break;
				}
			 }
		}
	}
	
	return true;
}
//Comprueba que un campo sea numérico
function VerSiNum(Campo, CampoNombre) {
	s = Campo.value;
	if (isNaN(Math.abs(Campo.value)) && (s.charAt(0) != "#")) {
		if ( VerSiNum.arguments.length  == 1 ) 
			alert( " Campo numérico no valido." );
		else
			alert( CampoNombre +  " - Campo numérico no valido." );

		Campo.focus();
		return false;
	}
    return true;
}
//Comprueba que el campo no contenga Puntos o Comas para q no sea un Decimal
function VerSiDecimales(Campo, CampoNombre) {
	s = Campo.value;
	var siComa = s.indexOf(",")
	var siPunt = s.indexOf(".")
	if ((siPunt>0)||(siComa>0)){
		alert(CampoNombre+" - El valor debe ser un Entero." );
		return false;
	}
    else return true;
}

function VerPais( Campo , CampoNombre){
if (Campo.value==0){
 alert("Es obligatorio indicar el campo País");
 Campo.focus();
	return false;
 }
 return true;
}

//Comprueba que sea nulo
function VerSiNulo( Campo , CampoNombre) {
	selected = 0;
	fieldIsNull = 0;
	if ( Campo.type == "text" || Campo.type == "hidden" || Campo.type == "password" || Campo.type == "textarea" || Campo.type == "file" ) {
		if ( Campo.value == "" )
			fieldIsNull = 1;
	}
	else if ( Campo.type == "select-one" ) {
		if ( Campo.selectedIndex == -1)
			fieldIsNull = 1;
		if ( Campo.value == "" )
			fieldIsNull = 1;
	}
	else if ( Campo.type == "select-multiple" ) {
		fieldIsNull = 1;
		for ( i = 0; i < Campo.length; i++ )
			if ( Campo.options[i].selected )
				fieldIsNull = 0;
    }
	else if ( Campo.type == "undefined" || Campo.type == "checkbox" || Campo.type == "radio" ) {
		fieldIsNull = 1;
		for ( i = 0; i < Campo.length; i++ )
			if ( Campo[i].checked )
				fieldIsNull = 0;
    }

	if ( fieldIsNull ) {
		if ( VerSiNulo.arguments.length  == 1 ) 
			alert( "Es obligatorio rellenar este campo." );
		else
			alert( "Es obligatorio rellenar el campo " + CampoNombre + "." );

		if ( Campo.type == "text" || Campo.type == "textarea"  || Campo.type == "password"  || Campo.type == "select-one"  || Campo.type == "select-multiple" )
			Campo.focus();
			return false;
	}	
    return true;
}
//Comprueba si es null
function VerSiNulo2( Campo , CampoNombre) {
	selected = 0;
	fieldIsNull = 0;

	if ( Campo.type == "text" || Campo.type == "hidden" || Campo.type == "password" || Campo.type == "textarea" || Campo.type == "file" ) {
		if ( Campo.value == "" )
			fieldIsNull = 1;
	}
    else if ( Campo.type == "select-one" ) {
		if ( Campo.selectedIndex == -1)
		fieldIsNull = 1;
	}
	else if ( Campo.type == "select-multiple" ) {
		fieldIsNull = 1;
		for ( i = 0; i < Campo.length; i++ )
			if ( Campo.options[i].selected )
				fieldIsNull = 0;
	}
	else if ( Campo.type == "undefined" || Campo.type == "checkbox"  || Campo.type == "radio" ) {
		fieldIsNull = 1;
		for ( i = 0; i < Campo.length; i++ )
			if ( Campo[i].checked )
				fieldIsNull = 0;
	}

	if ( fieldIsNull ) {
		 return false;
	}

    return true;
}
//Comprueba que exista el día para el año de la fecha
function VerSiFecha2(dia,mes,anyo,CampoNombre,Campo){
	wmeses="31,xx,31,30,31,30,31,31,30,31,30,31"
	var diasmes;
	diasmes = wmeses.substring((parseInt(mes,10)*3)-3,(parseInt(mes,10)*3)-1);

	if (dia==""){
		return true;
	}
	else {
		if (diasmes == "xx"){
			diasmes = ((anyo % 4 == 0) && ( (!(anyo % 100 == 0) || (anyo % 400 == 0) ))) ? 29:28
		}
		if ((dia<1) || (dia >parseFloat(diasmes))){
			alert(CampoNombre + " - día incorrecto");
			Campo.focus();
			return false;
		}
		return true;
	}
}  
//Mira si es mayor una fecha que otra
function VerSiMayor(Campo1, CampoNombre1, Campo2, CampNombre2) {
	var dia1;
	var mes1;
	var anyo1;
	var dia2;
	var mes2;
	var anyo2;
	f1 = Campo1.value;
	f2 = Campo2.value;
	dia1 = f1.substring(0,2);
	mes1 = f1.substring(3,5);
	anyo1 = f1.substring(6,10);
	dia2 = f2.substring(0,2);
	mes2 = f2.substring(3,5);
	anyo2 = f2.substring(6,10);
	Fecha1 = new Date(anyo1,mes1,dia1);
	Fecha2 = new Date(anyo2,mes2,dia2);
	if (Fecha1 > Fecha2){
		alert("La " + CampoNombre1 + " no puede ser más grande que la " + CampNombre2);
		Campo1.focus();
		return false;
	}
	else {
		return true;
	}
}

//Borra un campo
function BorrarCampo() {
	return "";
}
  
function CompruebaRadio(radio,n,mensaje){
	var i=0;
	var Correcto;			
	do{
		Correcto= radio[i].checked;
		i++;
	}while ((!Correcto) && (i<n))
	if (!Correcto) alert(mensaje);			
	return Correcto;
}
function DNI(n){
	var d =(n/23)
	d = Math.floor(d);
	var e=d*23
	var r=n-e
	if (r==0) return "T";
	if (r==1) return "R";
	if (r==2) return "W";
	if (r==3) return "A";
	if (r==4) return "G";
	if (r==5) return "M";
	if (r==6) return "Y";
	if (r==7) return "F";
	if (r==8) return "P";
	if (r==9) return "D";
	if (r==10) return "X";
	if (r==11) return "B";
	if (r==12) return "N";
	if (r==13) return "J";
	if (r==14) return "Z";
	if (r==15) return "S";
	if (r==16) return "Q";
	if (r==17) return "V";
	if (r==18) return "H";
	if (r==19) return "L";
	if (r==20) return "C";
	if (r==21) return "K";
	if (r==22) return "E";
}
//Función que comprueba el NIF
function VerificarNIF(Cadena,Mensaje){
			var Numero;
			var longitud;
			var Letra;
			var LetraReal;
			//comprobamos la longitud del NIF
			longitud=Cadena.length
			if (longitud!=9){
				alert("El campo NIF es obligatorio.");
				//alert( Mensaje+ "La longitud del NIF no es correcta.");
				return false;
			}
			//verificamos que el número sea correcto
			Numero = Cadena.substring(0,longitud-1);
			if (isNaN(Math.abs(Numero)) && (Numero.charAt(0) != "#")){
				alert("La letra del NIF no es correcta.");
				//alert(Mensaje+"Los números del NIF no son válidos.");
				return false;
			}
			//confirmamos que la letra es la que le corresponde al DNI
			Letra = Cadena.substring(longitud-1,longitud);
			if ((Letra>="a") && (Letra<="z"))	Letra=Letra.toUpperCase();
			LetraReal=DNI(Numero)
			if (Letra!=LetraReal){
				alert("La letra del NIF no es correcto.");
				//alert(Mensaje+"La letra del NIF no es correcta.");
				return false;
			}
			return true;	
		}
function VerificarCIF_old(Cadena,Mensaje){
			var Numero;
			var longitud;
			var Letra;
			var LetraReal;
			//comprobamos la longitud del NIF
			longitud = Cadena.length
			if (longitud!=9){
				alert("El CIF no es correcto.");
				return false;
			}
			//verificamos que el número sea correcto
			Numero = Cadena.substring(0,longitud-1);
			if (isNaN(Math.abs(Numero)) && (Numero.charAt(0) != "#")){
				alert("El CIF no es correcto.");
				return false;
			}
			//confirmamos que la letra es la que le corresponde al DNI
			Letra = Cadena.substring(longitud-1,longitud);
			if ((Letra>="a") && (Letra<="z"))	Letra=Letra.toUpperCase();
			LetraReal=DNI(Numero)
			if (Letra!=LetraReal){
				alert("El CIF no es correcto.");
				//alert(Mensaje+"La letra del CIF no es correcta.");
				return false;
			}
			return true;	
		}
		
		//Comprueba que CIF introducido es correcto
		function VerificarCIF(cif){
			var longitud;
			var Letra;
			var Numero;
		 	var L_Final;
			var L_Centro;
			var N_Cif;
			
			//comprobar que la longitud del nif es correcta
			longitud = cif.length
			if (longitud!=9){
				alert("El CIF no es correcto.");
				//alert("La longitud del CIF no es correcta.");
				return false;
			}
			
			//verificamos que el número sea correcto
			Numero = cif.substring(1,longitud)
						
			//valido la letra
			Letra = cif.substring(0,1)
			if ((Letra>="a") && (Letra<="z"))	Letra=Letra.toUpperCase();
			if ((Letra=="A") || (Letra=="B") || (Letra=="C") || (Letra=="D") || (Letra=="E") || (Letra=="F") || (Letra=="G") || (Letra=="H") || (Letra=="P") || (Letra=="Q") || (Letra=="S")) {
				L_Final = cif.substring(longitud,longitud-1);
				L_Centro = cif.substring(longitud-1,1);
				N_Cif = Letra + L_Centro + L_Final;
				ValidaCIF = Persona_Juridica(N_Cif);
				cif = N_Cif;
			}
			else{			
				if ((Letra=="K") || (Letra=="L") || (Letra=="X") || (Letra=="M") || (Letra=="Y")){
		            cif = cif.substring(1, longitud) + cif.substring(0, 1)
    		        if (VerificarNIF(cif) == false) ValidaCIF = false;
        	    	else ValidaCIF = true;
				}	
				else{
					if (Letra=="T") {
			            if (cif.substring(1, 2) == "T"){
            			    ValidaCIF = (!isNaN(Math.abs(cif.substring (2, longitud-2)))?false:true)
						}
			            else{
            			    resto = cif.substring(1, longitud - 1)
			                if (!isNaN(resto) && resto != String(resto.length, "0")) ValidaCIF = true
            				    else ValidaCIF = false
				            }
					}	
					else{
						if (Letra=="Z") {
				            resto = cif.substring(1,longitud-2)
				            ValidaCIF = (!isNAN(resto)?true:false)
				        }					
						else ValidaCIF = false						
					}
				}	
			}
			return ValidaCIF;
		}	

		function Persona_Juridica(Cif){
	    	var numeros;
		    var i;
		    var suma , sumap;
		    var cifra;
		    var m_inicial, m_final;
		    var LetCtrl;
		    var digito;
		    LetCtrl = "ABCDEFGHIJ";
		    cifra = 0;
			suma = 0;
			sumap = 0;
			
		    numeros = Cif.substring(Cif.length-1,1)
		    m_inicial = Cif.substring(0,1)
		    m_final = Cif.substring(Cif.length,Cif.length-1)
		    if (numeros.value > 10000000 || numeros.value < 0){
	        	Persona_Juridica = false;
				//alert ("Número de cif incorrecto");
				alert("El CIF no es correcto.");				
			}
			else{
				var i = 1;
				while (i<=5){
        	    	suma += parseInt(numeros.substring(i, i+1));
					i+=2;			
				}
				i=0;
				while (i<=6){
					cifra = parseInt(numeros.substring(i, i+1))*2;
					if (cifra > 9) sumap = sumap + parseInt(String(cifra).substring(0,1)) + parseInt(String(cifra).substring(1,2));
					else sumap = sumap + cifra;
  					i+=2;
				}			
			}			
			suma = suma + sumap
			
	        digito = suma % 10
    	    if (digito != 0) digito = 10 - digito
	        else digito = 10
			
			Persona_Juridica = true;			
			
			if ((m_inicial=="P") || (m_inicial=="Q") || (m_inicial=="S")) { //organismos	
				if (m_final.toUpperCase() == "*") {
					Cif = m_inicial + numeros + LetCtrl.substring(digito-1,digito)
				}	
				else{
                     if (gEsLetra(m_final)==false){
					 	 Persona_Juridica = false;
		  				 //alert ("Número de cif incorrecto");						 
						 alert("El CIF no es correcto.");
					 }	 
					 else Persona_Juridica = true;
                     if (LetCtrl.substring(digito-1,digito) != m_final.toUpperCase()) {
                         Persona_Juridica = false;
 		 				 //alert ("Número de cif incorrecto");
						 alert("El CIF no es correcto.");
                     }
				}
			}
			if ((m_inicial=="A") || (m_inicial=="B") || (m_inicial=="C") || (m_inicial=="D") || (m_inicial=="E") || (m_inicial=="F") || (m_inicial=="G") || (m_inicial=="H")) {

				if (m_final == "G"){
					Cif = m_inicial + numeros + digito
				}	
				else{
				//extrajeros
					if (!(isNaN(Math.abs(m_final)))){					
                        if (digito != m_final){
                            if (digito != 10 || m_final != 0){
								 Persona_Juridica = false;
				 				 alert("El CIF no es correcto.");
								 //alert ("Número de cif incorrecto");								 
							}	 
						}
					}							
                    else { //nacionales					
                         if (LetCtrl.substring(digito-1, digito) != m_final){
						 	 Persona_Juridica = false
			 				 alert("El CIF no es correcto.");
							 //alert ("Número de cif incorrecto");							 
						 }	 
					}	 
				}
			}			
			return Persona_Juridica			
		}
		
	function gEsLetra(caracter){    
		gEsLetra = ((caracter>="A") && (caracter<="Z"))?false:true
	}		

		
//función que comprueba el Email de forma rudimentaria
function VerificarEmail(CampoTexto){
	if ((CampoTexto.indexOf("@")==-1)||(CampoTexto.indexOf(".")==-1)){
		alert("El E-mail no es correcte.");
		return false;}
	return true;	
}
//funcion que devuelve el caracter separador del campo fecha ("-" o "/")
function DaSeparadorFecha(psFecha){
	if (psFecha.indexOf("/") != -1) return "/";
	if (psFecha.indexOf("-") != -1) return "-";
	return "ERROR";}

//Nueva versión de la función VerSiFecha. La anterior se llama VerSiFechaOld
function VerSiFecha(Campo, CampoNombre) {
	wmeses="31,xx,31,30,31,30,31,31,30,31,30,31"
	var separador;
	var dia;
	var mes;
	var anyo;
	var diasmes;
	var liPos;
	var liPos2;
	s = Campo.value;
	
	if (s.length != 0){
		if ((s.length <8) || (s.length > 10)){
			alert(CampoNombre + " - Formato de fecha no válido (dd/mm/aaaa)")
			Campo.focus();
			return false;
		}
		else {
			separador = DaSeparadorFecha(s);
			if (separador == "ERROR") {
				alert(CampoNombre + " - Formato de fecha no válido  (dd/mm/aaaa)")
				Campo.focus();
				return false;
			}
			liPos = s.indexOf(separador);
			liPos2 = s.indexOf(separador,liPos+1);
			if ((liPos == -1) || (liPos2 == -1)){
				alert(CampoNombre + " - Formato de fecha no válido  (dd/mm/aaaa)")
				Campo.focus();
				return false;
			}
			dia = s.substring(0,liPos);
			mes = s.substring(liPos+1,liPos2);
			anyo = s.substring(liPos2+1,s.length);
			if (anyo.length != 4) {
				alert(CampoNombre + " - Formato de fecha no válido  (dd/mm/aaaa)")
				Campo.focus();
				return false;
			}

			if (isNaN(parseInt(dia,10))||isNaN(parseInt(mes,10))||isNaN(parseInt(anyo,10))){
				alert(CampoNombre + " - Valores no numericos. (dd/mm/aaaa)");
				Campo.focus();
				return false;
			}
			else {
				if (anyo<0){
					alert(CampoNombre + " - El año ha de ser positivo")
					Campo.focus();
					return false;
				}
				diasmes = wmeses.substring((parseInt(mes,10)*3)-3,(parseInt(mes,10)*3)-1);
				if ((mes<1) || (mes > 12)){
					alert(CampoNombre + " - Número de mes incorrecto")
					Campo.focus();
					return false;
				}
				if (diasmes == "xx"){
					diasmes = ((anyo % 4 == 0) && ( (!(anyo % 100 == 0) || (anyo % 400 == 0) ))) ? 29:28
				}
				dia=parseInt(dia,10);
				if ((dia<1) || (dia >diasmes)){
					alert(CampoNombre + " - Número de día incorrecto");
					Campo.focus();
					return false;
				}
			}
		}
		Campo.value = dia+"/"+mes+"/"+anyo;
	}
	return true;
}

// BrowserCheck Object
function BrowserCheck() {
	var b = navigator.appName
	if (b=="Netscape") this.b = "ns"
	else if (b=="Microsoft Internet Explorer") this.b = "ie"
	else this.b = b
	this.version = navigator.appVersion
	this.v = parseInt(this.version)
	this.ns = (this.b=="ns" && this.v>=4)
	this.ns4 = (this.b=="ns" && this.v==4)
	this.ns5 = (this.b=="ns" && this.v==5)
	this.ie = (this.b=="ie" && this.v>=4)
	this.ie4 = (this.version.indexOf('MSIE 4')>0)
	this.ie5 = (this.version.indexOf('MSIE 5')>0)
	this.min = (this.ns||this.ie)
}
is = new BrowserCheck()		

function sonlNums(camp, nomCamp){
	function sonLletres(camp, nomCamp){
	//Llista de caràcters permessos en el camp. S'inicialitza només un cop per això és fora de la funció
	var caracValids="abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	var cadena;	
	cadena=camp.value;
	for (i=0;i<cadena.length;i++)
	{	
		if (caracValids.indexOf(cadena.charAt(i),0)==-1)
		{
			alert(nomCamp+': El valor debe ser letras o números, ningún otro caracter.');
			camp.value="";
			camp.focus();
			return false;
		}
	}
	return true;
	}
//Llista de caràcters permessos en el camp. S'inicialitza només un cop per això és fora de la funció
	//var caracValids="0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	var caracValids="0123456789";
	var cadena; 	
	cadena=camp.value;
	for (i=0;i<cadena.length;i++)	{	
		if (caracValids.indexOf(cadena.charAt(i),0)==-1)
		{
			alert(nomCamp+': Sólo valores numéricos');
			camp.value="";
			camp.focus();
			return false;
		}
	}
	return true;
}