//FUNCIONES AUXILIARES
function SeleccionarComboPorClave(combo,clavesel)
{
  for (var i=0;i<combo.length;i++){
  	if (combo.options[i].value == clavesel)
  	{
    	combo.selectedIndex=i; 
  		break;
  	}
  }
}
function esDecimal(SeparadorDec ,Nenteros,NDecimales,Numero)
{
  var can_sepdec=0;		// cantidad de separadores de decimales
	var can_enteros=0;		// cantidad de separadores de decimales
	var can_decimales=0;		// cantidad de separadores de decimales
	var validos='0123456789';     	// caracteres numéricos válidos

	for (i=0;i<Numero.length;i++)
	{
    chr1=Numero.charAt(i);

    // cuenta los SEParadoresdeDECimales 
    if(chr1 == SeparadorDec) 
    {
      if (can_enteros==0)
      {
        //No hay numero enteroas antes del sepador de decimales
        return false
      }
      can_sepdec++;
      if(can_sepdec > 1) 
      {
        //Hay mas de un sepador de decimales
        return false;
      }
    }
    //valida los caracteres permitidos 
    else if(validos.indexOf(chr1) > -1) 
    {
      if (can_sepdec==0)
      {
        can_enteros++;
        if (can_enteros>Nenteros)
        {
          //Se sobrepasa el numero de enteros
          return false;
        }
      }
      else
      {
        can_decimales++;
        if (can_decimales>NDecimales)
        {
          //Se sobrepasa el numero de decimales
          return false;
        }      
      }
    }
    else
    {
      //Hay caracteres que no son ni numeros ni el separador de decimales
      return false;
    }      
  }

  if (can_sepdec>0 && can_decimales==0)
  {
    //Hay separador de decimales pero no hay cifras decimales
    return false
  }

	return true;
}

function esDecimalNegativo(SeparadorDec ,Nenteros,NDecimales,Numero)
{
  var can_sepdec=0;		// cantidad de separadores de decimales
	var can_enteros=0;		// cantidad de separadores de decimales
	var can_decimales=0;		// cantidad de separadores de decimales
	var validos='0123456789';     	// caracteres numéricos válidos

  var inicio=0;

  if (Numero.substring(0,1)=='-')
  {
    inicio=1;
  }

	for (i=inicio;i<Numero.length;i++)
	{
    chr1=Numero.charAt(i);

    // cuenta los SEParadoresdeDECimales 
    if(chr1 == SeparadorDec) 
    {
      if (can_enteros==0)
      {
        //No hay numero enteroas antes del sepador de decimales
        return false
      }
      can_sepdec++;
      if(can_sepdec > 1) 
      {
        //Hay mas de un sepador de decimales
        return false;
      }
    }
    //valida los caracteres permitidos 
    else if(validos.indexOf(chr1) > -1) 
    {
      if (can_sepdec==0)
      {
        can_enteros++;
        if (can_enteros>Nenteros)
        {
          //Se sobrepasa el numero de enteros
          return false;
        }
      }
      else
      {
        can_decimales++;
        if (can_decimales>NDecimales)
        {
          //Se sobrepasa el numero de decimales
          return false;
        }      
      }
    }
    else
    {
      //Hay caracteres que no son ni numeros ni el separador de decimales
      return false;
    }      
  }

  if (can_sepdec>0 && can_decimales==0)
  {
    //Hay separador de decimales pero no hay cifras decimales
    return false
  }

	return true;
}

function esDigito(cadenaEntrada)
{
	for (i=0;i<cadenaEntrada.length;i++)
	{
		if  ( isNaN(parseInt(cadenaEntrada.substring(i,i+1),10)) ) return false;	//Netscape

		if ((cadenaEntrada.substring(i,i+1))!=(parseInt(cadenaEntrada.substring(i,i+1),10))) return false;	//Explorer
	}
	return true;
}

function esDigitoNegativo(cadenaEntrada)
{
  var inicio=0;

  if (cadenaEntrada.substring(0,1)=='-')
  {
    inicio=1;
  }

	for (i=inicio;i<cadenaEntrada.length;i++)
	{
		if  ( isNaN(parseInt(cadenaEntrada.substring(i,i+1),10)) ) return false;	//Netscape

		if ((cadenaEntrada.substring(i,i+1))!=(parseInt(cadenaEntrada.substring(i,i+1),10))) return false;	//Explorer
	}
	return true;
}

