/* ARCHIVO:     genFuncionWeb.js
 * DESCRIPCIÓN: Contiene las funciones generales de JavaScript para el manipuleo y validación
 *              de los elementos HTML.
 * AUTOR:       LAR, ARG, JMG, SLC
 * FECHA:       08/09/2004
*/

/* -----------------------------------------------------------------------
   ---------- FUNCIONES QUE MANIPULAN LOS ELEMENTOS DE LA FORMA ----------
   ----------------------------------------------------------------------- */

/* SEL CONT TEXTO
 * DESCRIPCIÓN:   Selecciona el texto de una caja, en caso de que no exista pone 
 *                el puntero en la caja.
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  L.A.R.
*/
function selContTexto(x)
{
  document.forms[0].elements[x].select();
}  

/* ELIMINA ESPACIOS REPETIDOS
 * DESCRIPCIÓN:   Elimina de una cadena los espacios en blanco repetidos
 *                Ejem: "Lilia   Alias  Ruiz -> Lilia Alias Ruiz".
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function elimEspRep(x){
  var textoArea = document.forms[0].elements[x].value;
  // El global (g) es para obtener todas las posibles combinaciones
  variosBlancos = /[ ]+/g   
  //Reemplaza varios espacios en blanco juntos por uno solo
  textoArea = textoArea.replace(variosBlancos," ");
  return textoArea;
} 

/* TEXT2DATE
 * DESCRIPCIÓN:   Convierte una fecha de tipo texto a tipo fecha.
 * PARÁMETROS:    fecha cadena con formato dd/mm/aaaa
 * PREFORMED BY:  A.R.G. 
*/
function text2date(fecha) 
{
  var splitArray = fecha.split('/');

  var dia = splitArray[0];
  var mes = splitArray[1];
  var anio = splitArray[2];
 
  return (new Date(anio, mes-1, dia));
}

/* DIAS TRANSCURRIDOS
 * DESCRIPCIÓN:   Obtiene los días transcurridos entre dos fechas.
 * PARÁMETROS:    fechaIni (fecha inicial), fechaFin (fecha final)
 * PREFORMED BY:  A.R.G. 
*/
function diasTranscurridos(fechaIni, fechaFin) 
{
  var fecha1 = text2date(fechaIni);  
  var fecha2 = text2date(fechaFin);  
  var diferencia =
    Date.UTC(fecha2.getYear(), fecha2.getMonth(), fecha2.getDate()) - 
    Date.UTC(fecha1.getYear(), fecha1.getMonth(), fecha1.getDate());
  return diferencia/1000/60/60/24;
}

/* EFECTO DE ROCE
 * DESCRIPCIÓN:   Conjunto de funciones que sirven para el efecto de roce de los botones.
 * PREFORMED BY:  Dreamweaber / L.A.R.
*/
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; 
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) 
    x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; 
  if(d.images){ 
    if(!d.MM_p) 
      d.MM_p=new Array();validaTextoLleno
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
    for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ 
      d.MM_p[j]=new Image; 
      d.MM_p[j++].src=a[i];
    }
  }
}
function MM_findObj(n, d) { //v4.0
  var p,i,x;  
  if(!d) 
    d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) 
    x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) 
    x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
    x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) 
    x=document.getElementById(n); 
  return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){
    document.MM_sr[j++]=x; 
    if(!x.oSrc) 
      x.oSrc=x.src; 
    x.src=a[i+2];
   }
}

/* LIMPIAR
 * DESCRIPCIÓN:   Limpia todos los elementos de un formulario dejándolos con su valor inicial
 * PREFORMED BY:  L.A.R.
*/
function limpiar()
{
  document.forms[0].reset();
}

/* LIMPIAR PR
 * DESCRIPCIÓN:   Limpia todos los elementos de un formulario que ha sido cargado
 *                como resultado de una consulta y/o recargado,
 *                por lo que los elementos contienen valores que no son ""
 * PARÁMETROS:    x Número total de elementos
 *                y Desde que elemento va a limpiar
 * PREFORMED BY:  L.A.R.
*/
function limpiarPR(y, x)
{  
	for(i=y; i<x ;i++)
	{  
	  document.forms[0].elements[i].value='';
	}
}

