function validateForm(whichform) {
  	var submitOk = "true";
  	var errormessage = document.getElementById('errorblock');
  	errormessage.style.display = "none";
var phoneErrorMessage = document.getElementById('phoneerrormessage');
/*  	phoneErrorMessage.style.display = "none";*/
	document.getElementById('phoneerror').style.color = "black";
  	document.getElementById('postcodeerror').style.color = "black";
	document.getElementById('countryerror').style.display = "none";
	var stockordered = "false";
  	var contactNumberSupplied = "false";
 
  
  for (var i=0; i<whichform.elements.length; i++) {
    var element = whichform.elements[i];
	if (element.className.indexOf("required") != -1) {
      element.style.borderColor = "#8D9DBC";
	  element.style.color = "#000";
	  if (!isFilled(element) || element.value == "required") {
        element.value = "required";
        element.style.borderColor = "red";
		element.style.color = "red";
		//change className
		//return false;
		submitOk = "false";
      }
    }
    if (element.className.indexOf("email") != -1) {
	  element.style.borderColor = "#8D9DBC";
	  element.style.color = "#000";
      if (!isEmail(element) || element.value == "invalid email address") {
        element.value = "invalid email address";
		element.style.borderColor = "red";
		element.style.color = "red";
        //return false;
		submitOk = "false";
      }
    }
	// check all quantities for items ordered
	if (element.className.indexOf("orderqty") != -1) {
		if (element.value > 0) {
			stockordered = "true";
		}
	}
	if (element.className.indexOf("contactnumbers") != -1) {
		element.style.borderColor = "#8D9DBC";
	  	element.style.color = "#000";
		if (isFilled(element)) {
			contactNumberSupplied = "true";
		}
		if (!isPhoneNumber(element) || element.value == "invalid number") {
        	element.value = "invalid number";
			element.style.borderColor = "red";
			element.style.color = "red";
        	document.getElementById('phoneerror').style.color = "red";
			//return false;
			submitOk = "false";
      } 
	}

	if (document.getElementById('country').value == "Australia") {
	  	document.getElementById('countryerror').style.display = "block";
		submitOk = "false";
	}

	if (element.className.indexOf("postcode") != -1) {
		element.style.borderColor = "#8D9DBC";
	  	element.style.color = "#000";
//		if (isFilled(element)) {
//			contactNumberSupplied = "true";
//		}
		if (!isPostcode(element) || element.value == "invalid" || !isFilled(element)) {
        	element.value = "invalid";
			element.style.borderColor = "red";
			element.style.color = "red";
			document.getElementById('postcodeerror').style.color = "red";
			//return false;
			submitOk = "false";
      	} 
	}
 
 }
/*  if (contactNumberSupplied == "false") {
  	phoneErrorMessage.style.display = "block";  
  }*/
  
  if (stockordered == "false") {
	errormessage.style.display = "block";
  }
  if (submitOk == "true" && stockordered == "true" && contactNumberSupplied == "true") {
	return true;
  }
  return false;
}

function isFilled(field) {
  if (field.value.length < 1 || field.value == field.defaultValue || field.value == "" || /^\s+$/.test(field.value)) {
    return false;
  } else {
    return true;
  }
}

function isPhoneNumber(field) {
	var pattern = /^[0-9 \-()\+]*$/;
	if (!pattern.test(field.value))  {
		return false;
  	} else {
    	return true;
  	}
}

function isPostcode(field) {
	var pattern = /^[0-9 a-zA-Z]*$/;
	if (!pattern.test(field.value))  {
		return false;
  	} else {
    	return true;
  	}
}

function isEmail(field) {
  if (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1) {
    return false;
  } else {
    return true;
  }
}

function prepareForms() {
  for (var i=0; i<document.forms.length; i++) {
    var thisform = document.forms[i];
    if (thisform.className == "tovalidate") {
		thisform.onsubmit = function() {
      		return validateForm(this);
		}
    }
  }
}

addLoadEvent(prepareForms);