var verifyRequired = function(e) {
	var validated = true;
	var requiredFields = this.getElements('input.required');
	
	requiredFields.each(function(item){
		switch(item.getProperty('type')) {
		case "text":
			if(item.value == "") {
				item.getParent('li').addClass("error");
				validated = false;
			} else {
				item.getParent('li').removeClass("error");
			}
			break;
		}
	});
	
	requiredFields = this.getElements('select.required');
	requiredFields.each(function(item){
		if(item.value == "0") {
			item.getParent('li').addClass("error");
			validated = false;
		} else {
			item.getParent('li').removeClass("error");
		}
	});
	
	if(!validated) {
		e.stop();
		$('errorMsg').set('text','Please fill out all the required fields.');
		var myFx = new Fx.Scroll(window).toElement($('errorMsg'));
	}
}

window.addEvent('domready', function(){
	// General page form validation
	$$('form.pageForm').each(function(form) {
		var validateForm = verifyRequired;
		form.addEvent('submit',verifyRequired)
	});
	
	// Used on product options form
	$$('input.otherOption').each(function(item){
		var listElement = item.getParent().getPrevious('li').getFirst('ul').getLast('li');
		if(listElement) {
			var otherChk = listElement.getFirst('input');
			if (otherChk.checked) {
				item.getParent('li').removeClass('hidden');
			} else {
				item.getParent('li').addClass('hidden');
			}
			var fieldName = otherChk.getProperty('name');
			$$('input[name='+fieldName+']').each(function(input){
				/* 	The click event is used on the option input becuase the onchange event
					does not fire properly in IE.  The even then needs to be copied to the
					labels to allow firing when setting via label click. 
				*/
				input.addEvent('click', function() {
					if (otherChk.checked) {
						item.getParent('li').removeClass('hidden');
					} else {
						item.getParent('li').addClass('hidden');
					}
				});
				input.getNext('label').cloneEvents(input);
			});
		}
	});
});

