document.write("<script language='JavaScript' type='text/javascript' src='/js/prototype.js'></script>");


////////////////////////////////////////////////////////////////////////////////
// FORM VALILDATION FUNCTIONS
///////////////////////////////////////////////////////////////////////////////

/**************************************************
 * checkForm()
 * input vars:	form (document.form)
 * return vars:	true/false (boolean)
 * notes:		the master function for validating forms.
 * 				check all elements in form by calling each 
 * 				sub validate function for each field. 
 */
function checkForm(form){
	var elements = Form.getElements(form);
	
	var errorMessages = "";

	for (var i=0; i<elements.length; i++){
		if (elements[i].name == 'first_name'){
			errorMessages += checkFirstName(form);
		}
		else if (elements[i].name == 'last_name'){
			errorMessages += checkLastName(form);
		}
		else if (elements[i].name == 'address'){
			errorMessages += checkAddress(form);
		}
		else if (elements[i].name == 'city'){
			errorMessages += checkCity(form);
		}
		else if (elements[i].name == 'aptno'){
			errorMessages += checkAptno(form);
		}
		else if (elements[i].name == 'zip_code'){
			errorMessages += checkZipCode(form);
		}
		else if (elements[i].name == 'state'){
			errorMessages += checkState(form);
		}
		else if (elements[i].name == 'year_birth'){
			errorMessages += checkYearBirth(form);
		}
		else if (elements[i].name == 'month_birth'){
			errorMessages += checkMonthBirth(form);
		}
		else if (elements[i].name == 'day_birth'){
			errorMessages += checkDayBirth(form);
		}
		else if (elements[i].name == 'gender'){
			errorMessages += checkGender(form);
		}
		else if (elements[i].name == 'work_area_code'){
			errorMessages += checkPhone(form,'work_area_code');
		}
		else if (elements[i].name == 'work_prefix'){
			 errorMessages += checkPhone(form, 'work_prefix');
		}
		else if (elements[i].name == 'work_suffix'){
			 errorMessages += checkPhone(form, 'work_suffix');
		}
		else if (elements[i].name == 'home_area_code'){
			errorMessages += checkPhone(form,'home_area_code');
		}
		else if (elements[i].name == 'home_prefix'){
			 errorMessages += checkPhone(form,'home_prefix');
		}
		else if (elements[i].name == 'home_suffix'){
			 errorMessages += checkPhone(form,'home_suffix');
		}
		if (elements[i].name == 'member_password'){
			 errorMessages += checkMemberPassword(form);
		}
		else if (elements[i].name == 'member_email'){
			errorMessages += checkMemberEmail(form);
		}
		else if (elements[i].name == 'home_phone'){
			errorMessages += checkPhone(form,'home_phone');
		}
		else if (elements[i].name == 'work_phone'){
			errorMessages += checkPhone(form, 'work_phone');
		}
		else if (elements[i].name == 'gift_id'){
			errorMessages += checkGift(form);
		}
		else if (elements[i].name == 'agree'){
			errorMessages += checkAgree(form);
		}
		
	}

	errorMessages += checkConfirm(form);
	if (errorMessages != ""){
		alert(errorMessages);
		return false;
	}
	return true;
}

/**************************************************
 * checkConfirm()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validation function, will be 
 * 				call by checkForm(). 
 * 				will match up two confirming fields
 * 				and check their values. If the values
 * 				don't match, it will return error.
 */
