function formValidator(){
	// Make quick references to our fields
	var name = document.getElementById('name');
	var email = document.getElementById('mailfrom');
	var city = document.getElementById('city');
	var country = document.getElementById('country');
	var ismember = document.submitform.ismember;
	var membernumber = document.getElementById('membernumber');

	// Check each input in the order that it appears in the form!
	if(isAlpha(name, "Please enter your name")){
		if(emailValidator(email, "Please enter a valid email address")){
			if(isSet(city, "Please enter the city where you are")){
				if(madeSelection(country, "Please select the country where you are")){
					if(getCheckedValue(ismember) == 'no' || (getCheckedValue(ismember) == 'yes' && isNumeric(membernumber, "Please enter your IEEE member number"))){
						return true;
					}
				}
			}
		}
	}
	return false;
}

function mailingListFormValidator(){
	// Make quick references to our fields
	var name = document.getElementById('name');
	var email = document.getElementById('mailfrom');
	var country = document.getElementById('country');
	var ismember = document.submitform.ismember;
	var membernumber = document.getElementById('membernumber');

	// Check each input in the order that it appears in the form!
	if(isAlpha(name, "Please enter your name")){
		if(emailValidator(email, "Please enter a valid email address")){
			if(madeSelection(country, "Please select the country where you are")){
				if(getCheckedValue(ismember) == 'no' || (getCheckedValue(ismember) == 'yes' && isNumeric(membernumber, "Please enter your IEEE member number"))){
					return true;
				}
			}
		}
	}
	return false;
}

function isChecked(elem, helperMsg){
	if(elem.checked == false){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function emailValidator(elem, helperMsg){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(!elem.value.match(emailExp)){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}	

function isNumeric(elem, helperMsg){
	var numericExpression = /^[0-9]+$/;
	if(!elem.value.match(numericExpression)){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}

function isAlpha(elem, helperMsg){
	var alphaExpression = /^[ a-zA-Z]+$/;
	if(!elem.value.match(alphaExpression)){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}

function madeSelection(elem, helperMsg){
	if(elem.value == ""){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}

function isSet(elem, helperMsg){
	if(elem.value == ""){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}

String.prototype.endsWith = function(str) {
	return (this.match(str+"$")==str)
}

function isAcceptedVideo(elem, helperMsg){
	if(elem.value == "" || (!elem.value.toLowerCase().endsWith('.avi') && !elem.value.toLowerCase().endsWith('.mpg') && !elem.value.toLowerCase().endsWith('.mpeg'))){
		alert(helperMsg);
		elem.focus();
		return false;
	}
	return true;
}

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


