function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}
//****************************************************************************** 
function echeck(str) {
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    if (str.indexOf(at)==-1){
       alert("ERROR en el email: Dirección no válida");
       return false;
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
       alert("ERROR en el email: Dirección no válida");
       return false;
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        alert("ERROR en el email: Dirección no válida");
        return false;
    }

     if (str.indexOf(at,(lat+1))!=-1){
        alert("ERROR en el email: Dirección no válida");
        return false;
     }

     if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        alert("ERROR en el email: Dirección no válida");
        return false;
     }

     if (str.indexOf(dot,(lat+2))==-1){
        alert("ERROR en el email: Dirección no válida");
        return false;
     }

     if (str.indexOf(" ")!=-1){
        alert("ERROR en el email: Dirección no válida");
        return false;
     }
     return true					
}
//******************************************************************************
function ValidateEmail(){
	var emailID = document.getElementById("email");
        emailID.value = trim(emailID.value);
	if ((emailID.value==null)||(emailID.value=="")){
		alert("ERROR en el email: Este campo no puede ser vacío.");
		emailID.focus();
		return false;
	}

	/*if (echeck(emailID.value)==false){
		//emailID.value="";
		emailID.focus();
                emailID.select();
		return false;
	}*/
        
        var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
        if (filter.test(emailID.value)){
            return true
        }else{
            alert("ERROR en el email: Dirección no válida")
            return false
        }
	return true;
 }
//******************************************************************************
function NumberFormat(num, numDec, decSep, thousandSep){
    var arg;
    var Dec;
    Dec = Math.pow(10, numDec); 
    if (typeof(num) == 'undefined') return; 
    if (typeof(decSep) == 'undefined') decSep = ',';
    if (typeof(thousandSep) == 'undefined') thousandSep = '.';
    if (thousandSep == '.')
     arg=/./g;
    else
     if (thousandSep == ',') arg=/,/g;
    if (typeof(arg) != 'undefined') num = num.toString().replace(arg,'');
    num = num.toString().replace(/,/g, '.'); 
    if (isNaN(num)) num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * Dec + 0.50000000001);
    cents = num % Dec;
    num = Math.floor(num/Dec).toString(); 
    if (cents < (Dec / 10)) cents = "0" + cents; 
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
     num = num.substring(0, num.length - (4 * i + 3)) + thousandSep + num.substring(num.length - (4 * i + 3));
    if (Dec == 1)
     return (((sign)? '': '-') + num);
    else
     return (((sign)? '': '-') + num + decSep + cents);
   } 
//******************************************************************************
function EvaluateText(cadena, obj){
    opc = false; 
    if (cadena == "%d")
     if (event.keyCode > 47 && event.keyCode < 58)
      opc = true;
    if (cadena == "%f"){ 
     if (event.keyCode > 47 && event.keyCode < 58)
      opc = true;
     if (obj.value.search("[.*]") == -1 && obj.value.length != 0)
      if (event.keyCode == 46)
       opc = true;
    }
    if(opc == false)
     event.returnValue = false; 
   }
