// onMouseOver event, changes element class
function rollOver(roRow) {
	if (document.getElementById(roRow).className != "selected") {
		document.getElementById(roRow).className = "highlight";
	}
}

// onMouseOut event, changes element class
function rollOut(roRow,roType) {
	if (document.getElementById(roRow).className != "selected") {
		document.getElementById(roRow).className = roType;
	}
}

// onClick event, changes element class
function selectRow(roRow,roType) {
	if (document.getElementById(roRow).className == "selected") {
		document.getElementById(roRow).className = roType;
	}
	else {
		document.getElementById(roRow).className = "selected";
	}
}

// shows 'listID' element
function expand(listID) {
	listID = document.getElementById(listID);
	if (listID.style.display == "none") {
		listID.style.display = "";
	}
	else {
		listID.style.display = "none";
	}
}

// hides 'listID' element
function contract(listID) {
	listID = document.getElementById(listID);
	if (listID.style.display == "show") {
		listID.style.display = "";
	}
	else {
		listID.style.display = "none";
	}
}

/* verifies Response includes 'name'
form must contain a field named 'response_name' whose value cannot be blank or 'name'
used in <FORM> tag: onSubmit="return submitResponse(this);" */
function submitResponse(myForm) {
	var myField = myForm.response_name;

	if ((myField.value == "") || (myField.value == "name")) {
		alert("Please enter your name.");
		return false;
	}
}

// 'Loading ...' Message Code
function loaded() {
     document.getElementById('wait').style.display = "none";
}


//validate email address
//function from http://www.webreference.com/js/tips/990928.html
//Is That Really an Email Address?
//Yehuda Shiran, Ph.D.
function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

//form validation for mandatory fields
function mandatory() { //params must be form, element, message text, field type (text or email)
	var msg = '';
	frm = mandatory.arguments[0];
	for (i = 1; i < mandatory.arguments.length; i = i + 3) {
		elem = mandatory.arguments[i];
		text = mandatory.arguments[i+1];
		fldType = mandatory.arguments[i+2];
		if (frm.elements[elem].value == '') {
			msg += text + ' is not complete\n';
		}
		else if (fldType == 'email') {
			if (!isEmail(frm.elements[elem].value)) {
				msg += text + ' is not a valid email address\n';
			}
		}
	}
	if (msg != '') {
		alert('The following errors occurred:\n' + msg);
		return false
	}
}