/*****************************************************************************
** LIBRERIA GENERAL DE JS
******************************************************************************
** Tipo           : Libreria desarrollada en JS
** Fichero Fuente : genlib.js
** Fichero Ayuda  :
** Descripcion    : Libreria general de JS
******************************************************************************
** Autor  : Sergio Montesa Lopez
** Fecha  : 15/06/2001
** Version: v1.0
*****************************************************************************/

/*****************************************************************************
 * Variables globales
 ****************************************************************************/
//Estoy ejecutandome en un IE
var bExplorer4=(document.all && !document.getElementById)?true:false;
var bExplorer5=(document.all && document.getElementById)?true:false;
var bExplorer=(bExplorer4 || bExplorer5);
//Estoy ejecutandome en un Netscape
var bNetscape4=(document.layers)?true:false;
var bNetscape6=(!document.all && document.getElementById)?true:false;
var bNetscape=(bNetscape4 || bNetscape6);
if (bNetscape4) document.write(""); //Evita la consola JS (en Netscape)
//Estoy ejecutandome en un entorno Windows
var bWindows=(navigator.appName.toUpperCase().indexOf("WINDOWS")>=0 || navigator.appVersion.toUpperCase().indexOf("WINDOWS")>=0)?true:false;
//Manejador (o referencia) de las ventanas flotantes abiertas
var hndFlotante=null;
//Flag de confirmacion antes de someter formularios
var bConfirmar=false;
//El objeto input con el foco actual (para calendarios)
var oInput=null;

/*****************************************************************************
 * Cargar la hoja de estilos correspondientes a IE o Netscape
 * No funciona en Netscape
 ****************************************************************************/
if (bExplorer) document.write('<link rel="stylesheet" href="css/ie.css" type="text/css">');
else if (bNetscape6) document.write('<link rel="stylesheet" href="css/ns6.css" type="text/css">');
else if (bNetscape) document.write('<link rel="stylesheet" href="css/ns.css" type="text/css">');

/*****************************************************************************
 * Abrir el calendario
 *****************************************************************************
 * Parametros: oParamInput (objeto) El input que recibira el campo fecha
 ****************************************************************************/
function abrirCalendario(oParamInput) {
  oInput=oParamInput;
  abrirFlotante("asplib/calendario.asp",175,210,0);
}

/*****************************************************************************
 * Activa la imagen apagada para efecto roll-over
 *****************************************************************************
 * Parametros: cParamImagen (string) El identificador de la imagen a apagar
 *           : nParamImagen (int) La posicion de la imagen del array de imagenes
 ****************************************************************************/
function activarOff(cParamImagen,nParamImagen) {
  if (document.images) document.images[cParamImagen].src=imgOff[parseInt(nParamImagen)].src;
}

/*****************************************************************************
 * Activa la imagen encendida para efecto roll-over
 *****************************************************************************
 * Parametros: cParamImagen (string) El identificador de la imagen a enceder
 *           : nParamImagen (int) La posicion de la imagen del array de imagenes
 ****************************************************************************/
function activarOver(cParamImagen,nParamImagen) {
  if (document.images) document.images[cParamImagen].src=imgOver[parseInt(nParamImagen)].src;
}

/*****************************************************************************
 * Abrir una ventana flotante con una URL pasada como parametro
 *****************************************************************************
 * Parametros: cParamURL  (string) La URL que se abrira en la ventana
 *           : nParamAnchura (int) La anchura en pixeles de la ventana
 *           : nParamAltura  (int) La altura en pixeles de la ventana
 *           : nParamTimeout (int) El numero de segundos que estara abierta
 ****************************************************************************/
function abrirFlotante(cParamURL,nParamAnchura,nParamAltura,nParamTimeout) {
  var nX;
  var nY;
  cerrarFlotante();
  nX=Math.round((window.screen.width-nParamAnchura)/2,0);
  nY=Math.round((window.screen.height-nParamAltura)/2,0);
  hndFlotante=window.open(cParamURL,"hndFlotante","width="+nParamAnchura+",height="+nParamAltura+",top="+nX+",left="+nY+",directories=no,location=no,menubar=no,toolbar=no,resizable=yes,scrollbars=yes,status=no");
  //hndFlotante.moveTo(nX,nY);
  hndFlotante.focus();
  if (nParamTimeout>0) window.setTimeout("cerrarFlotante()",nParamTimeout*1000);
}

/*****************************************************************************
 * Abrir una ventana flotante con una URL pasada como parametro (375x275)
 * sin timeout
 *****************************************************************************
 * Parametros: cParamURL  (string) La URL que se abrira en la ventana
 ****************************************************************************/
function abrirVentana(cParamURL) {
  abrirFlotante(cParamURL,375,275,0);
}

/*****************************************************************************
 * Cargar imagenes para efecto roll-over
 *****************************************************************************
 * Parametros: acParamImagenes (array de string) Array con las URL de las imagenes
 ****************************************************************************/
function cargarImagenes(acParamImagenes) {
  if (document.images) {
    for (var n=0;n<acParamImagenes.length;n+=2) {
      if (acParamImagenes[n]!="") {
        imgOff[n/2]=new Image();
        imgOff[n/2].src=acParamImagenes[n];
      }
      if (acParamImagenes[n+1]!="") {
        imgOver[n/2]=new Image();
        imgOver[n/2].src=acParamImagenes[n+1];
      }
    }
  }
}

