// JavaScript Document
var NS,IE;
NS=false; IE=false;
if (navigator.appName=="Netscape") NS=true;
else IE=true;

/*
  Función :                     ValidaLetras
  Descripción :         Función que permite la entrada de datos no numericos
  Datos entrada :       Evento del teclado
*/
function ValidaLetras(e) {
//codigos de teclado : 37, 39->flechas desplazamiento, Tabulador=9, BackSpace=8
var key = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

 if(window.Event){ //se trata de Netscape
  if ((whichCode<65 || whichCode>90) && (whichCode<97 || whichCode>122) && whichCode !=46 && whichCode !=32 && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0 && whichCode !=241 && whichCode !=209){
   return false;  // tecla no valida
  }
  else return true;
 } else { //se trata de Explorer
  if ((e.keyCode<65 || e.keyCode>90) && (e.keyCode<97 || e.keyCode>122) && e.keyCode!=46 && e.keyCode!=32 && e.keyCode!=241 && e.keyCode!=209){
   return false;  // tecla no valida
  }
  else return true;
 }
}

/*
  Función :                     ValidaLetrasNum
  Descripción :         Función que permite la entrada de datos alfanumericos 
  Datos entrada :       Evento del teclado
  Codigos de teclado :
    193,201,205,211,218-> Vocales Mayusculas acentuadas  
    225,233,237,243,250-> Vocales Minusculas acentuadas  
    241->Ñ y 209=>ñ
    37, 39->flechas desplazamiento, Tabulador=9, BackSpace=8 
*/
function ValidaLetrasNum(e) {
var key = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

if(window.Event){ //se trata de Netscape
  if ((whichCode<32 || whichCode>38) && (whichCode<40 || whichCode>90) && (whichCode<97 || whichCode>122) && whichCode !=193 && whichCode !=201 && whichCode !=205 && whichCode !=211 && whichCode !=218 && whichCode !=225 && whichCode !=233 && whichCode !=237 && whichCode !=243 && whichCode !=250 && whichCode !=241 && whichCode !=209){
    return false;  // tecla no valida
   }
   else return true;
}
else{ //se trata de Explorer
  if ((e.keyCode<32 || e.keyCode>38) && (e.keyCode<40 || e.keyCode>90) && (e.keyCode<97 || e.keyCode>122) && e.keyCode !=193 && e.keyCode !=201 && e.keyCode !=205 && e.keyCode !=211 && e.keyCode !=218 && e.keyCode !=225 && e.keyCode !=233 && e.keyCode !=237 && e.keyCode !=243 && e.keyCode !=250 && e.keyCode !=241 && e.keyCode !=209){
    return false;  // tecla no valida
   }
   else return true;
  }
}

/*
  Función :                     ValidaNum
  Descripción :         Función que permite la entrada de datos numericos 
  Datos entrada :       Evento del teclado
*/
function ValidaNum(e){
var key = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

if(window.Event){ //se trata de Netscape
  if ((whichCode<48 || whichCode>57) && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0){
    return false;  // tecla no valida
   }
   else return true;
}
else{ //se trata de Explorer
  if ((e.keyCode<48 || e.keyCode>57)){
    return false;  // tecla no valida
   }
   else return true;
  }
}

