// ValidaAreaPersonal.js

/**********************************************************************************/
/******************  Función que cambia el color de una caja de texto ******************/
/******************  cuando le pasamos el foco                              ************/
/***************************************************************************************/
function fijarAtencion(campo){
	campo.focus();
	campo.style.backgroundColor = 'lightsteelblue';
	                        
}
function ponBlanco(campo){
	campo.style.backgroundColor = '';
}
/*****************************************************/
/*****        FUNCION VALIDAR DNI               ******/
/*****************************************************/

function validarDNI(theFormtxtNombre)
{

	var Numeros = '0123456789';
	var Letras = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz';
	var Letras_Posibles = 'TRWAGMYFPDXBNJZSQVHLCKE';
	var Alfabeticos = 'ABCDEFGHKLMNPQSXabcdefghklmnpqsx';
	var Alfajur ='ABEFGHSabefghs';
	var Alfafis ='KLMXklmx';
	var Alfaposicion = 'ABDCEFGHNPQSabcdefghnpqs';
	var digito ="0";
	var cuarta ="3";

  //Obligatorio al menos un caracter

  	if (theFormtxtNombre.length < 1)
		return (-1);    
	if (theFormtxtNombre.length < 2)
		return (-1);
	
  	if (theFormtxtNombre.length > 10) //Máximo nueve caracteres
		return (-2);

 	//Primer digito de los 10 siempre 0
	if ( ( theFormtxtNombre.charAt(0) != '0' ) && ( theFormtxtNombre.length == 10) )
	return(-3);


//Primer caracter numérico o letra 
	var cadena = theFormtxtNombre.toString();
	var digito1="0";
	var ch1 = cadena.charAt(0);
  
    	for (j = 0;  j < Alfabeticos.length;  j++)
      	{
			if (ch1 == Alfabeticos.charAt(j))
        		break;//es una letra
      	} 
		if (j==Alfabeticos.length){ 
			for (k = 0; k < Numeros.length; k++)
			{
      			if (ch1 == Numeros.charAt(k))
        			break;		//es un número
			}
			if (k == Numeros.length){
				return (-4);
			}else{
			digito1="11";
			}
		}else{
			digito1="10"; 
		}
		
		//Añado tantos ceros como falten hasta que cadena tenga 10 dígitos
		var re="";
		if ( digito1=="10" ) {
		   	if (cadena.length<10){
					for(i=0;i<10-cadena.length;i++){
						re="0"+re;
					}
					cadena=re+cadena;				
				}
		}

  		var ch = cadena.charAt(1);

    		for (j = 0;  j < Alfabeticos.length;  j++)
      		{
			if (ch == Alfabeticos.charAt(j))
        			break;
      		} 
			if (j==Alfabeticos.length){ 
			for (k = 0; k < Numeros.length; k++)
			{
      				if (ch == Numeros.charAt(k))
        				break;		
			}
			if (k == Numeros.length){
				return (-4); 
			}else{
				digito="11";
			}
		}else{
			// miramos si el digito es A,B,S,E,F,G,H lo cual nos indicaria
			// que en la 10ª posicion habra un numero.
			for (c = 0; c < Alfajur.length; c++){
				if (ch==Alfajur.charAt(c)){
					digito="10";
					break;
				}
			}
			for (d = 0; d < Alfafis.length; d++){
				if (ch==Alfafis.charAt(d)){
					digito="99";
					break;
				}
			}
			if( ( c==Alfajur.length ) && (d ==  Alfafis.length) ) digito="14";
			for (e = 0; e < Alfaposicion.length; e++){
				if (ch==Alfaposicion.charAt(e)){
				   if ( (cadena.charAt(2)==8)||(cadena.charAt(2)==6) ){
						cuarta="1";
						break;
					}
					if (cadena.charAt(2)==9){
						cuarta="0";
						break;
					}
				}
			}
		}
  //Todos números excepto el último que es número o letra
	//var cadena = theFormtxtNombre.toString();
	
	var error = "0";
  	for (i=2; i< cadena.length; i++)
  	{
  		ch = cadena.charAt(i);
    		if (i < cadena.length-1)
    		{
	      		for (j = 0;  j < Numeros.length;  j++)
        			{
        				if (ch == Numeros.charAt(j)){
					if ( (i==3) && (cuarta=="0") && (ch=="0") ){
							error="1";
							break;
					}
					if ( (i==3) && (cuarta=="1") && ( (ch=="5") || (ch=="6") || (ch=="7") || (ch=="8") || (ch=="9") ) ){
							error="1";
							break;
					}
					break;					
				}
		     	}  
	
    			if (j == Numeros.length){
          				return (-5);
			}else{
				if (error=="1"){
					return(-6);
				}
			}
  		}  
   		else
    		{
      			for (j = 0; j < Letras.length; j++)
			{
        				if (ch == Letras.charAt(j))
          					break;
	        		}
     
      			if (j != Letras.length)
	//Si ha llegado hasta aquí, el último caracter es una letra del conjunto 'Letras'//
			{
				if (digito=="11"){
	         			return (1);
				}else if (digito=="99"){
	         			return (9);
				}else if (digito=="14"){
	         			return (2);
				}else{	return (-10);}
			}

      			else
	        		{
          				for (n = 0;  n < Numeros.length;  n++)
            				{
            					if (ch == Numeros.charAt(n))
               					{              
                					if (cadena.length < 9)
						//Si ha llegado hasta aquí, el último caracter es un número y hay menos de 9 caracteres//
		  				{		  					
		  					if (cadena.length == 7){return(-33)}  //Especial para los talleres que se equivocan de enlace
		  					else{return (-1);}
		  				}
						else
							//Si ha llegado hasta aquí hay diez dígitos//
		  				{
							if (digito=="10"){
								return(2);
							}else{
			  					return (-5);
							}
		  				}

 	       				}
	            			}  

	          			if (n == Numeros.length)
					//Si ha llegado hasta aquí el último no es ni número ni letra
              					return (-4);
		        	}
    		}    
  	}  
	return(0);

}//End validarDNI 


