function countrySelect()
{
	if (navigator.appName.indexOf("Microsoft") > -1)
	{
		var canSee = 'block'
	} 
	else 
	{
		var canSee = 'table-row';
	}
	country = $('signup_form_country');
	var stateList = false;
	switch (country[country.selectedIndex].value)
	{
		case 'US':
			stateList = true;
			$('block_phone').style.display = canSee;
			$('block_postal_code').style.display = canSee;
			break;
		case 'CA':
			stateList = true;
			$('block_phone').style.display = canSee;
			$('block_postal_code').style.display = canSee;
			break;
		case 'AU':
			stateList = true;
			$('block_phone').style.display = 'none';
			$('block_postal_code').style.display = canSee;
			break;
		case 'UK':
			$('block_phone').style.display = 'none';
			$('block_postal_code').style.display = canSee;
			break;
		default:
			$('block_phone').style.display = 'none';
			$('block_postal_code').style.display = 'none';
			break;			
	}
	if (stateList)
	{
		// Get state list
		getStateList(country[country.selectedIndex].value);
		$('block_state').style.display = canSee;
	}
	else
	{
		$('block_state').style.display = 'none';
		$('signup_form_state').options.length = 0;
	}
}


function signup (signupForm)
{
	$(signupForm.name + '_errors').style.display = 'none';
	enableSignupForm(signupForm);
	
	var errors = '';
	if ($F(signupForm.name + '_email').length == 0 || !isValidEmail($F(signupForm.name + '_email')))
	{	
		errors += '<li>You must provide a valid email address</li>\n';
		$(signupForm.name + '_email').style.background = '#FFFFCC';
	}
	if ($F(signupForm.name + '_first_name').length == 0)
	{	
		errors += '<li>You must enter your first name</li>\n';
		$(signupForm.name + '_first_name').style.background = '#FFFFCC';
	}
	if ($F(signupForm.name + '_last_name').length == 0)
	{	
		errors += '<li>You must enter your last name</li>\n';
		$(signupForm.name + '_last_name').style.background = '#FFFFCC';
	}
	/*
	if ($F(signupForm.name + '_address').length == 0)
	{	
		errors += '<li>You must enter your address</li>\n';
		$(signupForm.name + '_address').style.background = '#FFFFCC';
	}
	if ($F(signupForm.name + '_city').length == 0)
	{	
		errors += '<li>You must enter your city</li>\n';
		$(signupForm.name + '_city').style.background = '#FFFFCC';
	}
	country = $(signupForm.name + '_country');
	countryValue = country[country.selectedIndex].value;
	if (countryValue == '')
	{
		errors += '<li>You must select a country</li>\n';
		$(signupForm.name + '_country').style.background = '#FFFFCC';		
	}
	if (countryValue == 'US' || countryValue == 'CA')
	{
		if ($F(signupForm.name + '_phone_areacode').length != 3 || 
				$F(signupForm.name + '_phone_prefix').length != 3 || 
				$F(signupForm.name + '_phone_number').length != 4 ||
				!isNumeric($F(signupForm.name + '_phone_areacode')) ||
				!isNumeric($F(signupForm.name + '_phone_prefix')) ||
				!isNumeric($F(signupForm.name + '_phone_number')))
		{	
			errors += '<li>You must provide a valid phone number</li>\n';
			$(signupForm.name + '_phone_areacode').style.background = '#FFFFCC';
			$(signupForm.name + '_phone_prefix').style.background = '#FFFFCC';
			$(signupForm.name + '_phone_number').style.background = '#FFFFCC';
		}
	}
	if ($F(signupForm.name + '_postal_code').length == 0 && countryValue != '')
	{	
		errors += '<li>You must enter your postal code</li>\n';
		$(signupForm.name + '_postal_code').style.background = '#FFFFCC';
	}	
	if (!$(signupForm.name + '_gender_male').checked && !$(signupForm.name + '_gender_female').checked)
	{	
		errors += '<li>Please select your gender</li>\n';
		$(signupForm.name + '_gender_male').style.background = '#FFFFCC';
		$(signupForm.name + '_gender_female').style.background = '#FFFFCC';
	}
	if ($F(signupForm.name + '_birthYear').length == 0)
	{	
		errors += '<li>You must enter your birthdate</li>\n';
		$(signupForm.name + '_birthMonth').style.background = '#FFFFCC';
		$(signupForm.name + '_birthDay').style.background = '#FFFFCC';
		$(signupForm.name + '_birthYear').style.background = '#FFFFCC';
	}
	*/
	if ($F(signupForm.name + '_password').length < 6)
	{	
		errors += '<li>Your password must be between 6-16 characters in length</li>\n';
		$(signupForm.name + '_password').style.background = '#FFFFCC';
		$(signupForm.name + '_password_confirm').style.background = '#FFFFCC';
	}
	if ($F(signupForm.name + '_password') != $F(signupForm.name + '_password_confirm'))
	{	
		errors += '<li>Your passwords do not match</li>\n';
		$(signupForm.name + '_password').style.background = '#FFFFCC';
		$(signupForm.name + '_password_confirm').style.background = '#FFFFCC';
	}
	if (errors.length > 0)
	{
		$(signupForm.name + '_errors').innerHTML = 'The following errors have occurred:\n\n<ul>\n' + errors + '</ul>';
		$(signupForm.name + '_errors').style.display = 'block';
		return false;
	}

	// Launch popunder for DDC
	//popUndWindow();

	var elements = Form.getInputs(signupForm);
	/*
	if ($(signupForm.name + '_state'))
	{
		elements = elements.concat($(signupForm.name + '_state'));
	}
	elements = elements.concat($(signupForm.name + '_country'));
	elements = elements.concat($(signupForm.name + '_birthYear'));
	elements = elements.concat($(signupForm.name + '_birthMonth'));
	elements = elements.concat($(signupForm.name + '_birthDay'));
	*/
	var postStr = Form.serializeElements(elements);

	$(signupForm.name + '_submit').disabled = 'true';
	$(signupForm.name + '_waiting').style.display = 'inline';
	
	for (i=0; i<elements.length; i++)
	{
		elements[i].disabled = 'true';
	}

	var url = '/method/signup';
	// notice the use of a proxy to circumvent the Same Origin Policy.
	
	new Ajax.Request(url, {
		method: 'post',
		parameters: postStr,
		onSuccess: function(transport) {
			var json = transport.responseText.evalJSON();
			if (json.result.error)
			{
				$(signupForm.name + '_errors').innerHTML = 'ERROR: ' + json.result.error;
				$(signupForm.name + '_errors').style.display = 'block';
				enableSignupForm(signupForm);
				
				if (json.result.fields)
				{
					for (i=0; i<json.result.fields.length; i++)
					{
						$(signupForm.name + '_' + json.result.fields[i]).style.background = '#FFFFCC';
					}
				}
			}
			else if (json.result.success)
			{
				// Go to the home page
				window.location.href = '/home?signup=true';
			}
			else
			{
				enableSignupForm(signupForm);
			}
		},
		onFailure: function(transport) {
			$(signupForm.name + '_errors').innerHTML = 'ERROR: An unknown error occurred';
			enableSignupForm(signupForm);	
		}
	});
}

