
function validateForm(formName){
	var errorArray = Array();
	
	if(formName == 'membershipForm'){		
		var mandatoryFields = new Array('uname', 'pword', 'firstName', 'surname', 'gender', 'dob', 'home1', 'homeTown', 'homeCounty', 'homePostcode');
		var dateFields = new Array('dob');
		var intFields = new Array('blueNumber', 'whiteNumber', 'team');
		var alphaFields = new Array('firstName', 'surname', 'homeTown', 'termTown', 'homeCounty', 'termCounty');
		var alphaNumFields = new Array('homePostcode', 'termPostcode');
	}

	//remove any default values from the form fields
	for(i = 0; i < dateFields.length ;i++){
		if(dateFields[i] == 'dd/mm/yyyy'){
			dateFields[i] =  '';
		}
	}
	
	//check mandatory fields for existance
	for(i = 0; i < mandatoryFields.length; i++){
		form = document.forms[formName];
		element = form.elements[mandatoryFields[i]].value;
		if(element == ''){
			errorArray.push(mandatoryFields[i]);			
		} else {
			myElement = document.getElementById(mandatoryFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
		}
	}
	
	//check date fields, for each incorrect date, if incorrect push the element name onto the errorArray
	//uses the isDate() function in date.js file
	for(i = 0; i < dateFields.length; i++){
		form = document.forms[formName];
		element = form.elements[dateFields[i]].value;
		if(element != ''){
			if(isDate(element) == false){
				errorArray.push(dateFields[i]);
			} else {
			myElement = document.getElementById(dateFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
			}
		} else {
			myElement = document.getElementById(dateFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
		}
	}
	
	//check alpha fields, these can only contain [a-zA-Z] 
	for(i = 0; i < alphaFields.length; i++){
		form = document.forms[formName];
		element = form.elements[alphaFields[i]].value;
		if(element != ''){		
			if(!element.match(/^[a-zA-Z-\s]+$/)){
				errorArray.push(alphaFields[i]);
			} else {
			myElement = document.getElementById(alphaFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
			}
		} else {
			myElement = document.getElementById(alphaFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
		}
	}
	
	//check alpha-numeric fields, these can only contain [0-9a-zA-Z-]
	//([0-9a-zA-Z-]+ *)
	for(i = 0; i < alphaNumFields.length; i++){
		form = document.forms[formName];
		element = form.elements[alphaNumFields[i]].value;
		if(element != ''){		
			if(!element.match(/^[0-9a-zA-Z-\s]+$/)){
				errorArray.push(alphaNumFields[i]);
			} else {
			myElement = document.getElementById(alphaNumFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
			}
		} else {
			myElement = document.getElementById(alphaNumFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';			
		}
	}
	
	//check numeric (integer) fields, these can only contain [0-9]
	for(i = 0; i < intFields.length; i++){
		form = document.forms[formName];
		element = form.elements[intFields[i]].value;
		if(element != ''){		
			if(!element.match(/^\d+$/)){				
				errorArray.push(intFields[i]);
			} else {
			myElement = document.getElementById(intFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
			}
		} else {
			if(intFields[i] != 'partsListNumber') form.elements[intFields[i]].value = 0;		
			myElement = document.getElementById(intFields[i]);
			myElement.style.border = '1px solid #999';
			myElement.style.background = '#fff';
			myElement.style.color = '#000033';
		}
	}
	
	if(errorArray.length == 0){
		return true;
	} else {		
		for(i = 0; i < errorArray.length; i++){
			myElement = document.getElementById(errorArray[i]);
			myElement.style.border = '1px solid #f00';
			myElement.style.background = '#fff url(\'/images/errortriangle.gif\') no-repeat right';
			if(errorArray[i] == 'gender'){myElement.style.color = '#f00';myElement.style.background = '';}
		} 
		alert('The form contains errors.\n Please check the elements highlighted.');
		return false;
	}
}