//************************************************************
//  FUNCIONES GENERALES
//************************************************************


//************************************************************
// Elimina las preposiciones de una cadena.
// Devuelve la cadena depurada
//************************************************************

    function f_esPreposicion(sCad)
    {
        sCadPreposiciones = ",a,ante,bajo,con,de,desde,durante,en,entre,excepto,hacia,hasta,mediante,para,por,salvo,segun,sin,so,sobre,tras,";
        sCadPreposiciones = sCadPreposiciones + "el,la,los,las,y,";

        sCad = trim(sCad);
        sCad = "," + sCad + ",";    // Agrego una coma a cada extremo para poder buscar esa palabra en la cadena de preposiciones
        if (sCadPreposiciones.indexOf(sCad) >= 0)
            return true;
        else
            return false;
    }

    function f_eliminarPreposiciones(sCad)
    {
        sCadAux = sCad.toLowerCase();   // convierto toda la cadena a minusculas para poder buscar las preposiciones
        sCadRpta = "";  // Cadena a devolver
        // Depura 2 espacios en blanco consecutivos
        while (sCadAux.indexOf("  ") > 0)
            sCadAux = sCadAux.replace("  "," ");
        sCadAux = sCadAux + " ";    // para que encuentre un espacio en blanco incluso con la ultima palabra

        // Elimino las preposiciones de la cadena resultante
        cont = 0;
        while (sCadAux.length > 0)
        {
            iPosBlanco = sCadAux.indexOf(" ");
            sPalabra = sCadAux.substring(0,iPosBlanco);
//          alert(sCadAux + "--" + iPosBlanco + " --" + sPalabra);
            sCadAux = sCadAux.substring(iPosBlanco+1, sCadAux.length);

            // Ahora verifico que esa palabra no sea un preposición: En caso de no serlo, se agrega a la cadena final
            if (!f_esPreposicion(sPalabra))
                sCadRpta = sCadRpta + sPalabra + " ";
        }
        return trim(sCadRpta);
    }


//************************************************************
// Verifica si es una cadena está vacía.
//************************************************************

function esVacio(s)
{
    return ((s == null) || (s.length == 0))
}


//************************************************************
// Verifica si es una cadena contiene sólo espacios en blanco,
// tabuladores, o retornos de linea)
//************************************************************

function esEspacio (s)
{
    var i;
    var whitespace = " \t\n\r";
    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 whitespace,
        // entonces retornar falso
        if (whitespace.indexOf(c) == -1)
            return false;
    }
    return true;
}


//************************************************************
// Quita todos los caracteres que que estan en "bag" de la cadena
//  "s".
//************************************************************

function stripCharsInBag (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;
}


//************************************************************
// Quita espacios en blanco
//************************************************************

    function trim(cadena)
    {
        while (cadena.substring(0,1) == ' ')
            cadena = cadena.substring(1,cadena.length);
        iTamCadena = cadena.length;

        while (cadena.substring(iTamCadena-1,iTamCadena) == ' ')
        {
            cadena = cadena.substring(0,iTamCadena-1);
            iTamCadena = cadena.length;
        }

        return cadena;

    }


//************************************************************
// Verifica si el caracter es una letra.
//************************************************************

function esLetra (c)
{
    var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü.,"
    var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
    return ( ( uppercaseLetters.indexOf( c ) != -1 ) ||
             ( lowercaseLetters.indexOf( c ) != -1 ) )
}


//************************************************************
// Verifica si un caracter es un número
//************************************************************

function esDigito (c)
{
    return ((c >= "0") && (c <= "9"))
}


//************************************************************
// Verifica si una cadena contiene sólo letras o números
//************************************************************

function esAlfanumerico (s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (esLetra(c) || esDigito(c) ) )
            return false;
    }
    return true;
}


//************************************************************
// Verifica si una cadena contiene  solo números
//************************************************************

function esNumero(s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (esDigito(c) ) )
        return false;
    }
    return true;
}


//**************************************************
//  verifica si la cadena tiene apostrofes
//*************************************************

function esApostrofe(s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (c=="'")
            return true;
    }
    return false;
}


//************************************************************
// Verifica si una cadena es un número real
//************************************************************