/* LIMPIA FUNCTION
 * DESCRIPCIÓN:   Limpia todos los elementos de un formulario que ha sido cargado
 *                como resultado de una consulta y/o recargado.                
 * PARÁMETROS:    Ninguno
 * PERFORMED BY:  S.C.
*/
  	function limpia() {      
      for(i=0; i<document.forms[0].length;i++) {  
        if(document.forms[0].elements[i].type == "text" || document.forms[0].elements[i].type == "textarea" || document.forms[0].elements[i].type == "password" ){
        document.forms[0].elements[i].value='';
        } 
        else if(document.forms[0].elements[i].type == "checkbox" || document.forms[0].elements[i].type == "radio"){
        document.forms[0].elements[i].value=null;     
        document.forms[0].elements[i].checked=false;
        }
        else if(document.forms[0].elements[i].type == "select-one"){
         document.forms[0].elements[i].selectedIndex = 0;
        }
      }
    }  

/* KEY PRESS FUNCTION
 * DESCRIPCIÓN:   Efectúa el evento click en el botón señalado cuando es presionada la tecla enter.
 * PARÁMETROS:    x Número de elemento del botón
 * PERFORMED BY:  L.A.R. 
*/
function KeyPressFunction(x)
{
	if (event.keyCode == 13) 
	{ 
		document.forms[0].x.click(); 
	}
}

/* REGRESAR
 * DESCRIPCIÓN:   Regresa a la página anterior.
 * PERFORMED BY:  L.A.R.
*/
function regresar()
{
  history.back();
}

/* INICIO
 * DESCRIPCIÓN:   Regresa a la página inicial.
 * PERFORMED BY:  L.A.R.
*/
function inicio()
{
  document.forms[0].action = "../sica.jsp";
  document.forms[0].submit();
}





/* ---------------------------------------------------------------------
   ---------- FUNCIONES QUE VALIDAN LOS ELEMENTOS DE LA FORMA ----------
   --------------------------------------------------------------------- */

/* VALIDA COMBO LLENO
 * DESCRIPCIÓN:   Valida que el combo tenga un elemento seleccionado, manda un Mensaje en caso de error
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  A.R.G.
*/
function validaComboLleno(x, z)
{
  var indice = document.forms[0].elements[x].selectedIndex;

  if (document.forms[0].elements[x].options[indice].value=='' || document.forms[0].elements[x].options[indice].value=='00'|| document.forms[0].elements[x].options[indice].value=='-0001')
  {
    alert("\nSeleccione un elemento de la lista '" + z + "'");
    document.forms[0].elements[x].setfocus;
    return (false);
  }
  return (true);
} 

/* VALIDA COMBO LLENO SM
 * DESCRIPCIÓN:   Valida que el combo tenga un elemento seleccionado, 
 *                regresa False en caso de que no sea asi.
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  A.R.G.
*/
function validaComboLlenoSM(x)
{
  var indice = document.forms[0].elements[x].selectedIndex;
  if(document.forms[0].elements[x].selectedIndex=='-1'){
    return (false);
  }
  if (document.forms[0].elements[x].options[indice].value=='' || document.forms[0].elements[x].options[indice].value=='00' || document.forms[0].elements[x].options[indice].value=='-0001'){
    return (false);
  }
  return (true);
} 

/* VALIDA TEXTO LLENO CON ELEMENTO
 * DESCRIPCIÓN:   Valida que el cuadro de texto tenga algo escrito (excepto espacios en blanco), 
 *                manda un Mensaje en caso de no ser asi.
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  A.R.G./L.A.R.
*/
function validaTextoLlenoCE(x, z)
{
  var string1=document.forms[0].elements[x].value;
  var temp = "";
  
  string = '' + string1;
  splitstring = string.split(" ");
  for(i = 0; i < splitstring.length; i++)
    temp += splitstring[i];
  if (temp.length==0)
  {
    alert("\nAsegúrese de que el campo '" + z + "' esté lleno.");
    selContTexto(x);
    return (false);
  }
  return (true);
}

/* VALIDA TEXTO LLENO SM
 * DESCRIPCIÓN:   Valida que el cuadro de texto tenga algo escrito (excepto espacios en blanco), 
 *                regresa False en caso de que no sea asi.
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  L.A.R.
*/
function validaTextoLlenoSM(x)
{
  var string1=document.forms[0].elements[x].value;
  var temp = "";
  
  string = '' + string1;
  splitstring = string.split(" ");
  for(i = 0; i < splitstring.length; i++)
    temp += splitstring[i];
  if (temp.length==0)
  {
    return (false);
  }
  return (true);
}