//AL DECIMAL LE QUITA la coma y le pone el punto
function CambiarDecimalPunto(Numero)
{
  var SepPunto="."
	var validos='0123456789';     	// caracteres numéricos válidos

	for (i=0;i<Numero.length;i++)
	{
    chr1=Numero.charAt(i);

    //No es un numero
    if(validos.indexOf(chr1) < 0) 
    {
      return Numero.substring(0,i)+SepPunto +Numero.substring(i+1,Numero.length)
    }
  }

	return Numero;
}

function ignore0Izquierda(Num) {

	for(i = 0; i < Num.length; i++)
  {
  	if (Num.charAt(i)!="0")
  	{
  	  return Num.substring(i,Num.length);
  	}
  }
  return "0";
}

function ignoreSpaces(string) {
var temp = "";

	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
  {
  	temp += splitstring[i];
  }
	return temp;
}

function NumMes2Cifras(cadena) {
var temp="";

  if (cadena<10)
  {
	  temp='0' + cadena;
  }
  else  
  {
	  temp=cadena;
  }

  return temp;
}

//VALIDACIONES
function ValidarDirCorreoElectronico(email) {
var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.";
var i;
var valido = true;
var pos_arroba = email.indexOf("@");
var pos_ultimo_punto = email.lastIndexOf(".");
var email_minus = email.toLowerCase();
var trozo;
    
  if (pos_arroba == -1) {
    return false;
  }
  if (pos_ultimo_punto == -1) {
    return false;
  }
  trozo = email.substring(0, pos_arroba);
  for(i=0;i<trozo.length;i++) {
    if (caracteres.indexOf(trozo.charAt(i)) == -1) {
      valido = false;
      break;
    }
  }    
  if (!valido) {
    return false;
  }
  valido = true;
  trozo = email.substring(1+pos_arroba, pos_ultimo_punto);
  for(i=0;i<trozo.length;i++) {
    if (caracteres.indexOf(trozo.charAt(i)) == -1) {
      valido = false;
      break;
    }
  }    
  if (!valido) {
    return false;
  }
  valido = true;
  trozo = email.substring(1+pos_ultimo_punto, email.length);    
  if ((trozo.length >= 2)&&(trozo.length <= 3)) {
    for(i=0;i<trozo.length;i++) {
      if (caracteres.indexOf(trozo.charAt(i)) == -1) {
        valido = false;
        break;
      }
    }    
    if (!valido) {
      return false;
    }
  } else {
    return false;
  }
  return true;
}    

function ValidarDirWeb(dir) {
var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-.";
var i;
var valido = true;
var pos_ultimo_punto = dir.lastIndexOf(".");
var trozo;
    
  if (pos_ultimo_punto == -1) {
    return false;
  }
  trozo = dir.substring(0, pos_ultimo_punto);
  for(i=0;i<trozo.length;i++) {
    if (caracteres.indexOf(trozo.charAt(i)) == -1) {
      valido = false;
      break;
    }
  }    
  if (!valido) {
    return false;
  }
  valido = true;
  trozo = dir.substring(1+pos_ultimo_punto, dir.length);    
  if ((trozo.length >= 2)&&(trozo.length <= 3)) {
    for(i=0;i<trozo.length;i++) {
      if (caracteres.indexOf(trozo.charAt(i)) == -1) {
        valido = false;
        break;
      }
    }    
    if (!valido) {
      return false;
    }
  } else {
    return false;
  }
  return true;
}    

function obtenerDigitoCCC(valor){
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}

function validaCC(entidad,oficina,dc,cuenta) {
  if (!(obtenerDigitoCCC("00" + entidad + oficina) ==parseInt(dc.charAt(0))) || 
          !(obtenerDigitoCCC(cuenta) ==parseInt(dc.charAt(1))))
    return false
  else
	  return true;
}

function validaNIF(cadena)
{
var valoresNif= new Array ("0","1","2","3","4","5","6","7","8","9","K","L","X");
var controlNif = 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");
	
  //Completo el numero con 0
	while (cadena.length<9) cadena = "0" + cadena;	
  //COJO la letra
	letra=cadena.substring(8,9).toUpperCase();
	//TIPO DE NIF	
	primerCaracter=cadena.substring(0,1).toUpperCase();
	
  //VER que el primer caracter es correcto
  var sEncontrado=false;
	for (i=0;i<valoresNif.length;i++) { if (valoresNif[i]==primerCaracter) sEncontrado=true;  }	
  if (sEncontrado==false) return false;

	var provincia="";
	if ((primerCaracter=="K") || (primerCaracter=="L")){		
		provincia=cadena.substring(1,3);
    //Codigo de provincia no válido					
    if (!esDigito(provincia)) return 1;   
		numero=cadena.substring(3,8);			
	} else if (primerCaracter=="X"){	
		numero=cadena.substring(1,8);		
	} else {		
		numero=cadena.substring(0,8);		
	}

  //Parte numérica del Nif no válida		
	if (!esDigito(numero)) return 1;   

	//El algoritmo dice que al resto hay que 
  //sumarle 1, eso lo hacemos al indexar el 
  //array ya que los indices empiezan en 0				
  letraCalculada=controlNif [((parseFloat(numero)%23))];  

  //Letra incorrecta
	if (letra != letraCalculada) return 2;   
	
  //todo bien.
  return 0;  
}

