function EditUserInfo(href, userID)
{
	document.location.href = href + '?userID=' + userID + '&action=edit';
}

function AddLogoCheck(element)
{
	if (element.checked)
	{
		document.getElementById('logo_file').disabled = "";
	}
	else
	{
		document.getElementById('logo_file').disabled = "disabled";
	}
}


function CreditCardAddressCheck(element)
{
	if (element.checked)
	{
		document.getElementById('cc_address1').disabled = "disabled";
		document.getElementById('cc_address2').disabled = "disabled";
		document.getElementById('cc_city').disabled = "disabled";
		document.getElementById('cc_region1').disabled = "disabled";
		document.getElementById('cc_postal_code').disabled = "disabled";
		document.getElementById('cc_country').disabled = "disabled";
	}
	else
	{
		document.getElementById('cc_address1').disabled = "";
		document.getElementById('cc_address2').disabled = "";
		document.getElementById('cc_city').disabled = "";
		document.getElementById('cc_region1').disabled = "";
		document.getElementById('cc_postal_code').disabled = "";
		document.getElementById('cc_country').disabled = "";
	}
}


function UseContactAddress(
	element)
{
	if (element.checked)
	{
		document.getElementById('cc_address1').disabled = "disabled";
		document.getElementById('cc_address2').disabled = "disabled";
		document.getElementById('cc_city').disabled = "disabled";
		document.getElementById('cc_region1').disabled = "disabled";
		document.getElementById('cc_postal_code').disabled = "disabled";
	}
	else
	{
		document.getElementById('cc_address1').disabled = "";
		document.getElementById('cc_address2').disabled = "";
		document.getElementById('cc_city').disabled = "";
		document.getElementById('cc_region1').disabled = "";
		document.getElementById('cc_postal_code').disabled = "";
	}
}


function CheckRegistrationForm()
{
	var requiredIDs = [
		'first_name',
		'last_name',
		'address1',
		'city',
		'region1',
		'postal_code',
		'country',
		'area_code',
		'phone_prefix',
		'phone_suffix',
		'email',
		'disclaimer'];
	
	var requiredBilling = [
		'cc_name',
		'cc_number',
		'cc_month',
		'cc_year'];
	
	var billing = document.getElementById(requiredBilling[0]);
	
	var element;
	var result = true;
	
	result = CheckRequiredFields(requiredIDs);
	result = CheckRequiredFields(requiredBilling);
	
	return result;
}


function CheckVerifyForm()
{
	var formComplete = true;
	
	if (document.getElementById('cobrand').value)
	{
		var requiredIDs = ['company_name'];
		formComplete    = CheckRequiredFields(requiredIDs);
	}
	
	if (formComplete)
	{
		document.verifyForm.submit();
	}
	else
	{
		alert("Some required fields were left blank. Please make sure\nyou have complete all fields maked with red captions.");
	}
}


function CheckRequiredFields(requiredIDs)
{
	var element;
	var formComplete = true;
	
	if (requiredIDs != null)
	{
		for (var i = 0; i < requiredIDs.length; i++)
		{
			element = document.getElementById(requiredIDs[i]);
			
			if (element != null)
			{
				if (element.type == 'select')
				{
					if (element.selectedIndex == 0)
					{
						formComplete = false;
						break;
					}
				}
				else if (element.type == 'checkbox')
				{
					if (! element.checked)
					{
						formComplete = false;
						break;
					}
				}
				else
				{
					if (element.value == null || element.value == "")
					{
						formComplete = false;
						break;
					}
				}
			}
		}
	}
	
	return formComplete;
}


