// Javascript helper methods

// Limit the text in textArea
function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}

// Validate email address
function checkEmail(field) {
	var obj = document.getElementById(field);
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (obj.value != "" && !filter.test(obj.value)) {
		alert('Please provide a valid email address');
		obj.focus();
		return false;
	}
	return true;
}

//Compare email addresses to ensure they match
function compareEmail(emailField, confirmEmailField) {
	var emailObj = document.getElementById(emailField);
	var confirmEmailObj = document.getElementById(confirmEmailField);
	if (checkEmail(confirmEmailField)) {
		if (emailObj.value != confirmEmailObj.value) {
			alert('Email address does not match');
			confirmEmailObj.focus();
			return false;
		}
	} else {
		return false;
	}
	return true;
}

// Check required fields in the form
function formCheck(formobj, fieldRequired, fieldDescription){

	// dialog message
	var alertMsg = "Please complete the following fields:\n";
	var l_Msg = alertMsg.length;
	var firstItemIndex = -1;
	
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
			}
			if (alertMsg.length > l_Msg && firstItemIndex == -1) {
				firstItemIndex = i; // save index of first item not populated
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		if (firstItemIndex != -1)
			formobj.elements[fieldRequired[firstItemIndex]].focus(); // set focus first item
		return false;
	}
}
