ï»¿function Mail_Validate(Value)
 {
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[^@]{2,3}$/;

	if (Value == "")
	return false;
	if(((Value.search(exclude) != -1)||(Value.search(check)) == -1)||
	  (Value.search(checkend) == -1)){
		return false;}

	return true;
 }

function Date_Validate(Value)
 {
	//fechas, formato dd/mm/aaaa
	var mes31 = /^([1-3]0|[0-2][1-9]|31|[0-9])\/(1|01|3|03|5|05|7|07|8|08|10|12)\/(19[0-9][0-9]|20[0-9][0-9])$/;
	var mes30 = /^([1-3]0|[0-2][1-9]|[0-9])\/(4|04|6|06|9|09|11)\/(19[0-9][0-9]|20[0-9][0-9])$/;
	var mes28 = /^([1-2]0|[0-2][1-8]|[0-1]9|[0-9])\/(02|2)\/(19[0-9][0-9]|20[0-9][0-9])$/;
	var mes29 = /^([1-2]0|[0-2][1-9]|[0-9])\/(02|2)\/(1904|1908|1912|1916|1920|1924|1928|1932|1936|1940|1944|1948|1952|1956|1960|1964|1968|1972|1976|1980|1984|1988|1992|1996|2000|2004|2008|2012|2016|2020)$/;
	if (!(mes31.test(Value) || mes30.test(Value) || mes29.test(Value) || mes28.test(Value))) {
		return ("Contenido del campo fecha no es vÃ¡lido");
	}
 }
 
  function CP_Validate(Value)
 {
 	var cp = /^([1-4][0-9]|0[1-9]|5[0-2])[0-9][0-9][0-9]$/;
 	if (!cp.test(Value)) return ("Contenido del campo cÃ³digo postal no Ã©s vÃ¡lido");
 }