/******************************************************************/
/*****         FUNCION COMPROBACION FORMATO DNI              ******/
/******************************************************************/

function compruebaFormatoDNI(dni)
{

	var Numeros = '0123456789';
	var Letras = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz';
	var Letras_Posibles = 'TRWAGMYFPDXBNJZSQVHLCKE';

  //Obligatorio al menos un caracter

  	if (dni.length < 1)
		return (-1);
  
  //Primer caracter numérico

	var cadena = dni.toString();

  	for (i = 0; i < cadena.length; i++)
  	{
  		ch = cadena.charAt(0);

    		for (j = 0;  j < 10;  j++)
      		{
      			if (ch == Numeros.charAt(j))
        			break;
      		}  

    		if (j == 10)
      			return (-2);
  	}    

  //Máximo nueve caracteres

  	if (dni.length > 9)
		return (-3);

  //Todos números excepto el último que es número o letra

  	for (i=0; i< cadena.length; i++)
  	{
  		ch = cadena.charAt(i);
  
    		if (i != cadena.length-1)
    		{
      			for (j = 0;  j < Numeros.length;  j++)
        		{
        			if (ch == Numeros.charAt(j))
          				break;
        		}  

      			if (j == Numeros.length)
          			return (-4);
    		}  
    		else
    		{
      			for (j = 0; j < Letras.length; j++)
			{
        			if (ch == Letras.charAt(j))
          				break;
        		}
      
      			if (j != Letras.length)
	//Si ha llegado hasta aquí, el último caracter es una letra del conjunto 'Letras'//
			{
         			return (0);
			}

      			else
        		{
          			for (n = 0;  n < Numeros.length;  n++)
            			{
            				if (ch == Numeros.charAt(n))
               				{              
                				if (cadena.length < 9)
	//Si ha llegado hasta aquí, el último caracter es un número y hay menos de 9 caracteres//
		  				{
		  					return (1);
		  				}
						else
	//Si ha llegado hasta aquí hay nueve dígitos//
		  				{
		  					return (-5);
		  				}

 	       				}
            			}  

          			if (n == Numeros.length)
	//Si ha llegado hasta aquí el último no es ni número ni letra
              				return (-4);
        		}
    		}    
  	}  
	return(0);

}//End compruebaFormatoDNI 

/******************************************************************/
/*****         FUNCIÓN QUE COMPRUEBA LA LETRA DEL DNI (BIS)  ******/
/******************************************************************/