/* VALIDA checkbox 
 * DESCRIPCIÓN:   Valida que se haya seleccionado una opción de los checkbox 
 * PAR?METROS:    x número de elementos de tipo checkbox  que contiene la forma
 *                y número del checkbox inicial
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  G.M.I
*/
function validaCheckbox(x, y, z){ 
  var max = y + x; 
  var caja = "";
  var numElem = 0;

  //Revisa si el radio está checked
  for(i=y; i<max; i++){
    caja = document.forms[0].elements[i];
    if(!caja.checked)
      numElem = numElem + 1;
  }
  //si el número de Elementos no seleccionados es igual al número de checkbox
  if (numElem==x){
   alert("\nDebe seleccionar la opción '" + z + "' para poder realizar la transacción.");
   return(false);
  }	else{
    return (true);
  }
} 



/* VALIDA RADIO BUTTON
 * DESCRIPCIÓN:   Valida que se haya seleccionado una opción de los radio button
 * PARÁMETROS:    x número de elementos de tipo Radio que contiene la forma
 *                y número del radio inicial
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaRadios(x, y, z){ 
  var max = y + x; 
  var radio = "";
  var numElem = 0;

  //Revisa si el radio está checked
  for(i=y; i<max; i++){
    radio = document.forms[0].elements[i];
    if(!radio.checked)
      numElem = numElem + 1;
  }
  //si el número de Elementos no seleccionados es igual al número de radios
  if (numElem==x){
   alert("\nDebe seleccionar la opción '" + z + "' para poder realizar la transacción.");
   return(false);
  }	else{
    return (true);
  }
} 

/* VALIDA RADIO BUTTON
 * DESCRIPCIÓN:   Valida que se haya seleccionado una opción de los radio button
 * PARÁMETROS:    x número de elementos de tipo Radio que contiene la forma
 *                y número del radio inicial
 * PREFORMED BY:  L.A.R.
*/
function validaRadiosSM(x, y){ 
  var max = y + x; 
  var radio = "";
  var numElem = 0;

  //Revisa si el radio está checked
  for(i=y; i<max; i++){
    radio = document.forms[0].elements[i];
    if(!radio.checked)
      numElem = numElem + 1;
  }
  //si el número de Elementos no seleccionados es igual al número de radios
  if (numElem==x){
   return(false);
  }	else{
    return (true);
  }
} 



/* -------------------------------------------------------------------------------------
   ---------- FUNCIONES QUE VALIDAN EL CONTENIDO DE LOS ELEMENTOS DE LA FORMA ----------
   ------------------------------------------------------------------------------------- */

/* VALIDA ENTERO
 * DESCRIPCIÓN:   Valida que la cadena introducida contenga sólo números enteros
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaEntero(x, z)
{
  var RefString="1234567890";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1){
      alert ("\nEl campo '" + z + "' sólo puede contener números enteros, \n\n favor de corregir su contenido.");   
	    selContTexto(x);
  	  return(false);
    }
  }
  return(true);
}


/* VALIDA ENTERO
 * Valida que la cadena introducida sea sólo de números enteros.
 */
function validaEnteroSM(x)
{
  var RefString="1234567890";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
	  document.forms[0].elements[x].focus();
	  return(false);
    }
	
  }
  return(true);
}


/* VALIDA REAL
 * DESCRIPCIÓN:   Valida que la cadena introducida sea de sólo números reales
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  A.R.G.
*/
function validaReal(x, z)
{
  var RefString="1234567890.";
  var cadena=document.forms[0].elements[x].value; 
  var punto = 0;

  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if (temp=='.')
    {
      punto = punto + 1;
      if (punto > 1)
      {
        alert ("\nLa cifra introducida no es válida, debido a que contiene más de un punto decimal.");       
        document.forms[0].elements[x].focus();
        return(false);
        selContTexto(x);
      }
    }
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEste campo sólo puede contener números.\n\nPor favor corrija su contenido.");   
	    document.forms[0].elements[x].focus();
	    return(false);
      selContTexto(x);
    }
  }
  return(true);
}

