/*
  Titulo: app.js
  Descripcion: Codigo relativo a la logica de la aplicacion.
  Copyright: Copyright (c) 2005
  Empresa: CSD-Systems
  Autor: Jose Manuel Gomez Monton
  Adaptacion: Ernesto Calás Blasco
  version 1.0
*/


/**
 * Boton de Inicio.
 */
function inicio() {
  checkCambios("location='/condominios/jsp/menuAdministrador.jsp'");
}
/**
 * Muestra el Calendario.
 */
function mostrarCalendario(nombreCampo) {
  //msgCargando('cargandoDiv', 0);
  var cal = new calendar1(document.forms[0].elements[nombreCampo]);
  cal.h = 150;
  cal.popup();
}

/**
 * Función para validar la fecha
 */

function esDigito(sChr){
 var sCod = sChr.charCodeAt(0);
 return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
 var bOk = false;
 bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
 bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
 return bOk;
}

function finMes(oTxt){
 var nMes = parseInt(oTxt.value.substr(3, 2), 10);
 var nAnyo = oTxt.value.substr(6);
 var nRes = 0;
 var bisiesto = false;
 nAnyo = nAnyo%4;
 if (nAnyo==0){
   bisiesto = true;
 }
 switch (nMes){
  case 1: nRes = 31; break;
  case 2:
  nRes = 28;
  if (bisiesto){
    nRes = 29;
  }
  break;
  case 3: nRes = 31; break;
  case 4: nRes = 30; break;
  case 5: nRes = 31; break;
  case 6: nRes = 30; break;
  case 7: nRes = 31; break;
  case 8: nRes = 31; break;
  case 9: nRes = 30; break;
  case 10: nRes = 31; break;
  case 11: nRes = 30; break;
  case 12: nRes = 31; break;
 }
 return nRes;
}

function valDia(oTxt){
 var bOk = false;
 var nDia = parseInt(oTxt.value.substr(0, 2), 10);
 bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
 return bOk;
}

function valMes(oTxt){
 var bOk = false;
 var nMes = parseInt(oTxt.value.substr(3, 2), 10);
 bOk = bOk || ((nMes >= 1) && (nMes <= 12));
 return bOk;
}

function valAno(oTxt){
 var bOk = true;
 var nAno = oTxt.value.substr(6);
 bOk = bOk && (nAno.length == 4);
 if (bOk){
  for (var i = 0; i < nAno.length; i++){
  bOk = bOk && esDigito(nAno.charAt(i));
  }
 }
 return bOk;
}

function validarFecha(oTxt){

 var bOkanyo = true;
 var bOkmes = true;
 var bOkdia = true;
 var bOksep = true;

 if (oTxt.value != ""){
  bOksep = (valSep(oTxt));
  if (!bOksep){
   alert("El separador introducido no es un carácter correcto");
  }
  bOkdia = (valDia(oTxt));
  if (!bOkdia && bOksep){
   alert("El dia introducido no es correcto");
  }
  bOkmes = (valMes(oTxt));
  if (!bOkmes && bOkdia && bOksep){
   alert("El mes introducido no es correcto");
  }
  bOkanyo = (valAno(oTxt));
  if (!bOkanyo && bOkdia && bOksep && bOksep){
   alert("El año introducido no es correcto");
  }
  bOk = bOkanyo && bOkmes && bOkdia && bOksep;
  if (!bOk){
   oTxt.focus();
  }
 }
}
//igual que validarFecha pero no realiza alertas y retorna false si no es válida
function validarFecha2(oTxt){

 var bOkanyo = true;
 var bOkmes = true;
 var bOkdia = true;
 var bOksep = true;

 if (oTxt.value != ""){
  bOksep = (valSep(oTxt));
  bOkdia = (valDia(oTxt));
  bOkmes = (valMes(oTxt));
  bOkanyo = (valAno(oTxt));
  bOk = bOkanyo && bOkmes && bOkdia && bOksep;
  if (!bOk){
   return false;
  }
  else {
    return true;
  }
 }
 else return false;
}//fin function

