var ken = {};
ken.formValidation = {

	disableFormSubmit: function(formName){
		var inputs = $(formName).getInputs();
		inputs.each(function(i){
			if(i.identify().include('submit')){
			i.disable();
			i.setOpacity(0.5);
			i.setStyle({cursor: 'default'});
			}		
		});
	
	},

	enableFormSubmit: function(formName){
		var inputs = $(formName).getInputs();
		inputs.each(function(i){
			if(i.identify().include('submit')){
			i.enable();
			i.setOpacity(1);
			i.setStyle({cursor: 'pointer'});
			}		
		});
	
	},
	
	submitform: function(formId)	{
	 $(formId).submit();
	},
	
	checkEmail: function(str){
		var email = str;
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

		if (filter.test(str)){
			return true;
		} else {
			return false;
		}
	},
	
	validateZipCode: function(str){
		var value = str;
		var re = /^\d{5}([\-]\d{4})?$/;
		if (re.test(value)) {
			return true;
		} else {
			return false;
		}
	},
	
	// validates all fields with a class of 'validate' first, then checks email and zip as long as there are values to check
	validateField: function(inputItem) {
		if($(inputItem).hasClassName('validate')){
			if($(inputItem).getValue().blank()) {
				return false;
			} 
		}
		if ($(inputItem).identify().include('email')) {
			if(!ken.formValidation.checkEmail($(inputItem).getValue())){
				return false;
			}
		} 
		if ($(inputItem).identify().include('zip')) {
			if(!ken.formValidation.validateZipCode($(inputItem).getValue())){
				return false;
			}
		} 
		
		return true;
	},
	
	clear: function(field){
		if(!$(field).hasClassName('cleared')){
			$(field).value = "";
			$(field).addClassName('cleared');
		}
	},
	
	scanForm: function (formId) {
		var invalidArray = [];
		var emailArray = [];

		if ($(formId).getInputs().length > 0){

			var formInputs = $(formId).getInputs();
			// below iterates through all inputs in form
			formInputs.each(function(i){
				
				if(!ken.formValidation.validateField(i.identify())){
					// adds invalid element id's to array, could be used for future error handling 
					// and ultimately is the deciding factor on whether or not this form validates
					invalidArray.push(i.identify());					
				}
				
				// as long as the above returns true the below will fire. This section is for checking that two emails
				//  are the same, if this returns false and there is more than one email present, form will not be valid
				if (i.identify().include('email') && emailArray.length <= 0 && !i.getValue().blank()) {
					emailArray.push(i.getValue());
				} else if (i.identify().include('email') && emailArray.length > 0 && !i.getValue().blank()){
					emailArray.push(i.getValue());
					if (emailArray[0] != emailArray[1]) {
						invalidArray.push(i.identify());
					}
				}
			});
				
		}
		if(invalidArray.length > 0){
			alert("Please review your form entries. We are either missing a required field or something was entered incorrectly.");		
			return false;
		} else {
			ken.formValidation.submitform(formId);	
		}
	}
}

	

/***************************/

Event.observe(window, 'load', function(e){
	
	$('submitButton').observe('click',respondToClick);
	
	function respondToClick(event) {
		ken.formValidation.scanForm('sweepsForm')
	}
	var formdate = new Date();
	document.sweepsForm.datetime.value = formdate;
		
});

