function gs_options(form) 
{
	if (form.gs_code.value=="") 
	{
		alert ("Please select your Game Server");
		form.gs_code.focus();
		return false;
	}	

	if (form.gs_access.value=="") 
	{
		alert ("Please enter the Server Access");
		form.gs_access.focus();
		return false;
	}	
	
	if (form.gs_max_players.value=="") 
	{
		alert ("Please enter the maximum number of players slots for this server");
		form.gsMaxPlayers.focus();
		return false;
	}	

	if (form.loc_code.value == "") {
		alert ("Please select your Datacenter location" );
		form.loc_code.focus();
		return false;
	}

	if (form.adcode.value=="") {
		alert ("Please enter How you heard about us. If you are unsure just select \"Other\"");
		form.adcode.focus();
		return false;
	}

	if (form.first_name.value=="") {
		alert ("Please enter your First Name");
		form.first_name.focus();
		return false;
	}

	if (form.last_name.value=="") {
		alert ("Please enter your Last Name");
		form.last_name.focus();
		return false;
	}

	if (form.address_1.value=="") {
		alert ("Please enter your Address");
		form.address_1.focus();
		return false;
	}

	if (form.city.value=="") {
		alert ("Please enter your City");
		form.city.focus();
		return false;
	}
	
	if (( form.state.value=="") && ( form.country.value == 'CA' ||  form.country.value == 'US' )){
		alert ("Please enter your State");
		form.state.focus();
		return false;
	}

	if (( form.zip.value=="") && ( form.country.value == 'CA' ||  form.country.value == 'US' )){
		alert ("Please enter your Postal or Zip Code");
		form.zip.focus();
		return false;
	}

	if (form.email_address.value=="") {
		alert ("Please enter your Email Address");
		form.email_address.focus();
		return false;
	}

	if (!validate_email_address(form)) 
	{
		form.email_address.focus();
		return false;
	}

	if (form.tos_cb.checked == false) {
		alert ("Please accept the Terms of Service" );
		form.tos_cb.focus();
		return false;
	}

	if (form.age_cb.checked == false) {
		alert ("You must be over the age of 13" );
		form.age_cb.focus();
		return false;
	}
	
	return true;
}

function vs_options(form) 
{
	if (form.vs_code.value=="") 
	{
		alert ("Please select your Voice Server");
		form.vs_code.focus();
		return false;
	}	

	if (form.vs_access.value=="") 
	{
		alert ("Please enter the Server Access");
		form.vs_access.focus();
		return false;
	}	
	
	if (form.vs_max_players.value=="") 
	{
		alert ("Please enter the maximum number of client slots for this server");
		form.vsMaxPlayers.focus();
		return false;
	}	

	if (form.loc_code.value == "") {
		alert ("Please select your Datacenter location" );
		form.loc_code.focus();
		return false;
	}

	if (form.adcode.value=="") {
		alert ("Please enter How you heard about us. If you are unsure just select \"Other\"");
		form.adcode.focus();
		return false;
	}

	if (form.first_name.value=="") {
		alert ("Please enter your First Name");
		form.first_name.focus();
		return false;
	}

	if (form.last_name.value=="") {
		alert ("Please enter your Last Name");
		form.last_name.focus();
		return false;
	}

	if (form.address_1.value=="") {
		alert ("Please enter your Address");
		form.address_1.focus();
		return false;
	}

	if (form.city.value=="") {
		alert ("Please enter your City");
		form.city.focus();
		return false;
	}
	
	if (( form.state.value=="") && ( form.country.value == 'CA' ||  form.country.value == 'US' )){
		alert ("Please enter your State");
		form.state.focus();
		return false;
	}

	if (( form.zip.value=="") && ( form.country.value == 'CA' ||  form.country.value == 'US' )){
		alert ("Please enter your Postal or Zip Code");
		form.zip.focus();
		return false;
	}

	if (form.email_address.value=="") {
		alert ("Please enter your Email Address");
		form.email_address.focus();
		return false;
	}

	if (!validate_email_address(form)) 
	{
		form.email_address.focus();
		return false;
	}
	
	if (form.tos_cb.checked == false) {
		alert ("Please accept the Terms of Service" );
		form.tos_cb.focus();
		return false;
	}

	if (form.age_cb.checked == false) {
		alert ("You must be over the age of 13" );
		form.age_cb.focus();
		return false;
	}

	return true;
}