/*****************************************************************************
 * Cerrar el calendario
 *****************************************************************************
 * Parametros: cParamFecha (string) La fecha recibida del calendario
 ****************************************************************************/
function cerrarCalendario(cParamFecha) {
  cerrarFlotante();
  oInput.value=cParamFecha;
}

/*****************************************************************************
 * Cerrar la ventana flotante abierta
 ****************************************************************************/
function cerrarFlotante() {
  if (hndFlotante!=null) hndFlotante.close();
}

/*****************************************************************************
 * Cerrar la ventana actual
 ****************************************************************************/
function cerrarVentana() {
  window.close();
}

/*****************************************************************************
 * No hace nada
 ****************************************************************************/
function doNothing() {
}

/*****************************************************************************
 * Es el argumento es un numero
 *****************************************************************************
 * Parametros: nParamNumero (string) El numero a consultar
 *    Retorno: (boolean) Devuelve verdadero (true) o falso (false)
 ****************************************************************************/
function esNumero(nParamNumero) {
  return isNaN(parseInt(nParamNumero));
}

/*****************************************************************************
 * Es la ventana actual una ventana flotante o es la principal del navegador?
 *****************************************************************************
 * Retorno: (boolean) Devuelve verdadero (true) o falso (false)
 ****************************************************************************/
function esVentanaFlotante() {
  return (typeof(window.opener)!='undefined');
}

/*****************************************************************************
 * La hora actual del sistema en formato hh24:mi:ss
 *****************************************************************************
 * Retorno: (string) La hora actual del sistema
 ****************************************************************************/
function horaEs() {
  var nMinutos=0;
  var nSegundos=0;
  var fAhora=new Date();
  nMinutos=fAhora.getMinutes();
  nSegundos=fAhora.getSeconds();
  return fAhora.getHours()+":"+(nMinutos<10?"0"+nMinutos:nMinutos)+":"+(nSegundos<10?"0"+nSegundos:nSegundos);
}

/*****************************************************************************
 * La fecha actual del sistema en el formato deseado
 *****************************************************************************
 * Parametros: nParamFormato (int) 1=Largo, 2=General y 3=Corto
 *    Retorno: (string) La hora actual del sistema en el formato deseado
 ****************************************************************************/
function hoyEs(nParamFormato) {
  var nDia=0;
  var nMes=0;
  var nAnno=0;
  var fHoy=new Date();
  var acDias=new Array("Domingo","Lunes","Martes","Mi&eacute;rcoles","Jueves","Viernes","S&aacute;bado");
  var acMeses=new Array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre");
  nDia=fHoy.getDate();
  nMes=fHoy.getMonth()+1;
  nAnno=fHoy.getFullYear();
  if (nParamFormato==1) return acDias[fHoy.getDay()]+", "+nDia+" de "+acMeses[nMes-1]+" del "+nAnno;
  else if (nParamFormato==3) return (nDia<10?"0"+nDia:nDia)+"/"+(nMes<10?"0"+nMes:nMes)+"/"+nAnno;
  else return nDia+" de "+acMeses[nMes-1]+" del "+nAnno;
}

/*****************************************************************************
 * Imprimir desde JS simulando el boton del navegador
 ****************************************************************************/
function miWindowPrint() {
  if (bNetscape || bExplorer5) window.print();
  else if (bExplorer && bWindows) WB.ExecWB(6,2);
}

/*****************************************************************************
 * Carga las imagenes de un array de nombre imagenesCache en la cache del navegador
 ****************************************************************************/
function preloadImages() {
  var imgCache=new Array();
  if (document.images) {
    for (var n=0;n<imagenesCache.length;n++) {
      if (imagenesCache[n]!="") {
        imgCache[n]=new Image();
        imgCache[n].src=imagenesCache[n];
      }
    }
  }
}

/*****************************************************************************
 * Recarga la pagina actual sin pasar por la cache
 ****************************************************************************/
function reload() {
  var cURL=document.location.href;
  var nocache=Math.round(Math.random()*100000);
  if (cURL.indexOf("nocache=")==-1) {
    if (cURL.indexOf("?")==-1) cURL=cURL+"?nocache="+nocache;
    else cURL=cURL+"&nocache="+nocache;
    document.location.href=cURL;
  }
}

/*****************************************************************************
 * Poner un reloj que se actualiza cada decima de segundo
 * La pagina con el reloj tiene que tener una capa de nombre "idreloj"
 ****************************************************************************/
function reloj() {
  //La referencia a la capa del reloj
  var lyReloj=null;
  if (bExplorer) lyReloj=document.all("idreloj").style;
  else if (bNetscape4) lyReloj=document.layers["idreloj"];
  else if (bNetscape6) lyReloj=document.getElementById("idreloj").style;
  //Variables
  var cHTML="<font face=Verdana,Arial,Helvetica,Geneva size=1 color=#000000>"+horaEs()+"</font>";
  //Comenzar con el manejador del reloj
  if (bExplorer) {
    document.all("idreloj").innerHTML=cHTML;
    self.setTimeout("reloj()",100);
  } else if (bNetscape4) {
    //lyReloj.document.write(cHTML);
    //lyReloj.document.close();
  } else if (bNetscape6) {
    //document.getElementById("idreloj").innerHTML=cHTML;
    //self.setTimeout("reloj()",100);
  }
}

function relojinput() {
  document.frmReloj.txtReloj.value=horaEs();
  self.setTimeout("relojinput()",100);
}
