function setEndPromo(promo) {
    endPromo = promo;
}

function removePromo() {
    if (endPromo == 0) {
        Cookies.expire('promo');
        Cookies.expire('omnitureCode');
    }
}

function goToUrl(url) {
    window.location = url;
}

// GENERIC CODE TO SHOW AND HIDE ERRORS
function showError(fieldRow, message) {
    $j('#' + fieldRow + 'Row .formError').html(message);
    if (!$j('#' + fieldRow + 'Row').hasClass('error')) {
        $j('#' + fieldRow + 'Row').addClass('error');
		$j('#' + fieldRow + 'Row .formError').slideDown();
		$j('#' + fieldRow + 'Row .validated').hide();
    }
}

function hideError(fieldRow) {
    $j('#' + fieldRow + 'Row').removeClass('error');
    $j('#' + fieldRow + 'Row .formLabel').removeClass('error');
	$j('#' + fieldRow + 'Row .formError').slideUp().html('');
}

// VALIDATION OF SPECIFIC FORM FIELDS
// username form fields
function validateAliasName(fieldRow, alias) {
    var regExp = /^[a-zA-Z0-9]{1,20}$/; //only letters and numbers (1-20 characters);
    if (!alias) {
        showError(fieldRow, 'Please enter a user name.');
        return false;
    }
    if (alias.length > 20) {
        showError(fieldRow, 'Sorry, the user name must be fewer than 20 characters.');
        return false;
    }
    if (regExp.test(alias)) {
        var param = "aliasName=" + escape(alias);
        var vRequest = $j.ajax({
			type: "GET",
			url: "/online-community/register/validatealias.action",
            data: param,
            success: function(text) {
                text = text.replace(/^\s*/, "").replace(/\s*$/, "");
                if (text != "") {
                    showError(fieldRow, text);
                    return false;
                } else {
					$j('#' + fieldRow + 'Row .validated').show();
					hideError(fieldRow);
					return true;
                }
            }
        });
    } else {
		showError(fieldRow, 'The user name you requested contains invalid characters. Please use only letters and/or numbers.');
		return false;
    }

}

// email form fields
function validateEmail(fieldRow, email, ajaxCheck) {

    var regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

	if (!email) {
        showError(fieldRow, 'Please enter an e-mail address.');
        return false;
    } else if (!regExp.test(email)) {
        showError(fieldRow, 'The e-mail address you entered is invalid.');
        return false;
    } else if (ajaxCheck) {
        var param = "email=" + escape(email);
        var vRequest = $j.ajax({
			type: "GET",
			url: "/online-community/register/validateemail.action",
			data: param,
			success: function(text) {
                text = text.replace(/^\s*/, "").replace(/\s*$/, "");
                if (text != "") {
                    showError(fieldRow, text);
                    return false;
                } else {
					$j('#' + fieldRow + 'Row .validated').show();
					hideError(fieldRow);
                    return true;
                }
            }
        });
    } else {
		$j('#' + fieldRow + 'Row .validated').show();
		hideError(fieldRow);
		return true;
	}

}

function validateEmailMSS(fieldRow, email) {
    var regExp = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[(2([0-4]\d|5[0-5])|1?\d{1,2})(\.(2([0-4]\d|5[0-5])|1?\d{1,2})){3} \])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
	if (email != "") {
        if (!regExp.test(email)) {
			showError(fieldRow, 'The e-mail address you entered is invalid.');
			return false;
		} else {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		}
	} else {
		$j('#' + fieldRow + 'Row .validated').hide();
		hideError(fieldRow);
		return true;
	}
}

// password form fields
function validatePassword(fieldRow, password) {
    var regExp = /^\S*(?=\S{6,20})(?=\S*\d)(?=\S*[a-zA-Z])\S*$/; //at least one character and one number (6-20 characters)
    if (regExp.test(password)) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Please use 6-20 characters. Must contain at least one letter and one number, and no spaces.');
        return false;
    }
}

function validateConfirmPassword(fieldRow, password, confirmPassword) {
    if ((password != confirmPassword) || (confirmPassword.length == 0)) {
        showError(fieldRow, 'Password and Confirm Password must match.');
        return false;
    } else {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    }
}

