var isWorking = false;
var http = getHTTPObject();

var inputForm;

function handleHttpResponse_AccountAndNickname()
{
	if (http.readyState == 4)
	{
		if (http.responseText.indexOf('invalid') == -1)
		{
			try
			{
				// Use the XML DOM
				var xmlDocument = http.responseXML;

		        //
				//  get the result object
				//
				var acctStatus = false;
				var acctStatusDiv = document.getElementById('accountStatus');
				var nickStatus = false;
				var nickStatusDiv = document.getElementById('nicknameStatus');

				var account = xmlDocument.getElementsByTagName('account').item(0);
				if (account.firstChild.data == 'EXISTS')
				{
					acctStatusDiv.innerHTML = '<font color=red><b>&lt;&lt; ACCOUNT ID TAKEN</b></font>';
					alert ('Sorry, an account with the email address: ' + inputForm.EMAIL.value + ' has already been registered.\nPlease login at http://challenge.atpworldtour.com.');
					inputForm.EMAIL.focus();
				}
				else
				{
					//Email is good to go
					acctStatusDiv.innerHTML = '&nbsp;';
					acctStatus = true;
				}

				if (acctStatus)
				{
					var nickname = xmlDocument.getElementsByTagName('nickname').item(0);
					if (nickname.firstChild.data == 'EXISTS')
					{
						nickStatusDiv.innerHTML = '<font color=red><b>&lt;&lt; NICKNAME TAKEN</b></font>';
						alert ('Sorry, the entry nickname: ' + (inputForm.NICKNAME.value.length > 0 ? inputForm.NICKNAME.value : inputForm.nickname.value) + ' has already been taken.\nPlease select a new nickname and try again.');
						if (inputForm.NICKNAME.value.length > 0)
							inputForm.NICKNAME.focus();
						else
							inputForm.nickname.focus();
					}
					else
					{
						//Nickname is good to go
						nickStatusDiv.innerHTML = '&nbsp;';
						nickStatus = true;
					}
				}else
					nickStatusDiv.innerHTML = '&nbsp;';

				if (acctStatus && nickStatus)
				{
					inputForm.submit();
				}

			}
			catch (e)
			{
				//   general error, check the nickname on the back side
				inputForm.submit();
			}

		}
		else
			inputForm.submit();
	}
    isWorking = false;
}

function checkAccountAndNickname(theForm)
{

	inputForm = theForm;

	var acctStatusDiv = document.getElementById('accountStatus');
	acctStatusDiv.innerHTML = "Checking...";

	var nickStatusDiv = document.getElementById('nicknameStatus');
	nickStatusDiv.innerHTML = "Checking...";

	if (!isWorking && http)
	{
		isWorking = true;
		http.open("GET", "/atp/check-exists.php?FLD1=A&CHECK1=" + escape(theForm.EMAIL.value)
			+ "&FLD2=N&CHECK2=" + escape(theForm.NICKNAME.value)
			+ "&X=" + Math.floor(Math.random() * 99999), true);
		http.onreadystatechange = handleHttpResponse_AccountAndNickname;
 	    http.send(null);

	}else{
		theForm.submit();
    }
}

function checkAccount(theForm)
{
	inputForm = theForm;

	var acctStatusDiv = document.getElementById('accountStatus');
	acctStatusDiv.innerHTML = "Checking...";

	if (!isWorking && http)
	{
		isWorking = true;
		url = "/atp/check-exists.php?FLD1=A&CHECK1=" + escape(theForm.EMAIL.value)
			+ "&X=" + Math.floor(Math.random() * 99999);
		http.open("GET", url, true);
		http.onreadystatechange = handleHttpResponse_AccountAndNickname;
 	    http.send(null);

	}else{
        theForm.submit();
    }
}

function checkRegNickname(theForm)
{
	inputForm = theForm;

	var nickStatusDiv = document.getElementById('nicknameStatus');
	if (nickStatusDiv)
		nickStatusDiv.innerHTML = "Checking...";

	if (!isWorking && http)
	{
		isWorking = true;
		url = "/atp/check-exists.php?FLD2=N&CHECK2=" + escape(theForm.nickname.value)
			+ "&X=" + Math.floor(Math.random() * 99999);
		http.open("GET", url, true);
		http.onreadystatechange = handleHttpResponse_AccountAndNickname;
 	    http.send(null);

	}else{
        theForm.submit();
    }
}