function compruebaLetraDNI2(nif){
	
	//var nif = theForm.txtNIF.value.toUpperCase(); CAMBIO RESPECTO A VALIDARLETRADNI
	nif=nif.toUpperCase();
	//var nif = theForm.value.toUpperCase();
	//var nif = theForm.value;
	var Letras_Posibles = 'TRWAGMYFPDXBNJZSQVHLCKE';
  //Caso en que se ha introducido una letra: se comprueba si es correcta
  	if (compruebaFormatoDNI(nif) == 0)
  	{
  //separo la letra del nif 
    		letra_documento = nif.charAt(nif.length-1);

  //separo el número del nif
    		numero_documento = '';
  
      		for (i=0; i < nif.length-1; i++)
      		{
        		numero_documento = numero_documento + nif.charAt(i);
      		}
  //calculo la letra que le correspondería a ese número
    		pos_corr = (numero_documento%23);
    		letra_correcta = Letras_Posibles.charAt(pos_corr);

  //compruebo que sean iguales
      		if (letra_documento != letra_correcta)
        	{       
        		NIF = numero_documento + letra_correcta;        	
        		alert('La letra del NIF no es correcta.');
			return (-1);    
        	}
      		else
        		return (1);
  	}//end if
  	
  //Caso en que todo sean números: Calculo la letra correspondiente a ese número

  	if (compruebaFormatoDNI(nif) == 1)
  	{
  		var pos = (nif%23);
  		letra = Letras_Posibles.charAt(pos);
  		NIF = nif.toString() + letra;
  		alert('La letra del NIF no es correcta. ');
  		return (-1);
  	}  

}//END compruebaLetraDNI2

/***************************************************************************/
/*********** FUNCION QUE PASA CORRECTAMENTE UNA URL  ************/
/***************************************************************************/
/*
Esta función se encarga de pasar una URL en JS en la que desaparecen los simbolos raros.
Que pueden perjudicar en que la URL sea correcta.
*/
function URLEncode(strIn) {

	var len = strIn.length;
	var i,ch;
	
	var strOut = "";
	for (i=0; i<len; i++) {
		ch = strIn.charAt(i);
		
		if (ch == " ") {
			ch = '+';
		} else if (ch == "&") {
			ch = "%26";
		} else if (ch == "á") {
			ch = "%E1";
		} else if (ch == "é") {
			ch = "%E9";
		} else if (ch == "í") {
			ch = "%ED";
		} else if (ch == "ó") {
			ch = "%F3";
		} else if (ch == "ú") {
			ch = "%FA";
		} else if (ch == "Á") {
			ch = "%C1";
		} else if (ch == "É") {
			ch = "%C9";
		} else if (ch == "Í") {
				ch = "%CD";
		} else if (ch == "Ó") {
			ch = "%D3";
		} else if (ch == "Ú") {
			ch = "%DA";
		} else if (ch == "ñ") {
			ch = "%F1";
		} else if (ch == "Ñ") {
			ch = "%D1";
		} else if (ch == "/") {
			ch = "%2F";
		} else if (ch == "\\") {
			ch = "";
		} else if (ch == "=") {
			ch = "%3D";
		} else if (ch == ":") {
			ch = "%3A";
		} else if (ch == ";") {
			ch = "%3B";
		} else if (ch == "'") {
			ch = "%27";
		} else if (ch == "\"") {
			ch = "%22";
		}
		
		strOut += ch;
	}
	
	return strOut;

}
/**********************************************************************************/
/******************  Función que rellena con ceros a tantas posi ******************/
/******************  ciones como indica el campo pos, por la izqda ****************/
/**********************************************************************************/
function rellenarCeros(valor,pos){
	var longitud = valor.length;
	var resultado = valor;
	for(k=0;k<pos-longitud;k++){
		resultado = "0"+resultado;
	}
	return resultado;
}
/***************************************************************************/
/***********          FUNCION QUE VALIDA EL CIF                 ************/
/***************************************************************************/

function validaCIF(F) 
{
  
  var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
  var v2 = new Array('j','a','b','c','d','e','f','g','h','i'); 
  var v3 = new Array('J','A','B','C','D','E','F','G','H','I'); 
  var temp = 0; 
  var temp1;

  
  for( i = 2; i <= 6; i += 2 ) 
    {
      temp = temp + v1[ parseInt(F.substr(i-1,1)) ];
      temp = temp + parseInt(F.substr(i,1));
    };

  temp = temp + v1[ parseInt(F.substr(7,1)) ];

  temp = (10 - ( temp % 10));

  	//El último dígito ha de ser igual al dígito de control calculado (temp) o su análogo en letra (a=1, b=2,..,j=0 ó 10)
	if (temp == 10) temp = 0;
	if (temp != F.charAt(8) && F.charAt(8) != v2[temp] && F.charAt(8) != v3[temp] ){
	alert( "El cif no es válido");
	return(-55);
	}			 	
}

//fin validaCIF