function serverSelection(form) 
{
	if ( ( form.gs_code.options[form.gs_code.selectedIndex].value=="" ) && ( form.vs_code.options[form.vs_code.selectedIndex].value=="" ) ) 
	{
		alert ("Please choose your Server(s) before continuing with your Order");
		form.gs_code.focus();
		
		return false;
	}

   return true;
}

function user_login(form)
{
	if (form.user_name.value == "")
	{
		alert("Please enter your User Name.");
		return false;
	}
	
	if (form.user_pwd.value == "") 
	{
		alert("Please enter your User Password.");
		return false;
	}
}

function new_user_access(form)
{
	if (form.email_address.value == "")
	{
		alert("Please enter your Email Address.");
		form.email_address.focus();
		return false;
	}
	
	if (!validate_email_address(form))
	{
		return false;
	}

	if (form.user_name.value == "")
	{
		alert("Please enter your User Name.");
		form.user_name.focus();
		return false;
	}
	
	if (form.user_pwd.value == "") 
	{
		alert("Please enter your User Password.");
		form.user_pwd.focus();
		return false;
	}

	if (form.user_pwd_confirm.value == "") 
	{
		alert("Please Confirm your Password.");
		form.user_pwd_confirm.focus();
		return false;
	}

	if (form.user_pwd.value != form.user_pwd_confirm.value) 
	{
		alert("Please make sure that your Confirm Password is the same as your Password.");
		form.user_pwd_confirm.focus();
		return false;
	}	
}

function validate_email_address(form)
{
	var reg = /^[a-zA-Z0-9\+_-]((\.)*[a-zA-Z0-9\+_-])*@[a-zA-Z0-9]([-\.]?[a-zA-Z0-9])*(\.[a-zA-Z]{2,3})$/;
	
	if (!reg.test(form.email_address.value))
	{
		alert("Please check the Email address. The format should be similiar to user@domain.ext");
		form.email_address.focus();
		return false;
	}
	
	return true;
}