function checkConfirm(form){
	var elements = Form.getElements(form);
	var errorMessages = "";

	for (var i=0; i<elements.length; i++){
		if (/^confirm_/.test(elements[i].name)){ //if element name == confirm_
			var matchName = elements[i].name.slice(8); //cut the rest off, and save
			for (var j=0; j<elements.length; j++){
				if (elements[j].name == matchName){
					if (elements[j].value != elements[i].value){	
						errorMessages += matchName + " Not Match!\n";
					}
				}
			}
		}
	}
	return errorMessages;
}
/**************************************************
 * checkEmail()
 * input vars:	form (document.form)
 * return vars:	errorMessage(String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkMemberEmail(form){
	var errorMessages = "";
	var regExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
	with (form){
		if (form.member_email.value.length > 0){
			if (!regExp.test(member_email.value)){
				errorMessages = "Please enter a valid email.\n";
			}
		}else{
			errorMessages = "Please enter an email.\n";
		}
	}
	return errorMessages;
}
		
/**************************************************
 * checkFirstName()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkFirstName(form){
	with (form)
	{
		var errorMessages = "";
		if (first_name.value.length < 1){
			errorMessages = "Please enter first name.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(first_name.value)){
			errorMessages = "Please enter a valid character for first name.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkLastName()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkLastName(form){
	with (form)
	{
		var errorMessages = "";
		if (last_name.value.length < 1){
			errorMessages = "Please enter last name.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(last_name.value)){
			errorMessages = "Please enter a valid character for last name.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkAddress()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkAddress(form){
	var errorMessages = "";
	with (form)
	{
		if (address.value.length < 1){
			errorMessages = "Please enter address.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(address.value)){
			errorMessages = "Please enter a valid character for address.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkCity()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkCity(form){
	var errorMessages = "";
	with (form)
	{
		if (city.value.length < 1){
			errorMessages = "Please enter city.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(city.value)){
			errorMessages = "Please enter valid character for city.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkZipCode()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkZipCode(form){
	var errorMessages = "";
	with (form)
	{
		if (zip_code.value.length != 5){
			errorMessages = "Please enter a 5 digits zip code.\n";
			return errorMessages;
		}
		if (!checkIsNumber(zip_code.value)){
			errorMessages = "Please enter numbers only for zip code.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(zip_code.value)){
			errorMessages = "Please enter valid character for zip code.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkMonthBirth()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkMonthBirth(form){
	var errorMessages = "";
	with (form)
	{
		if (month_birth.value == null || month_birth.value.toLowerCase() == "select" || month_birth.value == 'null'){
			errorMessages = "Please select month of birth.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkPhone()
 * input vars:	form (document.form)
 * input vars: 	id (string)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkPhone(form, fieldId){
	var errorMessages = "";
	with (form)
	{
		if (fieldId == "home_area_code"){
			if (home_area_code.value.length != 3){
				errorMessages = "Please enter a correct home area code.\n";
				return errorMessages;
			}
			if (!checkIsNumber(home_area_code.value)){
				errorMessages = "Please enter numbers only for home area code.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(home_area_code.value)){
				errorMessages = "Please enter valid character for home area code.\n";
				return errorMessages;
			}
		}
		if (fieldId == "home_prefix"){
			if (home_prefix.value.length != 3){
				errorMessages = "Please enter a correct home prefix.\n";
				return errorMessages;
			}
			if (!checkIsNumber(home_prefix.value)){
				errorMessages = "Please enter numbers only for home prefix.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(home_prefix.value)){
				errorMessages = "Please enter valid character for home prefix.\n";
				return errorMessages;
			}
		}
		if (fieldId == 'home_suffix'){
			if (home_suffix.value.length != 4){
				errorMessages = "Please enter a correct home suffix.\n";
				return errorMessages;
			}
			if (!checkIsNumber(home_suffix.value)){
				errorMessages = "Please enter numbers only for home suffix.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(home_suffix.value)){
				errorMessages = "Please enter valid character for home suffix.\n";
				return errorMessages;
			}
		}
		if (fieldId == 'work_area_code'){
			if (work_area_code.value.length != 3){
				errorMessages = "Please enter a correct work area code.\n";
				return errorMessages;
			}
			if (!checkIsNumber(work_area_code.value)){
				errorMessages = "Please enter numbers only for work area code.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(work_area_code.value)){
				errorMessages = "Please enter valid character for work area code.\n";
				return errorMessages;
			}
		}
		if (fieldId == 'work_prefix'){
			if (work_prefix.value.length != 3){
				errorMessages = "Please enter a correct work prefix.\n";
				return errorMessages;
			}
			if (!checkIsNumber(work_prefix.value)){
				errorMessages = "Please enter numbers only for work prefix.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(work_prefix.value)){
				errorMessages = "Please enter valid character for work_prefix.\n";
				return errorMessages;
			}
		}
		if (fieldId == 'work_suffix'){
			if (work_suffix.value.length != 4){
				errorMessages = "Please enter a correct work_suffix.\n";
				return errorMessages;
			}
			if (!checkIsNumber(work_suffix.value)){
				errorMessages = "Please enter numbers only for work suffix.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(work_suffix.value)){
				errorMessages = "Please enter valid character for work suffix.\n";
				return errorMessages;
			}
		}
		if (fieldId == "home_phone"){
			if (home_phone.value.length != 10){
				errorMessages = "Please enter a correct home phone.\n";
				return errorMessages;
			}
			if (!checkIsNumber(home_phone.value)){
				errorMessages = "Please enter numbers only for home phone.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(home_phone.value)){
				errorMessages = "Please enter valid character for home phone.\n";
				return errorMessages;
			}
		}
		if (fieldId == 'work_phone'){
			if (work_phone.value.length != 10){
				errorMessages = "Please enter a correct work phone.\n";
				return errorMessages;
			}
			if (!checkIsNumber(work_phone.value)){
				errorMessages = "Please enter numbers only for work phone.\n";
				return errorMessages;
			}
			if (!checkValidCharacter(work_phone.value)){
				errorMessages = "Please enter valid character for work phone.\n";
				return errorMessages;
			}
		}
	}
	return errorMessages;
}


/**************************************************
 * checkMemberPassword()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkMemberPassword(form){
	var errorMessages = "";
	with (form)
	{
		if (member_password.value.length < 1){
			errorMessages = "Please enter password.\n";
			return errorMessages;
		}
		if (!checkValidCharacter(member_password.value)){
			errorMessages = "Please enter valid character for password.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkAptno()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkAptno(form){
	var errorMessages = "";
	with (form)
	{
		if (!checkValidCharacter(aptno.value)){
			errorMessages = "Please enter valid character for apt number.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkState()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkState(form){
	var errorMessages = "";
	with (form)
	{
		if (state.value == null || state.value.toLowerCase() == 'select' || state.value == 'null' || state.value == 0){
			errorMessages = "Please select state.\n";
		}
	}
	return errorMessages;
}

/**************************************************
 * checkYearBirth()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkYearBirth(form){
	var errorMessages = "";
	with (form)
	{
		if (year_birth.value == null || year_birth.value.toLowerCase() == "select" || year_birth.value == 'null'){
			errorMessages = "Please select year of birth.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkDayBirth()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkDayBirth(form){
	var errorMessages = "";
	with (form)
	{
		if (day_birth.value == null || day_birth.value.toLowerCase() == "select" || day_birth.value == 'null'){
			errorMessages = "Please select day of birth.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkGender()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkGender(form){
	var errorMessages = "";
	with (form)
	{
		if (gender.value == null || gender.value.toLowerCase() == "select" || gender.value == 'null'){
			errorMessages = "Please select gender.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkGift()
 * input vars:	form (document.form)
 * return vars:	errorMessages (String)
 * notes:		sub validate function that will be 
 * 				call by checkForm()
 */
