//================================================================
// Verifica si la cadena recibida como parametro contiene
// valores numericos, o esta en blanco, o contiene algo diferente.
// Los valores que devuelve son:
//     true : Si contiene digitos numericos y nada mas,
//     false: Si contiene caracteres que no sean considerados
//            digitos numericos, o esta vacia.
//================================================================
function valida_valores(checkStrtec) {
	var checkOK = "0987654321";
	var allValid = true;
	for (i = 0; i < checkStrtec.length; i++) {
		ch = checkStrtec.charAt(i); 
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) { 
			allValid = false; 
			break;
		}
	}
	return allValid;
}

//================================================================
// Verifica si la cadena recibida como parametro contiene
// valores numericos, o esta en blanco, o contiene algo diferente.
// Los valores que devuelve son:
//     true : Si contiene digitos numericos o teine espacios vacios,
//     false: Si contiene caracteres que no sean considerados
//            digitos numericos.
//================================================================
function valida_num_vacios(checkStrtec) {
	var checkOK = " 0987654321";
	var allValid = true;
	for (i = 0; i < checkStrtec.length; i++) {
		ch = checkStrtec.charAt(i);
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) { 
			allValid = false; 
			break;
		}
	}
	return allValid;
}
//================================================================
// Verifica si la cadena recibida como parametro contiene
// valores alfabeticos, o esta en blanco, o contiene algo diferente.
// Los valores que devuelve son:
//     true : Si contiene caracteres alfabeticos y nada mas,
//     false: Si contiene caracteres que no sean considerados
//            caracteres alfabeticos, o esta vacia.
//================================================================
function valida_letras(checkStrtec) {
	var checkOK = "abcdefghijklmnopqrstuvwxyz-";
	var allValid = true; 
	for (i = 0; i < checkStrtec.length; i++) {
		ch = checkStrtec.charAt(i); 
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) { 
			allValid = false; 
			break;
		}
	}
	return allValid;
}

//================================================================
// Verifica si la cadena recibida como parametro contiene
// valores alfabeticos y numeros, o esta en blanco, o contiene algo diferente.
// Los valores que devuelve son:
//     true : Si contiene caracteres alfabeticos y números nada mas,
//     false: Si contiene caracteres que no sean considerados
//            caracteres alfabeticos o números, o esta vacia.
//================================================================
function valida_letras_numeros(checkStrtec) {
	var checkOK = "abcdefghijklmnopqrstuvwxyz-";
	var checkOK_1 = "0987654321";
	var allValid = true; 
	for (i = 0; i < checkStrtec.length; i++) {
		ch = checkStrtec.charAt(i); 
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) { 
			for (j = 0; j < checkOK_1.length; j++)
				if (ch == checkOK_1.charAt(j))
					break;
		}
		else
			j = 0;
		if (j == checkOK_1.length) { 
			allValid = false; 
			break;
		}
	}
	return allValid;
}

//================================================================
// Verifica si la cadena recibida como parámetro corresponde
// valores numéricos, o está en blanco, o contiene algo diferente.
// Los valores que recibe son:
//   0: Si la cadena ingresada corresponde a un RUC válido
//   1: Si existe un error en la provincia
//   2: Si existe un error en digito verificador
//   3: Debe haber una principal
//================================================================

function valida_ruc(valor) 
{  
  var scero = 0;
  var acum = 0;
  var compara = "000";
  var spaso;
  var scadena;
  var prov;
  var i;
  var dig1;
  var dig2;
  var cadena;

    
    if (valor.length < 13)
    {
      return 1;
    }   

    if (valida_valores(valor)) 
    {
	   prov = eval(valor.substring(0,2));	   	 
	   if (prov > 24 || prov < 1) 
	   {		
		  return 1; 
	   }	
	   
       spaso = valor.substring(2,3);                          
       scadena = valor.substring(10,13);               
       if ((spaso == "9") && (scadena == compara))
       {                  
          return 1;        
       }        
       scadena = valor.substring(9,13);                     
       if (((valor.substring(3,4) == "6") && (scadena == "0000")) || ((valor.substring(3,4) == "8") && (scadena == "0000"))) {	             
          return 1; 
	   }
	   
	   if ((valor.substring(2,3)!= "6") && (valor.substring(2,3) != "8") && (valor.substring(2,3) != "9")){	   	      
	      return 1;
	   }       
       
	   if (valor.substring(2,3) == "9") 
       {          
	      acum = 0;
	 	  cadena = "432765432";		  
		  for (var i=0; i<=valor.length-5; i++) 
		  {		
		      dig1 = eval(cadena.substring(i,i+1));		      
		  	  dig2 = eval(valor.substring(i,i+1));
		      acum +=  dig1 * dig2;		      		
		  }       
		  acum = 11 - (acum % 11);          
		  if (acum == 11)
		  {
		 	acum = 0;
		  }		  
		  if (eval(valor.substring(9,10)) != acum)
		  {		   
		     return 1; 
		  }	
		  return 0;    				  
	   }    	   	      
	   
	   if ((valor.substring(2,3) == "6") || (valor.substring(2,3) == "8")) 
	   {	      
   		   acum = 0;
  		   cadena = "32765432";
		   for (var i=0; i<=valor.length-6; i++) 
		   {
			  dig1 = eval(cadena.substring(i,i+1));
			  dig2 = eval(valor.substring(i,i+1));
			  acum += dig1 * dig2;			  
		   }
		   acum = (11-(acum % 11));		   
		   if (acum == 11) 
		   {
			  acum = 0;
		   }   
		   if (eval(valor.substring(8,9)) != acum) 
		   {
			  return 1; 
	       }
	       return 0;   
	   }	 	 
    }	        
}



