/* data object 

{value, type, msg} 

*/


var Errors = {
	msg: new Array()
}

var OrderRequiredFields = {
	name:			false,
	address:		false,
	city:			false,
	zip:			false,
	email:			false,
	phone:			false
}

var ContactRequiredFields = {
	first_name:	 	false,
	last_name:		false,
	email:			false,
}

var TestimonialsRequiredFields = {
	name:	 		false,
	email:			false,
	testimony:		false,
}

function onSubmitValidation(field_name, value, type, requiredFieldSet) {

	//first trim any leading or trailing white space
	var fieldValue = jQuery.trim(value);	
		
	if(!Validate.doValidation(fieldValue, type))
	{
		eval(requiredFieldSet+'.'+(field_name)+' = false');
	}
	else
		eval(requiredFieldSet+'.'+(field_name)+' = true');
	
}


//static Pattern class
var Pattern = 
{
	email: 					/^([a-zA-Z0-9_\.-])+@([a-zA-Z0-9])+\.([a-zA-Z.])+$/,
	phoneWithAreaCode:		/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/,
	phoneWithoutAreaCode:	/^[0-9]{3}-[0-9]{4}$/,
	numbersAndDashes:		/^[0-9][0-9|\-\s]+$/,
	numbersAndSlashes:		/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/,
	onlyAlphaCharacters:	/^\w+$/,
	wordCharctersWithSpace: /^[a-zA-Z ]+$/,
	notEmpty:				/^[a-zA-Z0-9]+/,
	zipcode:				/^[0-9\-]+$/,
	numbersOnly:			/^[0-9]+$/,
	currencyNoCommas:		/^([0-9]+)([\.][0-9]{2})$/
}

//static Validate class
var Validate =
{
	formID: 'contact-form',
	pass: '<img src="images/icons/check_mark.png" style="width:20px; height:20px" alt="Passed" />',
	fail: '<img src="images/icons/failed_mark.png" style="width:20px; height:20px" alt="Failed" />',
	validationCount: 0, //default
	requiredFields: 5,
	hinter: 'hinter', //class name of hinter 
	
	doValidation: function(string, type)
	{
		if(eval('Pattern.'+type+'').test(string))
			return true;
		else
			return false;									
	}
	
}
	

function clearField(field, val)
{		
	if(field.value == val)
		field.value = '';	
}


function sendForm(form, requiredFieldSet)
{	
	var elements = form.elements;
	//var elements = document.getElementById(Validate.formID).elements;
	var hasError = false;		
	
	$('.required').each(function(i) {
	
		var name = this.name;
		var value = this.value;
		
		switch(name) {
		
			case 'name':
				type = 'notEmpty';
				break;
				
			case 'address':
				type = 'notEmpty';
				break;
			
			case 'city':
				type = 'notEmpty';
				break;
			
			case 'zip':
				type = 'zipcode';
				break;
			
			case 'testimony':
				type = 'notEmpty';
				break;
		
			case 'first_name':
				type = 'notEmpty';
				break;
			
			case 'last_name':
				type = 'notEmpty';
				break;
				
			case 'email':
				type = 'email';
				break;
				
			case 'phone':
				type = 'phoneWithAreaCode';
				break;
				
			default:
				type = 'notEmpty';
		
		}
		
		onSubmitValidation(name, value, type, requiredFieldSet);
	
	});

	var RequiredFields = eval(requiredFieldSet);

	//loop throught Required Fields Object to see if there are any that are false
	for(var property in RequiredFields)
	{	
		if(RequiredFields[property] == false)
		{
			hasError = true;
			alert('Please enter valid input for '+property.replace('_', ' '));
			break;
		}
	}
	
	
	if(hasError == false)
	{	
		return true;		
	}
	
	return false;
}


function clearForm(ele) {
	 
    $('#'+ele).find(':input').each(function() {
        switch(this.type) {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                $(this).val('');
                break;
            case 'checkbox':
            case 'radio':
                this.checked = false;
        }
    });
	 
}