//compara dos fechas validas formato(dd/mm/yyyy)
//return -1 --- oTxt1 menor oTxt2
//return  0 --- oTxt1 igual oTxt2
//return +1 --- oTxt1 mayor oTxt2
function compareFechas(oTxt1, oTxt2){
  //alert ("compareFechas");
  var nDia1 = parseInt(oTxt1.value.substr(0, 2), 10);
  var nDia2 = parseInt(oTxt2.value.substr(0, 2), 10);
  var nMes1 = parseInt(oTxt1.value.substr(3, 2), 10);
  var nMes2 = parseInt(oTxt2.value.substr(3, 2), 10);
  var nAno1 = oTxt1.value.substr(6);
  var nAno2 = oTxt2.value.substr(6);

  if (nAno1 < nAno2) {
    return -1;
  }
  else if (nAno1 > nAno2){
    return 1;
  }
  else { //anyo igual
    if(nMes1 < nMes2){
      return -1;
    }
    else if (nMes1 > nMes2){
      return 1;
    }
    else { //mes igual
      if (nDia1 < nDia2){
        return -1;
      }
      else if (nDia1 > nDia2){
        return 1;
      }
      else return 0;
    }//fin else mes igual
  }//fin else anyo igual
}

//compara dos horas validas formato(HH:MM)
//return -1 --- oTxt1 menor oTxt2
//return  0 --- oTxt1 igual oTxt2
//return +1 --- oTxt1 mayor oTxt2
function compareHoras(oTxt1,oTxt2){
  var horas1 = parseInt(oTxt1.value.substr(0, 2), 10);
  var horas2 = parseInt(oTxt2.value.substr(0, 2), 10);
  var minutos1 = parseInt(oTxt1.value.substr(3, 5), 10);
  var minutos2 = parseInt(oTxt2.value.substr(3, 5), 10);

  if(horas1 < horas2){
    return -1;
  }
  else if (horas1 > horas2){
    return 1;
  }
  else{ //hora igual
    if(minutos1 < minutos2){
      return -1;
    }
    else if(minutos1 > minutos2){
      return 1;
    }
    else return 0;
  }
}

//------------------------------------------------------------------------------
//----------- TABLAS BÁSICAS ---------------------------------------------------
//------------------------------------------------------------------------------


//------------------------------------------------------------------------------
//----------- Tablas Básicas ---------------------------------------------------
//----------- funciones comunes (para codigo - descripcion)---------------------

function ordenar(texto){
  msgCargando('cargandoDiv', 0);
  document.forms[0].ordenacion.value=texto;
  if (texto == "codigo"){
    document.forms[0].ordenacion.value="id";
  }
  document.forms[0].op.value="buscar";
  document.forms[0].submit();
}


/**
 * Boton "Eliminar".
 */
 function borraDato(id,Count) {
   msgCargando('cargandoDiv', 0);
   var borrar = confirm("¿Desea eliminar esta fila?");
   if (borrar == true){
     if (id.substring(0,3) == "new"){
       Count = 0;
     }
   if(Count!='0'){
     alert("no se puede borrar ");
     return false;
   }
   if (id.substring(0,3) != "new") {
     cambios = true;
     var borrados = document.forms[0].borrados;
     if (borrados.value != "") borrados.value += ";";
     borrados.value += id;
   }

   var tabla = document.getElementById("tablaDatos");
   tabla.deleteRow(document.getElementById(id).rowIndex);
   tabla.deleteRow(document.getElementById(id + 'b').rowIndex);
   return false;
   }
 }
 /**
 * Boton "Añadir nuevo".
 */
