﻿window.onload = function(){
		document.forms[0].onsubmit = function (){
		return validate();
	}
}

function validate ()

{
	var regNums =/([0-9])/;
	var test=null;
	var obj=null;
	var val=-1;
	var firstError=null;
	var validForm=true;
	var errStr="";
	var position="";
	//required text fields
	var req = new Array("You_Title", "You_Surname", "You_First_Name", "You_Home_Tel", "You_Pref_Email", "You_Address1", "You_City",  "Member_of", "Occupation_Occupation", "Occupation_Discipline", "Occupation_Qualifications");
	//required radio buttons
	var rad = new Array("You_Mentor_or_Mentee", "Employment_Status", "Occupation_Area");
	
	//"Mentors_Reasons" required only if applying to be a mentor or both
	var mentors="Mentors_Reasons";
	//"Mentees_Statements_" required if applying to be a mentee or both
	var mentees = new Array("Mentees_Statements_Further_Career", "Mentees_Statements_Issues_At_Work", "Mentees_Statements_Specific_Skills", "Mentees_Statements_Return_to_Work", "Mentees_Statements_Improve_Work_Life", "Mentees_Statements_Race_Issues", "Mentees_Statements_Health_Problems", "Mentees_Statements_Networking", "Mentees_Statements_Other");
	//error messages for text fields
	var messReq = new Array("Title", "Surname", "First Names", "Home Telephone Number", "Preferred Email Address", "Address1", "City",  "Membership of WES/etc", "Occupation", "Discipline", "Qualifications");
	//error messages for radio buttons
	var messRad = new Array("Mentor/Mentee/Both", "Employment Status", "Work Area");
	var x=document.forms[0].elements;
	//check required text fields (mentors and mentees)
	for (var i=0; i<req.length; i++){
		if (!x[req[i]].value){
		if(validForm){errStr="Please complete following required fields: " + messReq[i];
		validForm=false;
		firstError=x[req[i]];}
		else{errStr=errStr+", " + messReq[i];}
		}
	}
	//if no errors so far, check radio buttons
	if(validForm){
		for (var j=0; j<rad.length; j++){
			val= -1;
			obj=x[rad[j]];
			for (var i=0; i<obj.length; i++){
			if(obj[i].checked) 	{val=obj[i].value;}
		}
		if(val== -1){ 
			if(!firstError){
			firstError=obj[0];
			errStr="Please complete following required fields: " + messRad[j];}
			validForm=false;
		}
		
		}
	}
	//if no errors, check if mentor or mentee
	if (validForm){
		obj=x[rad[0]];
		for (var i=0; i<obj.length; i++){
		if(obj[i].checked) position=obj[i].value;
		}
	}
	//if mentee, check if mentees statements completed
	if(position=="Mentee"||position=="Both"){
		if(!(x[mentees[0]].value||x[mentees[1]].value||x[mentees[2]].value||x[mentees[3]].value||x[mentees[4]].value||x[mentees[5]].value||x[mentees[6]].value||x[mentees[7]].value||x[mentees[8]].value)){
		validForm=false;
		errStr="Please give reasons for applying to be a mentee";
		firstError=x[mentees[0]];
		}
	}
	//if mentor, check if mentor's reasons given
	if(position=="Mentor"||position=="Both"){
		if(!x[mentors].value){
		validForm=false;
		errStr="Please give reasons for applying to be a mentor";
		firstError=x[mentors];
		}
	}
	//check the date of birth
	if(validForm){
		//check if user filled any of DOB fields
		if(x["You_DOB_Day"].value||x["You_DOB_Month"].value||x["You_DOB_Year"].value){
			//validate Day: no day or wrong value
			test=x["You_DOB_Day"].value;
			if((!test)||(!regNums.test(test))||(test < 1)||(test > 31))
			{
				errStr="Please enter correct day of birth";
				firstError=x["You_DOB_Day"];
				validForm=false;
			}
			else{
				//correct day, check month
				test=x["You_DOB_Month"].value;
				if((!test)||(!regNums.test(test))||(test < 1)||(test > 12))
				{
					errStr="Please enter correct month of birth";
					firstError=x["You_DOB_Month"];
					validForm=false;
				}
				else{
					//check year
					test = x["You_DOB_Year"].value;
					if((!test)||(!regNums.test(test))||(test < 8)||(test > 90))
					{
						errStr="Please enter correct year of birth";
						firstError=x["You_DOB_Year"];
						validForm=false;
					}
				}
			}
		}
	}
	if (!validForm) {
		alert(errStr);
		firstError.focus();
	}
	return validForm;
}


