// ----------------------------------------------------------------------
// Rutinas para verificacion de formularios, basado en FormChek.js
// ---------------------------------------------------------------------- 

var PorDefectoVacioOk = false
var digitos = "0123456789";
var LetrasMinusculas = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var LetrasMayusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var EspacioEnBlanco = " \t\n\r";
var CharTelefono = "()-+ ";
var mMessage = "Error: no puede dejar este campo vacio"
var pPrompt = "Error: ";
var pAlfanumerico = "ingrese un texto que contenga solo letras y/o numeros";
var pAlfabetico   = "ingrese un texto que contenga solo letras";
var pNroEntero = "ingrese un numero entero";
var pNumero = "ingrese un numero";
var pNroTelefono = "ingrese un número de teléfono";
var pEmail = "ingrese una dirección de correo electrónico válida";
var pNombre = "ingrese un texto que contenga solo letras, numeros o espacios";
var DiasEnMes = llenararreglo(12);
DiasEnMes[1] = 31;
DiasEnMes[2] = 29;   
DiasEnMes[3] = 31;
DiasEnMes[4] = 30;
DiasEnMes[5] = 31;
DiasEnMes[6] = 30;
DiasEnMes[7] = 31;
DiasEnMes[8] = 31;
DiasEnMes[9] = 30;
DiasEnMes[10] = 31;
DiasEnMes[11] = 30;
DiasEnMes[12] = 31;

function llenararreglo(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   } 
   return this
}

function escapeVal(textarea,replaceWith){ 
	var textarea1 = new String(escape(textarea.value));
	
	for(i=0; i<textarea1.length; i++){ 
		if(textarea1.indexOf("%0D%0A") > -1){ 
			textarea1=textarea1.replace("%0D%0A",replaceWith);
		}
		else 
		if(textarea1.indexOf("%0A") > -1){ 
			textarea1=textarea1.replace("%0A",replaceWith);
		}
		else if(textarea1.indexOf("%0D") > -1){ 
			textarea1=textarea1.replace("%0D",replaceWith);
		}
	}
	return unescape(textarea1);
}

function EsHora(variable)
{   
	LaHora = new String(variable);
	if (LaHora.indexOf(':') == -1) return false;
	splitLaHora = LaHora.split(":");
	//La Hora: splitLaHora[0] ---> Los Minutos: splitLaHora[1]
	if (isNaN(parseInt(splitLaHora[0], 10))) return false;
	if (isNaN(parseInt(splitLaHora[1], 10))) return false;
	
	if ( (parseInt(splitLaHora[0],10) < 8 )||(parseInt(splitLaHora[0],10) > 18 ) ) return false;
	if ( (parseInt(splitLaHora[1],10) < 0 )||(parseInt(splitLaHora[1],10) > 59 ) ) return false;

	if ( (parseInt(splitLaHora[0],10) == 8 )&&(parseInt(splitLaHora[1],10) < 30 ) ) return false;
	if ( (parseInt(splitLaHora[0],10) == 18 )&&(parseInt(splitLaHora[1],10) > 30 ) ) return false;
	
    return true;
}

function esHoraMayor(Hora_Fin, Hora_Ini)
{
	if ( (EsHora(Hora_Fin))&&(EsHora(Hora_Ini)) ){
		LaHora_Fin = new String(Hora_Fin);
		LaHora_Ini = new String(Hora_Ini);
		
		splitLaHora_Fin = LaHora_Fin.split(":");
		splitLaHora_Ini = LaHora_Ini.split(":");
		
		if (parseInt(splitLaHora_Fin[0],10) < parseInt(splitLaHora_Ini[0],10)) return false;
		if ( (parseInt(splitLaHora_Fin[0],10) == parseInt(splitLaHora_Ini[0],10))&&(parseInt(splitLaHora_Fin[1],10) <= parseInt(splitLaHora_Ini[1],10)) ) return false;
		return true;
	}
	return false;
}

function esFecha_Compl(Aux_Fecha)
{
	if (esVacio(Aux_Fecha)) return false;
	Validar_Fec	= new String(Aux_Fecha);
	Validar_Fec	= Validar_Fec.replace("-","/"); //Saco los puntos de la variable
	Validar_Fec	= Validar_Fec.replace(".","/"); //Saco las comas de la variable	
	splitValidar_Fec = Validar_Fec.split("/"); //Lo separo en Ruc y Digito
	X_Dia = splitValidar_Fec[0];
	X_Mes = splitValidar_Fec[1];
	X_Ano = splitValidar_Fec[2];
	if ( (esVacio(X_Dia)) || (esVacio(X_Mes)) || (esVacio(X_Ano)) ) return false;
	return esFecha(X_Ano, X_Mes, X_Dia);
}

