/* Format validation Functions */
function validateEquals(campo,campo1) {
    if (campo == campo1) {
		return true;
    } else {
		return false;
    } 	
}

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-\.]{1,}@([\w-]{1,}\.)*([\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]+$/;
    if ((campo.match(RegExPattern)) && (campo!='')) {
		return true;
    } else {
		return false;
    } 
}

function validatePhone2(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 equals;
	var format = '';
	var elementos = form.elements.length;
	var error_div_id = '';
	var name = '';
	
	var arrays = new Array();
	
	for( i=0;i < elementos;i++) 
	{
		equals = false;
		
		name = form.elements[i].name;
		rel = form.elements[i].getAttribute('rel');
		
		if ( name.indexOf('[]') !=-1 ) {
			/*if (arrays[name]==undefined) { 
				arrays[name].name = name;
				arrays[name].checked = 0;
				arrays[name].rel = rel;
				
			}
			if (form.elements[i].checked) {
				arrays[name].checked++;
				//alert(arrays[name]);
			}*/
			continue;	
		}
		
		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
			{
				if(validation[0] == 'equal') {
					required = false;
					equals = true;
					format = validation[1];
				} 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(' - '+form.elements[i].id+' is required');
			$(error_div_id).slideDown(speed);
			if (first == '')
				first = form.elements[i].id;
		}
		else
			if ((equals) && (validateEquals(form.elements[i].value,document.getElementById(format).value) == false) ) {
				$(error_div_id).hide();
				needed = false;
				//$(error_div_id).css({'color':'#003300'});
				$(error_div_id).html('Must be equal to '+format);
				$(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(' - '+'Format is incorrect, required '+format);
					$(error_div_id).slideDown(speed);
					if (first == '')
						first = form.elements[i].id;
				}
				else
					$(error_div_id).hide();	
			
	} //End For
	
	
	if (arrays.length > 0) {
		
	}
	
	if(needed == false)
	{
		document.getElementById(first).focus();
		res = false;
	}
	else
		res = true;
	return res;	
}