// name form fields
function validateFirstName(fieldRow, firstName) {
    var regExp = /^[A-Za-z]{1,7}\'?[a-zA-Z]{1,7}[A-Za-z]$/; //only letters and apostrophe
    if (regExp.test(firstName)) {
            $j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Use only letters and apostrophe. Must contain at least 1 letter and cannot exceed 15 characters.');
        return false;
    }
}

function validateFirstNameMSS(fieldRow, firstName) {
    var regExp = /^[a-zA-Z0-9']{1,15}$/;
    if (regExp.test(firstName)) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Use only letters, numbers, and apostrophes. Cannot exceed 15 characters.');
        return false;
    }
}

function validateSpouseFirstNameMSS(fieldRow, firstName) {
	if (firstName != "") {
		var regExp = /^[a-zA-Z0-9']{1,15}$/;
		if (regExp.test(firstName)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Use only letters, numbers, and apostrophes. Cannot exceed 15 characters.');
			return false;
		}
	} else {
		hideError(fieldRow);
		return true;
	}
}

function validateMiddleNameMSS(fieldRow, middleName) {
	if (middleName != "") {
		var regExp = /^[a-zA-Z0-9']{1,15}$/;
		if (regExp.test(middleName)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Use only letters, numbers, and apostrophes. Cannot exceed 15 characters.');
			return false;
		}
	} else {
		$j('#' + fieldRow + 'Row .validated').hide();
		hideError(fieldRow);
		return true;
	}
}

function validateSpouseMiddleNameMSS(fieldRow, middleName) {
	if (middleName != "") {
		var regExp = /^[a-zA-Z0-9']{1,15}$/;
		if (regExp.test(middleName)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Use only letters, numbers, and apostrophes. Cannot exceed 15 characters.');
			return false;
		}
	} else {
		hideError(fieldRow);
		return true;
	}
}

function validateLastName(fieldRow, lastName) {
      var regExp = /^((([A-Za-z]+\')?[A-Za-z][0-9A-Za-z]*\s?[A-Za-z\-\s]+)|(([A-Za-z]+\-)?[A-Za-z][0-9A-Za-z]*\s?[A-Za-z\s]+))+$/; //only letters, hyphens, apostrophe and spaces with at least 1 letter
    if (regExp.test(lastName)) {
            $j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Use only letters, numbers, hyphens and apostrophe. Must contain at least 1 letter and cannot exceed 20 characters.');
        return false;
    }
}

function validateLastNameMSS(fieldRow, lastName) {
    var regExp = /^[a-zA-Z0-9'-]{1,25}$/; //only letters, numbers, hyphens, and spaces with at least 1 letter (1-20 characters)
    if (regExp.test(lastName)) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Use only letters, numbers, hyphens, and apostrophes. Cannot exceed 25 characters.');
        return false;
    }
}

function validateSpouseLastNameMSS(fieldRow, lastName) {
	if (lastName != "") {
		var regExp = /^[a-zA-Z0-9'-]{1,25}$/; //only letters, numbers, hyphens, and spaces with at least 1 letter (1-20 characters)
		if (regExp.test(lastName)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Use only letters, numbers, hyphens, and apostrophes. Cannot exceed 25 characters.');
			return false;
		}
	} else {
		hideError(fieldRow);
		return true;
	}
}

function isValidSpouseInfoMSS(spouseFirstName, spouseLastName) {
	spouseFirstName = $j.trim(spouseFirstName);
	spouseLastName = $j.trim(spouseLastName);
	if ((spouseFirstName == "" && spouseLastName != "") || (spouseLastName == "" && spouseFirstName != "")) {
		showError('spFirstName', 'Please enter first name and last name for spouse.');
		showError('spLastName', '');
		return false;
	} else {
		return true;
	}
}

// address form fields
function validateAddressMSS(fieldRow, address) {
    var regExp = /^[a-zA-Z0-9-./#\s]{1,40}$/;
    if (regExp.test(address)) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Only letters, numbers, the \'-\' (dash), \'.\' (period), \'/\' (slash), and \'#\' characters are allowed. Cannot exceed 40 characters.');
        return false;
    }
}

function validateAddress2MSS(fieldRow, address) {
	if (address != "") {
		var regExp = /^[a-zA-Z0-9-./#\s]{1,40}$/;
		if (regExp.test(address)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Only letters, numbers, the \'-\' (dash), \'.\' (period), \'/\' (slash), and \'#\' characters are allowed. Cannot exceed 40 characters.');
			return false;
		}
	} else {
		$j('#' + fieldRow + 'Row .validated').hide();
		hideError(fieldRow);
		return true;
	}
}

function validateCityMSS(fieldRow, city) {
    var regExp = /^[a-zA-Z0-9\s]{1,28}$/;
    if (regExp.test(city)) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Only letters and numbers are allowed. Cannot exceed 28 characters.');
        return false;
    }
}

function validateCountry(fieldRow, country) {
    if (country) {
		//$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        return false;
    }
}

function validateCountryMSS(fieldRow, country) {
    if (country) {
		$j('#' + fieldRow + 'Row .validated').show();
        hideError(fieldRow);
        return true;
    } else {
        return false;
    }
}

function isValidPostalCode(fieldRow, countryCd, postalcode) {

    if (postalcode) {

		postalcode = postalcode.toLowerCase();
		postalcode = postalcode.replace(/\s+/g, '');

		if (postalcode.length > 0) {

			// matching the Canadian zip format of A1B2C3
			var canada_zip_regExp = /^([A-Za-z][0-9]){3}$/;

			// matching a U.S. zip format
			//var us_zip_regExp = /^\d{5}$|^\d{5}-\d{4}$/;
			
			//change per dng on 8/26/2010
			var us_zip_regExp = /^\d{5}$/;

			//If country is Canada, must be 6 chars and follow format A1B2C3
			if ((countryCd == 'CC' || countryCd == 'Canada') && (!canada_zip_regExp.test(postalcode) || postalcode.length != 6)) {
				showError(fieldRow, 'Invalid postal code.');
				return false;

			//If country is US, must be all numeric between 5-11 chars
			} else if ((countryCd == 'US' || countryCd == 'United States') && !us_zip_regExp.test(postalcode)) {
				showError(fieldRow, 'Invalid postal code.');
				return false;

			//Anything else just has to be under 11 chars
			} else if (postalcode.length > 11) {
				showError(fieldRow, 'Invalid postal code.');
				return false;

			} else {
				$j('#' + fieldRow + 'Row .validated').show();
				hideError(fieldRow);
				return true;

			}

		}

	} else {

		return true;

	}

}

function validatePostalCode(fieldRow, country, postalCode) {

	if (postalCode) {

		if (isValidPostalCode(null, country, postalCode)) {
			$j('#' + fieldRow + 'Row .validated').show();
			hideError(fieldRow);
			return true;
		} else {
			showError(fieldRow, 'Invalid postal code.');
			return false;
		}

	} else {

        showError(fieldRow, 'You must enter a ZIP/postal code.');
		return false;

	}

}

function validateCountryState(fieldRow, country) {
	var isUSA = (country == 'United States');
	var isCanada = (country == 'Canada');
	var isMexico = (country == 'Mexico');

	if (isUSA) {
		var usStateSelect = $j('#stateCd').val();
		if (usStateSelect == -1) {
			showError(fieldRow, 'Please select a state.');
			return false;
		} else {
			hideError(fieldRow)
		}
	} else if (isCanada) {
		var canadaSelect = $j('#canadaSelect').val();
		if (canadaSelect == -1) {
			showError(fieldRow, 'Please select a province.');
			return false;
		} else {
			hideError(fieldRow)
		}
	} else if (isMexico) {
		var mexicoSelect = $j('#mexicoSelect').val();
		if (mexicoSelect == -1) {
			showError(fieldRow, 'Please select a province.');
			return false;
		} else {
			hideError(fieldRow)
		}
	} else {
		var provinceText = $j('#provinceText').val();
		if (provinceText == "") {
			showError(fieldRow, 'Please enter a province.');
			return false;
		} else {
			hideError(fieldRow)
		}
	}
}

function validateCountryStateMSS(fieldRow, country, state) {
	var isUSA = (country == 'United States' || country == 'US');
	var isCanada = (country == 'Canada' || country == 'CC');
	var isMexico = (country == 'Mexico' || country == 'MX');

	if (isUSA && (!state)) {
		showError(fieldRow, 'Please enter a state.');
		return false;

	} else if ((isCanada || isMexico) && (!state)) {
		showError(fieldRow, 'Please enter a province.');
		return false;

	} else {
		$j('#' + fieldRow + 'Row .validated').show();
		hideError(fieldRow);
		return true;
	}

}

//birthdate form fields
function validateBirthDate(fieldRow, birthMonth, birthDay, birthYear, formSubmitted) {
    //alert("fieldRow: " + fieldRow + ", birthMonth: " + birthMonth + ", birthDay: " + birthDay + ", birthYear: " + birthYear);

	//check for error only when form is submitted
	if (formSubmitted && ((birthMonth == -1) || (birthDay == -1) || (birthYear == -1))) {
		showError(fieldRow, 'Please select a month, day, and year.');
		return false;

	//only hide error if error is already shown
	} else if ($j('#' + fieldRow + 'Row').hasClass('error') && ((birthMonth > -1) && (birthDay > -1) && (birthYear > -1))) {
		$j('#' + fieldRow + 'Row .validated').show();
		hideError(fieldRow);
		return true;

	}

}

function validateBirthDateMSS(fieldRow, birthMonth, birthDay, birthYear, formSubmitted) {
    //alert("fieldRow: " + fieldRow + ", birthMonth: " + birthMonth + ", birthDay: " + birthDay + ", birthYear: " + birthYear);

	//check for error only when form is submitted
	if (formSubmitted && ((birthMonth <= 0) || (birthDay <= 0) || (birthYear <= 0))) {
		showError(fieldRow, 'Please select a month, day, and year.');
		return false;

	//only hide error if error is already shown
	} else if ($j('#' + fieldRow + 'Row').hasClass('error') && ((birthMonth > 0) && (birthDay > 0) && (birthYear > 0))) {
		$j('#' + fieldRow + 'Row .validated').show();
		hideError(fieldRow);
		return true;

	}

}

// billing
function validateDuesMSS(fieldRow, id) {
    if (id) {
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Please select membership dues.');
        return false;
    }
}

function validateCardTypeMSS(fieldRow, cardType) {
	if ((cardType != "") && (cardType != "EE")) {
        hideError(fieldRow);
        return true;

		//if credit card is selected, check for valid credit card information
		validateCardDetailsMSS();

    } else if (cardType == "EE") {
        hideError(fieldRow);
		hideError('cardNumber');
		hideError('cvvCode');
		hideError('cardExpirationDate');
        return true;
	} else {
        showError(fieldRow, 'Payment type is required.');
        return false;
    }
}

function validateCardDetailsMSS() {

	if ($j('#cardNumber').val() == "") {
		showError('cardNumber', 'Credit card number is required.');
		return false;
	} else  {
		hideError('cardNumber');
		return true;
	}

	if ($j('#cvvCode').val() == "") {
		showError('cvvCode', 'Security code is required.');
		return false;
	} else  {
		hideError('cvvCode');
		return true;
	}

	if (($j('#expMonth').val() == "") || ($j('#expYear').val() == "")) {
		showError('cardExpirationDate', 'Expiration date is required.');
		return false;
	} else  {
		hideError('cardExpirationDate');
		return true;
	}

}

// captcha form fields
function validateRecaptcha(fieldRow, code) {
    if (code) {
        hideError(fieldRow);
        return true;
    } else {
        showError(fieldRow, 'Please enter the words shown above.');
        return false;
    }
}

// ON SUBMISSION OF REGISTRATION FORM
function validateRegForm() {

	if (!$j('#tos').attr('checked')) {
        showError('tos', 'Please review the AARP Terms of Service.');
    } else {
        hideError('tos');
    }

	validateEmail('email', $j('#email').val(), false);
    validateAliasName('aliasName', $j('#aliasName').val());
    validatePassword('password', $j('#password').val());
    validateConfirmPassword('confirmPassword', $j('#password').val(), $j('#confirmPassword').val());
    validateFirstName('firstName', $j('#firstName').val());
    validateLastName('lastName', $j('#lastName').val());
    validateBirthDate('birthDate', $j('#birthMonth').val(), $j('#birthDay').val(), $j('#birthYear').val(), true);
    validatePostalCode('postalCode', $j('#countryCd').val(), $j('#postalCode').val());
    validateRecaptcha('recaptcha', $j('#recaptcha_response_field').val());

    if (
		($j('#emailRow').hasClass('error')) ||
		($j('#aliasNameRow').hasClass('error')) ||
		($j('#passwordRow').hasClass('error')) ||
		($j('#passwordConfirmRow').hasClass('error')) ||
		($j('#firstNameRow').hasClass('error')) ||
		($j('#lastNameRow').hasClass('error')) ||
		($j('#birthDateRow').hasClass('error')) ||
		($j('#postalCodeRow').hasClass('error')) ||
		($j('#recaptchaRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorSignUp');
		return false;
    } else {
        return true;
    }

}

// ON SUBMISSION OF MINI-REGISTRATION FORM
function validateMiniRegForm() {

	if (!$j('#tos').attr('checked')) {
		showError('tos', 'Please review the AARP Terms of Service.');
	} else {
		hideError('tos');
	}

	validateAliasName('aliasName', $j('#aliasName').val());

	if ($j('#aliasNameRow').hasClass('error')) {
		return false;
	} else {
		return true;
	}

}

// ON SUBMISSION OF MSS JOIN FORM
function validateMSSJoinForm() {

	validateFirstNameMSS('firstName', $j('#firstName').val());
	validateMiddleNameMSS('middleName', $j('#middleName').val());
    validateLastNameMSS('lastName', $j('#lastName').val());
	validateBirthDateMSS('birthDate', $j('#birthMonth').val(), $j('#birthDate').val(), $j('#birthYear').val(), true);
	validateAddressMSS('addressLine1', $j('#addressLine1').val());
	validateAddress2MSS('addressLine2', $j('#addressLine2').val());
	validateCityMSS('city', $j('#city').val());
    validatePostalCode('postalCode', $j('#country').val(), $j('#postalCode').val());
	validateEmailMSS('email', $j('#email').val(), false);
	validateSpouseFirstNameMSS('spFirstName', $j('#spFirstName').val());
	validateSpouseMiddleNameMSS('spMiddleName', $j('#spMiddleName').val());
	validateSpouseLastNameMSS('spLastName', $j('#spLastName').val());
	isValidSpouseInfoMSS($j('#spFirstName').val(), $j('#spLastName').val());
	isValidSpouseInfoMSS($j('#spFirstName').val(), $j('#spLastName').val());
	validateDuesMSS('dues', $j("input[@name='membershipVO.selectedDues.duesID']:checked").val());
	validateDuesMSS('dues2', $j("input[@name='membershipVO.selectedDues.duesID']:checked").val());

    if (
		($j('#firstNameRow').hasClass('error')) ||
		($j('#middleNameRow').hasClass('error')) ||
		($j('#lastNameRow').hasClass('error')) ||
		($j('#birthDateRow').hasClass('error')) ||
		($j('#addressLine1Row').hasClass('error')) ||
		($j('#addressLine2Row').hasClass('error')) ||
		($j('#cityRow').hasClass('error')) ||
		($j('#postalCodeRow').hasClass('error')) ||
		($j('#emailRow').hasClass('error')) ||
		($j('#spFirstNameRow').hasClass('error')) ||
		($j('#spouseMiddleNameRow').hasClass('error')) ||
		($j('#spouseLastNameRow').hasClass('error')) ||
		($j('#duesRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorFormTop');
		return false;
    } else {
        return true;
    }

}

// ON SUBMISSION OF MSS RENEW FORM
function validateMSSRenewForm() {

	validateDuesMSS('dues', $j("input[@name='membershipVO.selectedDues.duesID']:checked").val());
	validateDuesMSS('dues2', $j("input[@name='membershipVO.selectedDues.duesID']:checked").val());
	validateFirstNameMSS('firstName', $j('#firstName').val());
	validateMiddleNameMSS('middleName', $j('#middleName').val());
    validateLastNameMSS('lastName', $j('#lastName').val());
	validateBirthDateMSS('birthDate', $j('#birthMonth').val(), $j('#birthDate').val(), $j('#birthYear').val(), true);
	validateAddressMSS('addressLine1', $j('#addressLine1').val());
	validateAddress2MSS('addressLine2', $j('#addressLine2').val());
	validateCityMSS('city', $j('#city').val());
    validatePostalCode('postalCode', $j('#country').val(), $j('#postalCode').val());
	validateEmailMSS('email', $j('#email').val(), false);

    if (
		($j('#duesRow').hasClass('error')) ||
		($j('#firstNameRow').hasClass('error')) ||
		($j('#middleNameRow').hasClass('error')) ||
		($j('#lastNameRow').hasClass('error')) ||
		($j('#birthDateRow').hasClass('error')) ||
		($j('#addressLine1Row').hasClass('error')) ||
		($j('#addressLine2Row').hasClass('error')) ||
		($j('#cityRow').hasClass('error')) ||
		($j('#postalCodeRow').hasClass('error')) ||
		($j('#emailRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorFormTop');
		return false;
    } else {
        return true;
    }

}

// ON SUBMISSION OF MSS BILLING FORM
function validateMSSBillingForm() {

	validateCardTypeMSS('cardType', $j("input[@name='membershipVO.ccType']:checked").val());
	validateFirstNameMSS('cardHolderFirstName', $j('#cardHolderFirstName').val());
	validateMiddleNameMSS('cardHolderMiddleName', $j('#cardHolderMiddleName').val());
    validateLastNameMSS('cardHolderLastName', $j('#cardHolderLastName').val());
	validateAddressMSS('addressLine1', $j('#addressLine1').val());
	validateAddress2MSS('addressLine2', $j('#addressLine2').val());
	validateCityMSS('city', $j('#city').val());

    if (
		($j('#cardTypeRow').hasClass('error')) ||
		($j('#cardNumberRow').hasClass('error')) ||
		($j('#cvvCodeRow').hasClass('error')) ||
		($j('#cardExpirationDateRow').hasClass('error')) ||
		($j('#cardHolderFirstNameRow').hasClass('error')) ||
		($j('#cardHolderMiddleNameRow').hasClass('error')) ||
		($j('#cardHolderLastNameRow').hasClass('error')) ||
		($j('#addressLine1Row').hasClass('error')) ||
		($j('#addressLine2Row').hasClass('error')) ||
		($j('#cityRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorFormTop');
		return false;
    } else {
        return true;
    }

}

// ON SUBMISSION OF MSS FIND ME FORM
function validateMSSFindMeForm() {

	validateBirthDateMSS('birthDate', $j('#birthMonth').val(), $j('#birthDate').val(), $j('#birthYear').val(), true);
	validateFirstNameMSS('firstName', $j('#firstName').val());
	validateLastNameMSS('lastName', $j('#lastName').val());
	validateCountry('country', $j('#countryCd').val());

    if (
		($j('#birthDateRow').hasClass('error')) ||
		($j('#firstNameRow').hasClass('error')) ||
		($j('#lastNameRow').hasClass('error')) ||
		($j('#countryRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorFormTop');
		return false;
    } else {
        return true;
    }

}

// ON SUBMISSION OF EDIT PROFILE FORM
function validateEditProfileForm() {

	validateFirstName('firstName', $j('#firstName').val());
	validateLastName('lastName', $j('#lastName').val());
	validateBirthDate('birthDate', $j('#birthMonth').val(), $j('#birthDate').val(), $j('#birthYear').val(), true);
	validatePostalCode('postalCode', $j('#countryCd').val(), $j('#postalCode').val());
	validateCountryState('stateProvince', $j('#countryCd').val());

	if (
		($j('#firstNameRow').hasClass('error')) ||
		($j('#lastNameRow').hasClass('error')) ||
		($j('#postalCodeRow').hasClass('error')) ||
		($j('#birthDateRow').hasClass('error')) ||
		($j('#countryCdRow').hasClass('error')) ||
		($j('#stateProvinceRow').hasClass('error'))
	) {
		$j('#frontEndErrors').slideDown();
		scrollWindow('anchorEditProfile');
		return false;
	} else {
		return true;
	}

}

//ON SUBMISSION OF globalOutOutForm FORM
function validateUnsubscribeEmailForm() {
	
      validateEmail('emailAddress', $j('#emailAddress').val());

      if ($j('#emailAddressRow').hasClass('error')) {
            return false;
      } else {
            return true;
      }
}

// NEWSLETTERS
function updatePrograms(program) {
    $j('#appName').val(program);
    overlay('deleteProgramOverlay');
}

function deleteProgram() {
    var params = "appName=" + $j('#appName').val();
    var ajaxResponse = new $j.ajax({type: "POST",
        url: "/online-community/people/updateAARPPrograms.action?" + params,
        success: function(text) {
            $j('#AARPProgramsList').replaceWith(text);
            $j('#deleteProgramOverlay').dialog('close');
        }
    });
}

function cancelDeleteProgram() {
    $j("#aarpProgramsForm input:checkbox").attr('checked', true);
    $j('#deleteProgramOverlay').dialog('close');
}

// RESET PASSWORD
function submitResetPswd() {
    var param = "email=" + $j("#emailAddressForgot").val();
    var vRequest = $j.ajax({
		type: "GET",
		url: "/online-community/service/submitResetPassword.action",
        data: param,
        success: function(response) {
            //alert("response :" + response + response.length + $j.trim(response));
            if ($j.trim(response)) {
				response = response.replace(/^\s*/, "").replace(/\s*$/, "");
				showError('emailAddressForgot', response);
				return false;
            } else {
				hideError('emailAddressForgot');
                overlayClose('resetPasswordOverlay');
                overlay('resetPasswordSuccessOverlay');
                return true;
            }
        }
    });
}

// EDIT PROFILE
function updateLocationFields() {

    var countrySelect = document.getElementById("countryCd");

    var isUSA = (countrySelect.options[countrySelect.selectedIndex].value == 'United States');
    var isCanada = (countrySelect.options[countrySelect.selectedIndex].value == 'Canada');
    var isMexico = (countrySelect.options[countrySelect.selectedIndex].value == 'Mexico');

    var stateLabel = document.getElementById('stateLabelTD');
    var stateSelect = document.getElementById('stateSelectTD');

    var provinceLabel = document.getElementById('provinceLabelTD');
    var provinceCanadaSelect = document.getElementById('provinceCanadaSelectTD');
    var provinceMexicoSelect = document.getElementById('provinceMexicoSelectTD');

    var provinceTextLabel = document.getElementById('provinceTextTD');
    var provinceInput = document.getElementById('provinceInputTD');

    var canadaSelect = document.getElementById('canadaSelect');
    var mexicoSelect = document.getElementById('mexicoSelect');

    if (isUSA) {
        stateLabel.style.display = '';
        stateSelect.style.display = '';

        provinceLabel.style.display = 'none';
        provinceCanadaSelect.style.display = 'none';
        provinceMexicoSelect.style.display = 'none';

        provinceTextLabel.style.display = 'none';
        provinceInput.style.display = 'none';

        canadaSelect.disabled = true;
        mexicoSelect.disabled = true;

    } else if (isCanada) {
        stateLabel.style.display = 'none';
        stateSelect.style.display = 'none';

        provinceLabel.style.display = '';
        provinceCanadaSelect.style.display = '';
        provinceMexicoSelect.style.display = 'none';

        provinceTextLabel.style.display = 'none';
        provinceInput.style.display = 'none';

        canadaSelect.disabled = false;
        mexicoSelect.disabled = true;

    } else if (isMexico) {
        stateLabel.style.display = 'none';
        stateSelect.style.display = 'none';

        provinceLabel.style.display = '';
        provinceCanadaSelect.style.display = 'none';
        provinceMexicoSelect.style.display = '';

        provinceTextLabel.style.display = 'none';
        provinceInput.style.display = 'none';

        canadaSelect.disabled = true;
        mexicoSelect.disabled = false;

    } else {
        stateLabel.style.display = 'none';
        stateSelect.style.display = 'none';

        provinceLabel.style.display = 'none';
        provinceCanadaSelect.style.display = 'none';
        provinceMexicoSelect.style.display = 'none';

        provinceTextLabel.style.display = '';
        provinceInput.style.display = '';

        canadaSelect.disabled = true;
        mexicoSelect.disabled = true;
    }

}

function submitChangeEmail() {

    var newEmailId = $j("#newEmail").val();
    var newEmailConfirmId = $j("#newEmailConfirm").val();

    if (newEmailId != newEmailConfirmId) {

		$j('#progressBar').dialog('close');
        showError('newEmailAddressConfirm', 'Your e-mail and confirm e-mail must match.');
        return false;

    } else {

        var param = "newEmail=" + $j("#newEmail").val();
        var vRequest = $j.ajax({
			type: "GET",
			url: "/online-community/people/submitChangeEmail.action",
            data: param,
            success: function(text) {
                text = text.replace(/^\s*/, "").replace(/\s*$/, "");
                if (text != "") {
                    $j('#progressBar').dialog('close');
                    showError('newEmailAddressConfirm', text);
                    return false;
                } else {
                    hideError('newEmailAddressConfirm');
                    $j('#progressBar').dialog('close');
                    $j('#changeEmailOverlay').dialog('close');
                    overlay('changeEmailSuccessOverlay');
                    return true;
                }
            }
        });

    }
}