function nuevoDato() {
  msgCargando('cargandoDiv', 0);
  var rows = document.getElementById("tablaTmp").rows;
  var id = copyRow(document.getElementById("tablaDatos"), rows[0]);
  copyRow(document.getElementById("tablaDatos"), rows[1], id + 'b');
}
/**
 * Boton guardar
 */
 function guardarDato() {
   msgCargando('cargandoDiv', 0);
  //-- Validamos datos
  for (i = 0; i < document.forms[0].elements.length; i++) {
    var campo = document.forms[0].elements[i];
    //-- Num. Dias
    if (campo.name.indexOf('$descripcion') != -1 && (campo.value.length <= 0)) {
      campo.focus();
      alert('Falta por rellenar: Descripcion.');
      return false;
    }
  }
  document.listaEditableForm.submit();
}
/**
 * Boton "Buscar".
 */
 function buscarDato(){
   document.forms[0].op.value="buscar";
   document.forms[0].submit();
 }


//------------------------------------------------------------------------------
//----------- Servicio ---------------------------------------------------------
//------------------------------------------------------------------------------

 /**
 * Funcion de validado y guardado de servicios
 */
function guardarServicio(){
  // Validaciones
  for (i = 0; i < document.listaEditableForm.elements.length; i++) {
    var campo = document.listaEditableForm.elements[i];
    //-- Descripcion en español
    if (campo.name.indexOf('$descripcion_esp') != -1 && (campo.value.length <= 0)) {
      campo.focus();
      alert('Falta por rellenar: Descripcion en español.');
      return false;
    }
    //-- Descripcion en ingles
    if (campo.name.indexOf('$descripcion_ing') != -1 && (campo.value.length <= 0)) {
      campo.focus();
      alert('Falta por rellenar: Descripción en inglés.');
      return false;
    }
  }

  // Guardamos realmente
  guardarDato();
}

 /**
 * Confirmacion de borrar Servicios
 */
 function borrarServicio(id,Count){
   var borrar = confirm("¿Desea eliminar este Servicio?");
   if (borrar == true){
     if (id.substring(0,3) == "new"){
       Count = 0;
     }
     borraDato(id,Count);
   }
 }


//------------------------------------------------------------------------------
//----------- FIN TABLAS BÁSICAS -----------------------------------------------
//------------------------------------------------------------------------------



//------------------------------------------------------------------------------
//----------- Documentos -------------------------------------------------------
//------------------------------------------------------------------------------
/*
  Funcion para abrir el escaner dependiendo del modulo pasado como parametro
*/
function nuevoDocumento(modulo, idRegistro){
  if (idRegistro==null){
    alert('Es necesario guardar primero');
    return;
  }
  else if ((idRegistro=="-1")||(idRegistro=="")||(idRegistro=="undefined")) {
    alert('Es necesario guardar primero');
    return;
  }
  else {
    nuevaVentana("/condominios/jsp/applet/escanerApplet.jsp?firmar=N&amp;tipoGrabado=HD&amp;modulo="+modulo+"&amp;idRegistro="+idRegistro,400,280,false);
  }
}
/*
  Funcion para abrir el escaner dependiendo del modulo pasado como parametro sin estar referenciado a ningún idRegistro
*/
function nuevoDocumento2(modulo){
  nuevaVentana("/condominios/jsp/applet/escanerApplet.jsp?firmar=N&amp;tipoGrabado=HD&amp;modulo="+modulo+"&amp;idRegistro=0",400,280,false);
}



/*
  Funcion para visualizar/descargar un nuevo documento
*/
function verDocumento(modulo, id){
  nuevaVentana("/condominios/FicheroAction.do?op=cliente&amp;nombre="+id,700,500,false);
}

/*
  Funcion para Confirmar el borrado de un documento
*/
function conf_borrarDocumento(modulo, id){
  //var accionAceptar = "window.opener.document.forms[0].st_IdDocumentoBorrar.value="+id+";window.opener.document.forms[0].op.value='borrarDocumento';window.opener.document.forms[0].submit();window.close()"
  //nuevaVentana("/condominios/jsp/confirmacion.jsp?txt=%BF Desea borrar el fichero ?&jsAceptar="+accionAceptar+"&jsCancelar=cerrar()", 325, 120);

  var borrar = confirm("¿Desea borrar el fichero?");
  if (borrar) {
    document.forms[0].st_IdDocumentoBorrar.value=id;
    document.forms[0].op.value='borrarDocumento';
    document.forms[0].submit();
  }
}