function Field_Validate(Name_Form, Name, Field, ValueType, Min, Max, Required)
 {
	var CharCnt;
	var ErrorHeader;
	var Value;
	var fForm;
	var HTMLTipo

	fForm = eval("document." + Name_Form);
	ErrorHeader = "\n- " + Name + ": ";
	HTMLTipo = eval("fForm." + Field + ".type");
	if (!HTMLTipo)
	HTMLTipo = eval("fForm." + Field + "[0].type");

	switch (HTMLTipo)
	{
	case "checkbox":
	return("");
	case "radio":
	if (Required)
		{
		var OpCnt;
		var selected = false;
		for(OpCnt = 0; OpCnt < eval("fForm." + Field + ".length"); OpCnt++)
			{
			if (eval("fForm." + Field + "[" + OpCnt + "].checked"))
				selected = true;
			}
		if (!selected)
			return(ErrorHeader + "Debe escogerse una de las opciones.");
		}
	return("");

	case "select-one":
	if (Required && eval("fForm." + Field + ".selectedIndex") < 1)
	return(ErrorHeader + "El campo debe tener alguna opciÃ³n seleccionada.");
	return("");

	case "text":
	case "textarea":
	case "password":
	Value = Value_Trim("" + eval("fForm." + Field + ".value"));
	if (Required && Value == "")
	return("0");
	if (!Required && Value == "")
	return("");
	
	switch (ValueType.toLowerCase())
	 {
		case "alphabetic":
		for(CharCnt = 0; CharCnt < Value.length; CharCnt++)
		{
		//Char = Value.charAt(CharCnt);
		Char = Value.charCodeAt(CharCnt);
		//alert('Char:'+Value.charAt(CharCnt) + ' y code ascii:'+Char);
		if ((Char < 65 || Char > 90) 
			&& (Char < 97 || Char > 122) 
			&& (Char != 225 && Char != 233 && Char != 237 && Char != 243  && Char != 250 
			   && Char != 193 && Char != 201 && Char != 205 && Char != 211 && Char != 218 
			   && Char != 232 && Char != 236 && Char != 242 && Char != 249
			   && Char != 192 && Char != 200 && Char != 204 && Char != 210 && Char != 217
			   && Char != 252 && Char != 239 
			   && Char != 220 && Char != 207 
			   && Char != 244 && Char != 212
			   && Char != 234 && Char != 202
			   && Char != 226 && Char != 194
			   && Char != 241 && Char != 209 
			   && Char != 32 
			   && Char != 231 && Char != 199
			   && Char != 45 && Char != 39)
			)				
		//if ((Char < 'A' || Char > 'Z') && (Char < 'a' || Char > 'z') && (Char != 'Ã¡' && Char != 'Ã©' && Char != 'Ã­' && Char != 'Ã³'  && Char != 'Ãº' && Char != 'Ã?' && Char != 'Ã‰' && Char != 'Ã?' && Char != 'Ã“' && Char != 'Ãš' && Char != 'Ã¨' && Char != 'Ã²' && Char != 'Ãˆ' && Char != 'Ã’' && Char != 'Ã¼' && Char != 'Ã¯' && Char != 'Ãœ' && Char != 'Ã?' && Char != 'Ã ' && Char != 'Ã€' && Char != 'Ã±' && Char != 'Ã‘' && Char!=' ' && Char !='Ã§' && Char !='Ã‡'  && Char !='-' && Char != "\'"))
		return("1");
		}
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return("2");
			else
			return("3");
		}
		break;

		case "digit":
		for(CharCnt = 0; CharCnt < Value.length; CharCnt++)
		{
		Char = Value.charAt(CharCnt);
		if (Char < '0' || Char > '9')
		return(ErrorHeader + "El campo no contiene un nÃºmero vÃ¡lido");
		}
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return(ErrorHeader + "El campo no tiene " + Min + " dÃ­gitos.");
			else
			return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " dÃ­gitos.");
		}		break;

		case "e-mail":
		Error = Mail_Validate(Value);
		if (!Error)
			return("1");
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return("2");
			else
			return("3");
		}
		break;

		case "integer":
		for(CharCnt = 0; CharCnt < Value.length; CharCnt++)
		{
		Char = Value.charAt(CharCnt);
		if (Char < '0' || Char > '9')
		return(ErrorHeader + "El campo no contiene un nÃºmero vÃ¡lido.");
		}
		if (parseFloat(Value) > Max || parseFloat(Value) < Min)
			return(ErrorHeader + "El campo no estÃ¡ entre " + Min + " y " + Max + ".");
		break;

		case "cp":
		for(CharCnt = 0; CharCnt < Value.length; CharCnt++)
		{
		Char = Value.charAt(CharCnt);
		if (Char < '0' || Char > '9')
		return(ErrorHeader + "El campo no tienen un cÃ³digo postal vÃ¡lido");
		}
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return(ErrorHeader + "El campo no tiene" + Min + " dÃ­gitos.");
			else
			return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " dÃ­gitos.");
		}
		Error = CP_Validate(Value);
		if (Error) return(ErrorHeader + Error + ".");
		break;
		
		case "string":
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return("2");
			else
			return("3");
		}
		break;

		case "clave":
		if (Value.length > Max || Value.length < Min)
		{
			return(ErrorHeader + "La contraseÃ±a no tiene entre " + Min + " y " + Max + " caracteres.");
		}
		break;

		case "telefono":
		if (Value.charAt(0)!='9') return(ErrorHeader + "El campo no tiene un nÃºmero de telÃ©fono vÃ¡lido");
		for(CharCnt = 1; CharCnt < Value.length; CharCnt++)
		{
			Char = Value.charAt(CharCnt);
			if (Char < '0' || Char > '9')
				return(ErrorHeader + "El campo no tiene un nÃºmero de telÃ©fono vÃ¡lido");
		}
		break;
		
		case "movil":
		if (Value.charAt(0)!='6') return(ErrorHeader + "El campo no tiene un nÃºmero de mÃ³vil vÃ¡lido");
		for(CharCnt = 1; CharCnt < Value.length; CharCnt++)
		{
			Char = Value.charAt(CharCnt);
			if (Char < '0' || Char > '9')
				return(ErrorHeader + "El campo no tiene un nÃºmero de mÃ³vil vÃ¡lido");
		}
		break;
		case "fecha":
		Error=Date_Validate(Value);
		if (Error)
		return(ErrorHeader + Error + ".");
		if (Value.length > Max || Value.length < Min)
		{
			return(ErrorHeader + "La fecha no tiene entre " + Min + " y " + Max + " caracteres.");
		}
		break;

		default:
		return(ErrorHeader + "El tipo valor [" + ValueType + "] no estÃ¡ reconocido.");
 
	  }
	return("");
	
		
	}
	return(ErrorHeader + "El tipo de campo HTML no estÃ¡ reconocido.");
  }