//****************************************************************************** 
function ValidaCampo(campo, caract_extra, nulo, caja_valida) {

    if (nulo == 1 && campo == "") {
      alert("ERROR en " + caja_valida + " : Este campo no puede ser vacío.")
      return false
    }

      var caracteres_validos = ""
      caracteres_validos = " abcdefghijklmnopqrstuvwxyzñ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZÑÁÉÍÓÚüÜáéíóú.,;:()-#@&_®";

      var ubicacion
      var enter = "\n"
      var caracteres = caracteres_validos + String.fromCharCode(13) + enter + caract_extra

      var contador = 0
      for (var i=0; i < campo.length; i++) {
        ubicacion = campo.substring(i, i + 1)
        if (caracteres.indexOf(ubicacion) != -1) {
          contador++
        } else {
          alert("ERROR en " + caja_valida + " : En este campo no se acepta el caracter '" + ubicacion + "'.")
          return false
        }
     }

     return true;
}
//******************************************************************************
function ValidaCampo2(campo, caract_extra, nulo, caja_valida) {

    if (nulo == 1 && campo == "") {
      alert("ERROR en " + caja_valida + " : Este campo no puede ser vacío.")
      return false
    }

      var caracteres_validos = ""
      caracteres_validos = " abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-";

      var ubicacion
      var enter = "\n"
      var caracteres = caracteres_validos + String.fromCharCode(13) + enter + caract_extra

      var contador = 0
      for (var i=0; i < campo.length; i++) {
        ubicacion = campo.substring(i, i + 1)
        if (caracteres.indexOf(ubicacion) != -1) {
          contador++
        } else {
          alert("ERROR en " + caja_valida + " : En este campo no se acepta el caracter '" + ubicacion + "'.")
          return false
        }
     }

     return true;
}
//******************************************************************************
function ValidaLetras(campo, caract_extra, nulo, caja_valida) {

    if (nulo == 1 && campo == "") {
      alert("ERROR en " + caja_valida + " : Este campo no puede ser vacío.")
      return false
    }

      var caracteres_validos = ""
      caracteres_validos = " abcdefghijklmnopqrstuvwxyzñABCDEFGHIJKLMNOPQRSTUVWXYZÑÁÉÍÓÚüÜáéíóúü";

      var ubicacion
      var enter = "\n"
      var caracteres = caracteres_validos + String.fromCharCode(13) + enter + caract_extra

      var contador = 0
      for (var i=0; i < campo.length; i++) {
        ubicacion = campo.substring(i, i + 1)
        if (caracteres.indexOf(ubicacion) != -1) {
          contador++
        } else {
          alert("ERROR en " + caja_valida + " : En este campo no se acepta el caracter '" + ubicacion + "'.")
          return false
        }
     }

     return true;
}
//******************************************************************************
function ValidaNumero(campo, caract_extra, nulo, caja_valida) {

    if (nulo == 1 && campo == "") {
      alert("ERROR en " + caja_valida + " : Este campo no puede ser vacío.")
      return false
    }

      var caracteres_validos = ""
      caracteres_validos = "1234567890";

      var ubicacion
      var enter = "\n"
      var caracteres = caracteres_validos + String.fromCharCode(13) + enter + caract_extra

      var contador = 0
      for (var i=0; i < campo.length; i++) {
        ubicacion = campo.substring(i, i + 1)
        if (caracteres.indexOf(ubicacion) != -1) {
          contador++
        } else {
          alert("ERROR en " + caja_valida + " : En este campo no se acepta el caracter '" + ubicacion + "'.")
          return false
        }
     }

     return true;
}
//******************************************************************************
function textCounter(field, countfield, maxlimit) 
{
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
		// otherwise, update 'characters left' counter
		else 
			countfield.value = maxlimit - field.value.length;
}
//******************************************************************************
function quitarenter(cadena) {
    var origen, destino, p1, p2;
    origen = cadena
    destino='';	
    p1=-1;
    do{
        p2 = origen.indexOf('\n',p1+1);
        if (p2 >= 0){
            destino += origen.substring(p1+1,p2-1)+' ';
            p1 = p2;
        }
        else{
            destino += origen.substring(p1+1);
        }
    }
    while (p2 >= 0);
    return destino;
}
//*********************************************************************************
//Esta función permite la descarga de un archivo que se encuentre en el servidor
function ver_archivo() {
    var archivo = document.forms[0].ruta.value;
    var ruta_archivo = "\\" + archivo;
    window.open(ruta_archivo);
}
//*********************************************************************************
//Esta función permite abrir en una nueva ventana la página correspondiente
function abrir(pagina) {
    window.open(pagina);
}
//*********************************************************************************
//Esta función permite abrir la página que muestra el detalle de una solicitud tramitada por el sistema.
function mostrarSolicitud (formulario, id_solicitud, tipo_solicitud, accion) {
    //accion: V-Ver solicitud, E-Evaluar solicitud
    formulario.nro_solicitud.value = id_solicitud;
    formulario.tipo_solicitud.value = tipo_solicitud;
    formulario.ver_solicitud.value = accion;
    formulario.action = "bandeja.jsp";
    formulario.submit();
}
//******************************************************************************
function solicitudes(carpeta){
    var cp = carpeta;

    var obj = document.getElementById("consultar");
    obj.value = cp;
    document.frm_revmaterial.tipo_solicitud.value = "";
    document.frm_revmaterial.ver_solicitud.value = "";
    document.frm_revmaterial.action = "bandeja.jsp";
    document.frm_revmaterial.submit();
}
//*********************************************************************************
//Esta función permite abrir la página que realiza una acción de evaluación sobre la solicitud.
function mostrarObservaciones (tipo, id_solicitud, id_item,titulo) {
    var condiciones = parametrosPopup();
    var pagina = "/biblioweb/pags/pub/listados/lst_det_item.jsp?tipo_solicitud="+tipo+"&nro_item="+id_item+"&nro_solicitud="+id_solicitud+"&titulo="+titulo; 
    window.open(pagina,"Consulta",condiciones);
}
//******************************************************************************
function popUp(URL,wd,gh) {
    day = new Date();
    id = day.getTime();
    if (wd == 0){
        w = screen.availWidth-10;
    }
    else{
        w = wd;
    }
    if (gh == 0){
        h = screen.availHeight-20;
    }
    else{
        h = gh;
    }
    eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=' + w + ',height=' + h + ',left = 0,top = 0');");
}
//*********************************************************************************
//Esta función permite hacer un "location", sobre la página que viene como argumento.
function localizarPagina (pagina) {
    window.location = pagina;
}
//*********************************************************************************
//En esta función se definen las características que van a tener las ventanas emergentes del sistems.
//Define ancho, alto y otras condiciones para las ventanas.
function parametrosPopup() {
    var maximo_x = window.screen.availWidth-130;
    var maximo_y = window.screen.availHeight-120;
    var alinear_x = 53;
    var alinear_y = 50;
    var condiciones = "left=" + alinear_x + ",top=" + alinear_y + ",";
    condiciones = condiciones + "width=" + maximo_x + ",height=" + maximo_y + ",";
    condiciones = condiciones + "dependent=yes,resizable=no,scrollbars=yes,";
    condiciones = condiciones + "status=yes,toolbar=no,titlebar=no";
    return condiciones;
}
//*********************************************************************************
//Esta función recorre un listado de cajas de chequeo y valida que si todas están seleccionadas,
//selecciona una caja con mombre "Todos".
//Además coloca en una caja oculta que debe estar en el primer formulario (se debe llamarseleccionados), 
//los valores de las cajas seleccionadas
function validarTodos (registros, cajas, caja_todos) {
    var cant_seleccionados = 0;
    var valores = "";
    var registrados = 0; 
    for (var i = 0; i <= registros; i++) {
        var nm_caja = cajas + i;
        var objeto = document.getElementById(nm_caja);
        if (registros == 0) {
            if (objeto.checked) {
                cant_seleccionados = 1;
                valores = objeto.value;
            }
        }
        else {				
            if (objeto.checked) {
                cant_seleccionados = cant_seleccionados + 1;
                if (registrados == 0) {
                    valores = objeto.value;
                }
                else {
                    valores = objeto.value + "," + valores;
                }
                registrados = registrados + 1;
            }
        }
    }
    valor = parseInt(registros) + 1;
    var objeto_todo = document.getElementById(caja_todos);
    if (cant_seleccionados != valor) {
        objeto_todo.checked = false;
    }
    else {
        objeto_todo.checked = true;
    }

    document.forms[0].seleccionados.value = valores;

}
//*********************************************************************************
//Esta función recorre un listado de cajas de chequeo, y selecciona o no todas las cajas
//de acuerdo a la acción realizada sobre la caja "Todas".
//Además coloca en una caja oculta que debe estar en el primer formulario (se debe llamarseleccionados), 
//los valores de las cajas seleccionadas
function seleccionarTodos (formulario, caja, cajas, maximo) {
    var registros = (parseInt(maximo));
    var a = false;
    var valores = "";
    var registrados = 0;
    if (caja.checked) {
        a = true;
    }
    for (i = 0; i <= registros; i++) {
        var nm_caja = cajas + i;
        var objeto = document.getElementById (nm_caja);
        if (registros == 0) {
            objeto.checked = a;
        }
        else {
            objeto.checked = a;
        }
    }
    if (a == true) {
        document.forms[0].seleccionados.value = caja.value;
    }
    else {
        document.forms[0].seleccionados.value = "";
    }
    
    return true;
}
//*********************************************************************************
//Esta función permite habilitar tres cajas cuyos nombres son valor(x), fecha_ini(x), fecha_fin(x); 
//donde la (x) representa el identificador de la caja
//Actualmente se usa en act_parametros.jsp y act_param_general.jsp
function destapar(caja, id) {
    var nm_caja;
    var obj_check;
    for (i = 0; i<3; i++) {
        switch (i) {
            case 0:
                nm_caja = "valor";
                break;
            case 1:
                nm_caja = "fecha_ini";
                break;
            case 2:
                nm_caja = "fecha_fin";
                break;
        }
        nm_caja = nm_caja + id;
        obj_check = document.getElementById(nm_caja)

        if (caja.checked) {
            obj_check.disabled = false;
        }
        else {
            obj_check.disabled = true;
        }
    }
    return true;
}