//================================================================
// Verifica si la cadena recibida como parámetro corresponde
// valores numéricos, o está en blanco, o contiene algo diferente.
// Los valores que recibe son:
//   0: Si la cadena ingresada corresponde a un RUC válido
//   1: Si existe un error en la provincia
//   2: Si existe un error en digito verificador
//   3: Debe haber una principal
//================================================================

function valida_ruc2(valor) 
{  
  var acum = 0;
  var paso = 0;
  var prov = 0;
  var i;
  var ced;
  var ced2;  
    
    if (valor.length < 13)
    {
      return 1;
    }       
    
    if (valida_valores(valor)) 
    {
       ced2 = (valor.substring(10,13));         
       if (ced2.length != 3)
       {
          return 1;
       }
       else
       {
         if (eval(ced2) == 0)      
         {           
           return 1;
         }
       }
       
       ced = eval(valor.substring(0,10));       
	   prov = eval(valor.substring(0,2));       
	   	   
       if (prov > 24 || prov < 1) 
       {       
			return 1;			
	   }       
       
       acum = 0;
       for (var i=0; i<=valor.length-5; i++) 
       {
			if (((i+1)%2) == 0) 
			{  
				acum += eval(valor.substring(i,i+1));				
			}
			else 
			{
				paso = (eval(valor.substring(i,i+1))* 2);		
				if (paso > 9 ) 
				{
					paso -= 9;
				}
				acum += paso;		
			}
	   }
	    
	   acum = 10 - (acum % 10)
	   if (acum == 10) 
	   {
		  acum = 0;
	   }
	
	   if (eval(valor.substring(9,10)) != acum) 
	   {		
		  return 1;
	   }		
	   return 0;
	}
	else 
	{
		return 1;
	}
}



//================================================================
// Función que permite validar el número de cédula ingresado.
//================================================================
function valida_ced(valor) {
var acum;
var paso;
var prov;

	if (valida_valores(valor)) {
		prov = eval(valor.substring(0,2));
		//alert("Mayor a 21 -"+valor.length+"- antes.");		
		//alert(prov);
		if (prov > 24 || prov < 1) 
		{
		    //alert("Mayor a 21 -"+valor.length+"- menor a 1 y se va.");	
			return 1;
		}
		acum = 0
		for (var i=0; i<=valor.length-2; i++) {
			if (((i+1)%2) == 0) {  
				acum += eval(valor.substring(i,i+1));
				//alert("Suma:"+acum+" idx:"+i);
			}
			else {
				paso = (eval(valor.substring(i,i+1))*2);
				//alert("Pone ahora:"+paso+" idx:"+i);
				if (paso > 9 ) {
					paso -= 9;
				}
				acum += paso;
				//alert("Acum:"+acum+" idx:"+i);
			}
		}
		acum = 10 - (acum % 10)
		if (acum == 10) {
			acum = 0;
		}
		if (eval(valor.substring(9,10)) != acum) {
			//alert("La suma -"+acum+"- dig Ver:-"+eval(valor.substring(9,10))+"-");
			return 2;
		}
		//alert("La suma -"+acum+"- dig Ver:-"+eval(valor.substring(9,10))+"-");
		return 0;
	}
	else {
		return 2;
	}
}