function checkGift(form){
	var errorMessages = "";
	with (form)
	{
		if (gift_id.value == ""){
			errorMessages = "Please choose a FREE gift.\n";
			return errorMessages;
		}
		if (!checkIsNumber(gift_id.value)){
			errorMessages = "Please choose a FREE gift.\n";
			return errorMessages;
		}
	}
	return errorMessages;
}

/**************************************************
 * checkAgree()
 * input vars: form (document.form)
 * return vars: errorMessages (String)
 * notes: sub validate function that will be called
 * 		  by checkForm()
 */
 function checkAgree(form){
 	var errorMessages = "";
 	with (form){
 		if(!agree.checked){
 			errorMessages = "You must agree to the terms to continue.";
 			return errorMessages;
 		}
 	}
 	return errorMessages;
 }
/**************************************************
 * checkIsNumber()
 * input vars:	string (String)
 * return vars:	isNumber (boolean)
 * notes:		sub validate function that will be 
 * 				call by other sub validate functions.
 */			
function checkIsNumber(string){
	var validChars = "0123456789.";
	var isNumber = true;
	var chars;
	for (var i=0; i <string.length && isNumber == true; i++){
		chars = string.charAt(i);
		if (validChars.indexOf(chars) == -1){
			isNumber = false;
		}
	}
	return isNumber;
}

/**************************************************
 * checkValidCharacter()
 * input vars:	string (String)
 * return vars:	true/false (boolean)
 * notes:		sub validate function that will be 
 * 				call by other sub validate functions.
 */
