window.onload = prepareValidation;


function prepareValidation() {
  if( document.getElementById && document.getElementsByTagName ) {

    if(document.getElementById('contactForm')) {
		var sendAction = document.getElementById('contactForm');
		sendAction.onsubmit = function() {
			return validateForm(this);
			}
		}
	}
}


function validateEmail(emailobj) {	
	if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailobj.value))) {
		setBorder(emailobj);
		return false;
	}
	return true;
}


function addElement(parent, child, text) {
  var ni = document.getElementById(parent);

  var newdiv = document.createElement(child);
  newdiv.setAttribute('id','errorList');
  newdiv.innerHTML = text;
  ni.appendChild(newdiv);
}


function removeElement(parent, child) {
  var d = document.getElementById(parent);
  var oldelement = document.getElementById(child);
  d.removeChild(oldelement);
}


function setBorder(obj,response) {
	if (response) {
		obj.style.border="solid 1px #888";
	}
	else {
		obj.style.border="solid 1px #C00";
	}
}


function validateForm(formobj) {
	var errorMsg = '';
	var errorAlert = '<strong>Please check the following:</strong>';
	var fieldFocus = '';
	
	//reset border colours
	setBorder(document.getElementById('yourname'),true);
	setBorder(document.getElementById('email'),true);
	setBorder(document.getElementById('message'),true);
	
	if (formobj.yourname.value == '') {
		setBorder(document.getElementById('yourname'));
		errorMsg += '<li>Your name</li>';
		fieldFocus = 'yourname';
	}
	if (formobj.email.value != '') {
		if (!validateEmail(document.getElementById('email'))) {
			errorMsg += '<li>E-Mail address</li>';
			if (fieldFocus == '') {fieldFocus = 'email';}
		}
	}
	if (formobj.message.value == '') {
		setBorder(document.getElementById('message'));
		errorMsg += '<li>Your message</li>';
		if (fieldFocus == '') {fieldFocus = 'message';}
	}
	
	if (errorMsg != '') {
		//remove curent error list if it already exists
		if (document.getElementById('errorList')) {
			removeElement('formMessages', 'errorList');
		}
		addElement('formMessages', 'ul', errorAlert + errorMsg);
		errorAlert = errorAlert.replace(/<strong>/g,"");
		errorAlert = errorAlert.replace(/<\/strong>/g,"");
		errorMsg = errorMsg.replace(/<\/li>/g,"");
		errorMsg = errorMsg.replace(/<li>/g,"\n - ")
		alert(errorAlert + errorMsg);
		
		document.getElementById(fieldFocus).focus();
		
		return false;
	}
	return true;
}
