// validates that the field value string has one or more characters in it
function displayError(labelID, errorMessage, alignment, textColor) {
	var parentNode = document.getElementById(labelID);
	var childNode;
	var errorDivText = document.createTextNode(errorMessage);

	// first check to see if the parent node already has a child error node
	// if it does, update its attributes and text node
	for (i=0; i<parentNode.childNodes.length; i++) {
		childNode = parentNode.childNodes[i];
		
		// nodeType #1 is an Element node
		if (childNode.nodeType == 1) {
			if (childNode.id == labelID + "Error") {
				childNode.setAttribute("align", alignment, 0);
				childNode.style.color = textColor;
				
				for (j=0; j<childNode.childNodes.length; j++) {
					if (childNode.childNodes[j].nodeType == 3) {
						childNode.replaceChild(errorDivText, childNode.childNodes[j]);
						return;
					}
				}
				childNode.appendChild(errorDivText);
				return;
			}
		}
	}
	
	var errorDiv = document.createElement("div");
	
	errorDiv.appendChild(errorDivText);
	errorDiv.id = labelID + "Error";
	errorDiv.setAttribute("align", alignment, 0);
	errorDiv.style.color = "#FF0000";
	parentNode.appendChild(errorDiv);
}

function removeError(labelID, errorIDSuffix) {
	var parentNode = document.getElementById(labelID);
	var childNode;

	for (i=0; i<parentNode.childNodes.length; i++) {
		childNode = parentNode.childNodes[i];
		
		if (childNode.nodeType == 1) {
			if (childNode.id == labelID + errorIDSuffix) {
				parentNode.removeChild(childNode);
				return;
			}
		}
	}
}

function isNotEmpty(elem) {
	var str = elem.value;
    var re = /.+/;
    if(!str.match(re)) {
        alert("Please fill in the " + elem.name + " field.");
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } else {
        return true;
    }
}

function isNumber(elem) {
	var str = elem.value;
    var re = /^[-]?\d*\.?\d*$/;
    str = str.toString();
    if (!str.match(re)) {
        alert("Enter only numbers into the " + elem.name + " field.");
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    }
    return true;
}

function isLen16(elem) {
	var str = elem.value;
    var re = /\b.{16}\b/;
    if (!str.match(re)) {
        alert("Entry does not contain the required 16 characters.");
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } else {
        return true;
    }
}

function isEMailAddr(elem) {
	var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        alert("Verify the e-mail address format.");
        setTimeout("focusElement('" + elem.form.name + "', '" + elem.name + "')", 0);
        return false;
    } else {
        return true;
    }
}

function isChosen(select) {
    if (select.selectedIndex == 0) {
        alert("Please make a choice from the list.");
        return false;
    } else {
        return true;
    }
}

function isValidRadio(radio) {
    var valid = false;
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    alert("Make a choice from the radio buttons.");
    return false;
}

function isNotEqual(value1, value2) {
    if(value1 != value2) {
        alert("Passwords do not match.");
        return false;
    } else {
        return true;
    }
}

function focusElement(formName, elemName) {
    var elem = document.forms[formName].elements[elemName];
    elem.focus();
    elem.select();
}


function validateForm(form) {
	if (isNotEmpty(form.Username)) {
		if (isNotEmpty(form.Password)) {
			if (isNotEqual(form.Password.value, form.Password2.value)) {
				if (isNotEmpty(form.FirstName)) {
					if (isNotEmpty(form.LastName)) {
						if (isChosen(form.LevelAccess)) {
							if (isNotEmpty(form.Email)) {
								if (isNotEmpty(form.ContactNum)) {
									if (isEMailAddr(form.Email)) {
									return true;
									}
								}
							}
						}
					}
				}
			}
		}
	}
    return false;
}

function phonemask(t)
{var patt1 = /(\d{3}).*(\d{3}).*(\d{4})/;
var patt2 = /^\((\d{3})\).(\d{3})-(\d{4})$/;
var str = t.value;
var result;
if (!str.match(patt2))
{result = str.match(patt1);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = '(' + result[1] + ') ' + result[2] + '-' + result[3];
t.value = str;
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');
}}}

var ERROR_COLOR = "#FF0000";

function validateJobForm() {
	try {
		var strJobTitle = document.getElementById("JobTitle");
		var strJobDescription = document.getElementById("JobDescription");
		var strJobRequirements = document.getElementById("JobRequirements");
		var strStartDate = document.getElementById("StartDate");
		var strEndDate = document.getElementById("EndDate");
		var strContactName = document.getElementById("ContactName");
		var strContactAddress = document.getElementById("ContactAddress");
		var strContactCity = document.getElementById("ContactCity");
		var strContactZip = document.getElementById("ContactZip");
		var strContactPhone = document.getElementById("ContactPhone");
		var strContactFax = document.getElementById("ContactFax");
		var strContactEmail = document.getElementById("ContactEmail");
		var bNoErrors = true;

		if (strJobTitle.value == "") {
			displayError("JobTitleLabel", "You must enter a job title.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("JobTitleLabel", "Error");
		}

		if (strJobDescription.value == "") {
			displayError("JobDescriptionLabel", "You must enter a Job Description.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("JobDescriptionLabel", "Error");
		}

		if (strJobRequirements.value == "") {
			displayError("JobRequirementsLabel", "You must enter Job Requirements.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("JobRequirementsLabel", "Error");
		}

		if (strStartDate.value == "") {
			displayError("StartDateLabel", "You must enter a job opening date.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("StartDateLabel", "Error");
		}

		if (strEndDate.value == "") {
			displayError("EndDateLabel", "You must enter a job closing date.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("EndDateLabel", "Error");
		}

		if (strContactName.value == "") {
			displayError("ContactNameLabel", "You must enter a contact name.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactNameLabel", "Error");
		}

		if (strContactAddress.value == "") {
			displayError("ContactAddressLabel", "You must enter a contact address.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactAddressLabel", "Error");
		}

		if (strContactCity.value == "") {
			displayError("ContactCityLabel", "You must enter a contact city.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactCityLabel", "Error");
		}

		if (strContactZip.value == "") {
			displayError("ContactZipLabel", "You must enter a contact zip code.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactZipLabel", "Error");
		}

		if (strContactPhone.value == "") {
			displayError("ContactPhoneLabel", "You must enter a contact phone number.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactPhoneLabel", "Error");
		}

		if (strContactFax.value == "") {
			displayError("ContactFaxLabel", "You must enter a contact fax number.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactFaxLabel", "Error");
		}

		if (strContactEmail.value == "") {
			displayError("ContactEmailLabel", "You must enter a contact email address.", "left", ERROR_COLOR);
			bNoErrors = false;
		} else {
			removeError("ContactEmailLabel", "Error");
		}

		return bNoErrors;
	} catch (error) {
		return false;
	}
}
