if (document.getElementById && document.getElementsByTagName) {

var val = {
	
	form : document.getElementById('friendform'),
	sform : document.getElementById('simplecontact'),
	
	emailRegex : /^[a-z0-9._%+\-]+@([a-z0-9\-]+\.)+([a-z]{2,4}|mobile|museum)$/i,
	
	removeErrors : function() {
		
		var errors = val.form.getElementsByTagName('strong');
		
		while (errors.length) { errors[0].parentNode.removeChild(errors[0]); }
		
	},
	
	insertError : function(field) {
		
		var errorMsg = 'Please include ';
		switch (field.name) {
			case 'Type' : errorMsg = 'Please select how you would like to join the Loma.'; break;
			case 'Name' : errorMsg += 'your name.'; break;
			case 'Email' : errorMsg += 'a valid email address.'; break;
			default : errorMsg = 'Please choose a book'; break; //Somehow we got a field that shouldn't have an error message
		}
		var error = document.createElement('strong');
		error.appendChild(document.createTextNode(errorMsg));
		error.className = 'error';
		field.parentNode.insertBefore(error,field.parentNode.firstChild);
		
	},
	
	validate : function(evt) {
		
		val.removeErrors();
		
		var isError = false;
		
		val.typeMenu = document.getElementById('frtype');
		if (val.typeMenu.selectedIndex <= 0) { val.insertError(val.typeMenu); isError = true; }
		
		val.nameField = document.getElementById('frnm');
		if (!val.nameField.value) { val.insertError(val.nameField); isError = true; }
		
		val.emailField = document.getElementById('freml');
		if (!val.emailField.value.match(val.emailRegex)) { val.insertError(val.emailField); isError = true; }
		
		val.bookList = document.getElementById('frbfr').parentNode.parentNode;
		val.buttons = val.bookList.getElementsByTagName('input');
		for (var i = 0, numButtons = val.buttons.length, optionChecked = false; i < numButtons; i++) {
			if (val.buttons[i].checked) { optionChecked = true; break; }
		}
		if (!optionChecked) { val.insertError(val.bookList); isError = true; }
		
		if (isError) {
			val.util.stopDefault(evt);
		}
		
	},
	
	svalidate : function(evt) {
		
		if (val.sform.firstChild.firstChild.nodeName.toLowerCase() === 'strong') { val.sform.firstChild.removeChild(val.sform.firstChild.firstChild); }
		
		val.nameField = document.getElementById('scnm');
		val.emailField = document.getElementById('sceml');
		
		if (!val.nameField.value || !val.emailField.value.match(val.emailRegex)) {
			var error = document.createElement('strong');
			error.appendChild(document.createTextNode('Please include your name and a valid email address.'));
			error.className = 'error';
			val.sform.firstChild.insertBefore(error,val.sform.firstChild.firstChild);
			val.util.stopDefault(evt);
		}
		
	},
	
	init : function() {
		
		this.util.configEvents();
		
		if (this.form) { this.util.addEvent(this.form,'submit',this.validate,false); }
		if (this.sform) { this.util.addEvent(this.sform,'submit',this.svalidate,false); }
		
	},
	
	util : {
		configEvents : function() {
			// W3C approach for non-IE modern browsers
			if (document.addEventListener) {
				this.addEvent = function(el, type, func, capture) {
					el.addEventListener(type, func, capture);
				};
				this.stopDefault = function(evt) {
					evt.preventDefault();
				};
			}
			else if (document.attachEvent) {
				this.addEvent = function(el, type, func) {
					// fixing 'this'
					el["e" + type + func] = func;
					el[type + func] = function() { el["e" + type + func] (window.event); };
					// attaching the event and function
					el.attachEvent("on" + type, el[type + func]);
				};
				this.stopDefault = function(evt) {
					evt.returnValue = false;
				};
			}
		}
	}
};

val.init();

}
