// JavaScript Document
var targetForm;
var lastHilite;
firstError = true;

function initialize() {
	targetForm = document.getElementById('mainForm');

	if (targetForm) {
		targetForm.method = 'post';
		targetForm.onsubmit = validateData;
		targetForm.action = 'myaccount.asp';
		initializeFields(targetForm);
	}
}

function initializeFields(form) {
	var obj;

	with(form) {
		for (i = 0; i < form.elements.length; i++) {
			elm = form.elements[i];
			if (elm.type == "hidden" || elm.type == "button" || elm.type == "submit" || elm.type == "image") continue;
			if (elm.tagName == "FIELDSET") continue;

			if (typeof(elm) == 'object') {
				if (elm.name == 'First Name') {
					elm.title = 'First Name';
					elm.xmin = 1;
					elm.xmax = 20;
					elm.maxLength = 20;
					elm.xlabel = 'First Name';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your first name';
					elm.required = true;
				}
				if (elm.name == 'Last Name') {
					elm.title = 'Last Name';
					elm.xmin = 1;
					elm.xmax = 20;
					elm.maxLength = 20;
					elm.xlabel = 'Last Name';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your last name.';
					elm.required = true;
				}
				if (elm.name == 'Email Address') {
					elm.title = 'Email Address';
					elm.xmin = 1;
					elm.xmax = 30;
					elm.maxLength = 30;
					elm.xlabel = 'Email Address';
					elm.xvalidate = isValidEmail;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid email address.';
					elm.required = true;
				}
				if (elm.name == 'Address') {
					elm.title = 'Address';
					elm.xmin = 1;
					elm.xmax = 35;
					elm.maxLength = 35;
					elm.xlabel = 'Address';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters long.';
					elm.required = true;
				}
				if (elm.name == 'City') {
					elm.title = 'City';
					elm.xmin = 2;
					elm.xmax = 20;
					elm.maxLength = 20;
					elm.xlabel = 'City';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters long.';
					elm.required = true;
				}
				if (elm.name == 'State') {
					elm.title = 'State';
					elm.xlabel = 'State';
					elm.xvalidate = hasSelected;
					elm.xerror = showError;
					elm.xerrmsg = 'Please select a ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'Zip') {
					elm.title = 'Zip Code';
					elm.xmin = 1;
					elm.xmax = 12;
					elm.maxLength = 10;
					elm.xlabel = 'Zip Code';
					elm.xvalidate = isPostal;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'Telephone Number') {
					elm.title = 'Telephone Number';
					elm.xmin = 1;
					elm.xmax = 12;
					elm.maxLength = 12;
					elm.xlabel = 'Telephone Number';
					elm.xvalidate = isPhone;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid phone number for ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'Cell Phone Number') {
					elm.title = 'Cell Phone Number';
					elm.xmin = 1;
					elm.xmax = 12;
					elm.maxLength = 12;
					elm.xlabel = 'Cell Phone Number';
					elm.xvalidate = isPhone;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid phone number for ' + elm.title + ' or leave it blank.';
					elm.required = false;
				}
				if (elm.name == 'Billing Name') {
					elm.title = 'Billing Name';
					elm.xmin = 1;
					elm.xmax = 45;
					elm.maxLength = 45;
					elm.xlabel = 'Billing Name';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters or leave it blank';
					elm.required = false;
				}
				if (elm.name == 'Billing Address') {
					elm.title = 'Billing Address';
					elm.xmin = 1;
					elm.xmax = 35;
					elm.maxLength = 35;
					elm.xlabel = 'Address 2';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter your ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters long or leave it blank.';
					elm.required = false;
				}
				if (elm.name == 'Billing City') {
					elm.title = 'Billing City';
					elm.xmin = 2;
					elm.xmax = 20;
					elm.maxLength = 20;
					elm.xlabel = 'City';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters or leave it blank';
					elm.required = false;
				}
				if (elm.name == 'Billing State') {
					elm.title = 'Billing State';
					elm.xmin = 2;
					elm.xmax = 20;
					elm.maxLength = 20;
					elm.xlabel = 'Billing State';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a ' + elm.title + ' between ' + elm.xmin + ' and ' + elm.xmax + ' characters or leave it blank';
					elm.required = false;
				}
				if (elm.name == 'Billing Zip') {
					elm.title = 'Billing Zip Code';
					elm.xmin = 1;
					elm.xmax = 10;
					elm.maxLength = 10;
					elm.xlabel = 'Billing Zip Code';
					elm.xvalidate = isPostal;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid ' + elm.title + '.';
					elm.required = false;
				}
				// MANUALLY RENDERED CONTROLS ARE BELOW
				if (elm.name == 'challengeQ1') {
					elm.title = 'Challenge Question 1';
					elm.xlabel = 'Challenge Question 1';
					elm.xvalidate = hasSelected;
					elm.xerror = showError;
					elm.xerrmsg = 'Please select a ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'challengeA1') {
					elm.title = 'Challenge Answer 1';
					elm.xmin = 1;
					elm.xmax = 40;
					elm.maxLength = 40;
					elm.xlabel = 'Challenge Answer 1';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'challengeQ2') {
					elm.title = 'Challenge Question 2';
					elm.xlabel = 'Challenge Question 2';
					elm.xvalidate = hasSelected;
					elm.xerror = showError;
					elm.xerrmsg = 'Please select a ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'challengeA2') {
					elm.title = 'Challenge Answer 2';
					elm.xmin = 1;
					elm.xmax = 40;
					elm.maxLength = 40;
					elm.xlabel = 'Challenge Answer 2';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid ' + elm.title + '.';
					elm.required = true;
				}
				if (elm.name == 'Password') {
					elm.title = 'Password';
					elm.xmin = 5;
						elm.xmax = 14;
						elm.maxLength = 14;
					elm.xlabel = 'Password';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid password between ' + elm.xmin + ' and ' + elm.xmax + ' characters in length.';
					if (pageAction.value == 'update') {
						elm.required = false;
					} else {
						elm.required = true;
					}
				}
				if (elm.name == 'passwordConfirm') {
					elm.title = 'Password Confirmation';
					elm.xmin = 5
					elm.xmax = 14;
					elm.maxLength = 14;
					elm.xlabel = 'Password Confirmation';
					elm.xvalidate = isaString;
					elm.xerror = showError;
					elm.xerrmsg = 'Please enter a valid password confirmation between ' + elm.xmin + ' and ' + elm.xmax + ' characters in length.';
					if (pageAction.value == 'update') {
						elm.required = false;
					} else {
						elm.required = true;
					}
				}
			}
		}		
	}
}

