
function submitForm(theform){
	if(validateForm(theform))
	eval("document."+theform+".submit()");
}


//check that all fields with classname 'required' are filled in
function validateForm(formname, classname){
if(!classname) classname="required";
var elems=eval("document."+formname+".elements"); 
var valid=true;
var alert_text = "Please fill in the highlighed fields.";
var radio = true;
var checkbox = true;

for(var i=0;i<elems.length;i++){
	if(elems[i].className.indexOf(classname)>=0){
	switch(elems[i].type) {
			case "text" :
				if(elems[i].name=='email_address'){
					if(!isEmail(elems[i].value)){
						elems[i].style.backgroundColor="#FE938D";
						valid=false;
					}
					else
						elems[i].style.backgroundColor="#f3f8fa";
					
				}
			case "textarea" :
			case "password" :
				if( (elems[i].value=="") ) { //|| (elems[i].value==elems[i].defaultValue)){
					valid=false;
					elems[i].style.backgroundColor="#FE938D";
				}
					else
						elems[i].style.backgroundColor="#f3f8fa";
				break;
			case "select-one" :
				if(elems[i].value==''){
					//alert("Please select an option from the dropdowns");
					elems[i].style.backgroundColor="#FE938D";
					valid=false;
				}
					else
						elems[i].style.backgroundColor="#f3f8fa";
				break;
			case "radio" :
				if(!isSelected(formname, elems[i].name)){
						elems[i].style.backgroundColor="#FE938D";
						radio = false;
						valid=false;
					
				}
				break;
			case "checkbox" :
				if(!isChecked(formname, elems[i].name)){
						elems[i].style.backgroundColor="#FE938D";
						checkbox=false;
						valid=false;
				}
				break;
		}
		//if(!valid){
		//	return valid;
		//}
	}
}
if(!radio)
	alert_text += "\nPlease tick all required radio buttons";
if(!checkbox)
	alert_text += "\nPlease tick all required checkboxes";
if(!valid)
	alert(alert_text);
return valid;
}


/** isChecked
 * returns true if at least one of a group of checkboxes is checked
 **/
function isChecked(formname, checkboxname){
	var isChecked = false;
	checkboxname = checkboxname.replace("[]", "");
	var chkbx=eval('document.'+formname+'.'+checkboxname);
	if(!isArray(chkbx)){
		if((!chkbx) || (chkbx.checked))
			isChecked=true;
	}
	else{
   	for (var i = 0; i < chkbx.length; i++) {
  	 	if (chkbx[i].checked) {
   	   	   isChecked = true;
   		}
	 }
	}
	if(!isChecked){
		//alert("Please tick all required checkboxes");
	}
	return isChecked;
}

/** isSelected()
 * Returns true if one of a group of radio buttons is selected
 **/
function isSelected(formname, radioname){
	var isChecked = false;
	var chkbx=eval('document.'+formname+'.'+radioname);
	if(!chkbx.length){
		if(chkbx.checked)
			isChecked=true;
	}
	else{
		for (var i = 0; i < chkbx.length; i++) {
			if (chkbx[i].checked) {
			isChecked = true;
			}
		}
	}
	if(!isChecked){
		//alert("Please tick all required Radio buttons");
	}
	return isChecked;
}


function isEmail(str){
	if((str.indexOf('@')==-1)||(str.indexOf('.')==-1)){
		//alert("Invalid email address");
		return false;
	}
	else
		return true;
}
/*** This validation function checks that an email address contains both '@' and '.' **/
function validateEmailAddress(email_address){
var email = document.getElementById(email_address).value;
	if((email.indexOf('@')==-1)||(email.indexOf('.')==-1)){
		//alert("Invalid email address");
		return false;
	}
	else
		return true;
}

//Check that two fields have the same values, useful for password changes etc
function validateSame(type, retype){
if(document.getElementById(type).value == document.getElementById(retype).value)
	return true;
else{
	return false;
}
}

//Check if this element is an array
function isArray(obj) {
	if(!obj) { 
	return false;
	}
	try{ if((NodeList!="undefined") && (obj instanceof NodeList)) return true;} catch(e) {}
	try{ if((HTMLCollection!="undefined") && (obj instanceof HTMLCollection)) return true;} catch(e) {}

	if(!obj.constructor){ 
	return false;
	}
	if(!obj.constructor.indexOf) { 
	return false;
	}
return (obj.constructor.indexOf("Array") != -1);
}