/*
  Función :                     currencyFormat
  Descripción :         Función que permite la entrada de datos numericos con punto decimal
                        siempre y cuando se pase la opcion 0, si es 1 entonces solo aceptara numero enteros
  Datos entrada :       Evento del teclado
*/
function currencyFormat(e,opc) {
//codigos de teclado : 37, 39->flechas desplazamiento, Tabulador=9, BackSpace=8 , punto=46
var key = '',strVals='';
var whichCode = (window.Event) ? e.which : e.keyCode;
opc=(opc==null ? 0:opc);

if(window.Event){ //se trata de Netscape
 strVals=(opc==0 ? '(whichCode<48 || whichCode>57) && whichCode !=46 && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0' : '(whichCode<48 || whichCode>57) && whichCode !=37 && whichCode !=39 && whichCode !=8 && whichCode !=0');

  if (eval(strVals)){
    return false;  // tecla no valida
   }
   else return true;
}
else{ //se trata de Explorer
 strVals=(opc==0 ? '(e.keyCode<48 || e.keyCode>57) && e.keyCode !=46' : '(e.keyCode<48 || e.keyCode>57)');
  if (eval(strVals)){
    return false;  // tecla no valida
   }
   else return true;
  }
}
/*
 Función:		handleEnter
 Descripción:	Función que habilita con <enter> el dar un tab(IE y NS)
 Datos de entrada : campo,objeto evento
*/
function handleEnter (field, event) {
  var keyCode = event.keyCode ? event.keyCode : 
                event.which ? event.which : event.charCode;
  if (keyCode == 13 ) {
    var i;
    for (i = 0; i < field.form.elements.length; i++)
     if (field == field.form.elements[i]) break;
     i = (i + 1) //% field.form.elements.length;
     if(field.form.elements[i].type=='hidden' || field.form.elements[i].disabled || (field.form.elements[i].style.visibility =='hidden')){
      handleEnter(field.form.elements[i],event);
     }
     else{
      field.form.elements[i].focus();
      if(IE && field.form.elements[i].type != "select-one") field.form.elements[i].select();
     }
	return true;
  }
  else
    return true;
}
/*
 Función:		toHidden
 Descripción:	Función que permite guardar la lista de items seleccionados en un objeto hidden,
                con el fin de pasar todos los elementos seleccionados a la siguiente página.
 Datos de entrada : campo,objeto evento
*/
function toHidden(lista, hIds, hText, hText1){
  hIds.value = "";
  hText.value = "";
  hText1.value = "";
  strval     = "";
  topList = lista.options.length;
  for( i=0; i<topList ; i++){
    strval = lista.options[i].value;
    if (i==0){
      hIds.value   = strval.substring(0,strval.indexOf("|"));
      hText.value  = strval.substring(strval.indexOf("|") + 1,strval.lastIndexOf("|"));
      hText1.value = strval.substring(strval.lastIndexOf("|") + 1,strval.length);
    }else{
      hIds.value   = hIds.value   + "," + strval.substring(0,strval.indexOf("|"));
      hText.value  = hText.value  + "," + strval.substring(strval.indexOf("|") + 1,strval.lastIndexOf("|"));
      hText1.value = hText1.value + "," + strval.substring(strval.lastIndexOf("|") + 1,strval.length);
    }
  }
}
/*
 Función:		dialogo
 Descripción:	Función que permite generar una ventana tipo dialogo 
 Datos de entrada : URL,ancho de la ventana, alto de la venta en pixeles
*/
function dialogo(dir,ancho,alto) {
 if (window.showModelessDialog) {
  InfoWin = window.showModelessDialog(dir,window,'help:0;resizable:0;status:0;dialogLeft:280px;dialogTop:80px;dialogWidth:'+ancho+'px;dialogHeight:'+alto+'px')
  //window.showModelessDialog(dir, window, "scroll: no; help: No; dialogWidth: "+ ancho + "px;dialogHeight: "+ alto + "px; resizable: no; status: no");
 } else {
  alert('Debe actualizar su Internet Explorer a version 5 o superior. Para utilizar esta opcion');
 }
}
/*
 Función:		busqueda
 Descripción:	Permite la busqueda en una lista desplegable cuando introducimos alguna letra o palabra en un campo de texto. 
 Datos de entrada : id de la caja que va a realizar la busqueda y el id de la lista en donde buscara
*/
function busqueda(txtBusca, lista){
  var input=eval("document.getElementById('" + txtBusca + "').value.toUpperCase()");
  var output=eval("document.getElementById('" + lista + "').options");
  for(var i=0;i<output.length;i++) {
    if(output[i].text.indexOf(input)==0){
     output[i].selected=true;
    }
    if(eval("document.forms[0]." + txtBusca + ".value") ==''){
     output[0].selected=true;
    }
  }
}

function openWin(theurl) {
  window.defaultStatus = "INFOTECA INIFAP";
  vent =  window.open(theurl ,'Infoteca','toolbar=0,location=0,directories=0,status=0 menubar= 0,scrollbars=1,resizable=0,copyhistory=0,width=750,height=500, top=50,left=25');
  vent.focus();
}