function validaCIF(cadena)
{
	var valoresCif= new Array ("A","B","C","D","E","F","G","H","N","P","Q","S");
	var controlCifLetras = new Array ("A","B","C","D","E","F","G","H","I","J");
	//Completo el numero con 0
	while (cadena.length<9) cadena = "0" + cadena;	

	//TIPO DE CIF
	primerCaracter=cadena.substring(0,1).toUpperCase();
	var tipo="desconocido";	
	
  //VER si todas las cifras son del tipo de CIF
  var sEncontrado=false;
	for (i=0;i<valoresCif.length;i++) { if (valoresCif[i]==primerCaracter) sEncontrado=true;  }	
  if (sEncontrado==false) return false;

	if (primerCaracter=="N") {
		pais=cadena.substring(1,4);
    //Codigo de pais no válido		
    if (!esDigito(pais)) return false;   
		numero=cadena.substring(4,8);
	}else {
		numero=cadena.substring(1,8);		
	}		

  //Parte numérica del CIF no válida				
	if (!esDigito(numero)) return false;   
	caracterControlCalculado = 10 - ( (
						 Math.floor( 0.2*parseInt(cadena.substring(1,2),10) ) +
						 ( 2*parseInt(cadena.substring(1,2),10) %10) +						 
						  Math.floor( 0.2*parseInt(cadena.substring(3,4),10) ) +
						 ( 2*parseInt(cadena.substring(3,4),10) %10) +							 
						  Math.floor( 0.2*parseInt(cadena.substring(5,6),10) ) +
						 ( 2*parseInt(cadena.substring(5,6),10) %10) +
						  Math.floor( 0.2*parseInt(cadena.substring(7,8),10) ) +
						 ( 2*parseInt(cadena.substring(7,8),10) %10) +
						 parseInt(cadena.substring(2,3),10) +
						 parseInt(cadena.substring(4,5),10) +
						 parseInt(cadena.substring(6,7),10) 
						 )% 10);		
	if ((primerCaracter=="N") ||(primerCaracter=="P") || (primerCaracter=="Q") || (primerCaracter=="S") ) {
		caracterControlCalculado = valoresCif[caracterControlCalculado-1];
	}
	if (caracterControlCalculado==10) caracterControlCalculado=0;
  //Carácter Control incorrecto
	if (caracterControl != caracterControlCalculado) return false;   

  //todo bien.
	return true;
}

function Fecha1MenorFecha2Controles(Anio1,Mes1,Dia1,Anio2,Mes2,Dia2)
{
  return Fecha1MenorFecha2(Anio1.value,Mes1.value,Dia1.value,Anio2.value,Mes2.value,Dia2.value)
}
function Fecha1MenorFecha2(Anio1,Mes1,Dia1,Anio2,Mes2,Dia2)
{
  //Multiplicamos por 1 para quitar los 0 de las cifras menores que 10
  //A los meses les sumamos 1 para evitar que el 0 sea nulo
  Anio1=Anio1*1;
  Mes1=Mes1*1+1;
  Dia1=Dia1*1;
  Anio2=Anio2*1;
  Mes2=Mes2*1+1;
  Dia2=Dia2*1;

  if (Anio2==""|| Mes2==""|| Dia2=="")
  {
    return true;
  }  
  else
  {
    if (Anio1>Anio2)
    {
      return false;
    } 
    else  if (Anio1==Anio2 && Mes1>Mes2)
    {
      return false;
    } 
    else  if (Anio1==Anio2 && Mes1==Mes2 && Dia1>=Dia2)
    {
      return false;
    } 
    else
    {
  	  return true;
    }
  }
}

