/* **********************************************************************************
 *                                                FUNCIONES DE VALIDACION GENERICAS
 * PROYECTO:
 *           TODOS
 *
 * Desarrollado por:
 *           FORMATIA - Formación, Consulta y Desarrollo PEFER, S.L.
 *                    - C/ Capitán Gallarza, 1 entlo. - 26001 - Logroño - La Rioja
 *                    - 941 202 596 - 941 214 304 - desarrollo@formatia.net
 *
 * Fecha de inicio del proyecto: 07/11/2007
 * **********************************************************************************
 * Fichero JavaScript: js/general_validator.js
 * Archivos asociados:
 *    cualquiera
 *
 * Fecha de creación del fichero:  20/07/2007
 * Desarrollador: Luis Fernández
 * Modificaciones:
 *
 * ******************************************************************************* */
function PasarJSaASP(cadena){
      cadena.value = cadena.value.replace(/\x27/g,'&#39;');//" 39
      cadena.value = cadena.value.replace(/\x22/g,'&quot;');//" 34
	  cadena.value = cadena.value.replace(/\xE1/g,'&aacute;');//á 255
	  cadena.value = cadena.value.replace(/\xE9/g,'&eacute;');//é 233
	  cadena.value = cadena.value.replace(/\xED/g,'&iacute;');//í 237
	  cadena.value = cadena.value.replace(/\xF3/g,'&oacute;');//ó 243
	  cadena.value = cadena.value.replace(/\xFA/g,'&uacute;');//ú 250
	  cadena.value = cadena.value.replace(/\xC1/g,'&Aacute;');//Á 193
	  cadena.value = cadena.value.replace(/\xC9/g,'&Eacute;');//É 201
	  cadena.value = cadena.value.replace(/\xCD/g,'&Iacute;');//Í 205
	  cadena.value = cadena.value.replace(/\xD3/g,'&Oacute;');//Ó 211
	  cadena.value = cadena.value.replace(/\xDA/g,'&Uacute;');//Ú 218
	  cadena.value = cadena.value.replace(/\xF1/g,'&ntilde;');//ñ 241
	  cadena.value = cadena.value.replace(/\xD1/g,'&Ntilde;');//Ñ 209
	  //cadena.value = cadena.value.replace(/\n/g,'<br>');//salto de linea y retorno de carro
	  //cadena.value = cadena.value.replace(/\r/g,'');//salto de linea
	  cadena.value = cadena.value.replace(/\xFC/g,'&uuml;');//ü 252
	  cadena.value = cadena.value.replace(/\xDC/g,'&Uuml;');//Ü 220
	  cadena.value = cadena.value.replace(/\x24/g,'&#36;');//$ 36
	  cadena.value = cadena.value.replace(/\xBA/g,'&ordm;');//º 186
	  cadena.value = cadena.value.replace(/\xD8/g,'&Oslash;');//ODiametro 216
	  cadena.value = cadena.value.replace(/\xF8/g,'&oslash;');//odiametro 248
	  cadena.value = cadena.value.replace(/\xAA/g,'&ordf;');//ª 170
	  cadena.value = cadena.value.replace(/\x80/g,'&euro;');//€ 128
}
function PasarHTMLaJS(cadena){
   //Transforma el contenido html tipo &aacute; en JS para cuadros de texto.
      cadena.value = cadena.value.replace(/&#39;/g,String.fromCharCode(39));//' 27
      cadena.value = cadena.value.replace(/&quot;/g,String.fromCharCode(34));//" 22
	  cadena.value = cadena.value.replace(/&aacute;/g,String.fromCharCode(225));//á E1
	  cadena.value = cadena.value.replace(/&eacute;/g,String.fromCharCode(233));//é E9
	  cadena.value = cadena.value.replace(/&iacute;/g,String.fromCharCode(237));//í ED
	  cadena.value = cadena.value.replace(/&oacute;/g,String.fromCharCode(243));//ó F3
	  cadena.value = cadena.value.replace(/&uacute;/g,String.fromCharCode(250));//ú FA
	  cadena.value = cadena.value.replace(/&Aacute;/g,String.fromCharCode(193));//Á C1
	  cadena.value = cadena.value.replace(/&Eacute;/g,String.fromCharCode(201));//É C9
	  cadena.value = cadena.value.replace(/&Iacute;/g,String.fromCharCode(205));//Í CD
	  cadena.value = cadena.value.replace(/&Oacute;/g,String.fromCharCode(211));//Ó D3
	  cadena.value = cadena.value.replace(/&Uacute;/g,String.fromCharCode(218));//Ú DA
	  cadena.value = cadena.value.replace(/&ntilde;/g,String.fromCharCode(241));//ñ F1
	  cadena.value = cadena.value.replace(/&Ntilde;/g,String.fromCharCode(209));//Ñ D1
	  //cadena.value = cadena.value.replace(/\n/g,'<br>');//salto de linea y retorno de carro
	  //cadena.value = cadena.value.replace(/\r/g,'');//salto de linea
	  cadena.value = cadena.value.replace(/&uuml;/g,String.fromCharCode(252));//ü FC
	  cadena.value = cadena.value.replace(/&Uuml;/g,String.fromCharCode(220));//Ü DC
	  cadena.value = cadena.value.replace(/&#36;/g,String.fromCharCode(36));//$ 24
	  cadena.value = cadena.value.replace(/&ordm;/g,String.fromCharCode(186));//º BA
	  cadena.value = cadena.value.replace(/&Oslash;/g,String.fromCharCode(216));//ODiametro D8
	  cadena.value = cadena.value.replace(/&oslash;/g,String.fromCharCode(248));//odiametro F8
	  cadena.value = cadena.value.replace(/&ordf;/g,String.fromCharCode(170));//ª AA
	  cadena.value = cadena.value.replace(/&euro;/g,String.fromCharCode(128));//€ 80
}

function EliminarEtiquetas(cadena){
   cadena = cadena.replace(/\x3C/g,'&lt;');//< 60
   cadena = cadena.replace(/\x3E/g,'&gt;');//> 62
   return cadena;
}
/* **********************************************************************************
 * function campoVacio(campo, nombre, msg)
 *    Entrada:
 *       campo: texto del campo del formulario que queremos validar.
 *       nombre: Nombre del campo - se muestra en el mensaje.
 *       msg: true/false dependiendo si hay que lanzar alerta javascript.
 *
 *    Salida:
 *       Devuelve true si la cadena campo está vacía y false en caso contrario.
 *       Si msg es true lanza un aviso en el explorador en forma de alert.
 * ******************************************************************************* */
function campoVacio(campo, nombre, msg){
   retorno = false;
   cadena = campo.replace(/ /g,'');
   if (cadena.length == 0) campo = "";
   if (campo.length == 0){
      if (msg) alert('Debe rellenar el campo \''+nombre+'\'.');
	  retorno = true;
   }
   return retorno;
}

/* **********************************************************************************
 * function validar_email(email)
 *
 * Entrada: email: Dirección de correo tipo nombre@dominio.es o similar.
 *
 * Salida:  Devuelve 1 si es una dirección de correo bien construida y 0 en caso
 *          contrario. (Validado con expresiones regulares PCRE de PERL)
 *
 * Fechas:
 *    Creado: 25/06/2007 (Luis)
 *    Modificado:
 * ******************************************************************************* */
function validar_email(email){
   var expresion = /(^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*((\.\w{2,3})+$|(\.\w{2,3}\.\w{2,3})+$))/;
   return expresion.test(email);
}

/* **********************************************************************************
 * function validarDominio(dominio)
 *
 * Entrada: dominio: Nombre de dominio tipo dominio.es o similar.
 *
 * Salida:  Devuelve 1 si es un nombre de dominio válido y 0 en caso contrario
 *          (Validado con expresiones regulares PCRE de PERL)
 *
 * Fechas:
 *    Creado: 25/06/2007 (Luis)
 *    Modificado:
 * ******************************************************************************* */
function validarDominio(dominio){
   var strHTTP = dominio.slice(0,7);
   if (strHTTP.toUpperCase() == "HTTP://")
      dominio = dominio.slice(7,dominio.length);
   var arrAuxiliar = dominio.split("/");
   var expresion = /(^\w+([\.-]?\w+)*((\.\w{2,3})+$|(\.\w{2,3}\.\w{2,3})+$))|(^[1-9][0-9]{0,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)/;
   es_Valido = expresion.test(arrAuxiliar[0]);
   return(es_Valido);
}
function ValidarTelefono(telefono){
   telefono.value = telefono.value.replace(/ /g,"");
   var EsValido = !isNaN(telefono.value);
   if (EsValido){
      var longn = telefono.value.length;
      if (longn != 9 && longn != 11 && longn != 13) EsValido = false;
	  else{
	     if (longn == 9) telefono.value = "0034" + telefono.value;
		 if (longn == 11) telefono.value = "00" + telefono.value;
	  }
   }
   return EsValido;
}
function ValidarTelefono2(telefono){
   telefono = telefono.replace(/ /g,"");
   var EsValido = !isNaN(telefono);
   if (EsValido){
      var longn = telefono.length;
      if (longn != 9) EsValido = false;
   }
   return EsValido;
}

/*function esNIFesCIF(str) devuelve 0 si no es válido, 1 si es NIF y 2 si es CIF */
function esNIFesCIF(cif) {
	par = 0;
	non = 0;
	letras="ABCDEFGHKLMNPQS";
	let=cif.charAt(0);

	if (!isNaN(let)) {
		nif=cif;
		dni=nif.substring(0,nif.length-1);
		let=nif.charAt(nif.length-1);
		if (!isNaN(let)) {
			//alert('Falta la letra');
			//document.formulario.nif.focus();
			return 0;
		}
		else
		{
			cadena="TRWAGMYFPDXBNJZSQVHLCKET";
			posicion = dni % 23;
			letra = cadena.substring(posicion,posicion+1);
			if (letra!=let.toUpperCase()) {
				//alert("Nif no válido");
				//document.formulario.nif.focus();
				return 0;
			}
			}
		//alert("Nif válido");
		return 1;
	}

	if (cif.length!=9) {
		//alert('El Cif debe tener 9 dígitos');
		//document.formulario.nif.focus();
		return 0;
	}

	if (letras.indexOf(let.toUpperCase())==-1) {
		//alert("El comienzo del Cif no es válido");
		//document.formulario.nif.focus();
		return 0;
	}

	for (zz=2;zz<8;zz+=2) {
		par = par+parseInt(cif.charAt(zz));
	}

	for (zz=1;zz<9;zz+=2) {
		nn = 2*parseInt(cif.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
	}

	parcial = par + non;

	control = (10 - ( parcial % 10));

	if (control==10) control=0;

	if (control!=cif.charAt(8)) {
		//alert("El Cif no es válido");
		//document.formulario.nif.focus();
		return 0;
	}
	//alert("El Cif es válido");
	return 1;
}

function validar(abc) {
	dni=abc.substring(0,abc.length-1);
	let=abc.charAt(abc.length-1);
	if (!isNaN(let)) {
		//alert('Falta la letra');
		//document.formulario.nif.focus();
		return 0;
	}
	else
	{
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		posicion = dni % 23;
		letra = cadena.substring(posicion,posicion+1);
		if (letra!=let.toUpperCase()) {
			//alert("Nif no válido");
			//document.formulario.nif.focus();
			return 0;
   	}
 	}
	//alert("Nif válido");
	return 1;
}