function Value_Trim(Value)
 {
	var Length;
	Length = Value.length;

	for(Cnt = 0; Cnt < Value.length && Value.charAt(Cnt) == " "; Cnt++);
	Value = Value.substr(Cnt);

	for(Cnt = Value.length - 1; Cnt >= 0 && Value.charAt(Cnt) == " "; Cnt--);
	Value = Value.substring(0, Cnt + 1);

return(Value);
 }

function checks(texto,apartat,max)
{
	var alguno = false
	for(i=1;i<=(max-1);i++)
	{
		if (eval("document.forms[0].elements['"+texto+"_"+i+"'].checked")==true)
		{
			alguno = true
		}
	}
	if (eval("document.forms[0].elements['"+texto+"_"+max+"'].value")!="")
	{
		alguno = true
	}
	if (alguno!=true)
	{
		var errores=apartat
	}
	else
	{
		errores = ""
	}
	return errores
}

function filtreSec (entrada) {
	var sortida = '';
	for (var i=0; i<entrada.length; i++)
	{
		if (entrada.charAt(i)=='<')
			sortida += '&lt;';
		else if (entrada.charAt(i)=='>')
			sortida += '&gt;';
		else if (entrada.charAt(i)=='"')
			sortida += '&quot;';
		else if (entrada.charAt(i)=='&')
			sortida += '&amp;';
		else
			sortida += entrada.substring(i,i+1);
	}
	return sortida;
}

function concatenaMail(){
var i = eval(document.formulario.numero.value); 
	if (document.formulario.copia.checked) {
		document.formulario.Email.value=document.formulario.Email.value + "," + document.formulario.mail.value;
		document.formulario.numero.value = eval(i+1);
	}
}

function do_trim(valor)
 {
	var Cnt;
	var salida = "";
	var longitud = valor.length;

	for(Cnt = 0; Cnt < longitud; Cnt++) {
		if (valor.charAt(Cnt) != " ") salida = salida + valor.charAt(Cnt);
	}
	return(salida);
}

function valida_emailamigos(valor) {
	var Cnt;
	var comas = 0;
	var correo = "";
	var error = "";
	var longitud = valor.length;
	valor = do_trim(valor);
	if (valor == "") return("0");
	
	for(Cnt = 0; Cnt <= longitud; Cnt++) { 
		if (valor.charAt(Cnt) != "," && Cnt < longitud && error == "") {
			correo = correo + valor.charAt(Cnt);
		} else {
			if (valor.charAt(Cnt)==",") {
				comas += 1;
				if (!Mail_Validate(correo) )
					error = "1";
				correo = "";
			}
		}
	}
	if (!Mail_Validate(correo))
		error = "1";

	if (error == "")  {
		document.formulario.numero.value=comas+1;
	}

	return(error);
}

//Funciones en base a date.js
//fechas bien formadas segun formato
function wellFormedDate(p_szFecha, p_szFormato){
    if (p_szFecha != '') {
        var objFecha = Date.parseExact(p_szFecha, p_szFormato);
        if (objFecha == null) 
            return false;
    }
    return true;
}


//La fecha A debe ser menor igual que la fecha B
function lessOrEqualThan(p_szFechaA, p_szFechaB, p_szFormato){
	var objFechaA = Date.parseExact(p_szFechaA, p_szFormato);
	var objFechaB = Date.parseExact(p_szFechaB, p_szFormato);
	if (objFechaB == null) {
	  return true;
	}
	if (objFechaA <= objFechaB) 
        return true;
    return false;
}


//La fecha A debe ser mayor igual que la fecha B
function greaterOrEqualThan(p_szFechaA, p_szFechaB, p_szFormato){
  	var objFechaA = Date.parseExact(p_szFechaA, p_szFormato);
    var objFechaB = Date.parseExact(p_szFechaB, p_szFormato);
    if (objFechaB == null) {
		return true;
	}
	if (objFechaA >= objFechaB) 
        return true;
    return false;
}







