function Mail_Validate(Value)
 {
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[^@]{2,3}$/;

	if (Value == "")
	return("");
	if(((Value.search(exclude) != -1)||(Value.search(check)) == -1)||
	  (Value.search(checkend) == -1)){
		return("La sintaxis no es correcta");}

 }

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(ErrorHeader + "El campo no puede estar vacio.");
	if (!Required && Value == "")
	return("");
	
	switch (ValueType.toLowerCase())
	 {
		case "alphabetic":
		for(CharCnt = 0; CharCnt < Value.length; CharCnt++)
		{
		Char = Value.charAt(CharCnt);
		if ((Char < 'A' || Char > 'Z') && (Char < 'a' || Char > 'z'))
		return(ErrorHeader + "El campo no contiene caracteres alfabéticos");
		}
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
			else
			return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
		}
		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(ErrorHeader + Error + ".");
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
			else
			return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
		}
		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 "string":
		if (Value.length > Max || Value.length < Min)
		{
			if (Min==Max)
			return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
			else
			return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
		}
		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);
 }
