﻿// JScript File


function LegalesClientValidate(sender, args) {
	if (args.Value=='1' && testMayor18_2()){
		args.IsValid=true;
	}else{
		args.IsValid=false;
	}
  }
  
function testMayor18_2(){
	var dia,mes,ano,fecha,menos18;
	
	dia=document.getElementById('fechaDia').value;
	mes=document.getElementById('fechaMes').value;
	ano=document.getElementById('fechaAno').value;
	fecha = new Date(ano,mes -1,dia);
	fecha.setFullYear(fecha.getFullYear() + 18);
	ahora = new Date();
	
	if (fecha > ahora){
		return false;
	}else{
		return true;
	}
}
/*
	es-ES
	Las funciones contenidas en este archivo han sido preparadas para ser 
	utilizadas con el control System.Web.UI.WebControls.CustomValidator
*/

//Sólo admite NIFs válidos con el formato 00000000X (8 dígitos y una letra).
//La letra debe ser la correcta ya que se comprueba si corresponde al número de DNI.
function NIFClientValidate(sender, args) {
	var nif = args.Value;
	if (nif.length != 9) {
		args.IsValid = false;
		return;
	}
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	var dni = nif.substring(0, 8);
	var letraNif = nif.substring(8, 9);
	var letraAux;
	var numero = dni % 23;
	letraAux = letras.substring(numero,numero + 1);
	args.IsValid = (letraAux == letraNif.toUpperCase());
}

function CIFClientValidate(sender, args) {
	args.IsValid = esCIF(args.Value);
}

function NIFCIFClientValidate(sender, args) {
	//alert('NIF: '+esNIF(args.Value)+'\nCIF: '+esCIF(args.Value));
	args.IsValid = esNIF(args.Value) || esCIF(args.Value);
}

//Utilizada por NIFCIFClientValidate()
function esNIF(value) {
	var nif = value;
	if (nif.length != 9) return false;
	
	var letras = 'TRWAGMYFPDXBNJZSQVHLCKE';
	var dni = nif.substring(0, 8);
	var letraNif = nif.substring(8, 9);
	var letraAux;
	var numero = dni % 23;
	letraAux = letras.substring(numero,numero + 1);
	return (letraAux == letraNif.toUpperCase());
}
//Utilizada por NIFCIFClientValidate()
function esCIF(value) {

	value = value.toUpperCase();
  var letrasCIF = "ABCDEFGHNPSQ";
  var letrasOrganismos = "JABCDEFGHI";
  var organismo = false;
  
  if (value.length != 9) return false;
  var letra = value.charAt(0);
  if (letrasCIF.indexOf(letra) == -1) return false;
  if (letra == 'P' || letra == 'Q' || letra == 'S') organismo = true;
  if (!esDigitos(value.substr(1, value.length - 2))) return false;
  var codigoControl = value.charAt(value.length-1)

  suma1 = parseInt(value.charAt(2), 10) + parseInt(value.charAt(4), 10) + parseInt(value.charAt(6), 10);
  suma2 = 0;
  for( var i = 1; i < 8; i += 2) {
		aux = parseInt(value.charAt(i), 10) * 2;
		if (aux > 9) 
			suma2 = suma2 + parseInt(aux / 10, 10) + aux % 10
		else
			suma2 = suma2 + aux;
  }
  suma = suma1 + suma2;
  codigo = 10 - suma % 10;
  if(codigo > 9) codigo = 0;
  
  if (!organismo) {
		if (codigo != parseInt(codigoControl, 10)) return false;
  } else {
		if (letrasOrganismos.charAt(codigo) != codigoControl) return false;
  }
  
  return true;
}
//Utilizada por esCIF()
function esDigitos(value) {
  for(i = 0; i < value.length; i++){
		if(!esDigito(value.charAt(i))) return false;
  }
  return true;
}
//Utilizada por esCIF()
function esDigito(value) {
	return ((value >= "0") && (value <= "9"));
}

//Sólo admite fechas válidas con el formato dd/mm/aaaa.
//Valida años bisiestos.
function FechaClientValidate(sender, args) {
	var regExp = /^(?:(?:0?[1-9]|1\d|2[0-8])(\/|-)(?:0?[1-9]|1[0-2]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:31(\/|-)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-)(?:0?[1,3-9]|1[0-2])))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(29(\/|-)0?2)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$/;
	args.IsValid = regExp.test(args.Value) || args.Value=='dd/mm/aaaa';
}

