function checkEmail(form,strFieldName) {
	// suggested: regular expression
	var result = false;
  	var theStr = new String(form.elements[strFieldName].value);
  	var index = theStr.indexOf("@");
  	if (index > 0) {
    	var pindex = theStr.indexOf(".",index);
    	if ((pindex > index + 1) && (theStr.length > pindex + 1))
  		result = true;
  	}
	if (!result) { alert('Invalid e-mail address. Please try again.'); }
  	return result;
}

function checkRequired(form, req_names) {
	var error = "";
	for (var i = 0; i < form.elements.length; i++)
    	if (form.elements[i].getAttribute("required") != null) 
			if (form.elements[i].value == "")
               error += " *" + req_names[i] + "\n";
    if (error != "") {
    	//alert("Required data is missing:\n" + error);
		alert("Required data is missing:\n\n" + error + "\nPlease try again.");
        return false;
    } else { return true; }
}

function checkRadio(form,strFieldName,strMessage) {
	var objFormField = form.elements[strFieldName];
	intControlLength = objFormField.length;
	bolSelected = false;
	var i = 0;
	while (i < intControlLength) {
		if(objFormField[i].checked) bolSelected = true;
		i++;
	}
	if(!bolSelected) {
		alert("Please select one option for " + strMessage + ".");
		return false;
	}
	else return true;
}

function checkSelect(form,strFieldName,strMessage) {
	var objFormField = form.elements[strFieldName];
	if (objFormField.selectedIndex == 0) {
		alert("Please select one option for " + strMessage + ".");
		return false;
	} else return true;
}

// also check for the password minimal length
function passMatch(form,pass1,pass2) {
	var p1 = form.elements[pass1].value;
	var p2 = form.elements[pass2].value;
	if (p1.length < 5) { alert("A password must contain at least 5 characters. Please try again."); return false; } else
	if (p1 != p2) { alert("The password does not match the password confirmation. Please try again."); return false; } else
	return true;
}

// this part must be customized for the particular forms
function validate1(form, req_names) {
	if (!checkRadio(form,'sex','sex')) { return false; }
	if (!checkEmail(form,'email')) { return false; }
	if (!passMatch(form,'passwd1','passwd2')) { return false; }
	if (!checkSelect(form,'dob_month','Month of Birth')) { return false; }
	if (!checkSelect(form,'dob_day','Day of Birth')) { return false; }
	if (!checkSelect(form,'dob_year','Year of Birth')) { return false; }
	if (!checkRequired(form, req_names)) { return false; }
	if (!checkSelect(form,'ntrp','NTRP Rating')) { return false; }
}

function validate2(form) {
	if (!checkRadio(form,'sex','sex')) { return false; }
	if (!checkEmail(form,'email')) { return false; }
	return checkRequired(form, req_names);
}

function validateTimeEvent(form) {
	ok = true;	
	repeat = false;
	if (form.repeat.checked) {
		repeat = false;
		for (i = 0; i < 7; i++) {
			if (form.elements["repeat_on_"+i].checked) {
				repeat = true;
			}
		}
		if (!repeat)
			ok = false;
	}
	if (ok)
		return true;
	else  {
		if (!repeat)		
			alert("At least one day of the week must be selected for recurring availability");
	}
	return false;
}