function esReal(numero)
{
    Decimal=false
    numerostr="" + numero
    for (var i=0; i < numerostr.length; i++)
    {
        var caracter=numerostr.charAt(i)
        if (caracter== "." && !Decimal)
        {
            Decimal=true
            continue
        }
        if (caracter==",")
        {
            continue
        }
        if (caracter < "0" || caracter > "9")
        {
            return false
        }
    }
    if (numero>9999999999999.99)
    {
        return false
    }
    return true
}


//************************************************************
// Verifica si una cadena contiene sólo letras.
//************************************************************

function esAlfabetico (s)
{
    var i;
    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;
}


//************************************************************
// Verifica si es una cadena es un nombre válido: tiene sólo letras,
// números o espacios en blanco.
//************************************************************

function esNombre (s)
{
     var whitespace = " \t\n\r";
     variable=stripCharsInBag( s, whitespace )
     return( esAlfabetico(variable) );
}


//************************************************************
// Verifica si una cadena es un Login válido
//************************************************************

function esLogin (s)
{
    var whitespace = ".-_abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1 )
            return false;
    }

    if (s.charAt(i-1) == "_" || s.charAt(i-1) == "-" || s.charAt(i-1) == ".")
        return false;

    return true;
}

//************************************************************
// Verifica si una cadena es una Clave (password) válida
//************************************************************

function esClave (s)
{
    var whitespace = ".-_abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1 )
            return false;
    }
    return true;
}


//************************************************************
// Verifica si es una cadena es una dirección de correo válida
//************************************************************

function esEmail (s)
{
    if (esEspacio(s))
        return false;
    var i = 1;
    var sLength = s.length;
    while ((i < sLength) && (s.charAt(i) != "@"))
    {
        i++
    }
    if ((i >= sLength) || (s.charAt(i) != "@"))
        return false;
    else
        i += 2;
    while ((i < sLength) && (s.charAt(i) != "."))
    {
        i++
    }
    var pospripun = i;
    if ((i >= sLength - 1) || (s.charAt(i) != "."))
    {
        return false;
    }
    else
    {
        var npuntos = 0;
    while (pospripun < sLength)
    {
        if (s.charAt(pospripun) == ".")
        {
            npuntos++;
        }
        pospripun++;
    }
    if (npuntos > 2)
    {
        return false;
    }
    else
    {   if (s.charAt(pospripun - 1) == ".")
        {
            return false;
        }
        else
            return true;
    }
    }
}

//************************************************************
// Verifica si una cadena es una dirección (ubicación) válida
//************************************************************

function esDireccion (s)
{
    var i;
    var whitespace = " \t\n\r";
    s=stripCharsInBag( s, whitespace )
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (esLetra(c) || esDigito(c) || (c==".") ) )
            return false;
    }
    return true;
}


//************************************************************
// Verifica si una cadena es un número de teléfono válido
//************************************************************

function esTelefono (s)
{
    var modString;
    var phoneChars = "()-+ ";
    modString = stripCharsInBag( s, phoneChars );
    if (modString.length < 6 )
    {
        return false;
    }
    variable =  esNumero(modString)
    return variable;
}


//************************************************************
// Verifica si una cadena es una fecha válida.
//************************************************************

function valida_fecha(dia,mes,ano)
{
    if (dia=='' || mes=='' || ano=='')
    {
        return false;
    }
    if (!esNumero(dia))
        return false;
    if (!esNumero(mes))
        return false;
    if (!esNumero(ano))
        return false;
    if (dia<1 || dia>31)    //Valida el día
    {
        return false;
    }
    if (mes<1 || mes>12)    //Valida el mes
    {
        return false;
    }
    if ( ano<1754 || ano > 9999) //Valida el ano
    {
    return false;
    }
    if(mes==2 && dia>29)    //valida Febrero
    {
        return false;
    }
    if ((ano%4)!=0 && (dia ==29) && (mes==2)) // año bisiesto
    {
        return false;
    }
    if ((mes==4||mes==6||mes==9||mes==11)& dia>30) //Meses de 30 días.
        return false;
    return true;
}

//************************************************************
// Cambia una imagen.
//************************************************************

function CambiaImg(imgid,imgnew)
{
    if(navigator.appVersion.substring(0,1) >=3)
    {
        document.images[imgid].src = eval(imgnew + ".src");
    }
}