function SubmitRegistrationForm()
{
	var formComplete = CheckRegistrationForm();
	
	var aElements = ['setup_id', 'renewal_id'];
	var priceRulesElement, subscriptionElement;
	
	var cobrand = document.getElementById('cobrand');
	var type = document.getElementById('product_type');
	var setup = document.getElementById('setup_fee');
	var sub1 = document.getElementById('sub_id_0');
	var sub2 = document.getElementById('sub_id_1');
	var price1 = document.getElementById('sub_price_0');
	var price2 = document.getElementById('sub_price_1');
	var additional = '';
	
	if (setup != null)
	{
		if (type.value == "customer")
		{
			document.getElementById(aElements[0]).value = setup.value;
			
			if (sub1.checked)
			{
				document.getElementById(aElements[1]).value = sub1.value;
			}
			else if (sub2.checked)
			{
				document.getElementById(aElements[1]).value = sub2.value;
			}
			else
			{
				formComplete = false;
			}
		}
		else
		{
			document.getElementById(aElements[1]).value = setup.value;
			
			if (sub1.checked)
			{
				cobrand.value = (Number(price1.value) > 350) ? 1 : 0;
				document.getElementById(aElements[0]).value = sub1.value;
			}
			else if (sub2.checked)
			{
				cobrand.value = (Number(price2.value) > 350) ? 1 : 0;
				document.getElementById(aElements[0]).value = sub2.value;
			}
			else
			{
				formComplete = false;
			}
		}
		
		additional = "\nas well as selected a subscription plan";
	}
	
	if (formComplete)
	{
		document.registrationForm.submit();
	}
	else
	{
		alert("Some required fields were left blank. Please make sure\nyou have complete all fields maked with red captions" + additional + ".");
	}
}