function Fecha1MenorIgualFecha2Controles(Anio1,Mes1,Dia1,Anio2,Mes2,Dia2)
{
  return Fecha1MenorIgualFecha2(Anio1.value,Mes1.value,Dia1.value,Anio2.value,Mes2.value,Dia2.value)
}
function Fecha1MenorIgualFecha2(Anio1,Mes1,Dia1,Anio2,Mes2,Dia2)
{
  //Multiplicamos por 1 para quitar los 0 de las cifras menores que 10
  //A los meses les sumamos 1 para evitar que el 0 sea nulo
  Anio1=Anio1*1;
  Mes1=Mes1*1+1;
  Dia1=Dia1*1;
  Anio2=Anio2*1;
  Mes2=Mes2*1+1;
  Dia2=Dia2*1;

  if (Anio2==""|| Mes2==""|| Dia2=="")
  {
    return true;
  }  
  else
  {
    if (Anio1>Anio2)
    {
      return false;
    } 
    else  if (Anio1==Anio2 && Mes1>Mes2)
    {
      return false;
    } 
    else  if (Anio1==Anio2 && Mes1==Mes2 && Dia1>Dia2)
    {
      return false;
    } 
    else
    {
  	  return true;
    }
  }
}

function Fecha1IgualFecha2(Anio1,Mes1,Dia1,Anio2,Mes2,Dia2)
{
  //Multiplicamos por 1 para quitar los 0 de las cifras menores que 10
  //A los meses les sumamos 1 para evitar que el 0 sea nulo
  Anio1=eval(Anio1*1);
  Mes1=Mes1*1+1;
  Dia1=Dia1*1;
  Anio2=Anio2*1;
  Mes2=Mes2*1+1;
  Dia2=Dia2*1;

  if (Anio1==Anio2 && Mes1==Mes2 && Dia1==Dia2)
  {
    return true;
  }  
  else
  {
    return false;
  }
}

function Num1MenorNum2(Num1,Num2)
{
  Num1=CambiarDecimalPunto(Num1);
  Num2=CambiarDecimalPunto(Num2);

  if (Num1==Math.min(Num1,Num2) && (Num1!=Num2))
    return true;
  else
    return false;
}


function esHora(Numero)
{
	var validos='0123456789';     	// caracteres numéricos válidos
  if (Numero.length!=8)
  {
    return false;
  }

  //Primera cifra horas
  chr1=Numero.charAt(0);
  if (chr1!='0' && chr1!='1' && chr1!='2')
  {
    return false;
  }
  //Segunda cifra horas
  chr2=Numero.charAt(1);
  if (chr1=='2')
  {
    if (chr2!='0' && chr2!='1' && chr2!='2' && chr2!='3')
    {
      return false;
    }
  }
  else
  {
    if(validos.indexOf(chr1) < 0) 
    {
      return false;
    }
  }

  //Dos puntos
  chr3=Numero.charAt(2);
  if (chr3!=':')
  {
    return false;
  }

  //Primera cifra minutos
  chr1=Numero.charAt(3);
  if (chr1=='6' && chr1!='7' && chr1!='8' && chr1!='9')
  {
    return false;
  }
  //Segunda cifra minutos
  chr2=Numero.charAt(4);
  if(validos.indexOf(chr1) < 0) 
  {
    return false;
  }

  //Dos puntos
  chr3=Numero.charAt(5);
  if (chr3!=':')
  {
    return false;
  }

  //Primera cifra segundos
  chr1=Numero.charAt(6);
  if (chr1=='6' && chr1!='7' && chr1!='8' && chr1!='9')
  {
    return false;
  }
  //Segunda cifra minutos
  chr2=Numero.charAt(7);
  if(validos.indexOf(chr1) < 0) 
  {
    return false;
  }
  return true;
}

function PonerDosPuntos(Hora)
{
  if (Hora.value.length==6)
  {
    sAux=Hora.value.substring(0,2)+':'+Hora.value.substring(2,4)+':'+Hora.value.substring(4,6);
    Hora.value=sAux;
  }
}


function esNumCuenta(Numero)
{
	var validos='0123456789';     	// caracteres numéricos válidos
  if (Numero.length!=23)
  {
    return false;
  }

  //Banco
  Banco=Numero.substring(0,4);
  if (!esDigito(Banco))
  {
    return false;
  }
  //Separador
  chrSep=Numero.charAt(4);
  if (chrSep!='-')
  {
    return false;
  }
  //Oficina
  Oficina=Numero.substring(5,9);
  if (!esDigito(Oficina))
  {
    return false;
  }
  //Separador
  chrSep=Numero.charAt(9);
  if (chrSep!='-')
  {
    return false;
  }
  //Separador
  chrSep=Numero.charAt(12);
  if (chrSep!='-')
  {
    return false;
  }
  //Numero de cuenta
  NumCuenta=Numero.substring(13,23);
  if (!esDigito(NumCuenta))
  {
    return false;
  }
  //Digito de control, lo controlamos lo ultimo para verificar el tema de los articulos
  DigControl=Numero.substring(10,12);
  //Validar el numero de cuenta
  if (DigControl =='**')
  {
    return true;
  }
  else
  {
    if (!esDigito(DigControl))
    {
      return false;
    }
  }

  if (!validaCC(Banco,Oficina,DigControl,NumCuenta))
  {
    return false;
  }

  return true;
}

