function validateField(field) {
	if (field.value == null || field.value == undefined || field.value == '')
	{
		return false;
	}
	return true;
}

function requiredFields(form) 
{
	 if(!validateField( form["user.firstName"]			) || 
		!validateField( form["user.lastName"]			) || 
		!validateField( form["user.username"]			) ||
		!validateField( form["user.address.city"]		) || 
		!validateField( form["user.address.address"]	) ||
		!validateField( form["user.address.province"]	) || 
		!validateField( form["user.address.postalCode"]	) ) 
	{
		inlineMsg("button",'Missing Required Fields!');
		return false;
	}
	return true;
}

function validatePhone(form) {
	var phoneNumber = form["user.phoneNumber"].value;
	var regPhone  = /^[1-9]\d{2}\-?\d{3}\-?\d{4}$/;
	
	if (phoneNumber == null || phoneNumber == undefined || phoneNumber == '') {
		return true;
	} else {
		if (!regPhone.exec(phoneNumber)) {
			inlineMsg(100,"Invalid Phone! Format: ###-###-####");
	        form["user.phoneNumber"].focus();
	        form["user.phoneNumber"].select();
			return false;
		}
	}
	return true;
}

function zipCodeValidate(form) {
	// Test to see if the zip code is formatted correctly.
	// Zip codes have five digits, they are all over 1,000
	// and they cannot end in 000.
	var zip = parseInt(form["user.address.postalCode"].value, 10);
	var len = form["user.address.postalCode"].value.length;
	var t   = parseInt(form["user.address.postalCode"].value.substring(2, 5), 10);
	if( isNaN(zip) || (len < 5) || (zip <= 1000) || (zip >= 100000) || (t == 0))
	{
		inlineMsg("15",'Please enter a valid, five-digit zip code.');
		form["user.address.postalCode"].focus();
		form["user.address.postalCode"].select();
		return false;
	}
	return true;
}

function emailValidate(form){
	// Test email validation.
	var src = form["user.email"].value;
	emailpat = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
	if (!(emailpat.test(src)) && src.length > 0){
		inlineMsg("10",'Please enter a valid email address xx@yy.zz!');
		form["user.email"].focus();
		form["user.email"].select();
		return false;
	}
	return true;
}

function listValidate(ele,msg,listEmptyMsg,errorId) {
	if( ele ) {
		var selIndex = ele.selectedIndex;
		
		if (ele.options[selIndex].text == listEmptyMsg) {
			inlineMsg(errorId,msg);
			return false;
		}
	}
   return true; // in the case that the element does not exist, for whatever  
   				// reason, we still want the validation to pass
}

function validateForm(form)
{
	if (!requiredFields(form) ||
		!zipCodeValidate(form) ||
		!emailValidate(form) ||
		!validatePhone(form) ||
		!listValidate(form['user.specialtyTitle'],'Please select a title!','- select a designation -','title') ||
		!listValidate(form['user.mainSpecialty'],'Please select a primary specialty!','- select a specialty -','mainspecialty') ||
		!listValidate(form['user.address.province'],'Please select a primary state!','- select a state -','userstate') ) 
	{
			return false;
	} else {
		form.submit();
		return true;
	}
}