function checkQuickRegisterInfo()
{
	var eMailElement = document.REGISTERBOX.email;
	eMailElement.value = trim(eMailElement.value);

	if (eMailElement.value.length == 0)
	{
		alert('Your account ID must be a valid e-mail address.');
		document.REGISTERBOX.email.focus();
		return;
	}
	var eMailValid = checkEmail(eMailElement.value);
	if (eMailValid == 2)  // bad email
	{
		alert ('The e-mail address ' + eMailElement.value + ' is not valid.  Please re-enter a valid e-mail address and try again.');
		document.REGISTERBOX.email.focus();
		return;
	}
	if (eMailValid == 1)	// Close to good e-mail
	{
		alert('The e-mail address ' + eMailElement.value + ' does not appear to be valid.  Please re-enter a valid e-mail address and try again.');
		document.REGISTERBOX.email.focus();
		return;
	}

	var passwordElement = document.REGISTERBOX.password;
	passwordElement.value = trim(passwordElement.value);
	if (!checkPassword(passwordElement.value))
	{
		alert ('Your password must be at least 6 characters long and contain only printable characters.\nRe-enter the password and try again.')
		document.REGISTERBOX.password.focus();
		return;
	}

	if (checkEasyPassword(passwordElement.value))
	{
		alert ("That password is too easy to guess try again.  Please try again.");
		document.REGISTERBOX.password.focus();
		return;
	}

	if (document.REGISTERBOX.password.value != document.REGISTERBOX.confirm.value)
	{
		alert ("Password verification error.  Re-enter and verify the password and try again.")
		document.REGISTERBOX.password.focus();
		return;
	}

	var nick = trim(document.REGISTERBOX.nickname.value);
	if (nick.length < 1)
	{
		alert ('Please enter an entry nickname to be used in the Draw Challenge.\nIt will be used in the Standings displays.');
		document.REGISTERBOX.nickname.focus();
		return;
	}

    if (nick.length < 3 || nick.length > 16)
	{
		alert ('Your nickname must be 3 to 16 characters long.');
		document.REGISTERBOX.nickname.focus();
		return;
	}

	var regexAccount = /^[a-z0-9\-\_\!\$\(\)\*\+\.\?\"\'\@]{3,16}$/i;  // alphanumeric, dashes, and underscores, min length 3, max length 16

	if (!regexAccount.test(nick)) {
		alert ('Your nickname may only contain letters, numbers, dashes and underscores.');
		document.REGISTERBOX.nickname.focus();
		return;
	}

	if (nick.toLowerCase()=="default" || nick.toLowerCase()=="actuals" || nick.toLowerCase()=="admin1964")
	{
		alert ('That nickname is not allowed.  Please try again.');
		document.REGISTERBOX.nickname.focus();
		return;
	}

	if (document.REGISTERBOX.country.selectedIndex == 0)
	{
        alert ('Please enter your Country to register.')
		document.REGISTERBOX.country.focus();
    	return;
	}

	document.REGISTERBOX.nickname.value = nick;

	checkRegNickname(document.REGISTERBOX);
}

function checkInfo()
{

    var eMailElement = document.REGISTER.EMAIL;
	eMailElement.value = trim(eMailElement.value);

	if (eMailElement.value.length == 0)
	{
		alert('Your account ID must be a valid e-mail address.');
		document.REGISTER.EMAIL.focus();
		return;
	}
	var eMailValid = checkEmail(eMailElement.value);
	if (eMailValid == 2)  // bad email
	{
		alert ('The e-mail address ' + eMailElement.value + ' is not valid.  Please re-enter a valid e-mail address and try again.');
		document.REGISTER.EMAIL.focus();
		return;
	}
	if (eMailValid == 1)	// Close to good e-mail
	{
		alert('The e-mail address ' + eMailElement.value + ' does not appear to be valid.  Please re-enter a valid e-mail address and try again.');
		document.REGISTER.EMAIL.focus();
		return;
	}

    if (document.REGISTER.EMAIL.value != document.REGISTER.EMAILVERIFY.value)
    {
        alert ("Email verification error.  Re-enter and verify the email and try again.")
		document.REGISTER.EMAILVERIFY.focus();
    	return;
    }

	if (!checkPassword(trim(document.REGISTER.PASSWORD.value)))
	{
        alert ('Your password must be at least 6 characters long and contain only printable characters.\nRe-enter the password and try again.')
		document.REGISTER.PASSWORD.focus();
    	return;
	}

	if (checkEasyPassword(trim(document.REGISTER.PASSWORD.value)))
	{
       alert ("That password is too easy to guess try again.  Please try again.");
	   document.REGISTER.PASSWORD.focus();
  	   return;
	}

    if (document.REGISTER.PASSWORD.value != document.REGISTER.PASSWORDVERIFY.value)
    {
        alert ("Password verification error.  Re-enter and verify the password and try again.")
		document.REGISTER.PASSWORD.focus();
    	return;
    }

	if (trim(document.REGISTER.FIRSTNAME.value).length < 1)
	{
        alert ('Please enter your first name to register.')
		document.REGISTER.FIRSTNAME.focus();
    	return;
	}

	if (trim(document.REGISTER.LASTNAME.value).length < 1)
	{
        alert ('Please enter your last name to register.')
		document.REGISTER.LASTNAME.focus();
    	return;
	}

	if (trim(document.REGISTER.ZIP.value).length < 1)
	{
        alert ('Please enter your ZIP/Postal Code to register.')
		document.REGISTER.ZIP.focus();
    	return;
	}

	if (document.REGISTER.COUNTRY.selectedIndex == 0)
	{
        alert ('Please enter your Country to register.')
		document.REGISTER.COUNTRY.focus();
    	return;
	}

	if (document.REGISTER.GENDER.selectedIndex == 0)
	{
        alert ('Please enter your Gender to register.')
		document.REGISTER.GENDER.focus();
    	return;
	}

/* MJR - Use Birthdate instead of Age
	if (trim(document.REGISTER.AGE.value).length < 1)
	{
        alert ('Please enter your age.')
		document.REGISTER.AGE.focus();
    	return
	}
	else if (isNaN(parseInt(document.REGISTER.AGE.value)))
	{
        alert ('Please enter a valid age.')
		document.REGISTER.AGE.focus();
    	return
	}
	else if (parseInt(document.REGISTER.AGE.value) < 14)
	{
        alert ('You must be at least 14 years of age to register.')
		document.REGISTER.AGE.focus();
    	return
	}
*/
	if (document.REGISTER.DOB_YEAR.selectedIndex == 0)
	{
        alert ('Please enter your Year of birth to register.')
		document.REGISTER.DOB_YEAR.focus();
    	return;
	}

	if (document.REGISTER.DOB_MONTH.selectedIndex == 0)
	{
        alert ('Please enter your Month of birth to register.')
		document.REGISTER.DOB_MONTH.focus();
    	return;
	}

	if (document.REGISTER.DOB_DAY.selectedIndex == 0)
	{
        alert ('Please enter your Day of birth to register.')
		document.REGISTER.DOB_DAY.focus();
    	return;
	}

	// The user must agree to the disclaimer before he can get an account.
    if (!document.REGISTER.DISCLAIMER.checked)
    {
        alert("You must check the box agreeing to the terms and conditions of use before registering.")
        return;
    }

	if (document.REGISTER.QUESTION.value == "NONE")
	{
        alert ('Please select a secret question, you will need it if you forget your password.')
		document.REGISTER.QUESTION.focus();
    	return;
	}

	if (trim(document.REGISTER.ANSWER.value).length < 1)
	{
        alert ('Please provide a secret answer, you will need it if you forget your password.')
		document.REGISTER.ANSWER.focus();
    	return;
	}

    var nick = trim(document.REGISTER.NICKNAME.value);

	if (nick.length < 1)
	{
		alert ('Please enter an entry nickname to be used in the Draw Challenge.\nIt will be used in the Standings displays.');
		document.REGISTER.NICKNAME.focus();
		return;
	}

    if (nick.length < 3 || nick.length > 16)
	{
		alert ('Your nickname must be 3 to 16 characters long.');
		document.REGISTER.NICKNAME.focus();
		return;
	}

	var regexAccount = /^[a-z0-9\-\_\!\$\(\)\*\+\.\?\"\'\@]{3,16}$/i;  // alphanumeric, dashes, and underscores, min length 3, max length 16

	if (!regexAccount.test(nick)) {
		alert ('Your nickname may only contain letters, numbers, dashes and underscores.');
		document.REGISTER.NICKNAME.focus();
		return;
	}

	if (nick.toLowerCase()=="default" || nick.toLowerCase()=="actuals" || nick.toLowerCase()=="admin1964")
	{
		alert ('That nickname is not allowed.  Please try again.');
		document.REGISTER.NICKNAME.focus();
		return;
	}

	document.REGISTER.NICKNAME.value = nick;

    checkAccountAndNickname(document.REGISTER);

}

function checkMyInfo()
{
	//Used by the My Info page

    var eMailElement = document.MYINFO.EMAIL;
	eMailElement.value = trim(eMailElement.value);

	if (eMailElement.value.length == 0)
	{
		alert('Your account ID must be a valid e-mail address.');
		document.MYINFO.EMAIL.focus();
		return;
	}
	var eMailValid = checkEmail(eMailElement.value);
	if (eMailValid == 2)  // bad email
	{
		alert ('The e-mail address ' + eMailElement.value + ' is not valid.  Please re-enter a valid e-mail address and try again.');
		document.MYINFO.EMAIL.focus();
		return;
	}
	if (eMailValid == 1)	// Close to good e-mail
	{
		alert('The e-mail address ' + eMailElement.value + ' does not appear to be valid.  Please re-enter a valid e-mail address and try again.');
		document.MYINFO.EMAIL.focus();
		return;
	}

    if (document.MYINFO.EMAIL.value != document.MYINFO.EMAILVERIFY.value)
    {
        alert ("Email verification error.  Re-enter and verify the email and try again.")
		document.MYINFO.EMAILVERIFY.focus();
    	return;
    }


	if (!checkPassword(trim(document.MYINFO.PASSWORD.value)))
	{
        alert ('Your password must be at least 6 characters long and contain only printable characters.\nRe-enter the password and try again.')
		document.MYINFO.PASSWORD.focus();
    	return;
	}

	if (checkEasyPassword(trim(document.MYINFO.PASSWORD.value)))
	{
       alert ("That password is too easy to guess try again.  Please try again.");
	   document.MYINFO.PASSWORD.focus();
  	   return;
	}

    if (document.MYINFO.PASSWORD.value != document.MYINFO.PASSWORDVERIFY.value)
    {
        alert ("Password verification error.  Re-enter and verify the password and try again.")
		document.MYINFO.PASSWORD.focus();
    	return;
    }

	if (trim(document.MYINFO.FIRSTNAME.value).length < 1)
	{
        alert ('Please enter your first name.')
		document.MYINFO.FIRSTNAME.focus();
    	return;
	}

	if (trim(document.MYINFO.LASTNAME.value).length < 1)
	{
        alert ('Please enter your last name.')
		document.MYINFO.LASTNAME.focus();
    	return;
	}

	if (trim(document.MYINFO.ZIP.value).length < 1)
	{
        alert ('Please enter your ZIP/Postal Code.')
		document.MYINFO.ZIP.focus();
    	return;
	}

	if (document.MYINFO.COUNTRY.selectedIndex == 0)
	{
        alert ('Please enter your Country.')
		document.MYINFO.COUNTRY.focus();
    	return;
	}

	if (document.MYINFO.GENDER.selectedIndex == 0)
	{
        alert ('Please enter your Gender.')
		document.MYINFO.GENDER.focus();
    	return;
	}

/*MJR - Use Birhdate instead of Age
	if (trim(document.MYINFO.AGE.value).length < 1)
	{
        alert ('Please enter your age.')
		document.MYINFO.AGE.focus();
    	return
	}
	else if (isNaN(parseInt(document.MYINFO.AGE.value)))
	{
        alert ('Please enter a valid age.')
		document.MYINFO.AGE.focus();
    	return
	}
	else if (parseInt(document.MYINFO.AGE.value) < 14)
	{
        alert ('You must be at least 14 years of age.')
		document.MYINFO.AGE.focus();
    	return
	}
*/

	if (document.MYINFO.QUESTION.value == "NONE")
	{
        alert ('Please select a secret question, you will need it if you forget your password.')
		document.MYINFO.QUESTION.focus();
    	return;
	}

	if (trim(document.MYINFO.ANSWER.value).length < 1)
	{
        alert ('Please provide a secret answer, you will need it if you forget your password.')
		document.MYINFO.ANSWER.focus();
    	return;
	}

/* Do not check NICKNAME, users can't change it
    var nick = trim(document.MYINFO.NICKNAME.value);

	if (nick.length < 1)
	{
		alert ('Please enter an entry nickname to be used in the Draw Challenge.\nIt will be used in the Standings displays.');
		document.MYINFO.NICKNAME.focus();
		return;
	}

    if (nick.length < 3 || nick.length > 16)
	{
		alert ('Your nickname must be 3 to 16 characters long.');
		document.MYINFO.NICKNAME.focus();
		return;
	}

	var regexAccount = /^[a-z0-9\-\_\!\$\(\)\*\+\.\?\"\'\@]{3,16}$/i;  // alphanumeric, dashes, and underscores, and spaces min length 3, max length 16
	if (!regexAccount.test(nick)) {
		alert ('Your nickname may only contain letters, numbers, dashes and underscores.');
		document.MYINFO.NICKNAME.focus();
		return;
	}

	if (nick.toLowerCase()=="default" || nick.toLowerCase()=="actuals" || nick.toLowerCase()=="admin1964")
	{
		alert ('That nickname is not allowed.  Please try again.');
		document.MYINFO.NICKNAME.focus();
		return;
	}

	document.MYINFO.NICKNAME.value = nick;
*/

	if (document.MYINFO.EMAIL.value != document.MYINFO.EMAIL_ORIGINAL.value)
		checkAccount(document.MYINFO);
	else
		document.MYINFO.submit();

}