//*********************************************************************************
//Esta función valida los campos del formulario de las páginas: act_parametros.jsp y act_param_general.jsp
function validarFormParametros (numero, pagina) {
    var formulario = document.frm_admin;
    if (numero == 0) {
        return false;
    }
    else {
        var valor_nulo = false;
        var contador = 0;
        var i = 0;
        var obj_check;
        var caja;
        while  (i < numero && (valor_nulo == false)) {
            caja = "id" + i;
            
            obj_check = document.getElementById(caja);
            
            if (obj_check.checked) {
                caja = "valor" + i;
                obj_check = document.getElementById(caja);
                if (obj_check.value == "") {
                    valor_nulo = true;
                    alert("El valor del parámetro no puede ser vacío.");
                    obj_check.focus();
                    return false;
                }
            }
            else {
                contador = contador + 1
            }
            i = i + 1;
        }
        if (contador == numero) {
            alert("Para modificar un valor, debe seleccionarlo dando click sobre la caja correspondiente.")
            return false;
        }        
    }
    formulario.numero.value = numero;
    formulario.estado.value = "A";
    formulario.action = pagina;
    formulario.submit();
    return true;
}

//*********************************************************************************
//Esta función valida los campos del formulario de las páginas: act_clases.jsp
function validarFormActClases(formulario) { 
    var clase = formulario.clases.value;
    if (clase == 0) {
        alert ("Debe seleccionar la clase que desea modificar.");
        formulario.clases.focus();
        return false;
    }
    
    var nombre = formulario.nombre.value;
    if (nombre == "") {
        alert ("No puede modificar una clase sin asignar un nombre.");
        formulario.nombre.focus();
        return false;
    }
    
    var descripcion = formulario.descripcion.value;
    if (descripcion == "") {
        alert ("Debe asignar una descripción a la clase.");
        formulario.descripcion.focus();
        return false;
    }
    formulario.estado.value = "A";
    formulario.submit();
}