//------------------------------------------------------------------------------
//----------- IDENTIFICACIÓN ---------------------------------------------------
//------------------------------------------------------------------------------

/**
 * Boton "Validar".Comprobamos que los campos no estén vacios y el mensaje test
 * es en castellano y inglés
 */

function validarIdentificacion(idioma){
  //alert("validarIdentificacion "+idioma);
  var test = false;
  var falta = "";
  for(i = 0; i < document.forms[0].elements.length; i++) {
    var campo = document.forms[0].elements[i];
    if ((campo.name.indexOf('login') != -1) && campo.value == "") {
      test = true;
      falta += " login";
    }
    if ((campo.name.indexOf('password') != -1) && campo.value == "") {
      if (test){
        falta += ", password";
      }else{
        test = true;
        falta += " password";
      }
    }
  }
  if (test){
    if(idioma != "ingles"){//castellano
      alert('Es necesario para identificarse: '+falta);
    }else {//ingles
      alert('Identification is necessary: '+falta);
    }
    return false;
  }
  document.forms[0].op.value = "validar";
  document.forms[0].submit();
}


//------------------------------------------------------------------------------
//----------- LOV's ------------------------------------------------------------
//------------------------------------------------------------------------------

/**
 * Abre el LOV de Usuarios realizando una accion cuando se cierra.
 */
function usuariosAbreLov(img,nombreCampoId, nombreCampoTxt, opCerrar){
  if (img.src.indexOf('gris') == -1){
    if (opCerrar == null) opCerrar = "";
      document.lovCampoId = document.getElementsByName(nombreCampoId)[0];
      document.lovCampoTxt = document.getElementsByName(nombreCampoTxt)[0];
      nuevaVentana("/condominios/UsuariosLovAction.do?opCerrar="+opCerrar, 400, 300);
  }
}

/**
 * Abre el LOV de Terceros realizando una accion cuando se cierra.
 */
function tercerosAbreLov(img,nombreCampoId, nombreCampoTxt, opCerrar){

  if (img.src.indexOf('gris') == -1){
    if (opCerrar == null) opCerrar = "";
      document.lovCampoId = document.getElementsByName(nombreCampoId)[0];
      document.lovCampoTxt = document.getElementsByName(nombreCampoTxt)[0];
      nuevaVentana("/condominios/TercerosLovAction.do?opCerrar="+opCerrar, 800, 560);
  }
}

/**
 * Abre el LOV de Movimientos realizando una accion cuando se cierra.
 */
function movimientosAbreLov(img,nombreCampoId, nombreCampoTxt, opCerrar){
  if (img.src.indexOf('gris') == -1){
    if (opCerrar == null) opCerrar = "";
      document.lovCampoId = document.getElementsByName(nombreCampoId)[0];
      document.lovCampoTxt = document.getElementsByName(nombreCampoTxt)[0];
      nuevaVentana("/condominios/MovimientosLovAction.do?opCerrar="+opCerrar, 800, 560);
  }
}

/**
 * Abre el LOV de Estancias realizando una accion cuando se cierra.
 */
function estanciasAbreLov(img,nombreCampoId, nombreCampoTxt, opCerrar){
  if (img.src.indexOf('gris') == -1){
    if (opCerrar == null) opCerrar = "";
      document.lovCampoId = document.getElementsByName(nombreCampoId)[0];
      document.lovCampoTxt = document.getElementsByName(nombreCampoTxt)[0];
      nuevaVentana("/condominios/EstanciasLovAction.do?opCerrar="+opCerrar, 800, 560);
  }
}

function cambiarIdiomaAplicacion(){
  document.forms[0].op.value = "cambiarIdioma";
  document.forms[0].submit();

}
function cambiarIdiomaMenu(idioma){
  document.forms[0].op.value = "cambiarIdiomaConMenu";
  document.forms[0].submit();
}









