// JavaScript Document

window.onload = initForm;

//declare arrays for each type of element that we need to handle differently
//the array contains textarea or text fields 
var aTextFields = new Array();
//the array contains the required fields
var aReqFields = new Array();
//var to keep track of whether our arrays have been populated 
var arraysFilled = false;

function initForm(){
	/*alert ("initForm");*/
//puts all the tags in the HTML document into one, big array
	var aAllTags = document.getElementsByTagName('*');	
	//run this if our arrays have not been filled
	if(arraysFilled == false){
	//loop through aAllTags and sort things out
		for(var i in aAllTags) {
			
			//if the tag has a services class, add it to the aReqFields array
			if(aAllTags[i].className == 'reqd'){
				aReqFields.push(aAllTags[i].id);	
			}
			//if the tag TYPE attribute is either text or textarea, add to aTextFields array
			if(aAllTags[i].type == 'text' || aAllTags[i].type == 'textarea'){
				aTextFields.push(aAllTags[i].id);
			}
		}
	arraysFilled = true;
	}
}
function  formCheck(formobj){
	var aFieldDescr = new Array('Please enter name','Please enter your email address');
	var alertMsg = 'Submission:\n';
	var l_Msg = alertMsg.length;
	/*alert ("formCheck");*/
	for(var i in aReqFields){
		/*alert(aReqFields[i]);*/
		var obj = formobj.elements[aReqFields[i]];
/*					if(obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
						alertMsg += '- ' + aFieldDescr[i] + '\n';	
					}
					break;*/
				/*alert ("var obj");*/
				
						
					if((obj.value == '' || obj.value == null) || obj.value.indexOf('Please enter')>-1){
						alertMsg += '- ' + aFieldDescr[i] + '\n';
						/*alert ("if obj.value");*/
						
						var thisField = document.getElementById(aReqFields[i])
						/*alert ("thisField");*/
						thisField.className = 'invalid';
						/*alert(alertMsg);*/
						thisField.value = aFieldDescr[i];
					//		break;
					}
		if(obj.id == 'email'){
			var isValid = validateEmail(obj.id);
			if(isValid != true){
				alertMsg += '- ' + isValid + '\n';
				obj.className = 'invalid';
			}
		}
	}
	
	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

function validateEmail(fieldId){
var email = document.getElementById('email');
var emailError;

	var invalidChars = ' /:,;';
	for(var i=0; i<invalidChars.length; i++){
		var badChar = invalidChars.charAt(i);
		if(email.value.indexOf(badChar) > -1){
		emailError = 'You have entered an invalid email character: '+ badChar;
		return emailError;
		}
	}	
	
	var atPos = email.value.indexOf('@',1)
	if(atPos == -1){
		emailError = 'Your email address must contain a single @';
		return emailError;
	}
	
	if(email.value.indexOf('@',atPos+1) != -1){
		emailError ='Your email address must contain a single @';
		return emailError;
	}

	var periodPos = email.value.indexOf('.',atPos);
	if(periodPos == -1){
		emailError = 'Your email address must contain a domain and period after the @ symbol';
		return emailError;
	}
	return true;
}