//*********************************************************************************
//Esta función valida los campos de la página act_tipos.jsp
function validarFormActTipos (formulario, numero) {
    
    var clase = formulario.clases.value;
    if (clase == 0) {
        alert ("Debe seleccionar la clase para modificar los tipos asociados.")
        return false;
    }

    var seleccionados = 0;
    for (var i = 1; i < numero + 1; i++) {
        var nm_caja = "text" + i;
        var objeto = document.getElementById (nm_caja);
        if (objeto.value == "") {
            seleccionados = seleccionados + 1;
        }
    }
    if (seleccionados == numero) {
        alert ("Para actualizar debe seleccionar el tipo y escribir el nuevo nombre en la caja correspondiente.");
        return false;
    }
    
    formulario.estado.value = "A";
    formulario.submit();
}

//********************************************************************
//Esta función valida losa datos del formulario de la página: "act_personal.jsp"
function verificar() {
    var correo = document.frm_admin.email.value;
    var ok = true;
    if (correo != "") {
        ok = ValidateEmail();
    }
    if (ok) {
        document.frm_admin.estado.value= "E";
        document.frm_admin.action = "act_personal.jsp";
        document.frm_admin.submit();
        return true;
    }
    document.frm_admin.email.select();
    return false;
}
//*********************************************************************
