// ---------------------------------------------------
// chequea todos los checks presentes en la pagina
// ---------------------------------------------------
function chequeaTodos(valor) {
	var checks = new Array();
	checks = document.all.tags("input");
	for (i=0; i<checks.length; i++) {
		if ( (checks[i].type =="checkbox") && (checks[i].name !="allbox")){
			checks[i].checked = valor;
			if (checks[i].checked) marcaFila(checks[i]);
			else desmarcaFila(checks[i]);
		}
	}
}

// ---------------------------------------------------
// Suelta mensaje de error
// ---------------------------------------------------
function sinPermisos(operacion) {
	alert("No tiene los permisos suficientes para "+operacion+" este elemento. Consulte con el administrador del sistema");
}


// ---------------------------------------------------
// cambia el color de fondo de una fila
// ---------------------------------------------------
function cambiaColorFila(elemento) {

	if (elemento.checked) marcaFila(elemento);
	else desmarcaFila(elemento);
}

// ---------------------------------------------------
// marca una fila con un color
// ---------------------------------------------------
function marcaFila(elemento){
	while (elemento.tagName!="TR")
		{elemento=elemento.parentElement;}
	elemento.style.backgroundColor="#eeefef";
}

// ---------------------------------------------------
// desmarca una fila
// ---------------------------------------------------
function desmarcaFila(elemento){
	while (elemento.tagName!="TR")
		{elemento=elemento.parentElement;}
	elemento.style.backgroundColor="white";

}

// ---------------------------------------------------
// cambia la clase (estilo) de un elemento menu
// ---------------------------------------------------
function cambiaClaseOn(elemento){
	elemento.className = "menuOpcionOver";
}

// ---------------------------------------------------
// cambia la clase off (estilo) de un elemento menu
// ---------------------------------------------------
function cambiaClaseOff(elemento){
	elemento.className = "menuOpcion";
}


// ------------------------------------------------------
// acepta letra ...
// ------------------------------------------------------
function aceptaLetra(e, letra)
{

    var tecla, caracter;
    var letrasNumeros = '_-0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúÁÉÍÓÚ';
    var numeros='0123456789';
    var letras ='abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúÁÉÍÓÚ';
	var decimales = '0123456789.';
	var hora = '0123456789';
	var mail = '_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.@';

    tecla = e.keyCode;


    if (tecla == null) return true;


    caracter = String.fromCharCode(tecla);

        if ( tecla==null || tecla==0 || tecla==8 || tecla==9 || tecla==13 || tecla==27 )  return true;
        if (letra == 'N') { if (numeros.indexOf(caracter) != -1) return true; }
        if (letra == 'T') { if ((letrasNumeros.indexOf(caracter) != -1) || tecla==32)  return true; }
        if (letra =='L') { if ( (letras.indexOf(caracter) != -1) || tecla==32) return true; }
        if (letra =='H') { if ( (hora.indexOf(caracter) != -1) || tecla==32) return true; }
        if (letra =='D') { if ( (decimales.indexOf(caracter) != -1) || tecla==32) return true; }
        if (letra =='M') { if ( (mail.indexOf(caracter) != -1) || tecla==32) return true; }

    return false;
}