function modify_acct_info(form) 
{
	switch (form.acctSection.value.toUpperCase()) {
		case 'PASSWORD': 
			if (form.pwd.value == "") {
				alert("Please enter your User Password.");
				form.pwd.focus();
				return false;
			}

			if (form.new_pwd.value == "") {
				alert("Please enter your new User Password.");
				form.new_pwd.focus();
				return false;
			}
				
			if (form.confirm_new_pwd.value == "") {
				alert("Please Confirm your Password.");
				form.confirm_new_pwd.focus();
				return false;
			}

			if (form.new_pwd.value != form.confirm_new_pwd.value) {
				alert("Your new password and your Confirm Password must be the same.");
				form.confirm_new_pwd.focus();
				return false;
			}	

			break;
		
		case 'MEMBERDETAILS':
			if (form.first_name.value=="") {
				alert ("Please enter your First Name");
				form.first_name.focus();
				return false;
			}

			if (form.last_name.value=="") {
				alert ("Please enter your Last Name");
				form.last_name.focus();
				return false;
			}

			if (form.address_1.value=="") {
				alert ("Please enter your Address");
				form.address_1.focus();
				return false;
			}

			if (form.city.value=="") {
				alert ("Please enter your City");
				form.city.focus();
				return false;
			}
	
			if (form.state.value=="") {
				alert ("Please enter your State");
				form.state.focus();
				return false;
			}
	
			if (form.email_address.value=="") {
				alert ("Please enter your Email Address");
				form.email_address.focus();
				return false;
			}
	
			if (form.contact_ac.value != "") {

				if (form.contact_ac.value.length != 3) {
					alert ("The Contact area code must have 3 numbers");
					form.contact_ac.focus();
					return false;
				}
			}

			if (form.contact_phone.value != "") {
		
				if (form.contact_phone.value.length < 7) {
					alert ("The Contact phone number can't be less than 7 numbers");
					form.contact_phone.focus();
					return false;
				}
			}
			
			break;
		
		case 'GAMERDETAILS':
			// These aren't mandatory fields.
		break;
	}
		
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Validate the Order Summary screen. Currently the only fields to validate on the form are the
// Credit Card payment fields
///////////////////////////////////////////////////////////////////////////////////////////////
function orderSummary(form)
{
	var reg = /^[0-9]+$/;

	if (form.cc_num)
	{
		if ( form.name_on_card.value == "" )
		{
			alert( 'The Name on Card field must be entered. This is the full name as it appears on the front of the card.' );
			form.name_on_card.focus();
			return false;
		}

		if ( form.card_type.value == "" )
		{
			alert( 'The Card Type must be selected from the drop down list.' );
			form.card_type.focus();
			return false;
		}
		
		if ( form.cc_num.value == "" )
		{
			alert( 'The card number must be entered.' );
			form.name_on_card.focus();
			return false;
		}

		if ( form.cc_id_num.value == "" )
		{
			alert( 'The CVV security number must be entered. This is the 3 or 4 digit number located on the card.  Please consult the help link for further information on locating the CVV number.' );
			form.cc_id_num.focus();
			return false;
		}

		if (form.cc_num.value.length < 13 || form.cc_num.value.length > 19)
		{
			alert('The Card Number must be between 13 and 19 digits long');
			form.cc_num.focus();
			return false;
		}
		
			// Validate that the card number consists of only digits
		if (!reg.test(form.cc_num.value))
		{
			alert('The Card Number can only contain numerals.');
			form.cc_num.focus();
			return false;
		}
	}
	
	return true;
}

function serverControl(form, action)
{
	var cbElements = form.elements;
	var cbCount = 0;

		// Determine whether any "select" check boxes have been checked
	for (i = 0; i < cbElements.length; i++) {

		if ((cbElements[i].type == 'checkbox') && (cbElements[i].checked == true) && (cbElements[i].name == 'selected'))	
		{
			if ( cbElements[i].value.substring( cbElements[i].value.indexOf('-') + 1 ) == 'BF1942' )
			{
				alert( 'BF1942 servers must be stopped or started through your BF1942 Server Manager' );
				return false;
			}
			
			cbCount++;
		}
	}
	
	if (cbCount > 0){
		return true;
	}
	else {
			// No boxes have been checked, so display the user error dialog
		switch (action) {
			case 'start':
				alert('To start your server, you need to click the checkbox to the right of the server you wish to start, then click the [Start Server] button');
				break;
			case 'stop':
				alert('To stop your server, you need to click the checkbox to the right of the server you wish to stop, then click the [Stop Server] button');
				break;
		}
		return false;
	}
}

function request_trial_server(form) 
{
	if (form.p_gs_code.value=="") 
	{
		alert ("Please select your Game Server");
		form.p_gs_code.focus();
		return false;
	}	

	if (form.p_max_players.value=="") {
		alert ("Please enter the maximum number of players slots for this server");
		form.p_max_players.focus();
		return false;
	}	

	if (form.p_loc_code.value == "") {
		alert ("Please select your Datacenter location" );
		form.p_loc_code.focus();
		return false;
	}

	if (form.p_start_day.value=="") {
		alert ("Please enter the day of your Trial");
		form.p_start_day.focus();
		return false;
	}

	if (form.p_start_hour.value=="") {
		alert ("Please enter the hour of the day for your Trial");
		form.p_start_hour.focus();
		return false;
	}
	
	if (form.p_email_address.value=="") {
		alert ("Please enter your Email Address");
		form.p_email_address.focus();
		return false;
	}

	if (!validate_email_address1(form.p_email_address.value)) {
		alert ("There was a problem in your Email Address.");
		form.p_email_address.focus();
		return false;
	}

	if (form.tos_cb.checked == false) {
		alert ("Please accept the Terms of Service" );
		form.tos_cb.focus();
		return false;
	}

	return true;
}

/************************************************************************************************
	function: 	validate_email_address
	purpose:		Overloaded function which takes the actual email address as a parameter.
 ************************************************************************************************/
function validate_email_address1(p_email_address)
{
	var reg = /^[a-zA-Z0-9\+_-]((\.)*[a-zA-Z0-9\+_-])*@[a-zA-Z0-9]([-\.]?[a-zA-Z0-9])*(\.[a-zA-Z]{2,3})$/;

	if (!reg.test(p_email_address))	{
		return false;
	}
	
	return true;
}