//================================================================
// Verifica si la cadena recibida como parametro es una direccion
// de correo valida.
// Los valores que devuelve son:
//     true : Si no es una direccion de correo valida,
//     false: Si es una direccion de correo valida.
//================================================================
function valida_email(valor)
{
    
    var User = "abcdefghijklmnopqrstuvwxyz_1234567890.-";
    var Dominio = "abcdefghijklmnopqrstuvwxyz-1234567890.";
    var ParteUser = "" ;
    var ParteDominio = "" ;
    var CaracterUser = "" ;
    var CaracterDominio  = "" ;
    var ValorUser =  0 ;
    var ValorDominio = 0 ;
    var  i = 0 ;
    var  j = 0 ;
    var retorna = true ;
    var var_arrDominio="";
    
    
                 
    if  ((valor.indexOf("@") > -1) && (valor != ""))    
     {
        
    	ParteUser = valor.substr(0,valor.indexOf("@"));
	    ParteDominio = valor.substr(valor.indexOf("@")+1);
        
               //*****************Evaluar parte del usuario**************
                i = 0 ;
                 for (i=0; i <= ParteUser.length; i++ ) 
                    {              
                      CaracterUser = ParteUser.substr( i, 1) ;
                       j = 0;
                         for (j = 0; j <= 38; j ++ )
                            {   
                              if (CaracterUser == User.substr( j, 1))
                                   {
                                      ValorUser = ValorUser + 1;
                                    }
                              }
                     }
    
        	//alert("ValorUser" + ValorUser + "" + "Longitud" + ParteUser.length);       
        	if (ValorUser < ParteUser.length) 
               {
	           return retorna;
               }
  

		//**************'Evaluar parte del dominio*************
    
        if (ParteDominio.indexOf (".") > -1) 
        {
            /**********Para validar que no haya punto al final**************/
			var_arrDominio = ParteDominio.split(".");
			for (var_auxDominio in var_arrDominio) 
			{
				if (var_arrDominio[var_auxDominio] == "") 
				{
                return retorna;
				}
			}
			/*************************************************************/




            i = 0;
            for(i=0 ; i <= ParteDominio.length; i++)
               {
                  CaracterDominio = ParteDominio.substr( i, 1);
                   j = 0;
                  for (j=0;j <= 37; j++)
                       {
                    	if (CaracterDominio == Dominio.substr(j, 1) )
                           {
	                       ValorDominio = ValorDominio + 1;
                    	   }
                       }
              }
            //alert("ValorDominio" + ValorDominio + " " + "Longitud" + ParteDominio.length);          
            if (ValorDominio < ParteDominio.length)
               {
               return retorna;
               }

             retorna = false;
             return retorna;
        }
        else
        {
        return retorna;
        }
     }        
else 
  {
	return retorna;
  } 

}

//================================================================
// Verifica si la cadena recibida como parametro es un valor
// octeto parte de una direccion IP.
// Los valores que devuelve son:
//     true : Si el valor del octeto es un numero correcto,
//     false: Si el valor del octeto no es un numero correcto.
//================================================================
function valida_numero_ip_oct(valor_oct) {
var retorna = true;
	retorna = valida_valores(valor_oct);
	if (retorna)
		if (valor_oct.valueOf() < 0 || valor_oct.valueOf() > 256)
			retorna = false;
	return retorna;
}

//================================================================
// Verifica si la cadena recibida como parametro es una direccion
// IP correcta.
// Los valores que devuelve son:
//     true : Si el numero de IP es correcto,
//     false: Si el numero de IP es incorrecto.
//================================================================
function verifica_todo_ip(valor_ip) {

var retorna = true;
var var_auxil;
var var_arr;
var cont = 0;
	if (valor_ip != "") {
		var_arr = valor_ip.split(".");
		for (var_auxil in var_arr) {
			if (var_arr[var_auxil] != "") 
			   {
				retorna = valida_numero_ip_oct(var_arr[var_auxil]);
				cont++;
				if (!retorna)
				break;
			   }
			if (var_arr[var_auxil] == "") 
			    {
				retorna = false;
				break;
				}   
		}
	}
	else
		retorna = false;
	if (cont < 4)
		retorna = false;

	return retorna;
}


//============================================================================
// Verifica si la cadena recibida (user o password) como parametro contiene
// valores alfabeticos y numeros, o esta en blanco, o contiene algo diferente.
// Los valores que devuelve son:
//     true : Si contiene caracteres alfabeticos y números nada mas,
//     false: Si contiene caracteres que no sean considerados
//            caracteres alfabeticos o números, o esta vacia.
//============================================================================
function valida_user_password(checkStrDatos) {
    var checkOK = "abcdefghijklmnopqrstuvwxyz";
	var checkOK_1 = "0987654321";
	var allValid = true; 
	for (i = 0; i < checkStrDatos.length; i++) {
		ch = checkStrDatos.charAt(i); 
		for (j = 0; j < checkOK.length; j++)
			if (ch == checkOK.charAt(j))
				break;
		if (j == checkOK.length) { 
			for (j = 0; j < checkOK_1.length; j++)
				if (ch == checkOK_1.charAt(j))
					break;
		}
		else
			j = 0;
		if (j == checkOK_1.length) { 
			allValid = false; 
			break;
		}
	}
	return allValid;
}