// -------------------------------------------------------------------------------------
// UTILIDADES DE FECHA .........
// -------------------------------------------------------------------------------------

   function toFormatoFechaCompacto(campoFecha, campoHora, campoFechaCompacta) {
	  campoFecha = document.getElementById(campoFecha);
	  campoHora = document.getElementById(campoHora);
	  campoFechaCompacta = document.getElementById(campoFechaCompacta);
	 
	  // si hay hora pero no hay fecha no hacemos nada  
	  if (campoFecha.value == '') { campoFechaCompacta.value = ''; return false; }
	  if (campoHora.value == '') { campoHora.value = '00:00'; } 	  
	  campoFechaCompacta.value = campoFecha.value+' '+campoHora.value;
   }
   
   function toFormatoFechaEstandar(campoFecha, campoHora, campoFechaCompacta) {
       
	   campoFechaCompacta = document.getElementById(campoFechaCompacta);
	   campoFecha = document.getElementById(campoFecha);
	   campoHora = document.getElementById(campoHora);
   		
	   if (campoFechaCompacta.value == "") return false;
	   	
      // la fecha compacta tiene el formato yyyyMMddHHmmssSSS
	   var yyyy = campoFechaCompacta.value.substring(0,4);
	   var MM = campoFechaCompacta.value.substring(4,6);
	   var dd = campoFechaCompacta.value.substring(6,8);
	   var HH = campoFechaCompacta.value.substring(8,10);
	   var mm = campoFechaCompacta.value.substring(10,12);
	   var ss = "00";
	   var SSS = "000";
	   
	   campoFecha.value = dd+'/'+MM+'/'+yyyy;
	   campoHora.value = HH+':'+mm;	     
   }


  /*************************************************************************************/
  /* funcion para comprobar si una año es bisiesto				       */				
  /* argumento anyo > año extraido de la fecha introducida por el usuario	       */	
  /*************************************************************************************/
  
   function anyoBisiesto(anyo)
    {
        /**
        * si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
        */
        if (anyo < 100)
            var fin = anyo + 1900;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }


  /*************************************************************************************/
  /* funcion principal de validacion de la fecha				       */				
  /* argumento Fecha a validar							       */	
  /*************************************************************************************/    

function validarFecha(fechaIntroducida)
  {
    
     /**
       * definimos las variables globales que van a contener la fecha completa, cada una de sus partes
       * y los dias correspondientes al mes de febrero segun sea el año bisiesto o no
       */
       var a, mes, dia, anyo, febrero;    
    
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       a=fechaIntroducida;
       dia=a.substring(0,2);
       mes=a.substring(2,4);
       anyo=a.substring(4,a.length);       
       if (anyo > 1900 && anyo < 2100)
            anyo = Number(anyo);
	   else return false;
	   
       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente 
       * al año introducido > alertamos y detenemos ejecucion
       */
       else if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       else if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       else if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           return false;
       }
       /**
       * si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecucion
       * NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
       */
       else if ((anyo<1900) || (anyo>2100))
       {
           return false;
       } 
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       * para ello debeis descomentar la ultima sentencia
       */
       else
          {return true;}   
    }    
  /*************************************************************************************/
  /* funcion principal de validacion de la fecha				       */				
  /* argumento Fecha a validar							       */	
  /*************************************************************************************/    

function validarHora(horaIntroducida)
  {
    
       var horas,minutos;    
    
       a=horaIntroducida;
	   if (a.length < 4) return false;
       horas=a.substring(0,2);
       minutos=a.substring(2,4);

       if ((horas<0) || (horas>23))
          {return false;}
       else if ((minutos<0) || (minutos>59))
          {return false;}
       else
          {return true;}   
    }    
    
    
 function blurFecha(campo)
 {
   if (campo.value != "")
   {
     if (!validarFecha(campo.value))
      {

        campo.value = "";
        return false;
      }
     else
      {
        var valor = campo.value;
        var anyo = Number(valor.substring(4,valor.length));
        var despues = valor.substring(0,2)+"/"+valor.substring(2,4)+"/"+anyo;
        campo.value = despues;
      }
    }
	return true;
 }
 function focoFecha(campo)
 {
   if (campo.value != "")
    {
      var a = campo.value;
      var dia = a.split('/')[0];
      var mes = a.split('/')[1]; 
      var anyo = a.split('/')[2];

      campo.value = dia+mes+anyo;
    }
 }
 function blurHora(campo)
 {
   if (campo.value != "")
   {
     if (!validarHora(campo.value))
      {
        
        campo.value = "";
		return false;
      }
     else
      {
        var valor = campo.value;
        var despues = valor.substring(0,2)+":"+valor.substring(2,4);
        campo.value = despues;
      }
   }
   return true;
 }
 function focoHora(campo)
 {
   if (campo.value != "")
    {
      var a = campo.value;
      var horas = a.split(':')[0];
      var minutos = a.split(':')[1];
      campo.value = horas+minutos;
    }
 }
 
 // -------------------------------------------------------------------------------------
// <------ FIN utilidades de fecha
// -------------------------------------------------------------------------------------