/* VALIDA REAL NEGAT
 * DESCRIPCIÓN:   Valida que la cadena introducida sea de sólo números reales incluyendo 
 *                números negativos (con "-" antes del núm.).
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  A.R.G.
*/
function validaRealNegat(x, z)
{
cadena=document.forms[0].elements[x].value;
var RefString="1234567890.-";
var punto = 0;
var menos=0;
var nomum="";
nonum=cadena.substring(0, 1);
                                        
if((nonum=="." || nonum=="-") &&  cadena.length==1) // si solo es un . o - no es válido
{
  alert ("\nEl campo '" + z + "' sólo puede contener números.\n\nPor favor corrija su contenido.");
  selContTexto(x);
  return(false);
} 
else //de otro modo                                  
{                                
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if (temp=='.') 
    {
      punto = punto + 1;
      if (punto > 1)
      {
        alert ("\nEl número introducido no es válido, debido a que contiene más de un punto decimal.");
        selContTexto(x);
        return(false);
      }
    }                       
    //--------------------------- para el punto ---------------------------------------        
    if (temp=='-' && count!=0)      /*si el - no está al principio*/
    {
      alert ("\nEl número introducido en el campo '" + z + "' no es válido, debido al signo - (menos) .");
      selContTexto(x);
      return(false);
    }    
    //--------------------------- para el menos ---------------------------------------
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEl campo '" + z + "' sólo puede contener números.\n\nPor favor corrija su contenido.");
      selContTexto(x);
      return(false);
    }
  }
}
  return(true);
}       

/* VALIDA ALF
 * DESCRIPCIÓN:   Valida que la cadena sólo tenga caracteres alfabéticos
 *                sin signos de puntuación.
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaAlf(x, z)
{
  var RefString="áéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZ abcdefghijklmnñopqrstuvwxyz ÁÉÍÓÚ";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEl campo '" + z + "' sólo puede contener letras.\n\n Por favor corrija su contenido.");   
	    selContTexto(x);
	  return(false);
    }
  }
  return(true);
}

/* VALIDA ALFANUM
 * DESCRIPCIÓN:   Valida que la cadena sólo tenga caracteres alfanuméricos 
 *                sin signos de puntuación.
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaAlfaNum(x, z)
{
  var RefString="1234567890 áéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZ abcdefghijklmnñopqrstuvwxyz ÁÉÍÓÚ";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEl campo '" + z + "' sólo puede contener caracteres alfanuméricos,\nfavor de corregir su contenido.");   
	  selContTexto(x);
	  return(false);
    }
  }
  return(true);
}

/* VALIDA TEXTO
 * DESCRIPCIÓN:   Valida que la cadena sólo tenga caracteres alfabéticos
 *                incluyendo signos de puntuación.
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaTexto(x, z)
{
  var RefString="áéíóú.ABCDEFGHIJKLMNÑOPQRSTUVWXYZ;abcdefghijklmnñopqrstuvwxyz ÁÉÍÓÚ,";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEl campo '" + z + "' sólo puede contener letras.\n\n Por favor corrija su contenido.");   
	    selContTexto(x);
	  return(false);
    }
  }
  return(true);
}

/* VALIDA NO ESP BLANCO
 * DESCRIPCIÓN:   Valida que la cadena no contenga espacios en blanco
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaNoEspBlanco(x, z)
{
  var campo=document.forms[0].elements[x].value;
   for (i=0;i<campo.length;i++)
  {
    var ch=campo.substring(i,i+1);
    if (ch==' ')
    {
      alert("\nEl campo '" + z + "' no debe contener espacios en blanco.\n por favor llénelo correctamente.");
      selContTexto(x);
      return (false);
    }
 
  }
   return (true); 
}

/* VALIDA LONG TEXTO
 * DESCRIPCIÓN:   Valida que la cadena contenga el número exacto de caracteres indicados
 * PARÁMETROS:    x número del elemento en la forma
 *                y largo que debe tener el cuadro de texto
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaLongTexto(x, y, z) {
  var cad= document.forms[0].elements[x].value;
  if (cad.length < y){
    var dif= y - cad.length;
    alert("\nEl campo '" + z + "' requiere " + y + " caracteres\n y actualmente consta de " + cad.length + " .\nPor favor ingrese los " + dif + " caracteres faltantes.");
	selContTexto(x);
    return(false);
  }
  else{
    return(true);
  }
}

/* VALIDA TIPO DATO Y LONG
 * DESCRIPCIÓN:   Valida que el contenido del cuadro de texto sea del tipo señalado
 *                y contenga el número exacto de caraceres indicados.
 * PARÁMETROS:    x número del elemento en la forma
 *                w tipo de dato (A, N, AN)
 *                y largo que debe tener el cuadro de texto
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaTipoDatoYLong(x, w, y, z){
  // Valida Tipo de Dato
  switch(w){
    case 'A':
      validaAlf(x, z);
      break;
    case 'N':
      validaEntero(x, z)
      break;
    case 'AN':
      validaAlfaNum(x, z);
      break;
  }
  // Valida Longitud
  validaLongTexto(x, y, z);
}


/* VALIDA PERIODO FECHAS
 * DESCRIPCIÓN:   Valida que sean introducidas obligatoriamente ambas fechas y la precedencia de éstas
 * PARÁMETROS:    x número del elemento en la forma perteneciente a la fecha INICIAL
 *                y número del elemento en la forma perteneciente a la fecha FINAL             
 * PREFORMED BY:  A.R.G./L.A.R.
*/
function validaPeriodoFechas(x, y){
  var arrayFecha1 = document.forms[0].elements[x].value.split('/');
  var arrayFecha2 = document.forms[0].elements[y].value.split('/');

  var iniDia  = arrayFecha1[0];
  var iniMes  = arrayFecha1[1];
  var iniAnio = arrayFecha1[2];
  var finDia  = arrayFecha2[0];
  var finMes  = arrayFecha2[1];
  var finAnio = arrayFecha2[2];
  
  fechaInicio = Date.UTC(iniAnio, iniMes, iniDia);
  fechaFin = Date.UTC(finAnio, finMes, finDia);

  if (fechaInicio < fechaFin || fechaInicio == fechaFin)
      return true;
  else 
  {
    alert('\nLa Fecha de Inicio debe ser anterior a la Fecha de Término.');
    selContTexto(x);
    return false;
  }
}