function esFecha(anno, meses, dia)
{   
    var intanno = parseInt(anno, 10);
    var intmes  = parseInt(meses, 10);
    var intDia  = parseInt(dia, 10);
    // catch invalid Dias, except for February
    if (intDia == 0) return false; 
    if (intmes == 0) return false;
    if (intanno == 0) return false;
    if (intDia > DiasEnMes[intmes]) return false; 
    if ((intmes == 2) && (intDia > DiasEnFebrero(intanno))) return false;
    return true;
}

function DiasEnFebrero (anno)
{   
	return (  ((anno % 4 == 0) && ( (!(anno % 100 == 0)) || (anno % 400 == 0) ) ) ? 29 : 28 );
}

function esFechaMayor(anno_f, meses_f, dia_f, anno_i, meses_i, dia_i)
{
	if (anno_f < anno_i) return false;
	if ( (anno_f == anno_i)&&(meses_f < meses_i) ) return false;
	if ( (anno_f == anno_i)&&(meses_f == meses_i)&&(dia_f <= dia_i) ) return false;
	return true;
}

function esFechaIgual(anno_f, meses_f, dia_f, anno_i, meses_i, dia_i)
{
	if ( (anno_f == anno_i)&&(meses_f == meses_i)&&(dia_f == dia_i) ) return true;
	return false;
}

function esVacio(s)
{   return ((s == null) || (s.length == 0)) }

function esEspacioEnBlanco (s)
{   var i;
    if (esVacio(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        // si el caracter en que estoy no aparece en EspacioEnBlanco,
        // entonces retornar falso
        if (EspacioEnBlanco.indexOf(c) == -1) return false;
    }
    return true;
}

function NoEsEspacioEnBlanco (s)
{
    if (esEspacioEnBlanco(s)) return false;
    return true;
}

function sacaCharDesdeBag (s, bag)
{   var i;

    var returnString = "";

    // Buscar por el string, si el caracter no esta en "bag", 
    // agregarlo a returnString
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function sacaCharDistDesdeBag (s, bag)
{   var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }
    return returnString;
}

function sacaEspacioEnBlanco (s)
{   return sacaCharDesdeBag (s, EspacioEnBlanco) }

function charEnCadena (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true; }
    return false
}

function sacaEspacioInicialEnBlanco (s)
{   var i = 0;
    while ((i < s.length) && charEnCadena (s.charAt(i), EspacioEnBlanco))
       i++;
    return s.substring (i, s.length);
}

function esLetra (c)
{
    return( ( LetrasMayusculas.indexOf( c ) != -1 ) ||
            ( LetrasMinusculas.indexOf( c ) != -1 ) )
}

function esDigito (c)
{   return ((c >= "0") && (c <= "9")) }

function esLetraODigito (c)
{   return (esLetra(c) || esDigito(c)) }