//Sólo admite números de cinco dígitos
function CodigoPostalClientValidate(sender, args) {
	var regExp = /^\d{5}$/; // = /^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/;
	args.IsValid = regExp.test(args.Value);
}

//Sólo admite números de 9 dígitos
function TelefonoClientValidate(sender, args) {
  var regExp = /^(9|6)\d{8}?$/;//var regExp = /^(\d{9}|\d{13})?$/; 
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite números de 9 o 13 dígitos
function FaxClientValidate(sender, args) {
  var regExp = /^(\d{9}|\d{13})?$/; //var regExp = /^(6|9)\d{8}?$/;
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite números de 9 o 13 dígitos
function MovilClientValidate(sender, args) {
  var regExp = /^(\d{9}|\d{13})?$/; //var regExp = /^6\d{8}?$/;
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite direcciones de correo electrónico válidas
function EmailClientValidate(sender, args) {
	var regExp = /^([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])$/;
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite direcciones de correo electrónico válidas
function MatriculaClientValidate(sender, args) {
	var regExpNueva = /^(\d{4}\s{0,1}\w{3})$/;
	var regExpAntigua = /^(\w{1,2}\s{0,1}\d{4,5}\s{0,1}\w{0,2})$/;
  args.IsValid = (regExpNueva.test(args.Value) | regExpAntigua.test(args.Value));
}

/*
	Sólo admite CCC con veinte dígitos (todos los dígitos unidos), y el dígito de control debe ser correcto.
	[4:Entidad][4:Oficina][2:Dígito de control][10:Número de cuenta]
	Dígitos de control: Verifican los códigos de Entidad y Oficina, el primero, y el Número de Cuenta, el segundo. 
	Para el cálculo de cada uno de ellos se emplea el módulo 11. Por consiguiente, la suma de los productos 
	obtenidos de multiplicar las cifras de las informaciones a verificar por sus correspondientes pesos, se divide en 11. 
	La diferencia entre el resto obtenido de la división y 11 será el dígito de control.
	Dado que este control está compuesto por una sola cifra, si el dígito de control resultante fuera 10, 
	se aplicará en su lugar el dígito 1, y si fuera 11, el 0.
*/
function CCCClientValidate(sender, args) {
	var regExp = /^\d{20}$/;
	if (!regExp.test(args.Value)) args.IsValid = false;
	
	//Verificamos que el dígito de control sea el adecuado
	var digitoControl = args.Value.substring(8,10);
	var entidadSucursal = '00' + args.Value.substring(0,8); //Para validar el dígito de control necesitamos que el bucle posterior se haga con 10 dígitos, por eso agregamos los ceros delante.
	var numeroCuenta = args.Value.substring(10,20);

  var valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  var digito1 = 0;
  var digito2 = 0;
  for (i = 0; i <= 9; i++) {
    digito1 += parseInt(entidadSucursal.charAt(i)) * valores[i];
    digito2 += parseInt(numeroCuenta.charAt(i)) * valores[i];
  }
  digito1 = 11 - (digito1 % 11);
  digito2 = 11 - (digito2 % 11);

  if (digito1 == 11) digito1 = 0;
	else if (digito1 == 10)	digito1 = 1;
	
	if (digito2 == 11) digito2 = 0;
	else if (digito2 == 10)	digito2 = 1;

  args.IsValid = ((digito1.toString() + digito2.toString()) == digitoControl);
}

//Sólo admite números enteros o con hasta dos decimales, positivos o negativos.
function MonedaClientValidate(sender, args) {
	var regExp = /(^-?\d\d*\,\d{1,2}$)|(^-?\d\d*$)|(^-?\,\d\d{1,2}$)/;
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite números enteros positivos o negativos.
function NumeroClientValidate(sender, args) {
	var regExp = /(^-?\d\d*$)/;
  args.IsValid = regExp.test(args.Value);
}

//Sólo admite URLs válidas.
function URLValidate(sender, args) {
		var regExp = /(http|ftp|https):\/\/[\w-_]+(\.[\w-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
		args.IsValid = regExp.test(args.Value);
}


//validación de las extensiones de los ficheros guardados. Comprueba si son imagenes 
function esImagen(sender, args) {

	//var regExp =/^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*\w))+\.(gif|jpg|jpeg)$/;
	var regExp =/^.*\.(jpg|JPG|gif|GIF|jpeg|JPEG)$/;
	args.IsValid = regExp.test(args.Value);

	/*var elemento;
	var prueba='elemento=document.getElementById("' + nombreCampo + '").value'
	eval('elemento=document.getElementById("' + nombreCampo + '").value');
	var sExtension;

	sExtension=elemento.split('.').length>1 ? elemento.split('.')[1].toUpperCase() : '';

	if(sExtension!='JPG' && sExtension!='JPEG' && sExtension!='GIF')
		return false;

	return true;*/
	
}

// validacion que comprueba si es imagen JPG
function esImagenJPG(sender, args) {
	var regExp =/^.*\.(jpg|JPG)$/;
	args.IsValid = regExp.test(args.Value);
}

function esFichero(sender, args) {
	//var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*\w))+\.(doc|pdf)$/;
	var regExp =/^.*\.(doc|pdf|PDF|DOC)$/;
	args.IsValid = regExp.test(args.Value);
	//^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*\w))+\.(doc|pdf)$
	
	/*var elemento;
	var prueba='elemento=document.getElementById("' + nombreCampo + '").value'
	eval('elemento=document.getElementById("' + nombreCampo + '").value');
	var sExtension;
	sExtension=elemento.split('.').length>1 ? elemento.split('.')[1].toUpperCase() : '';

    if(sExtension!='DOC' && sExtension!='PDF')
		return false;

	return true;*/
	
}

function esZIP(sender, args) {
	//var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*\w))+\.(zip)$/;
	var regExp =/^.*\.(zip|ZIP)$/;
	args.IsValid = regExp.test(args.Value);
}


function esMultimedia(sender, args) {
	//var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w ]*\w))+\.(zip)$/;
	var regExp =/^.*\.(avi|AVI|mpg|MPG|mpeg|MPEG|wmv|WMV|mov|MOV|mp3|MP3|wav|WAV)$/;
	args.IsValid = regExp.test(args.Value);
}

function esXLS(sender, args) {
	var regExp =/^.*\.(xls|XLS)$/;
	args.IsValid = regExp.test(args.Value);
}


//Comprueba que las dimensiones de la foto de tamaño fijo son correctas
//Las dimensiones que debe tener son: 114 x 84
function dimensionesFotoClientValidate(sender, args){
	var imagen = new Image();
	//imagen.src = document.all('fotofile').value;
		imagen.src = args.Value;
	if (imagen.width != 114	|| imagen.height != 84) { //(imagen.width != 133 || imagen.height != 92) {
		args.IsValid = false; //El tamaño de la foto es incorrecto.';
	} else {
		args.IsValid = true;
	}
}

//Comprueba que las dimensiones de la foto de tamaño fijo son correctas
//Las dimensiones que debe tener son: 151 x 182
function dimensiones151x182FotoClientValidate(sender, args){
	var imagen = new Image();
	//imagen.src = document.all('fotofile').value;
		imagen.src = args.Value;
	if (imagen.width != 151	|| imagen.height != 182) { //(imagen.width != 133 || imagen.height != 92) {
		args.IsValid = false; //El tamaño de la foto es incorrecto.';
	} else {
		args.IsValid = true;
	}
}

//Comprueba que las dimensiones de la foto de baja resolución son correctas
//Las dimensiones deben ser menores que 954 x 487
function dimensionesFotoBaja(sender, args){
	//alert('dimensioensFotoBaja: ' + args.Value);
	var imagen = new Image();
	//imagen.src = document.all('fotofile').value;
	imagen.src = args.Value;
	if (imagen.width > 954	|| imagen.height > 487) { //(imagen.width != 133 || imagen.height != 92) {
		args.IsValid = false; //El tamaño de la foto es incorrecto.';
	} else {
		args.IsValid = true;
	}
}

//Comprueba que las dimensiones de la foto de tamaño fijo son correctas
//Las dimensiones que debe tener son: 151 x 182
function dimensiones1024x1024FotoClientValidate(sender, args){
	var imagen = new Image();
	//imagen.src = document.all('fotofile').value;
		imagen.src = args.Value;
	if (imagen.width > 1024	|| imagen.height > 1024) { //(imagen.width != 133 || imagen.height != 92) {
		args.IsValid = false; //El tamaño de la foto es incorrecto.';
	} else {
		args.IsValid = true;
	}
}