/* VALIDA HORA
 * DESCRIPCIÓN:   Revisa que el formato introducido de la hora sea correcta (hh:mm) 
 *                y que sea una hora válida.
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  L.A.R.
*/
function validaHora(x)
{
	cadena=document.forms[0].elements[x].value;
	if(cadena.length<5)
	{
		alert("\nLa hora introducida no es correcta, utilice el formato hh:mm (horas:minutos)."); 
		selContTexto(x);
		return;
	
	}
	if (cadena.charAt(2)!=':')
	{
		alert("\nLa hora introducida no es correcta, utilice el formato hh:mm (horas:minutos)."); 
		selContTexto(x);
		return;
	}
	arrayHora=cadena.split(':');
	if (!soloEnteros(arrayHora[0]) || !soloEnteros(arrayHora[1]))
	{		
		selContTexto(x);
		return;
	}
	if (arrayHora[0]<0 || arrayHora[0]>23)
	{
		alert("\nLa hora introducida no es correcta, utilice el formato hh:mm (horas:minutos).\n\nLa hora debe estar entre un rango de 00 y 23.");
		selContTexto(x);
		return;
	}
	if (arrayHora[1]<0 || arrayHora[1]>59)
	{
		alert("\nLa hora introducida no es correcta, utilice el formato hh:mm (horas:minutos).\n\nLos minutos deben estar entre un rango de 00 y 59.");
		selContTexto(x);
		return;
	}

return true;
}

/* VALIDA MAYOR A CERO
 * DESCRIPCIÓN:   Valida que el valor ingresado sea mayor a 0
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  A.S.Z.
*/
function validaMayorACero(x, z){
	if (document.forms[0].elements[x].value=='0'){
		alert("\nEl valor del campo '" + z + "' no puede ser igual a 0.\n\nPor favor corrija la información.");
		selContTexto(x);
		return false;
	}
	return true;
}