function esEntero (s)
{   var i;
    if (esVacio(s)) 
       if (esEntero.arguments.length == 1) return PorDefectoVacioOk;
       else return (esEntero.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if (!esDigito(c)) return false;
        } else { 
            if (!esDigito(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function esNumero (s)
{   var i;
    var elPuntoAparecio;
    elPuntoAparecio = false;
    if (esVacio(s)) 
       if (esNumero.arguments.length == 1) return PorDefectoVacioOk;
       else return (esNumero.arguments[1] == true);
	    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "," ) {
                if( !elPuntoAparecio )
                    elPuntoAparecio = true;
                else
                    return false;
            } else     
                if (!esDigito(c)) return false;
        } else { 
            if ( c == "," ) {
                if( !elPuntoAparecio )
                    elPuntoAparecio = true;
                else
                    return false;
            } else     
                if (!esDigito(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function esAlfabetico (s)
{   var i;
    if (esVacio(s)) 
       if (esAlfabetico.arguments.length == 1) return PorDefectoVacioOk;
       else return (esAlfabetico.arguments[1] == true);
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is letter.
        var c = s.charAt(i);
        if (!esLetra(c))
        return false;
    }
    return true;
}

function esAlfanumerico (s)
{   var i;

    if (esVacio(s)) 
       if (esAlfanumerico.arguments.length == 1) return PorDefectoVacioOk;
       else return (esAlfanumerico.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (esLetra(c) || esDigito(c) ) )
        return false;
    }
    return true;
}

function esNombre (s)
{
    if (esVacio(s)) 
       if (esNombre.arguments.length == 1) return PorDefectoVacioOk;
       else return (esAlfanumerico.arguments[1] == true);
    return( esAlfanumerico( sacaCharDesdeBag( s, EspacioEnBlanco ) ) );
}

function esNumeroTelefono (s)
{   var modString;
    if (esVacio(s)) 
       if (esNumeroTelefono.arguments.length == 1) return PorDefectoVacioOk;
       else return (esNumeroTelefono.arguments[1] == true);
    modString = sacaCharDesdeBag( s, CharTelefono );
    return (esEntero(modString))
}

function esEmail (s)
{   if (esVacio(s)) 
       if (esEmail.arguments.length == 1) return PorDefectoVacioOk;
       else return (esEmail.arguments[1] == true);
   
    // is s EspacioEnBlanco?
    if (esEspacioEnBlanco(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var Num = 0;
    var i = 1;    for (i = 1; i < s.length; i++)
    {   
        if (s.charAt(i) == "@") Num = Num + 1;    }
    if (Num > 1) return false;
        i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}
function isNice(s)
{
        var i = 1;
        var sLength = s.length;
        var b = 1;
        while(i<sLength) {
                if( (s.charAt(i) == "\"") || (s.charAt(i) == "'" ) ) b = 0;
                i++;
        }
        return b;
}

function BarraEstado (s)
{   window.status = s }

function AdviertaVacio (elCampo,msg)
{   elCampo.focus()
    alert(msg)
    BarraEstado(mMessage)
    return false
}

function AdviertaInvalido (elCampo, s)
{   alert(s)
    BarraEstado(pPrompt + s)
    elCampo.focus()
    //elCampo.select() // Para que funcione en Explorer hay que comentarlo
    return false
}

function VerificaCampo (elCampo, laFuncion, VacioOk, s)
{   
var msg;
if (VerificaCampo.arguments.length < 3) VacioOk = PorDefectoVacioOk;
if (VerificaCampo.arguments.length == 4) { msg = s;} else {
	if( laFuncion == esAlfabetico ) msg = pAlfabetico;
	if( laFuncion == esAlfanumerico ) msg = pAlfanumerico;
	if( laFuncion == esEntero ) msg = pNroEntero;
	if( laFuncion == esNumero ) msg = pNumero;
	if( laFuncion == esEmail ) msg = pEmail;
	if( laFuncion == esNumeroTelefono ) msg = pNroTelefono;
	if( laFuncion == esNombre ) msg = pNombre;
}
if ((VacioOk == true) && (esVacio(elCampo.value))) return true;
if ((VacioOk == false) && (esVacio(elCampo.value))) {	elCampo.focus();
	return AdviertaVacio(elCampo,msg);}	
//if ((elCampo.value > 7 ) || (elCampo.value < 0 ))
//	return AdviertaInvalido(elCampo, "Ingrese una nota entre 0 y 7");
if ( !isNice(elCampo.value)) 
	return AdviertaInvalido(elCampo, "No puede utilizar simbolos extranos ni comillas aqui");

if (laFuncion(elCampo.value) == true) 
	return true;
else	{	elCampo.focus();
	return AdviertaInvalido(elCampo,msg);	}
}

function verificaSeleccion (elCampo,s)
{
	if( elCampo.selectedIndex <= 0 )
	{
		return AdviertaInvalido(elCampo, s);
	}
	return true;	
}

function valida_rut(rut,dv){
	//Validar_rut	= new String(rut);
	//Validar_rut	= Validar_rut.replace(".",""); //Saco los puntos de la variable
	//Validar_rut	= Validar_rut.replace(",",""); //Saco las comas de la variable
	//Validar_rut	= Validar_rut.replace("-",""); //Saco los guiones de la variable
	
	//rut = parseInt(Validar_rut, 10);
	dig_ver = dv;
	
	if ( isNaN(rut) ){
		alert("Error:\nSólo deben ingresarse números en el RUT");
		return(false)
	}

	if ( rut.length < 6 || dig_ver == ""){
		alert("Error:\nEl RUT debe contener 6 a 8 dígitos más 1 dígito verificador");
		return(false)
	} 

	if ( rut.length == 6 ) 
		numero_rut = "00" + rut;
	else
		if ( rut.length == 7 ) 
			numero_rut = "0" + rut;
		else	
			numero_rut = rut;

	//alert("numero_rut = "+numero_rut);
        v8 = numero_rut.substr(7,1) * 2;
        v7 = numero_rut.substr(6,1) * 3;
        v6 = numero_rut.substr(5,1) * 4;
        v5 = numero_rut.substr(4,1) * 5;
        v4 = numero_rut.substr(3,1) * 6;
        v3 = numero_rut.substr(2,1) * 7;
        v2 = numero_rut.substr(1,1) * 2;
        v1 = numero_rut.substr(0,1) * 3;

	//alert("v1 = "+v1+"\nv2 = "+v2+"\nv3 = "+v3+"\nv4 = "+v4+"\nv5 = "+v5+"\nv6 = "+v6+"\nv7 = "+v7+"\nv8 = "+v8);
	suma_rut = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8;
	//alert("suma_rut = "+suma_rut); 
	
	resto_rut = suma_rut % 11;
	//alert("resto_rut = "+resto_rut);  
	
	digito_verificador = 11 - resto_rut;
	//alert("digito_verificador = "+digito_verificador); 
	
	if ( digito_verificador == 10 )
		digito_verificador = "K";
	if ( digito_verificador == 11 )
		digito_verificador = 0;

        if ( digito_verificador == "K" ){
                if ( digito_verificador != dig_ver.toUpperCase() ){
                        alert("Error:\n\nEl RUT digitado es incorrecto.");
                        return (false)
                }
                else
                        return (true);
        } else {
                if ( digito_verificador != dig_ver ){
                        alert("Error:\n\nEl RUT digitado es incorrecto.");
                        return (false)
                }
                else
                        return (true);
        }

}

function checkSelect (theField,msg)
{
	if( theField.selectedIndex <= 0 )
	{
		alert(msg);
		theField.focus();
		return false;
	}
	return true;	
}

function Genera_Cadena(Var_SID)
{
	var fecha = new Date();
	var hora = fecha.getHours();
	var minuto = fecha.getMinutes();
	var segundo = fecha.getSeconds();
	var miliseg = fecha.getMilliseconds();	
	if (hora < 10) {hora = "0" + hora};
	if (minuto < 10) {minuto = "0" + minuto};
	if (segundo < 10) {segundo = "0" + segundo};
	if (miliseg < 10) {miliseg = "0" + miliseg};
	if (miliseg < 100) {miliseg = "0" + miliseg};
	if (miliseg < 1000) {miliseg = "0" + miliseg};
	var s = Var_SID+miliseg+segundo+minuto+hora;
	return s;
}

function RucValido(Aux_Ruc)
{
	Validar_Ruc	= new String(Aux_Ruc);
	Validar_Ruc	= Validar_Ruc.replace(".",""); //Saco los puntos de la variable
	Validar_Ruc	= Validar_Ruc.replace(",",""); //Saco las comas de la variable
	splitValidar_Ruc = Validar_Ruc.split("-"); //Lo separo en Ruc y Digito
	//El Ruc: splitValidar_Ruc[0] ---> El Digito: splitValidar_Ruc[1]
	Ruc_Solo = splitValidar_Ruc[0];
	Dig_Solo = splitValidar_Ruc[1];
	
	
	if ((Ruc_Solo.length == 0)||(Dig_Solo.length == 0)) return false;

	aux_NumRuc = Ruc_Solo

	var r=parseInt(Ruc_Solo, 10);
	var i=2;
	var a=0;
	var b=0;
	var c=0;
	while (r!=0)
	{
		a=r % 10;
		b=a*i;
		c=c+b;
		i=i+1;
		if (i>7)
		{
			i=2;
		}
		r=parseInt(r/10, 10);
	}
	var d=c % 11;
	var e=11 - d;
	if (e==10)
	{
	        aux_DVRuc="K";
	}
	else
	    if (e==11)
	    {
	            aux_DVRuc=0;
	    }
	else
		aux_DVRuc=e;

	if (Dig_Solo!=aux_DVRuc) return false;       
	
	return true;   
}   

//------------------------------------------------
// 
//------------------------------------------------
function hora()
{
	var fecha = new Date();
	var hora = fecha.getHours();
	var minuto = fecha.getMinutes();
	var segundo = fecha.getSeconds();
	if (hora < 10) {hora = "0" + hora};
	if (minuto < 10) {minuto = "0" + minuto};
	if (segundo < 10) {segundo = "0" + segundo};
	var horita = hora + ":" + minuto + ":" + segundo;
	document.getElementById('hora').firstChild.nodeValue = horita;
	tiempo = setTimeout('hora()',1000);
}

