addLoadListener(init);

function init()
{
  document.forms["stdform"].onsubmit = validateFields;

  return true;
}

function validateFields()
{
	var elements = document.forms["stdform"].elements;
	var emailPattern = /^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/;
	var errorsFound = false;

	for (var i = 0; i < elements.length; i++)
	{
		if (/(^| )checkRequired( |$)/.test(elements[i].className) && elements[i].value == "") {
      		
			if (!errorsFound) {
			elements[i].focus();
			}

		parentElement = elements[i].parentNode;
		addClass(parentElement,"error");
		errorsFound = true;
		
		} else if  (/(^| )checkRequired( |$)/.test(elements[i].className) && !elements[i].value == "") {
			parentElement = elements[i].parentNode;
			stripClass(parentElement,"error");
		}

		if (/(^| )checkEmail( |$)/.test(elements[i].className) && !emailPattern.test(elements[i].value)) {
			
			if (!errorsFound) {
				elements[i].focus();
			}
			
		parentElement = elements[i].parentNode;
		addClass(parentElement,"error");
		errorsFound = true;
		
		} else if (/(^| )checkEmail( |$)/.test(elements[i].className) && emailPattern.test(elements[i].value)) {
			parentElement = elements[i].parentNode;
			stripClass(parentElement,"error");
		}
	}
  
	if (errorsFound) {
		if (document.getElementById('formErrorMessage')) {
			addClass(document.getElementById('formErrorMessage'),"error");
		}
		if (document.getElementById('topErrorMessage')) {
			addClass(document.getElementById('topErrorMessage'),"error");	
		}
		return false;
	} else {
		if (document.getElementById('formErrorMessage')) {
			stripClass(document.getElementById('formErrorMessage'),"error");
		}
		if (document.getElementById('topErrorMessage')) {
			stripClass(document.getElementById('topErrorMessage'),"error");	
		}
		return true;
	}
} 

// functions from http://www.scriptbum.com/Script/Javascript/133.html

function classContains(myObject,myClassName) {
    if (!myObject.className) return false ;
    else return ((' ' + myObject.className + ' ').indexOf(' ' + myClassName + ' ') == -1) ? false : true ;
}

function addClass(myObject,myClassName) {
	if (false === classContains(myObject,myClassName)) {
		myObject.className += ' ' + myClassName ;
	}
}

function stripClass(myObject, myClassName) {
	if (!myObject || !myObject.className) return false ;
	//if (!myObject || !myObject.className) alert('arse') ;
	var newCN = myObject.className.replace(myClassName, '') ;
	myObject.className = newCN ;
}

function toggleClass(el, myClassName) {
	if (classContains(el, myClassName)) {
		stripClass(el, myClassName) ;
	}
	else {
		addClass(el, myClassName) ;
	}
}

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}