/* VALIDA CURP
 * DESCRIPCIÓN:   Valida que las posiciones de la 1 a la 14 de la CRIP sea una numérica y
 *                la posición 15 sea una letra mayúscula de la A a la J, 
 *                regresa False en caso de error.
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaCurp(x)
{
  if (!validaLongTexto(x, 18))
    return(false);

  var RefAlfa="AaBbCcDdEeFfGgHhIiJjKkLlMmNnÑñOoPpQqRrSsTtUuVvWwXxYyZz";
  var RefNumer="1234567890"; 
  var cadena = document.forms[0].elements[x].value; 

  for(count=0; count < cadena.length; count++){
    temp=cadena.substring(count, count+1);
    // Primeras 4 posiciones
    if(count>=0 && count<=3 && RefAlfa.indexOf (temp,0)==-1){
      alert ("\nLas posiciones 1 a 4 de la CURP deben ser alfabéticas,\n\n favor de corregir su contenido.");   
      selContTexto(x);
      return(false);
    }
    if(count>=4 && count<=9 &&  RefNumer.indexOf (temp,0)==-1){
      alert ("\nLas posiciones 5 a 10 de la CURP deben ser numéricas,\n\n favor de corregir su contenido.");   
      selContTexto(x);
      return(false);
    }
    if(count>=10 && count<=15 && RefAlfa.indexOf (temp,0)==-1){
      alert ("\nLas posiciones 11 a 16 de la CURP deben ser alfabéticas,\n\n favor de corregir su contenido.");   
      selContTexto(x);
      return(false);
    }
    if(count>=16 && count<=17 &&  RefNumer.indexOf (temp,0)==-1){
      alert ("\nLas posiciones 5 a 10 de la CURP deben ser numéricas,\n\n favor de corregir su contenido.");   
      selContTexto(x);
      return(false);
    }
  }
  return(true);
}

/* VALIDA TELEFONO
 * DESCRIPCIÓN:   Valida que la cadena introducida contenga únicamente letras, números, paréntesis y coma
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaTelefono(x, z)
{
  var RefString="1234567890. )(áéíóú ABCDEFGHIJKLMNÑOPQRSTUVWXYZ-abcdefghijklmnñopqrstuvwxyz,ÁÉÍÓÚ";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEl campo '" + z + "' sólo puede contener números telefónicos\nincluyendo larga distancia, extensiones o claves\nlas cuales deberán estar en mayúsculas en caso de ser necesario.\n\nPor favor corrija su contenido.");   
	    selContTexto(x);
	  return(false);
    }
  }
  return(true);  
}

/* VALIDA CP
 * DESCRIPCIÓN:   Valida longitud (5) y formato (entero) de un Código Postal
 * PARÁMETROS:    x número del elemento en la forma
 *                z cadena con el nombre de la opción (para el mensaje)
 * PREFORMED BY:  L.A.R.
*/
function validaCP(x){
  if(!validaLongTexto(x, 5, 'Código Postal')){
    return(false);
  }
  if(!validaEntero(x, "Código Postal")){  
    return(false);
  }
  return(true);
}

/* VALIDA EMAIL
 * DESCRIPCIÓN:   Valida que la cadena contenga sólo una @ y mínimo un punto
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  L.A.R.
*/
/*function validaEmail(x)
{
  var cadena = document.forms[0].elements[x].value;
  var arroba = 0;

  if (cadena == ""){
	  return (true)
  }else{
	  if(cadena.indexOf('@',0)== -1 || cadena.indexOf('.',0)== -1)  
	  {
		alert("La dirección de correo electrónico no es válida, \n favor de corregirla.");
		selContTexto(x);
		return(false); 
	  }
	  for(count=0; count < cadena.length; count++)
	  {
		temp=cadena.substring(count, count+1);
		if (temp=='@')
		{
		  arroba = arroba + 1;
		  if (arroba > 1)
		  {
			alert ("\nEl correo introducido no es válido debido a que contiene más de una @ \n favor de corregirlo.");       
			selContTexto(x);
			return(false);
		  }
		}
	  }
	  return(true);
   }
}*/