//************************************************************
// Cambia una imagen cuando la imagen se encuentra dentro de un div
//************************************************************

function CambiaImgDiv(imgid,imgnew,divId)
{
    if(navigator.appVersion.substring(0,1) >=3)
    {
        if(isIE)
        {
            document.images[imgid].src = eval(imgnew + ".src");
        }
        else if(navigator.appVersion.substring(0,3) >4.5)
        {
            divId.document.images[imgid].src = eval(imgnew + ".src");
        }


    }
}

//************************************************************
// Verifica si es un ruc válido
//************************************************************

function valruc(sValor){
  sValor = trim(sValor)
  if ( esNumero( sValor ) ) {
/*    if ( sValor.length == 8 ){
      suma = 0
      for (i=0; i<sValor.length-1;i++){
        digito = sValor.charAt(i) - '0';
        if ( i==0 ) suma += (digito*2)
        else suma += (digito*(sValor.length-i))
      }
      resto = suma % 11;
      if ( resto == 1) resto = 11;
      if ( resto + ( sValor.charAt( sValor.length-1 ) - '0' ) == 11 ){
        return true
      }
    } else */

    if ( sValor.length == 11 ){
      suma = 0
      x = 6
      for (i=0; i<sValor.length-1;i++){
        if ( i == 4 ) x = 8
        digito = sValor.charAt(i) - '0';
        x--
        if ( i==0 ) suma += (digito*x)
        else suma += (digito*x)
      }
      resto = suma % 11;
      resto = 11 - resto

      if ( resto >= 10) resto = resto - 10;
      if ( resto == sValor.charAt( sValor.length-1 ) - '0' ){
        return true
      }
    }
  }
  return false
}


function crea_ventana(url,alto,ancho)
{
  cadena="width=" + ancho + ",height=" + alto + ",resizable=1,menubar=0,toolbar=0,directories=0,location=0,scrollbars=0";
  window.open(url,'',cadena)
  return;
}


function abrir_en_padre(url)
{
    if (opener && !opener.closed)
        opener.parent.location.href=url;
    else
    {
        cadena="width=800,height=600,resizable=1,menubar=1,toolbar=1,directories=1,location=1,scrollbars=0";

        var myWin = window.open(url,'',cadena)
        // trick the window into thinking it was opened by this new window:
        opener = myWin;
    }
}



var isNav, isIE;
if (parseInt(navigator.appVersion) >= 4){
  if (navigator.appName == "Netscape")
    isNav = true;
  else if (navigator.appName == "Microsoft Internet Explorer" &&
    navigator.appVersion.indexOf("Mac") == -1)
    isIE = true;
 }


//************************************************************
// Verifica si una cadena es una palabra válida para las búsquedas
// con full search text
//************************************************************

function esPalabraValida (s)
{
    var whitespace = "áéíóú¿?° .-_abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1 )
            return false;
    }
    return true;
}


//************************************************************
// Verifica si un email es valido
//************************************************************

function valida_cuenta_correo(texto,s)
{
    if (trim(texto.value)=='')
    {   alert("Ingresa tu cuenta de correo.");
        texto.focus();
        return false;
    }

    if (!esEmail(s)) //validación de puntos y arroba
    {   alert("Debes ingresar una dirección de correo válida ")
        texto.focus();
        return false;
    }

    var whitespace = ".-_@abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1 )
        {
            alert("Debes ingresar una dirección de correo válida ")
            texto.focus();
            return false;
        }
    }

    if (s.charAt(i-1) == "_" || s.charAt(i-1) == "-" || s.charAt(i-1) == ".")
    {
        alert("Debes ingresar una dirección de correo válida ")
        texto.focus();
        return false;
    }

    return true;
}


function retornaLogin (s)
{
    var i, a;
    var returnString = "";
    i = s.indexOf("@");
    for (a=0; a<i; a++)
       returnString += s.charAt(a);
    return returnString;
}


function retornaDominio (s)
{
    var i, iLongitud;
    var returnString = "";
    i = s.indexOf("@");
    iLongitud = s.length;
    for (a=i+1; a<=iLongitud; a++)
    {
       returnString += s.charAt(a);
    }
    return returnString.toLowerCase();
}