function validateData() {
	var elm, i;
	
	for (var i=0; i < this.elements.length; i++) {
		elm = this.elements[i];

		if (elm.type == "hidden" || elm.type == "button" || elm.type == "submit" || elm.type == "image") continue;
		if (elm.tagName == "FIELDSET") continue;
			
		if (typeof(elm.xvalidate) == "function" && !elm.xvalidate()) {
			return false;
		}
	}
	
	if (this.Password.value != this.passwordConfirm.value) {
		alert('Your passwords do not match!');
		this.Password.value = '';
		this.Password.style.backgroundColor='#99CCFF';
		
		this.passwordConfirm.value = '';
		this.passwordConfirm.style.backgroundColor='#99CCFF';
		
		this.Password.focus();
		return false;
	}
	
	return true;
}

function showError() {
  alert(this.xerrmsg);
  if(!firstError) lastHilite.style.backgroundColor='#FFFFFF';
  this.style.backgroundColor='#99CCFF';
  lastHilite = this;
  //using select for drop down boxes will break the javascript.
  this.focus();
  
  if (this.type != 'select-one') {
	  this.select();
  }
  
  firstError = false;
  return false;
}

function hasSelected() {
	if (this.value == '0' && this.required) {
		return(this.xerror());
	}
	return true;
}

function isaString() {
//ALPHANUMERIC AS OPPOSED TO JUST ALPHA OR NUMERIC VALIDATIONS BELOW.
	if (this.required) {
		//alert('required item | name: ' + this.name + ' value: ' + this.value);
		if (this.value.length < this.xmin) return(this.xerror());
		if (this.value.length > this.xmax) return(this.xerror());
	} else {
		if (this.value.length == '') {
			//alert('non-required item: ' + this.name + ' is empty - returning true.');
			return true;
		} else {
			//alert('non-required item: ' + this.name + ' has information - validating.');
			if (this.value.length < this.xmin) return(this.xerror());
			if (this.value.length > this.xmax) return(this.xerror());
		}
	}

	return true;
}

function isValidEmail() {
	if (this.required || this.value != '') {
		var goodEmail = this.value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\.biz)|(\..{2,2}))$)\b/gi);
		if (!goodEmail) {
			return(this.xerror());
		} else {
			return true;
		}
	}
	
	return true;
}
function isPostal() {
	if (this.required) {
		var validPostal = this.value.match(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
		if (!validPostal) return(this.xerror());
	}
	return true;
}

function isPhone() {
	var validPhone;
	if (this.required) {
		//val7323700398idPhone =  this.value.match(/(^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$)|(^[1-9]\d{2}\-\d{3}\-\d{4}$)/);
		validPhone = this.value.match(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/);
	} else {
		if (this.value == '' || this.value == 'undefined') {
			return true;
		} else {
			//validPhone =  this.value.match(/(^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$)|(^[1-9]\d{2}\-\d{3}\-\d{4}$)/);
			validPhone = this.value.match(/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/);
		}
	}
	if (!validPhone) return(this.xerror());
	return true;
}
function togglePasswordLayer() {
	var elm 	= document.getElementById('showPassword');
	var elm2 	= document.getElementById('showPwdLink');

	if (elm) {
		if (elm.style.display == 'none') {
			elm.style.display = 'block';
			elm2.innerHTML = 'Hide Update Password';
		} else if (elm.style.display == 'block') {
			elm.style.display = 'none';
			elm2.innerHTML = 'Show Update Password';
		}
	}
}

function toggleBilling(obj) {
	var elm = document.getElementById('billingLayer');
	
	if (elm) {
		if (elm.style.display == 'none') {
			elm.style.display = 'block';
		} else if (elm.style.display == 'block') {
			elm.style.display = 'none';
		}
	}
}
