//Needed for the main page...
function showSection(value)
{
	var loginForm = 'none';
	var regForm = 'none';
	if (value == "registered")
	{
		loginForm = 'inline';
		regForm = 'none';
	}
	else if (value == "notRegistered")
	{
		loginForm = 'none';
		regForm = 'inline';
	}
	
	var divReg = MM_findObj('registration_form');
	var divLogin = MM_findObj('login_form');
	
	divReg.style.display = regForm;
	divLogin.style.display = loginForm;
}

//Needed for the registration form...
var TYPE_TEXT = 'TEXT';
var TYPE_SELECT = 'SELECT';
var TYPE_EMAIL = 'EMAIL';
var NO_LENGTH_CHECK = -1;

function control(name, description, type, min, max, requiredField, showErrorMessages, setFocusOnError)
{
	this.name = name;
	this.description = description;
	this.type = type;
	this.min = min;
	this.max = max;
	this.requiredField = requiredField;
	this.showErrorMessages = showErrorMessages;
	this.setFocusOnError = setFocusOnError;
}
objCtrls = new Array (	new control('username', 'Username', TYPE_TEXT, 4, 16, true, true, false), 
						new control('password', 'Password', TYPE_TEXT, 4, 16, true, true, false), 
						new control('confirm_pw', 'Confirmation Password', TYPE_TEXT, 4, 16, true, true, false),
						new control('signature', 'Full Name', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('email', 'Email Address', TYPE_EMAIL, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('dealername', 'Dealership Name', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('phoneNumber', 'Dealership Phone Number', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('address1', 'Address 1', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('city', 'City', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('state', 'State/Province', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false),
						new control('zip', 'Postal Code', TYPE_TEXT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false)
						//new control('country', 'Country', TYPE_SELECT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false)
						//new control('occupation', 'Occupation', TYPE_SELECT, NO_LENGTH_CHECK, NO_LENGTH_CHECK, true, true, false)
					);

function showSiteInfo(show)
{
	var display = 'none';
	var ctrlDisabled = true;
	if (show == "yes")
	{
		display = 'inline';
		ctrlDisabled = false;
	}
	
	var ctrlSiteInfo = MM_findObj('site_info');
	var ctrlUsername = MM_findObj('username');
	var ctrlPassword = MM_findObj('password');
	var ctrlConfirmPW = MM_findObj('confirm_pw');
	
	ctrlSiteInfo.style.display = display;
	ctrlUsername.disabled = ctrlDisabled;
	ctrlPassword.disabled = ctrlDisabled;
	ctrlConfirmPW.disabled = ctrlDisabled;
}

function validField(objControl)
{
	var ctrl = MM_findObj(objControl.name);
	if (ctrl && ctrl.disabled == false)
	{
		if (objControl.type == TYPE_TEXT || objControl.type == TYPE_EMAIL)
		{
			if (ctrl && ctrl.value.length == 0 && objControl.requiredField)
			{
				if (objControl.showErrorMessages)
					alert(objControl.description + " is a required field.");
				if (objControl.setFocusOnError)
					ctrl.focus();
				return false;
			}
			if (ctrl && ctrl.value.length < objControl.min && objControl.min != NO_LENGTH_CHECK)
			{
				if (objControl.showErrorMessages)
					alert(objControl.description + " does not meet the minimum length requirement.");
				if (objControl.setFocusOnError)
					ctrl.focus();
				return false;
			}
			if (ctrl && ctrl.value.length > objControl.max && objControl.max != NO_LENGTH_CHECK)
			{
				if (objControl.showErrorMessages)
					alert(objControl.description + " exceeds the maximum length requirement.");
				if (objControl.setFocusOnError)
					ctrl.focus();
				return false;
			}
		}
		if (objControl.type == TYPE_EMAIL)
		{
			if (!valid_email(ctrl.value))
			{
				if (objControl.showErrorMessages)
					alert("Enter a valid email address.");
				if (objControl.setFocusOnError)
					ctrl.focus();
				return false;
			}
		}	
	}
	return true;
}

var oldPassword = "";
var oldPasswordConfirm = "";
function checkPasswords(bForceMessage)
{
	var bSucc = true;
	var password = MM_findObj('password');
	var passwordConfirm = MM_findObj('confirm_pw');
	if (
		password.disabled == false && passwordConfirm.disabled == false &&
		password.value.length > 0 && passwordConfirm.value.length > 0
		)
	{	
		if (password.value.length < 4 || password.value.length > 16 ||
			passwordConfirm.value.length < 4 || passwordConfirm.value.length > 16)
		{
			alert('Password does not meet length restrictions.');
		}
		else if (password.value != passwordConfirm.value)
		{
			//We know there is an error, what do we do now
			//bForceMessage is set and true, then display the message
			//Change in either of the passwords then display that the passwords are still different.
			if (bForceMessage || 
				(oldPassword != password.value || oldPasswordConfirm != passwordConfirm.value)
				)
			{
				alert('The passwords do not match, you will need to try again.');
				password.focus();
			}
			oldPassword = password.value;
			oldPasswordConfirm = passwordConfirm.value;
			return false;
		}
	}
	return bSucc;
}

function checkValues()
{
	var phoneField = MM_findObj('phoneNumber');
	var phone = MM_findObj('phone');
	var phoneNumber = removePhoneFilter(phoneField, "(###) ### - ####");
	phone.value = phoneNumber;
	//phoneField.value = phoneNumber;

	checkCustomer();

	for(var i=0; i < objCtrls.length; i++) 
	{
		if (!validField(objCtrls[i]))
			return false;
	}
	
	var occupation = MM_findObj('occupation');
	if (occupation.value ==  "Unspecified")
	{
		alert('Occupation is a required field.');
		occupation.focus();
		return false;
	}
	
	var country = MM_findObj('country');
	if (country.disabled == false && country.value ==  "Unspecified")
	{
		alert('Country is a required field.');
		occupation.focus();
		return false;
	}

	if (!checkPasswords(true))
	{
		return false;
		
	}
	
	//Visible to user, so check it!
	checkUsername();
	if (doCheckUsernameSubmit == false)
	{
		return false;
	}
		
	checkEmail();
	if (doCheckEmailSubmit == false)
	{
		return false;
	}

	var ctrlStep = MM_findObj('step');
	ctrlStep.value = 'register';

	return true;
}



var doCheckCustomerSubmit = false;
var httpFoundCustomer = getHTTPObject(); // We create the HTTP Object
function checkCustomer()
{
	var name = MM_findObj('dealername');
	var phone = MM_findObj('phone');
	var phoneField = MM_findObj('phoneNumber');
	var phoneNumber = removePhoneFilter(phoneField, "(###) ### - ####");
	
	if (phoneNumber && phoneNumber.length == 10)
		setupHTTPObject(httpFoundCustomer, 'GET', '/weblog/registration/register_ajax.php?action=checkCustomer&name=' + name.value + '&number=' + phoneNumber, 'doCheckCustomer', false);
}

function setDealershipInfo(display)
{
	var moreDealershipInfo = MM_findObj('more_dealership_info');
	if (moreDealershipInfo && moreDealershipInfo.style)
	{
		var ctrlStateDisabled = true;
		if (display == 'inline')
			ctrlStateDisabled = false;
			
		moreDealershipInfo.style.display = display;
		var address1 = MM_findObj('address1');
		var address2 = MM_findObj('address2');
		var city = MM_findObj('city');
		var state = MM_findObj('state');
		var zip = MM_findObj('zip');
		var country = MM_findObj('country');
		var mailinglist = MM_findObj('mailinglist');
		
		address1.disabled = ctrlStateDisabled;
		address2.disabled = ctrlStateDisabled;
		city.disabled = ctrlStateDisabled;
		state.disabled = ctrlStateDisabled;
		zip.disabled = ctrlStateDisabled;
		country.disabled = ctrlStateDisabled;
		mailinglist[0].disabled = ctrlStateDisabled;
		mailinglist[1].disabled = ctrlStateDisabled;
		
		if (display == 'inline')
			address1.focus();
		
	}
}

function doCheckCustomer()
{
	doCheckCustomerSubmit = false;
	try
	{
		if (httpFoundCustomer.readyState == 4) 
		{ 
			if (httpFoundCustomer.status == 200)
			{
				//Work on repopulating the Customers selection
				var bFound = httpFoundCustomer.responseText
				//alert(bFound);
				var moreDealershipInfo = MM_findObj('more_dealership_info');
				if (moreDealershipInfo)
				{
					var prevVisibleState = moreDealershipInfo.style.display;
					if (bFound == "false")
					{
						setDealershipInfo('inline');
						/*
						if (prevVisibleState.toLowerCase() == 'none')
							alert('We need more information about your company. ' + prevVisibleState);
						*/
					}
					else
					{
						setDealershipInfo('none');
						doCheckCustomerSubmit = true;
					}
				}
			}
			else
			{
				alert("There was a problem retrieving the data. Error: " + httpFoundCustomer.status + " " + httpFoundCustomer.statusText);
			}
		}
	}
	catch (err)
	{
		alert(err.message);
	}
}

var doCheckUsernameSubmit = false;
var httpDupUsername = getHTTPObject(); // We create the HTTP Object
function checkUsername()
{
	var ctrl = MM_findObj('username');
	var username = ctrl.value;
	if (ctrl.disabled == false && username.length >= 4)
	{
		setupHTTPObject(httpDupUsername, 'GET', '/weblog/registration/register_ajax.php?action=checkUsername&username=' + username, 'doCheckUsername', false);
	}
	else if (ctrl.disabled == false && username.length > 0 && username.length < 4)
	{
		alert('The username is to short.');
	}
}

function doCheckUsername()
{
	doCheckUsernameSubmit = false;
	try
	{
		if (httpDupUsername.readyState == 4) 
		{ 
			if (httpDupUsername.status == 200)
			{
				//Work on repopulating the Customers selection
				var bGoodUsername = httpDupUsername.responseText
				//alert(bFound);
				if (bGoodUsername == "false")
				{
					alert('This username has already been used, enter a different username.');
					var ctrl = MM_findObj('username');
					if (ctrl)
						ctrl.focus();
				}
				else
				{
					doCheckUsernameSubmit = true;
				}
			}
			else
			{
				alert("There was a problem retrieving the data. Error: " + httpDupUsername.status + " " + httpDupUsername.statusText);
			}
		}
	}
	catch (err)
	{
		alert(err.message);
	}
}

var doCheckEmailSubmit = false;
var httpDupEmail = getHTTPObject(); // We create the HTTP Object
function checkEmail()
{
	var ctrl = MM_findObj('email');
	var email = ctrl.value;
	if (email && email.length > 0)
	{
		if (valid_email(email))
		{
			setupHTTPObject(httpDupEmail, 'GET', '/weblog/registration/register_ajax.php?action=checkEmail&email=' + email, 'doCheckEmail', false);
		}
		else
		{
			//ctrl.focus();
			alert('Enter a valid email address.');
		}
	}
}

function doCheckEmail()
{
	doCheckEmailSubmit = false;
	try
	{
		if (httpDupEmail.readyState == 4) 
		{ 
			if (httpDupEmail.status == 200)
			{
				//Work on repopulating the Customers selection
				var bGoodEmail = httpDupEmail.responseText
				if (bGoodEmail == "false")
				{
					alert('This email has already been used, enter a different email.');
					var ctrl = MM_findObj('email');
					if (ctrl)
						ctrl.focus();
				}
				else
				{
					doCheckEmailSubmit = true;
				}
			}
			else
			{
				alert("There was a problem retrieving the data. Error: " + httpDupEmail.status + " " + httpDupEmail.statusText);
			}
		}
	}
	catch (err)
	{
		alert(err.message);
	}
}

function setSelected(ctrlName, value)
{
	if (ctrlName.length > 0 && value.length > 0)
	{
		ctrl = MM_findObj(ctrlName);
		if (ctrl)
		{
			selected = -1;
			for (i=0; i < ctrl.options.length; i++)
			{
				if (ctrl.options[i].value == value)
				{
					selected = i;
					break;
				}
			}
			
			if (selected >= 0)
				ctrl.selectedIndex = selected;
		}
	}
}
