/* Format validation Functions */
function validateNumber(campo) {
    var RegExPattern =/^[0-9]+$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 	
}

function validateReal(campo) {
    var RegExPattern =/^(([0-9]+)|([0-9]+\.[0-9]+))$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 	
}

function validateEmail(campo) {
    var RegExPattern =/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 	
}
	
function validateURL(campo) {
    var RegExPattern =/^(http:|https:|ftp:)\/\/\w+(\.\w+)*(\-\w+)?\.\w{2,3}(\:\d{2,6})?(\/{1,2}(\:|\-|\w|\.|\?|\/|\=|\&|\%|\@|\\|\,)*)?$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 
}


function validatePhone(campo) {
    var RegExPattern = /^[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 
}
function validateDate(campo) {
    var RegExPattern = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 
}

function validateZip(campo) {
    var RegExPattern = /^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 
}

function validateFormat(campo,formato)
{
	switch (formato)
	{
		case "zip":
			return validateZip(campo);
			break;
		case "date":
			return validateDate(campo);
			break;
		case "phone":
			return validatePhone(campo);
			break;
		case "url":
			return validateURL(campo);
			break;
		case "email":
			return validateEmail(campo);
			break;
		case "number":
			return validateNumber(campo);
			break;			
		case "real":
			return validateReal(campo);
			break;				
		default:
			return true;
	}

}
/* Format validation Functions */


/* ---------- */
/* Validation */
/* ---------- */
function validate(form) {
	var speed = 500;
	var needed = true;
	var first = '';	
	var rel = '';
	var required = false;
	var format = '';
	var elementos = form.elements.length;
	var error_div_id = '';
	
	for( i=0;i < elementos;i++) 
	{
		
		rel = form.elements[i].getAttribute('rel');

		if(rel != null) // Begin config format and required
		{
			validation = rel.split(' ');	
			if(validation[0] == 'required')
			{
				required = true;
				if(validation.length == 2)
				{
					format = validation[1];
				}
				else
					format = '';
			}
			else
			{
				required = false;
				format = validation[0];
			}
		}
		else
		{
			required = false;
			format = '';			
		}	// End config format and required
		

		error_div_id = "#error_"+form.elements[i].name;	
		if ((required == true) && (form.elements[i].value == '')) 
		{
			needed = false;
			$(error_div_id).css({'color':'#990000'});
			$(error_div_id).html('El campo '+form.elements[i].id+' es obligatorio');
			$(error_div_id).slideDown(speed);
			if (first == '')
				first = form.elements[i].id;
		}
		else
			if(validateFormat(form.elements[i].value,format) == false)
			{
				$(error_div_id).hide();
				needed = false;
				$(error_div_id).css({'color':'#003300'});
				$(error_div_id).html('El formato del campo '+form.elements[i].id+' es incorrecto');
				$(error_div_id).slideDown(speed);
				if (first == '')
					first = form.elements[i].id;			
			}
			else
				$(error_div_id).hide();	
			
	} //End For
	
	

	
	if(needed == false)
	{
		document.getElementById(first).focus();
		res = false;
	}
	else
		res = true;
	return res;	
}