function VerifyWebinarContactInfo(
	formToSubmitName)
{
	var errors = [];
	
	// Required Field Errors
	var error_fNameRequired       = 'Missing Required Field -> First Name';
	var error_lNameRequired       = 'Missing Required Field -> Last Name';
	var error_phoneRequired       = 'Missing Required Field -> Phone';
	var error_emailRequired       = 'Missing Required Field -> Email';
	// Other Errors
	var error_phoneInvalid     = 'Invalid Phone -> Please enter a valid Phone Number including area code.';
	var error_emailInvalid     = 'Invalid Email -> Please enter a valid Email Address.';
	var error_emailsDoNotMatch = 'Emails do not match.';
	var error_invalidWebinar   = 'Invalid Webinar Information -> Please select a date and time.';
	
	var firstName   = document.getElementById('first_name').value;
	var lastName    = document.getElementById('last_name').value;
	var areaCode    = document.getElementById('area_code').value;
	var phonePrefix = document.getElementById('phone_prefix').value;
	var phoneSuffix = document.getElementById('phone_suffix').value;
	var email       = document.getElementById('email').value;
	var webinarDay  = document.getElementById('meeting_day').value;
	var webinarTime = document.getElementById('meeting_time').value;

	var phone = areaCode + phonePrefix + phoneSuffix;
	
	// Validate Form Fields
	if (! firstName)
	{
		errors.push(error_fNameRequired);
	}
	
	if (! lastName)
	{
		errors.push(error_lNameRequired);
	}
	
	if (phone)
	{
		var phoneDigits = phone.replace(/[^\d]/g, '');
		
		if (phoneDigits.length != 10)
		{
			errors.push(error_phoneInvalid);
		}
	}
	else
	{
		errors.push(error_phoneRequired);
	}
	
	if (email)
	{
		if (! email.match(/(^|<)[a-zA-Z0-9\-_+=\.,:;&\$\/%()*^#!`~\[\]{}|\\'"?]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)+($|>)/))
		{
			errors.push(error_emailInvalid);
		}
	}
	else
	{
		errors.push(error_emailRequired);
	}

	if (! (webinarDay || webinarTime))
	{
		errors.push(error_invalidWebinar);
	}
	
	if (errors.length > 0)
	{
		var errorMsg = 'Free Webinar Form Error\n\n';
		
		for (var i = 0; i < errors.length; i++)
		{
			errorMsg += errors[i] + '\n';
		}
		
		alert(errorMsg);
	}
	else if (formToSubmitName !== null)
	{
		var formToSubmit = eval('document.' + formToSubmitName);
		
		if (formToSubmit)
		{
			formToSubmit.submit();
		}
	}
}

function VerifyContactInfo(
	formToSubmitName,
	canadianProvinces)
{
	var errors = [];
	
	// Required Field Errors
	var error_productRequired = 'Missing Required Field -> Product: Please select one of the TRS 250 Portfolio plans.';
	var error_fNameRequired   = 'Missing Required Field -> First Name';
	var error_lNameRequired   = 'Missing Required Field -> Last Name';
	var error_addressRequired = 'Missing Required Field -> Street Address';
	var error_cityRequired    = 'Missing Required Field -> City';
	var error_zipRequired     = 'Missing Required Field -> Postal/Zip Code';
	var error_phoneRequired   = 'Missing Required Field -> Phone';
	var error_emailRequired   = 'Missing Required Field -> Email';
	var error_emailVerifyRequired = 'Missing Required Field -> Verify Email';
	// Other Errors
	var error_zipInvalid   = 'Invalid Postal/Zip Code -> Please enter a valid Zip/Postal Code.';
	var error_phoneInvalid = 'Invalid Phone -> Please enter a valid Phone Number including area code.';
	var error_emailInvalid = 'Invalid Email -> Please enter a valid Email Address.';
	var error_emailsDoNotMatch = 'Emails do not match.';
	
	var aProduct = document.getElementsByName('renewal_id');
	var product  = null;
	
	for (i = 0; i < aProduct.length && ! product; i++)
	{
		if (aProduct[i].checked == true)
		{
			product = aProduct[i].value;
		}
	}
	
	var firstName = document.getElementById('first_name').value;
	var lastName  = document.getElementById('last_name').value;
	var address   = document.getElementById('address1').value;
	var city      = document.getElementById('city').value;
	var state     = document.getElementById('region1').value;
	var zip       = document.getElementById('postal_code').value;
	var areaCode  = document.getElementById('area_code').value;
	var phonePrefix = document.getElementById('phone_prefix').value;
	var phoneSuffix = document.getElementById('phone_suffix').value;
	var email       = document.getElementById('email').value;
	var emailVerify = document.getElementById('email_verify').value;
	
	var phone = areaCode + phonePrefix + phoneSuffix;
	
	// Validate Form Fields
	if (! product)
	{
		errors.push(error_productRequired);
	}
	
	if (! firstName)
	{
		errors.push(error_fNameRequired);
	}
	
	if (! lastName)
	{
		errors.push(error_lNameRequired);
	}
	
	if (! address)
	{
		errors.push(error_addressRequired);
	}
	
	if (! city)
	{
		errors.push(error_cityRequired);
	}
	
	if (zip)
	{
		var canadian = canadianProvinces.inArray(state);
		
		if ((canadian && (zip.length > 7 || ! zip.match(/[A-Za-z]\d[A-Za-z] ?\d[A-Za-z]\d/))) || (! canadian && (zip.length != 5 || ! zip.match(/\d{5}/))))
		{
			errors.push(error_zipInvalid);
		}
	}
	else
	{
		errors.push(error_zipRequired);
	}
	
	if (phone)
	{
		var phoneDigits = phone.replace(/[^\d]/g, '');
		
		if (phoneDigits.length != 10)
		{
			errors.push(error_phoneInvalid);
		}
	}
	else
	{
		errors.push(error_phoneRequired);
	}
	
	if (email)
	{
		if (! email.match(/(^|<)[a-zA-Z0-9\-_+=\.,:;&\$\/%()*^#!`~\[\]{}|\\'"?]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)+($|>)/))
		{
			errors.push(error_emailInvalid);
		}
	}
	else
	{
		errors.push(error_emailRequired);
	}
	
	if (emailVerify)
	{
		if (emailVerify != email)
		{
			errors.push(error_emailsDoNotMatch);
		}
	}
	else
	{
		errors.push(error_emailVerifyRequired);
	}
	
	if (errors.length > 0)
	{
		var errorMsg = 'Subscription Form Error\n\n';
		
		for (var i = 0; i < errors.length; i++)
		{
			errorMsg += errors[i] + '\n';
		}
		
		alert(errorMsg);
	}
	else if (formToSubmitName !== null)
	{
		var formToSubmit = eval('document.' + formToSubmitName);
		
		if (formToSubmit)
		{
			formToSubmit.submit();
		}
	}
}


function VerifyBillingInfo(
	formToSubmitName,
	canadianProvinces)
{
	var errors = [];
	
	// Required Field Errors
	var error_cardNumRequired  = 'Missing Required Field -> Card Number';
	var error_cardNameRequired = 'Missing Required Field -> Name on Card';
	var error_cardAddrRequired = 'Missing Required Field -> Card Street Address';
	var error_cardAddrCityReqr = "Missing Required Field -> Card Address' City";
	var error_cardAddrZipReqr  = "Missing Required Field -> Card Address' Postal/Zip Code";
	// Other Errors
	var error_cardNumInvalid  = 'Invalid Card Number -> Please enter a valid Card Number.';
	var error_cardExpInvalid  = 'Invalid Card Expiration -> The Card entered is expired.';
	var error_cardZipInvalid  = 'Invalid Card Postal/Zip Code -> Please enter a valid Card Postal/Zip Code.';
	
	var cardNum   = document.getElementById('cc_number').value;
	var cardName  = document.getElementById('cc_name').value;
	var cardType  = document.getElementById('cc_type_id').value;
	var cExpMonth = document.getElementById('cc_month').value;
	var cExpYear  = document.getElementById('cc_year').value;
	var cAddrSame = document.getElementById('use_contact_address').checked;
	
	// Validate Form Fields
	if (! cardNum)
	{
		errors.push(error_cardNumRequired);
	}
	
	if (! cardName)
	{
		errors.push(error_cardNameRequired);
	}
	
	var now    = new Date();
	var expire = new Date();
	expire.setFullYear(cExpYear, (cExpMonth - 1), 1);
	expire.setHours(23);
	expire.setMinutes(59);
	expire.setSeconds(59);
	expire.setDate(expire.getDaysInMonth());
	
	if (now.getTime() > expire.getTime())
	{
		errors.push(error_cardExpInvalid);
	}
	
	if (! cAddrSame)
	{
		var cardAddress = document.getElementById('cc_address1').value;
		var cardCity    = document.getElementById('cc_city').value;
		var cardState   = document.getElementById('cc_region1').value;
		var cardZip     = document.getElementById('cc_postal_code').value;
		
		if (! cardAddress)
		{
			errors.push(error_cardAddrRequired);
		}
		
		if (! cardCity)
		{
			errors.push(error_cardAddrCityReqr);
		}
		
		if (cardZip)
		{
			var canadian = canadianProvinces.inArray(cardState);
			
			if ((canadian && (cardZip.length > 7 || ! cardZip.match(/[A-Za-z]\d[A-Za-z] ?\d[A-Za-z]\d/))) || (! canadian && (cardZip.length != 5 || ! cardZip.match(/\d{5}/))))
			{
				errors.push(error_cardZipInvalid);
			}
		}
		else
		{
			errors.push(error_cardAddrZipReqr);
		}
	}
	
	if (errors.length > 0)
	{
		var errorMsg = 'Billing Information Form Error\n\n';
		
		for (var i = 0; i < errors.length; i++)
		{
			errorMsg += errors[i] + '\n';
		}
		
		alert(errorMsg);
	}
	else if (formToSubmitName !== null)
	{
		var formToSubmit = eval('document.' + formToSubmitName);
		
		if (formToSubmit)
		{
			formToSubmit.submit();
		}
	}
}


function CheckUpdateLogin()
{
	var user = document.getElementById('name');
	var pass1 = document.getElementById('password');
	var pass2 = document.getElementById('confirm_pw');
	var formOkay = true;
	
	if (user.value.length < 6)
	{
		alert('Your username must be at least six characters long.');
		formOkay = false;
	}
	
	if (formOkay && (pass1.value == '' || pass2.value == ''))
	{
		alert('Your password cannot be blank. Please enter a password.');
		pass1.focus();
		formOkay = false;
	}
	
	if (formOkay && (pass1.value != pass2.value))
	{
		alert('Your passwords do not match. Please try again.');
		pass1.focus();
		formOkay = false;
	}
	
	if (formOkay)
	{
		document.updateLoginForm.submit();
	}
}

function CheckEmailFormat(str)
{
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
		return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false
	}

	if (str.indexOf(at,(lat+1))!=-1){
		return false
	}

	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false
	}

	if (str.indexOf(dot,(lat+2))==-1){
		return false
	}

	if (str.indexOf(" ")!=-1){
		return false
	}

	return true
}


function ValidateUserEmail(emailID)
{
	if ((emailID.value==null)||(emailID.value=="")){
		return true
	}
	else
	{
		if(CheckEmailFormat(emailID.value) == false)
		{
			alert("Please enter a valid email address");
			emailID.focus()
			return false
		}
		else
		{
			return true
		}
	}
}