function PonerLineaNumCuenta(Num)
{
  if (Num.value.length==20)
  {
    sAux=Num.value.substring(0,4)+'-'+Num.value.substring(4,8)+'-'+Num.value.substring(8,10)+'-'+Num.value.substring(10,20);
    Num.value=sAux;
  }
}

//NO UTILIZADAS POR AHORA

function validarFecha(dia, mes, anyo) {
    
    if (!anyo) return false;
    if (anyo<1850) return false;
    if (!mes) return false;
    if (!dia) return false;
    var test = new Date(anyo, mes-1, dia);
    if ( (test.getFullYear() != anyo) || (mes-1 != test.getMonth()) || (dia != test.getDate()) ) return false;
    return true;
}

function ValidacionFecha(fecha, sep) {
    var numeros = "0123456789";
    var pos1 = fecha.indexOf(sep);
    var pos2 = fecha.indexOf(sep, pos1+1);
    var dia, mes, ano;
    var i;
    
    if ((pos1 == -1)||(pos2 == -1)) {
        return "";
    }
    dia = fecha.substring(0, pos1);
    mes = fecha.substring(pos1+1, pos2);
    ano = fecha.substring(pos2+1, fecha.length);
    
    if ((dia.length < 1)||(dia.length > 2)) {
        return "";
    }
    for(i=0;i<dia.length;i++) {
        if (numeros.indexOf(dia.charAt(i)) == -1) {
            return "";
        }
    }
    
    if (dia < 1) {
        return "";
    }

    if ((mes.length < 1)||(mes.length > 2)) {
        return "";
    }
    for(i=0;i<mes.length;i++) {
        if (numeros.indexOf(mes.charAt(i)) == -1) {
            return "";
        }
    }

    if (ano.length != 4) {
        return "";
    }
    for(i=0;i<ano.length;i++) {
        if (numeros.indexOf(ano.charAt(i)) == -1) {
            return "";
        }
    } 

    if (parseInt(ano,10) < 1880) {
        return "";
    }
    
    if (validarFecha(parseInt(dia,10), parseInt(mes,10), parseInt(ano,10))) {
        if (dia.length == 1) dia = "0" + dia;
        if (mes.length == 1) mes = "0" + mes;
        return dia + "/" + mes + "/" + ano
    }
}


function ValidarTelefono(numero) {
	var NUMEROS="1234567890";
	for (var i=0;i<numero.length;i++) {
		if (numero.charAt(0)!='9' || numero.charAt(1)=='0' ){
			return false;
		}
		
		if (NUMEROS.indexOf(numero.charAt(i))<0) {
			return false;
		}
		
	}
}

function validaCP(f)
{
	if (!esDigito(f.DIR_CP.value)){
		alert("El Código Postal debe ser numérico");
		f.DIR_CP.focus();
		return false;
	}
    
    if (f.DIR_CP.value.length!=5){ 
		alert("El Código Postal debe tener 5 dígitos");	
		f.DIR_CP.focus();
		return false;
	}
	var provinciaSeleccionada = f.PRO_ID_PROVINCIA.options[f.PRO_ID_PROVINCIA.selectedIndex].value;
	while (provinciaSeleccionada.length<2) provinciaSeleccionada = "0" + provinciaSeleccionada;
	
	if (f.DIR_CP.value.substring(0,2)!=provinciaSeleccionada){ 
		alert("El Código Postal introducido no se corresponde con la provincia seleccionada.");	
		f.DIR_CP.focus();
		return false;
	}

	return true;
}


function esTexto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	

function esTextoMinusculas(cadenaEntrada) {
    var caracteres = "abcdefghijklmnopqrstuvwxyz0123456789.-_";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	
	

function esTextoCompleto(cadenaEntrada) {
    var caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ -.,?!¿¡;:()ºª$[]{}áÁéÉíÍóÓúÚñÑçÇ";

	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteres.indexOf(c)==-1) {
			return false;
		}
	}
	return (true);
}	








function esCadenaValida(cadenaEntrada) {
	var caracteresMal = "\'\%\"\^\*\\";
	for (i=0;i<cadenaEntrada.length;i++){
		var c = cadenaEntrada.charAt(i);
		if (caracteresMal.indexOf(c)!=-1) {
			return false;
		}
	}
	return (true);
}	




//-->