/* VALIDA IP
 * DESCRIPCIÓN:   Valida que la cadena introducida sea una dirección IP válida
 * PARÁMETROS:    x número del elemento en la forma
 * PREFORMED BY:  L.A.R.
*/
function validaIP(x)
{
  var RefString="1234567890.";
  var cadena=document.forms[0].elements[x].value; 
  var punto = 0;
  var numer = "";
     
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    //asigna la cantidad de puntos
    if (temp=='.'){	  
      punto = punto + 1;
    } 
    //valida que sólo tenga números y punto
    if(RefString.indexOf (temp,0)==-1){
      alert ("\nEste campo sólo puede contener una dirección IP válida (255.255.255.255).\n\nPor favor corrija su contenido.");   
	    selContTexto(x);
	    return(false);
    }
  }

  //valida que sean sólo 3 puntos en total
  if (punto < 3 || punto > 3)
  {
    alert ("\nLa dirección IP introducida no es válida,\nésta debe contener tres puntos decimales.");
    selContTexto(x);
    return(false);
  }

  //valida formato 255.255.255.255
  //Divide la cadena tomando como referencia el .
  var arrCadena = cadena.split("."); 
  for (var loop=0; loop < arrCadena.length; loop++) {
    //alert("arrCadena[loop] :" + arrCadena[loop]);
    if(arrCadena[loop].charAt(0) == "0"){
      alert("\nNo se permiten ceros a la izquierda en la dirección IP.")
      return(false);
      break;
    }
    //valida si el número es mayor a 255 o tiene cadena vacía manda mensaje
    if(arrCadena[loop] > 255 || arrCadena[loop] == ""){
      alert ("\nLa dirección IP introducida no es válida.\n\nPor favor corrija su contenido.");
      selContTexto(x);
      return(false);
      break;
    }
  } 

  return(true);
}

































//Terminan validaciones configuracion CGC
/* ---------------------------------------------------------------------
   ------- FUNCIONES QUE VALIDAN LA FORMA UNIDAD ADMINISTRATIVA  -------
   --------------------------------------------------------------------- */
/* VALIDA ALFA NUMER
 * Valida que la cadena sólo tenga caracteres alfanuméricos 
 * incluye vocales acentuadas (mayúsculas y minúsculas).
*/
function validaAlfaNumer(x)
{
  var RefString="1234567890. AÁBCDEÉFGHIÍJKLMNÑOÓPQRSTUÚVWXYZ,aábcdeéfghiíjklmnñoópqrstuúvwxyz-";
  var cadena=document.forms[0].elements[x].value; 
  for(count=0; count < cadena.length; count++)
  {
    temp=cadena.substring(count, count+1);
    if(RefString.indexOf (temp,0)==-1)
    {
      alert ("\nEste campo sólo puede contener caracteres alfanuméricos,\nlas letras deben ser sin acentos.\nPor favor corrija su contenido.");   
	  document.forms[0].elements[x].focus();
	  return(false);
    }
  }
  return(true);
}


/* VALIDA NO ESPACIO EN BLANCO AL FINAL DE UNA CADENA
Valida q la cadena no contenga 1 espacio en blanco solo al final de una cadena
AUTOR: J.G.V.*/

function validaNoEspFinal(x)
{
 var campo=document.forms[0].elements[x].value;
 var f=campo.length;
 for (var i=0 ; i<campo.length ; i++ )
 {
	var e=campo.substring(i+1);
	if (i<campo.length && e==' ') 
	 {	
		alert("\n Tiene un espacio en blanco al finalizar el nombre \n Favor de corregir. ");
		document.forms[0].elements[x].focus();
		return(false);
	 }
 }
return(true);
}


/* VALIDA NO DOBLE ESPACIO EN BLANCO
Valida q la cadena no contenga 2 espacios en blanco seguidos
AUTOR: J.G.V.*/

function validaNoDblEspBlanco(x)
{
	if (document.forms[0].elements[x].value.indexOf("  ", 0) == -1)
	{
		//alert("OK!")
		return(true);
	}
		else alert(" No se permiten dos espacios seguidos en blanco.");  
		document.forms[0].elements[x].focus();
		return(false);
}

/* Validaciones para el registro de la Unidad Administrativa */

function enviarUA() {
//clave

  if ( !validaTextoLleno(0) || !validaEntero(0)){
	    return;
  }

//nombre
  if ( !validaTextoLleno(1) || !validaAlfaNumer(1) || !validaNoEspFinal(1) || !validaNoDblEspBlanco(1)){
	    return;
  }
    document.forms[0].submit();
}

//TERMINAN VALIDACIONES PARA UNIDAD ADMINISTRATIVA