function checkValidCharacter(string){
	if ( /["\\\/:;]/.test(string)){
		return false;
	}
	else {
		return true;
	}
}

////////////////////////////////////////////////////////////////////////////////
// OTHERS
///////////////////////////////////////////////////////////////////////////////

/**************************************************
 * maximizeWindow()
 * input vars:	void
 * return vars:	void
 * notes:		will maximize the window
 */
 /***********************************************
* Auto Maximize Window Script- � Dynamic Drive (www.dynamicdrive.com)
* This notice must stay intact for use
* Visit http://www.dynamicdrive.com/ for this script and 100's more.
***********************************************/
 max = true;
function maximizeWindow(){
	if (max == true){
		top.window.moveTo(0,0);
		if (document.all) {
			top.window.resizeTo(screen.availWidth,screen.availHeight);
		}
		else if (document.layers||document.getElementById) {
			if (top.window.outerHeight<screen.availHeight||top.window.outerWidth<screen.availWidth){
				top.window.outerHeight = screen.availHeight;
				top.window.outerWidth = screen.availWidth;
			}
		}
	}
}


/**************************************************
 * noMax()
 * input vars:	void
 * return vars:	void
 * notes:		will disable maximixing of the window
 */
 
 function noMax(){
 	max = false;
 }
/**************************************************
 * changeImages()
 * input vars:	imgId (String)
 * 				replImgPth (String)
 * return vars:	void
 * notes:		change images
 */
function changeImages(imgId, replImgPth) {
	document.getElementById(imgId).src = replImgPth;
}

/**************************************************  
 * emailFilterAbuse()  
 * input vars:     void  
 * return vars:     void  
 * notes:     This function is intended to be called from   
 *        onKeyUp prevent emails with spam or abuse in them  
 */
function emailFilterAbuse(){  
     if (((document.getElementById("member_email").value.indexOf("spam") > -1) || (document.getElementById("member_email").value.indexOf("abuse") > -1)) ){  
          alert("Please enter a valid email address.");
          document.getElementById("member_email").value = "";  
          document.getElementById("member_email").focus();  
          return;  
     }  
}

/**************************************************
 * stateConvert()
 * input vars:	name (String)
 * return vars:	result (String)
 * notes:		take either state code or full state name.
 * 				base on input, wil return the oppisite.
 */
function stateConvert(name){
	var result = "";
	var stateNames = new Array( "Alaska" ,"Alabama" ,"Arkansas" ,"Arizona" ,"California" ,
							 "Colorado" ,"Connecticut" ,"Delaware" ,"Florida" ,"Georgia" ,
							 "Hawaii" ,"Iowa" ,"Idaho" ,"Illinois" ,"Indiana" ,"Kansas" , 
							 "Kentucky" ,"Louisiana" ,"Massachusetts" ,"Maryland" ,"Maine" ,
							 "Michigan" ,"Minnesota" ,"Missouri" ,"Mississippi" ,"Montana" ,
							 "North Carolina" ,"North Dakota" , "Nebraska" ,"New Hampshire" ,
							 "New Jersey" ,"New Mexico" ,"Nevada" ,"New York" ,"Ohio" ,
							 "Oklahoma" ,"Oregon" ,"Pennsylvania" ,"Puerto Rico" ,"Rhode Island" , 
							 "South Carolina" ,"South Dakota" , "Tennessee" , "Texas" ,"Utah" ,
							 "Virginia" ,"Vermont" ,"Washington" ,"Wisconsin" ,"West Virginia" ,
							 "Wyoming" );
		
	var stateCodes = new Array("AK", "AL","AR","AZ","CA","CO","CT","DE","FL","GA","HI","IA","ID",
							"IL","IN","KS","KY","LA","MA","MD","ME","MI","MN","MO","MS","MT",
							"NC","ND","NE","NH","NJ","NM","NV","NY","OH","OK","OR","PA","PR",
							"RI","SC","SD","TN","TX","UT","VA","VT","WA","WI","WV","WY");
	
	// check the length of name						
	if (name.length == 2){
		for (var i=0; i<50; i++){
			if (stateCodes[i] == name){
				result = stateNames[i]; 
			}
		}
	}
	else {
		for (var i=0; i<50; i++){
			if (stateNames[i] == name){
				result = stateCodes[i];
			}
		}
	}
	
	return result;
}

/**************************************************
 * autoTab()
 * input vars:	obj (document object)
 * input vars: 	event (string)- down or up
 * input vars:	len (int)- length of digits until tab
 * input vars:	next_field (string)- name of the next field to tab to
 * return vars: void
 * note:		auto tab for fields.
 * example:		onKeyDown="TabNext(this,'down',3)" onKeyUp="TabNext(this,'up',3,this.form.prefixH)
*/
function autoTab(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();
			}
		}
	}
}

/**************************************************
 * exitPop()
 * input var: 	void
 * return var: 	void
 * note:		exitPop() will be called everytime a page is onUnLoad.
 * 				pop varaible is set to yes by default.
*/
pop = true;
function exitPop(path){
	if(pop == true) {
		window.open(path);
	}
}

/**************************************************
 * noPop()
 * input var: 	void
 * return var: 	void
 * note:		noPop() will be called on onLoad if we don't want 
 * 				any pop ups.
*/
function noPop(){
	pop = false;
}

