﻿function llamaDescargaArchivo (Archivo) {
    var vUrl = "DescargaArchivo.aspx?Archivo=";
    window.open(vUrl + Archivo, null, "width=25,height=25,top=350,left=500");
//    var vUrl = "Estadisticasweb/Temp/" + Archivo;
//    window.open(vUrl, null, "");
}


// Función que mustra el div con el mensaje de espera para el usuario
/* funcion validacion fecha llamada desde CustomValidator */
function cvValidaFecha(source, args)
{
    args.IsValid = validaFecha(args.Value);
}

/**
* funcion para comprobar si una año es bisiesto
* argumento anyo > año extraido de la fecha introducida por el usuario
*/
function anyoBisiesto(anyo)
{
    var anyo, fin;
    /**
    * 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 > cadena de texto de la fecha introducida por el usuario
*/
function validaFecha(a)
{
    var a, mes, dia, anyo, febrero;

   /**
   * obtenemos la fecha introducida y la separamos en dia, mes y año
   */
   dia=a.split("/")[0];
   mes=a.split("/")[1];
   anyo=a.split("/")[2];
if( (isNaN(dia)==true) || (isNaN(mes)==true) || (isNaN(anyo)==true) )
{
	dia=a.split("-")[0];
	mes=a.split("-")[1];
	anyo=a.split("-")[2];
    if( (isNaN(dia)==true) || (isNaN(mes)==true) || (isNaN(anyo)==true) ) {
//	        alert("LA fecha introducida debe estar formada sólo por números");
		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))
   {
//           alert("El mes introducido no es valido. Por favor, introduzca un mes correcto");
       return false;
   }
   /**
   * si el mes introducido es febrero y el dia es mayor que el correspondiente 
   * al año introducido > alertamos y detenemos ejecucion
   */
   if ((mes==2) && ((dia<1) || (dia>febrero)))
   {
//           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
       return false;
   }
   /**
   * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
   */
   if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
   {
//           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
       return false;
   }
   /**
   * si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
   */
   if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
   {
//           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
       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
   */
   if ((anyo<1900) || (anyo>2010))
   {
//           alert("El año introducido no es valido. Por favor, introduzca un año entre 1900 y 2010");
		return false;
   } 
   /**
   * en caso de que todo sea correcto > enviamos los datos del formulario
   * para ello debeis descomentar la ultima sentencia
   */
   else
		return true;
}  
//Copyright © McAnam.com 
	function validaCIF(texto){
		
		var pares = 0;
		var impares = 0;
		var suma;
		var ultima;
		var unumero;
		var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
		var xxx;
		
		texto = texto.toUpperCase();
		
		var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
	   	if (!regular.exec(texto)) return false;
	   	
	   	ultima = texto.substr(8,1);

	   	for (var cont = 1 ; cont < 7 ; cont ++){
	   		xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
	   		impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
	   		pares += parseInt(texto.substr(cont,1));
	   	}
	   	xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
	   	impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
	   	
	   	suma = (pares + impares).toString();
	   	unumero = parseInt(suma.substr(suma.length - 1, 1));
	   	unumero = (10 - unumero).toString();
	   	if(unumero == 10) unumero = 0;
	   	
	   	if ((ultima == unumero) ||  (ultima == uletra[unumero]))
	   		return true;
	   	else
	   		return false;

	}
	function validaNIF(dni) {
		if (!/^\d{8}\w$/.test(dni)) {
			return false;
		}
	 
		var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
		var numero = parseFloat(dni.substr(0,8));
		var tempStr = dni.toUpperCase(); 

		numero = numero%23;
		if (tempStr.substr(8,1) !== letras.substring(numero,numero+1)) {
			return false;
		}
		return true;
	}