/*===============
funcion que se utiliza para validar caractersticas del DNS
la función devuelve 
true: si es que el DNS es correcto
false si es que el DNS es incorrecto.
=================*/
//function verifica_DNS(valor_dns) {
//var retorna = false;
//var var_arr;
//var cont = 0;
//alert("el dato recibido es -"+valor_dns+"-");
//	if ((valor_dns.length > 5) && (valor_dns.indexOf(".") > 0)) {
//		if (valor_dns.length != (valor_dns.lastIndexOf(".") + 1)){
//			var_arr = valor_dns.split(".");
//			for (var_auxil in var_arr) {
//				if (var_arr[var_auxil] != "") {
//					retorna = valida_letras_numeros(var_arr[var_auxil]);
//					cont++;
//					if (!retorna)
//						break;
//				}
//			}
//		}
//	}
//	return retorna;
//}	

function verifica_DNS(valor_dns) 
{
var retorna = false;
var var_arr;
var cont = 0;

//****Variables para validacion en caso de que solo haya ingresado numeros
var dns;
var dns2;
var cadena="";
var cadena2="";
var I;
var J;
var expr=/[abcdefghijklmnopqrstuvwxyz]/;
//**********************************************************
//Validar si estan los 2 puntos seguidos
 dns2=valor_dns.split(".")

  for (J in dns2)
    {   
       cadena2=dns2[J];
	   if(cadena2=="")
         {
		  return false ; 
		 }
     }
//**************************************


	if ((valor_dns.length > 5) && (valor_dns.indexOf(".") > 0))
	 {
		if (valor_dns.length != (valor_dns.lastIndexOf(".") + 1))
		    {
			   var_arr = valor_dns.split(".");
			   for (var_auxil in var_arr) 
			       {
				     if (var_arr[var_auxil] != "") 
					 {
					    retorna = valida_letras_numeros(var_arr[var_auxil]);
					    cont++;
					    if (!retorna)
						   break;
				     }
			       }
		    }
		   
		
	 }
     // Para validar que en caso de que solo haya ingresado numero no
     // pueda con el proceso de registro	                            
    if (retorna)
     {
	  dns=valor_dns.split(".")
      for (I in dns)
		 {   
          cadena=cadena + dns[I];
         }
	  if (!expr.test(cadena)) 
	     {
		 retorna=false;
		 }
      }
		 
	return retorna;
}	


//function verifica_DNS(valor_dns) {
//Public Function valida_dns(dns As String) As Boolean
//var tempo();
//var sumador;
//var suma;

//valida_dns = False

//If ((valor_dns.length > 5) && (valor_dns.indexOf(".") > 0)) {
//If ((valor_dns.length > 6) || (valor_dns.indexOf(".") <= 1) || (valor_dns.indexOf("..") > 0)) {
//    return 1; /* No cumple los requisitos basicos */
//}    
//Else
    //If InStr(Len(dns), dns, ".", vbTextCompare) > 0 Then
//    If (valor_dns.indexOf(".") > 0) {
//        return 1;
//    }    
//    Else
//        tempo = Split(dns, ".", -1, vbTextCompare)
//        For Each parte In tempo
//         If caracter_especial(CStr(parte), 0) Then Exit Function
//        Next
//    valida_dns = True
//    End If
//End If

//End Function

//============== función para validar el país ===========

   function valida_pais(dato_pais) {
    var regresa = false;
       if (dato_pais != "") {
		//alert(dato_pais);
      regresa = true;
      }
	return regresa;
	}
	
//========= función que permite limpiar el contenido ========
//========= de la provincia/estado, ciudad, direccion =======
//===================== y codigopostal ======================

   function Limpia_Datos(provincia,ciudad,direccion,codpostal)
   {  
     //provincia.value = "";
     //ciudad.value = ""; 	
     //direccion.value = "";
     //codpostal.value = "";  
   }   	
//===== Función para abrir ventanas de ayuda======
function trim(cadena)
{
	for(i=0; i<cadena.length; )
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	
	return cadena;
}
	
function valida_comilla(valor) 
{
	var retorna;
	if (valor.indexOf("'") > -1) 
     {
     return(false);
    }

return(true);
}