function validaIdAreaP(txtCodId){
	if(txtCodId.value == ""){
				return false;}else {
				  if (txtCodId.value.length==10){
					if(txtCodId.value.substring(0,1)=="0"){
						txtCodId.value=txtCodId.value.substring(1);
					}else{
					return false;}
				 }				
				 var re="";
				 var resultado=validarDNI(txtCodId.value.toUpperCase());
				 var resultado2="";
				 
					 if (parseInt(resultado)>=0){ 
							if (parseInt(resultado)==1){					
									resultado2=compruebaLetraDNI2(txtCodId.value.toUpperCase());		
							   	if (parseInt(resultado2)=="1"){	
							   		if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();		
										}
									}	
									else if(parseInt(resultado2)=="0"){	
						   			txtCodId.value = NIF;
										if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();		
										}
									}						
									else if(parseInt(resultado2)=="2"){	
						   			txtCodId.value = NIF;
										if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();		
										}
									}else if(parseInt(resultado2) ==-1){
													fijarAtencion(txtCodId);
													return false;}						
							}else if (parseInt(resultado)==2){													
									if(!compruebaCIFAreaP(txtCodId.value)) return false;if (txtCodId.value.length<10){
										//Componemos el CIF correctamente para poder enviarlo al host de vida.
										var cadena =  txtCodId.value.toUpperCase();
										var cadena2 = cadena.substr(1,cadena.length-1);
										var cadena1="0"+cadena.substr(0,1);
										for(i=0;i<8-cadena2.length;i++){
											cadena2 = "0"+cadena2;
										}
										cadena = cadena1 + cadena2;	
										txtCodId.value=cadena;							
									}	
						}else if(parseInt(resultado)==9){
						
						var cadena = txtCodId.value.toUpperCase();
						cadena = cadena.substr(1,9);
						resultado2=compruebaLetraDNI2(cadena);		
							   	if (parseInt(resultado2)=="1"){	
							   		if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();		
										}
									}	
									else if(parseInt(resultado2)=="0"){
						   			//txtCodId.value = NIF;
										if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();
										}
									}						
									else if(parseInt(resultado2)=="2"){	
						   			txtCodId.value = NIF;
										if (txtCodId.value.length<10){
											for(i=0;i<10-txtCodId.value.length;i++){
												re="0"+re;
											}
											txtCodId.value=re+txtCodId.value.toUpperCase();		
										}
									}else if(parseInt(resultado2) == "-1"){
									txtCodId.focus();	
									return false;}																							
						}else{
									return false;}						
					}else{
						return false;}				
				}
		return true;
	}

function compruebaCIFAreaP(F) 
{
	//si tiene un cero a la izquierda lo eliminamos
	var len = F.length;	
  	if (len==10 && F.substr(0,1)=='0') F = F.substr(1,10);
  	
  	// pasar a mayúsculas
	var value = F.toUpperCase();

	//comprobación del formato
	if (!/^[A-Za-z0-9]{9}$/.test(value)) // Son 9 dígitos?
		return false;
	else if (!/^[ABCDEFGHKLMNPQS]/.test(value)) 	// Es una letra de las admitidas ?
		return false;

 	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
  	var v2 = new Array('j','a','b','c','d','e','f','g','h','i'); 
  	var v3 = new Array('J','A','B','C','D','E','F','G','H','I'); 
  	var temp = 0; 
  	var temp1;

  
  	for( i = 2; i <= 6; i += 2 ) 
    {
      	temp = temp + v1[ parseInt(F.substr(i-1,1)) ];
      	temp = temp + parseInt(F.substr(i,1));
    };

  	temp = temp + v1[ parseInt(F.substr(7,1)) ];

  	temp = (10 - ( temp % 10));

  	//El último dígito ha de ser igual al dígito de control calculado (temp) o su análogo en letra (a=1, b=2,..,j=0 ó 10)
	if (temp == 10) temp = 0;
	if (temp != F.charAt(8) && F.charAt(8) != v2[temp] && F.charAt(8) != v3[temp] ){
		return false;
	}	else {
		return true;		 	
	}
}

function validaNIEAreaP(txtCodId)
{
	var F = txtCodId.value;
	var result = false;
	var len = F.length;
  	if (len==10 && F.substr(0,1)=='0') F = F.substr(1,10);
	if (F.substr(0,1).toUpperCase()=='X') // puede ser un NIE
	{
		result = validaIdAreaP(txtCodId,"NIE"); 
		len = F.length;
		if (len==10) F = F.substr(1,10);
	} 
	return result;
}

function validaNIFAreaP(txtCodId)
{
	var F = txtCodId.value;
	var result = false;
	var len = F.length;

  	if (len==10 && F.substr(0,1)=='0') F = F.substr(1,10);
	if (F.substr(0,1).toUpperCase()!='X') 
	{
		result = validaIdAreaP(txtCodId,"NIF");
		len = F.length;
		if (len==10) F = F.substr(1,10);
	}	
	return result;
}

/**************************************************************************/
/********************      Funciones que pintan las páginas     ********************/
/*************************************************************************/
var pulsar=0;
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
//alert("showhideLayers");
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}


function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}