function enableSignupForm(signupForm)
{
	var elements = Form.getInputs(signupForm);
	/*
	if ($(signupForm.name + '_state'))
	{
		elements = elements.concat($(signupForm.name + '_state'));
	}
	elements = elements.concat($(signupForm.name + '_country'));
	elements = elements.concat($(signupForm.name + '_birthYear'));
	elements = elements.concat($(signupForm.name + '_birthMonth'));
	elements = elements.concat($(signupForm.name + '_birthDay'));
	*/
	
	var postStr = Form.serializeElements(elements);

	$(signupForm.name + '_submit').disabled = '';
	$(signupForm.name + '_waiting').style.display = 'none';
	for (i=0; i<elements.length; i++)
	{
		elements[i].disabled = '';
		elements[i].style.background = '';
	}
}

function getStateList(country)
{
	var postStr = 'country=' + country;
	var url = '/method/states';
	
	new Ajax.Request(url, {
		method: 'post',
		parameters: postStr,
		onSuccess: function(transport) {
		var json = transport.responseText.evalJSON();
			if (json.states)
			{
				var states = json.states;
				var statesList = $('signup_form_state');
				statesList.options.length=0;
				
				for (i=0; i<states.length; i++)
				{
					statesList.options[i] = new Option(states[i].name, states[i].code);
				}
			}
		}
	});
}

function isValidEmail(address) {
	if (address !== "")
	{
		var regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
		if (regex.test(address)) 
		{
			return true;
		}
		else 
		{
			return false;
		}
	}
}

function isNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
		}
	}
	return IsNumber;
}



function TabNext(obj,event,len,next_field) 
{
	var phone_field_length=0;
	
	if (event == "down") 
	{
		phone_field_length=obj.value.length;
	}
	else if (event == "up") 
	{
		if (obj.value.length != phone_field_length) 
		{
			phone_field_length=obj.value.length;
			if (phone_field_length == len) 
			{
				next_field.focus();
			}
		}
	}
}



