var available = false;

function validateForm(formName)
{
	var returnVal = true;

	switch(formName)
	{
		case "logonForm":
				setFormLabelsBlack("logonForm");
				if(document.logonForm.username.value == "" || document.logonForm.username.value == null)
				{
					document.getElementById("usernameLabel").style.color = "red";
					returnVal = false;
				}

				if(document.logonForm.password.value == "" || document.logonForm.password.value == null)
				{
					document.getElementById("passwordLabel").style.color = "red";
					returnVal = false;
				}
				break;

		case "newUserForm":
				setFormLabelsBlack("newUserForm");
				if(document.newUserForm.firstName.value == "" || document.newUserForm.firstName.value == null)
				{
					document.getElementById("firstNameLabel").style.color = "red";
					returnVal = false;
				}

				if(document.newUserForm.lastName.value == "" || document.newUserForm.lastName.value == null)
				{
					document.getElementById("lastNameLabel").style.color = "red";
					returnVal = false;
				}

				if(document.newUserForm.username.value == "" || document.newUserForm.username.value == null)
				{
					document.getElementById("usernameLabel").style.color = "red";
					returnVal = false;
				}

				if(!available)
				{
					document.getElementById("usernameLabel").style.color = "red";
					returnVal = false;
				}

				// password values should be the same, neither field can be left blank
				if(document.newUserForm.password1.value != document.newUserForm.password2.value)
				{
					document.newUserForm.password1.value = "";
					document.newUserForm.password2.value = "";
					document.getElementById("password1Label").style.color = "red";
					document.getElementById("password2Label").style.color = "red";
					returnVal = false;
				}
				else if(document.newUserForm.password1.value == "" || document.newUserForm.password1.value == null || document.newUserForm.password2.value == "" || document.newUserForm.password2.value == null)
				{
					document.newUserForm.password1.value = "";
					document.newUserForm.password2.value = "";
					document.getElementById("password1Label").style.color = "red";
					document.getElementById("password2Label").style.color = "red";
					returnVal = false;
				}

				if(document.newUserForm.primaryEmail.value == "" || document.newUserForm.primaryEmail.value == null)
				{
					document.getElementById("primaryEmailLabel").style.color = "red";
					returnVal = false;
				}

				if(document.newUserForm.question.value == "-1")
				{
					document.getElementById("questionLabel").style.color = "red";
					returnVal = false;
				}

				if(document.newUserForm.answer.value == "" || document.newUserForm.answer.value == null)
				{
					document.getElementById("answerLabel").style.color = "red";
					returnVal = false;
				}

				var dateReturnVal = checkDate(document.newUserForm.birthday);

				if(!dateReturnVal)
					returnVal = false;
				break;
		case "addMailAccounts":
				setFormLabelsBlack("addMailAccounts");
				var validEmailFormat = setWebEmailUsername();
				var acctType = document.newEmailAccountForm.provider.value;
				if(acctType=="aim"|| acctType=="aol" || acctType=="gmail" || acctType=="hotmail"|| acctType=="yahoo")
				{
					if(!validEmailFormat)
					{
						document.getElementById("addEmailLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.emailAddress.value == "" || document.newEmailAccountForm.emailAddress.value == null)
					{
						document.getElementById("addEmailLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.password.value == "" || document.newEmailAccountForm.password.value == null)
					{
						document.getElementById("addPasswordLabel").style.color = "red";
						returnVal = false;
					}
				}
				else
				{
					if(!validEmailFormat)
					{
						document.getElementById("addEmailLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.emailAddress.value == "" || document.newEmailAccountForm.emailAddress.value == null)
					{
						document.getElementById("addEmailLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.username.value == "" || document.newEmailAccountForm.username.value == null)
					{
						document.getElementById("addUsernameLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.password.value == "" || document.newEmailAccountForm.password.value == null)
					{
						document.getElementById("addPasswordLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.server.value == "" || document.newEmailAccountForm.server.value == null)
					{
						document.getElementById("addIncomingServerLabel").style.color = "red";
						returnVal = false;
					}
					if(document.newEmailAccountForm.serverPort.value == "" || document.newEmailAccountForm.serverPort.value == null)
					{
						document.getElementById("addIncomingPortLabel").style.color = "red";
						returnVal = false;
					}
					//if(document.newEmailAccountForm.smtp.value == "" || document.newEmailAccountForm.smtp.value == null)
					//{
					//	document.getElementById("addOutgoingServerLabel").style.color = "red";
					//	returnVal = false;
					//}

					//if(document.newEmailAccountForm.smtpPort.value == "" || document.newEmailAccountForm.smtpPort.value == null)
					//{
					//	document.getElementById("addOutgoingPortLabel").style.color = "red";
					//	returnVal = false;
					//}
				}
				break;
			default:;
	}

	return returnVal;
}

function checkDate(input)
{
	var validformat=/^\d{2}\/\d{2}\/\d{4}$/; //Basic check for format validity
	var returnval=false;

	if (!validformat.test(input.value))
	{
		document.getElementById("birthdayLabel").style.color = "red";
		document.getElementById("birthdayFormatLabel").style.color = "red";
	}
	else
	{
		//Detailed check for valid date ranges
		var monthfield=input.value.split("/")[0];
		var dayfield=input.value.split("/")[1];
		var yearfield=input.value.split("/")[2];
		var dayobj = new Date(yearfield, monthfield-1, dayfield);
		if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
		{
			alert("Invalid Day, Month, or Year range detected. Please correct and submit again.");
			document.getElementById("birthdayLabel").style.color = "red";
			document.getElementById("birthdayFormatLabel").style.color = "red";
		}
		else
			returnval=true
	}

	return returnval;
}

function setFormLabelsBlack(form)
{
	switch(form)
	{
		case "editMailAccounts":
				document.getElementById("addPasswordLabel").style.color = "#333333";
				break;
		case "addMailAccounts":
				var acctType = document.newEmailAccountForm.provider.value;
				document.getElementById("addEmailLabel").style.color = "#333333";
				document.getElementById("addIncomingServerLabel").style.color = "#333333";
				document.getElementById("addIncomingPortLabel").style.color = "#333333";
				//document.getElementById("addOutgoingServerLabel").style.color = "#333333";
				//document.getElementById("addOutgoingPortLabel").style.color = "#333333";
				document.getElementById("addPasswordLabel").style.color = "#333333";
				break;
		case "logonForm":
				document.getElementById("usernameLabel").style.color = "#333333";
				document.getElementById("passwordLabel").style.color = "#333333";
				break;
		case "newUserForm":
				document.getElementById("firstNameLabel").style.color = "#333333";
				document.getElementById("lastNameLabel").style.color = "#333333";
				document.getElementById("usernameLabel").style.color = "#333333";
				document.getElementById("password1Label").style.color = "#333333";
				document.getElementById("password2Label").style.color = "#333333";
				document.getElementById("primaryEmailLabel").style.color = "#333333";
				document.getElementById("questionLabel").style.color = "#333333";
				document.getElementById("answerLabel").style.color = "#333333";
				document.getElementById("birthdayLabel").style.color = "#333333";
				document.getElementById("birthdayFormatLabel").style.color = "#333333";
				break;
		default:;
	}
}

function setWebEmailUsername()
{
	var temp = document.newEmailAccountForm.emailAddress.value;
	var pos = temp.indexOf('@');
	if(pos != '-1'){
			document.newEmailAccountForm.username.value = temp.substring(0,pos);
			return true;
	}else{
		return false;
	}
}

function checkUsernameAvailable()
{
	var temp = document.newUserForm.username.value;
	var text = document.getElementById("uError");

	var length = checkUsernameLength(temp, text);

	if(length)
	{
		text.innerHTML = "checking availability...";
		text.style.color = "blue";

		new Ajax.Request('validateUsername.do', {
				parameters: {username: temp },
				onSuccess: function(transport) {
					var json = transport.responseText.evalJSON();
					if(!json.result)
					{
						text.innerHTML = temp +" unavailable";
						text.style.color = "red";
						document.getElementById("usernameLabel").style.color = "red";
						available = false;
					}
					else
					{
						text.innerHTML = temp +" available";
						text.style.color = "green";
						document.getElementById("usernameLabel").style.color = "#333333";
						available = true;
					}
				}
		});
	}
}

function checkUsernameLength(val, msg)
{
	if(val.length<3)
	{
		msg.innerHTML = "3 characters minimum";
		msg.style.color = "red";
		document.getElementById("usernameLabel").style.color = "red";
		return false;
	}
	else
	{
		msg.innerHTML = "";
		document.getElementById("usernameLabel").style.color = "#333333";
		return true;
	}
}