
//  ************** CHECKOUT FUNCTIONS *************

checkoutCounter = 0;
function checkOut(){
    if (checkoutCounter == 0){
        checkoutCounter = 1;
        return true;
    }else{
        return false;
    }
}

//  ************** FORM DISPLAY FOR AB REGISTRATION *************
var abTypeSelected = false;
var abDates = true;

var browserName = navigator.appName;



//*** function to write out DOM access information for different browsers
function createFieldLocation(in_field){
	if (browserName=="Microsoft Internet Explorer"){
		var DOMaccessStr = "document.all." + in_field;
    }
    else{
		var DOMaccessStr = document.getElementById(in_field);
	}
	return DOMaccessStr;
}

function showAbFields(formName) {
	var form;
	var popUpSpan = false;
	if(formName == "quickNewsletters"){
	   form = window.document.quickNewsletters;
	}
	else if( formName == "quickNewslettersPopUp"){
	   form = window.document.quickNewslettersPopUp;
	   popUpSpan = true;
	}
	else if( formName == "registration1"){
	   form = window.document.registration1;
	}

		if(form.abUserInfo.value == "pregnant"){
			if(popUpSpan){
				eval(createFieldLocation("abPopExtras")).style.display ='';
				eval(createFieldLocation("childPopText")).style.display ="none";
				eval(createFieldLocation("pregnantPopText")).style.display ='';
			} else {
				eval(createFieldLocation("abExtras")).style.display ='';
				eval(createFieldLocation("childText")).style.display ="none";
				eval(createFieldLocation("pregnantText")).style.display ='';
			}
			abTypeSelected = true;
			abDates = true;
	    } else if(form.abUserInfo.value == "child"){
			if(popUpSpan){
				eval(createFieldLocation("abPopExtras")).style.display ='';
				eval(createFieldLocation("pregnantPopText")).style.display ="none";
				eval(createFieldLocation("childPopText")).style.display ='';
			} else {
				eval(createFieldLocation("abExtras")).style.display ='';
				eval(createFieldLocation("pregnantText")).style.display ="none";
				eval(createFieldLocation("childText")).style.display ='';
			}
			abTypeSelected = true;
			abDates = true;
	    } else if(form.abUserInfo.value == "Trying to adopt"){
			if(popUpSpan){
				if(eval(createFieldLocation("abPopExtras")).style.display == ''){
					eval(createFieldLocation("abPopExtras")).style.display ='none';
				}
			} else {
				if(eval(createFieldLocation("abExtras")).style.display == ''){
					eval(createFieldLocation("abExtras")).style.display ='none';
				}
			}
			abTypeSelected = true;
			abDates = false;
	    } else if(form.abUserInfo.value == "Trying to conceive"){
			if(popUpSpan){
				if(eval(createFieldLocation("abPopExtras")).style.display == ''){
					eval(createFieldLocation("abPopExtras")).style.display ='none';
				}
			} else {
				if(eval(createFieldLocation("abExtras")).style.display == ''){
					eval(createFieldLocation("abExtras")).style.display ='none';
				}
			}
			abTypeSelected = true;
			abDates = false;
	    } else if(form.abUserInfo.value == "Neither"){
			if(popUpSpan){
				if(eval(createFieldLocation("abPopExtras")).style.display == ''){
					eval(createFieldLocation("abPopExtras")).style.display ='none';
				}
			} else {
				if(eval(createFieldLocation("abExtras")).style.display == ''){
					eval(createFieldLocation("abExtras")).style.display ='none';
				}
			}
			abTypeSelected = true;
			abDates = false;
	    } else if(form.abUserInfo.value == "select"){
			if(popUpSpan){
				document.getElementByID("abPopExtras").style.display ='none';
				//eval(createFieldLocation("pregnantPopText")).style.display ="none";
				//eval(createFieldLocation("childPopText")).style.display ='none';
			} else {
				eval(createFieldLocation("abExtras")).style.display ='none';
				eval(createFieldLocation("pregnantText")).style.display ="none";
				eval(createFieldLocation("childText")).style.display ='none';
			}

			abTypeSelected = false;
			abDates = true;
	 }
}

function checkAbDateFields(form) {	
	var form = form;
	var success = true;
	if(!abTypeSelected) {
		alert("Please let us help you by selecting one of the dropdown values in the About me... section.");
		formField = form.abUserInfo;
		success=false;
	} else if (abDates){
		if (!checkMonthDateYear(form)) {
			success=false;
		}
	} else if (form.newsletters[0]) {		
		for (var j = 0; j < 15; j++) {					
			if(form.newsletters[j].value == "AB1"){						
				if(form.newsletters[j].checked){						
					if (!checkAbDates(form)){
						success=false;
					} 
				} 
				j = 16;
			} else {
				success=true;
			}
		}	
	} 
	return (success);
}

function checkAbDates(form) {
	var form = form;
	if (!abDates){
		alert("In order to sign up for the Weekly Ages and Stages Newsletter you must be pregnant or have an infant or child.");
		formField = form.abUserInfo;
		return (false);
	}
}

//  ************** STRING FORM VALIDATION FUNCTIONS *************

function checkCharacterSpecialString(formValue) {
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \.-&/";
	var checkStr = formValue;
	var allValid = true;	
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
		allValid = false;
		break;
		}
	}
	if (!allValid)	{
		return (false);	
	}
	else {
		return (true);
	}
}

function checkCharacterNumberString(formValue) {		
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 \.";
	var checkStr = formValue;
	var allValid = true;	
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
		allValid = false;
		break;
		}
	}
	if (!allValid)	{
		return (false);	
	}
	else {
		return (true);
	}
}

function checkCharacterNumberSpecialString(formValue) {		
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 \.-&/";
	var checkStr = formValue;
	var allValid = true;	
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
		allValid = false;
		break;
		}
	}
	if (!allValid)	{
		return (false);	
	}
	else {
		return (true);
	}
}

function checkAlphaString(formValue) {
	var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \.";
	var checkStr = formValue;
	var allValid = true;	
	for (i = 0;  i < checkStr.length;  i++){
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length){
		allValid = false;
		break;
		}
	}
	if (!allValid)	{
		return (false);	
	}
	else {
		return (true);
	}
}

function checkForPOBox(myPOBox)  {
   var checkPOBoxString = myPOBox.match(/\b(((\PO BOX)|(\P.O. BOX)|(\PO. BOX)|(\P.O BOX)|(\PO.BOX)|(\P.O.BOX)|(\POBOX)|(\POST OFFICE BOX)|(\POSTOFFICE BOX)))\b/gi);
   if (!checkPOBoxString) {
	return (true);
   }
   else {
	  return (false);
   }
}

function checkEmail(emailString) {
		var newString = emailString.match(/^[^@ ]+@[\w\-]+(\.[\w\-]{2,20})+$/);
   if (!newString) {
   return (false);
   }
   else {
      return (true);
   }
}

function validateUSPhone( strValue ) {
  var objRegExp  = /(^\(([1-9]\d{2}\)\s?\d{3}\-\d{4})|([1-9]\d{2}\s?\d{3}\-\d{4})|([1-9]\d{2}\s?\d{3}\s?\d{4})|([1-9]\d{2}\-\d{3}\s?\d{4})|([1-9]\d{2}\-\d{3}\-\d{4})|([1-9]\d{2}\/?\d{3}\/?\d{4})|([1-9]\d{2}\/?\d{3}\-?\d{4})|([1-9]\d{2}\/\s?\d{3}\-?\d{4})|([1-9]\d{2}\/\s?\d{3}\/?\d{4})|([1-9]\d{2}\/\s?\d{3}\s?\d{4})|\(([1-9]\d{2}\)\s?\d{3}\s?\d{4})$)/;
  return objRegExp.test(strValue);
}

//  ************** INDIVIDUAL FORM FEILD VALIDATION FUNCTIONS *************

var recipientError = "";  // **** set to null for errors messeges unless set at the functions below ****

function validateFirstName(formFeild) {			
	if(formFeild.value == "") {	
		alert(recipientError + " First Name field required.");
		return (false);
	} else if(!checkCharacterSpecialString(formFeild.value)) {
        alert(recipientError + "First Name field is limited to alpha and .-&/ characters only.");
		return (false);	
    } else {
		return (true);	
    }
}

function validateLastName(formFeild) {		
	if(formFeild.value == "") {
        alert(recipientError + "Last Name field required.");
		return (false);
	} else if(formFeild.value.length == 1) {
        alert(recipientError + "Last Name field requires a minimum of two alpha characters.");
		return (false);
	} else if(!checkCharacterSpecialString(formFeild.value)) {
        alert(recipientError + "Last Name field is limited to alpha and .-&/ characters only.");
		return (false);			
	} else {
		return (true);	
    }
}

function validateAddress1(formFeild) {		
	if(formFeild.value=="") {
	 	alert(recipientError + "Address 1 field required.");
	    return (false);
	} else if(formFeild.value.length == 1) {
		alert(recipientError + "Address 1 field requires a minimum of two characters.");
		return (false);		
	} else if(!checkCharacterNumberSpecialString(formFeild.value)) {
		alert(recipientError + "Address 1 field limited to alpha, numeric and these special characters .-&/.");
		return (false);	
	} else {
		return (true);	
    }
}

function validateAddressPO(formFeild) {		
	if(!checkForPOBox(formFeild.value.toUpperCase())) {
		alert(recipientError + "Address 1 cannot contain a Post Office Box. We do not ship books and/or products to P.O.Boxes.");
		return (false);
	} else {
		return (true);	
    }
}

function validateAddress2(formFeild) {		
	if(checkCharacterNumberSpecialString(formFeild.value) == false) {
        alert(recipientError + "Address 2 field limited to alpha, numeric and these special characters .-&/.");
		return (false);
	} else {
		return (true);	
    }
}

function validateCity(formFeild) {		
	if (formFeild.value=="") {
        alert(recipientError + "City field required.");
       	return (false);
	} else if(formFeild.value.length == 1) {
        alert(recipientError + "City field requires a minimum of two characters.");
		return (false);
	} else if(!checkCharacterNumberString(formFeild.value)) {
        alert(recipientError + "City field does not allow any special characters.");
		return (false);
	} else if(!checkAlphaString(formFeild.value)) {
        alert(recipientError + "City field is limited to alpha characters.");
		return (false);
    } else {
		return (true);	
    }
}

function validateState(formFeild) {		
	if(formFeild.value=="") {
        alert(recipientError + "State field required.");
        return (false);    
    } else {
		return (true);	
    }
}

function validatePostalCode(formFeild) {		
	if (formFeild.value=="") {
        alert(recipientError + "Zip code field required.");
        return (false);
	} else if (formFeild.value.length <= 4) {
        alert("Please enter a valid zip or postal code for the selected state.");
        return (false);
	} else {
		return (true);	
    }
}

function validatePhone(formFeild) {		
	if(formFeild.value=="") {
		alert(recipientError + "Phone number field required.");
	    return (false);
	} else if(!validateUSPhone(formFeild.value)) {
        alert("Please enter your " + recipientError + " phone number with your area code.  example \"555-555-5555\"");
		return (false);
	} else {
		return (true);	
    }
}

function validateEmailAddress(formFeild) {		
	if(formFeild.value=="") {
		alert(recipientError + "E-mail address field required.");
		return (false);
	} else if(!checkEmail(formFeild.value)) {
		alert("Sorry, we have detected an error with your " + recipientError + " e-mail address.  Please check your e-mail address for errors and place your order again.  SAMPLE E-mail: janesmith@aol.com");
		return (false);
	} else {
		return (true);	
    }
}

function checkMonthDateYear(form){
	if(form.dueDateMonth.value=="0") {
		alert("Invalid due date month");
		formField = form.dueDateMonth;
		return (false);
	} else if(form.dueDateYear.value=="") {
		alert("Invalid due date year");
		formField = form.dueDateYear;
		return (false);
	} else if (form.dueDateDay.value=="0") {
		alert("Invalid due date day");		
		formField = form.dueDateDay;
		return (false);
	} else {
		return (true);
	}
}

//  ************** ACTUAL FORM VALIDATION FUNCTIONS *************

function validateCheckoutFields(formName) {	
	var form;
	var success = true;
    var message;
	recipientError = "";

	if(formName == "bhgsubscribe"){
	   	form = window.document.bhgsubscribe;
	} else if( formName == "bhgsubscribepop"){
	    form = window.document.bhgsubscribepop;
	} else if (formName == "checkoutForm") {
	    form = window.document.checkoutForm;
	} else if (formName == "multiAddress") {
	    form = window.document.multiAddress;
	} else if (formName == "registration2") {
	    form = window.document.registration2;
	}
    if(!validateFirstName(form.validFirstName)){
		success=false;	
		formField = form.validFirstName;
    } else if(!validateLastName(form.validLastName)){
		success=false;	
		formField = form.validLastName;		
	} else if(!validateCity(form.validCity)){
		success=false;	
		formField = form.validCity;		
    } else if(!validatePostalCode(form.validPostalCode)){
		success=false;
		formField = form.validPostalCode;
    }
	if(success) {
		if(form.validCountry) {
			if(form.validCountry.value=="Other") {
			} else if(!validateState(form.validState)){
				success=false;
				formField = form.validState;
			}
		} else if(!validateState(form.validState)){
			success=false;
			formField = form.validState;
		}
    }
	if(success) {
        if(form.validAddress1) {
			if(!validateAddress1(form.validAddress1)){
				success=false;
				formField = form.validAddress1;
    		}
		}
    }
	if(success) {
        if(form.validAddress1prod) {
			if(!validateAddress1(form.validAddress1prod)){
				success=false;	
				formField = form.validAddress1prod;
    		}
		}
     }	 
	 if(success) {
        if(form.validAddress2) {		
			if(!validateAddress2(form.validAddress2)){
				success=false;	
				formField = form.validAddress2;
    		}
		}
    }
	if(success) {
        if(form.validPhone) {	
			if(form.elements["/atg/userprofiling/ProfileFormHandler.promotions"]) {					
				if(checkBoxValue) {
					if(!validatePhone(form.validPhone)){
						success=false;	
						formField = form.validPhone;
					}
				} 			
			} else {
				if(!validatePhone(form.validPhone)){
					success=false;	
					formField = form.validPhone;
				}
    		}
		}		
    }	 
	if(success) {
        if(form.validEmailAddress) {		
			if(!validateEmailAddress(form.validEmailAddress)){
				success=false;	
				formField = form.validEmailAddress;
    		}
		}
    }
    if(success) {
		if(form.motherBirthState) {			
			if(formName == "registration2") {					
				if(form.validAbSubscription) {
					if(form.validAbSubscription.checked) {						
						if(form.motherBirthState.value=="") {
							alert("Please enter mother's birth state");
							success = false;
							formField = form.motherBirthState;
						} 
					}					
				}
			} else {		
				if(form.motherBirthState.value=="") {
					alert("Please enter mother's birth state");
					success = false;
					formField = form.motherBirthState;
				}			
			} 	
		}
    }

    if(success) {
		if(form.motherBirthDayOfMonth) {
            if(formName == "registration2") {
				if(form.validAbSubscription) {
					if(form.validAbSubscription.checked) {
						if(form.motherBirthDayOfMonth.value=="") {
							alert("Please enter mother's birth day");
							success = false;
							formField = form.motherBirthDayOfMonth;
						}
					}
				}
			} else {
				if(form.motherBirthDayOfMonth.value=="") {
					alert("Please enter mother's birth day");
					success = false;
					formField = form.motherBirthDayOfMonth;
				}
			}
		}
    }

    if(success) {
		if(form.dueDateMonth) {
			if(!abDatesSelected) {
				alert("Please let us help you by selecting one of the dropdown values in the About me... section.");
				success=false;
				formField = document.all.abUserInfo;
			} else if (abDates){
				if(form.dueDateMonth.value=="0") {
					alert("Invalid due date month");
					success=false;
					formField = form.dueDateMonth;
				} else if(form.dueDateYear.value=="Year") {
					alert("Invalid due date year");
					success=false;
					formField = form.dueDateYear;
				} else if (form.dueDateDay.value=="0") {
					alert("Invalid due date day");
					success=false;
					formField = form.dueDateDay;
				}	
			}
		}		
	}
	if(!success) {
		formField.focus();
    	return success;
    } else {
        return true;
    }
}

function validateMyAccountFields(formName) {
	var form;
	var success = true;
    var message;
	form = window.document.myAccount;

    if (isNaN(form.validAccountNumber.value)) {
        alert("This field is limited to numbers only.");
		formField = form.validAccountNumber ;
        success=false;
	} else if(form.validAccountNumber.value.length <= 9) {
        alert("Please enter all ten digits of your account number");
        formField = form.validAccountNumber ;
		success=false;
	} else if(!validateEmailAddress(form.validEmailAddress)){
		success=false;	
		formField = form.validEmailAddress;		
    } else if(!validateFirstName(form.validFirstName)){
		success=false;	
		formField = form.validFirstName;
    } else if(!validateLastName(form.validLastName)){
		success=false;	
		formField = form.validLastName;		
	} 
    if(!success) {
		formField.focus();
    	return success;
    } else {
		 return true;
    }
}

function validateReferFriend(formName) {
	var form;
	var success = true;
    var message;
	form = window.document.referFriend;
	recipientError = "Recipients";
	
	if(!validateFirstName(form.firstName)){
		success=false;	
		formField = form.firstName;
    } else if(!validateEmailAddress(form.email)){
		success=false;	
		formField = form.email;		
	} 
	if(!success) {
		formField.focus();
    	return success;
    } else {
        return true;
    }
}

function validateNewsletterSignUp(formName) {
	var form;
	var success = true;
    var message;
	form = window.document.registration1;

	if(!validateEmailAddress(form.validEmailAddress)){
		success=false;	
		formField = form.validEmailAddress;		
    } else if(!validateFirstName(form.validFirstName)){
		success=false;	
		formField = form.validFirstName;
    }
	if(success) {
		if(form.dueDateMonth) {		
			if(!checkAbDateFields(form)) {
				success=false;				
			}	
		}
	}
	if(!success) {
		formField.focus();
    	return success;
    } else {
		return true;
    }
}

function validateQuickNewsletterSignUp(formName) {
    var form;    
	var success = true;
	
	if(formName == "quickNewsletters"){
	   form = window.document.quickNewsletters;
	} else if( formName == "quickNewslettersPopUp"){
	   form = window.document.quickNewslettersPopUp;
	} 
	
	if(!validateFirstName(form.firstName)){
		success=false;
		formField = form.firstName;
    } else if(!validateEmailAddress(form.email)){
		success=false;
		formField = form.email;
    } 
	if(success) {
		if(form.dueDateMonth) {		
			if(!checkAbDateFields(form)) {
				success=false;				
			}	
		}		
	}
	if(!success) {
		formField.focus();
    	return success;
    } else {
		return true;
    }
}

function validateGiftAddress(formName) {
	var form;
	var success = true;
    var message;
	recipientError = "Recipients";
	
	if(formName == "bhgsubscribe"){
	   form = window.document.bhgsubscribe;
	} else if( formName == "bhgsubscribepop"){
	    form = window.document.bhgsubscribepop;
	} else if (formName == "checkoutForm") {
	    form = window.document.checkoutForm;
	} else if (formName == "multiAddress") {
	    form = window.document.multiAddress;
	}	
	if(!validateFirstName(form.validGiftFirstName)){
		success=false;	
		formField = form.validGiftFirstName;
    } else if(!validateLastName(form.validGiftLastName)){
		success=false;	
		formField = form.validGiftLastName;		
	} else if(!validateAddress1(form.validGiftAddress1)){
		success=false;	
		formField = form.validGiftAddress1;		
	} else if(!validateAddress2(form.validGiftAddress2)){
		success=false;	
		formField = form.validGiftAddress2;		
	} else if(!validateCity(form.validGiftCity)){
		success=false;	
		formField = form.validGiftCity;		
    } else if(!validateState(form.validGiftState)){
		success=false;	
		formField = form.validGiftState;		
    } else if(!validatePostalCode(form.validGiftPostalCode)){
		success=false;	
		formField = form.validGiftPostalCode;		
    } 
	if(!success) {
		formField.focus();
    	return success;
    } else {
        return true;
    }
}

function validateOffSiteForms(formName) {	
	var form;
	var success = true;
    var message;
	recipientError = "";

	if(formName == "bhgsubscribe"){
	   	form = window.document.bhgsubscribe;
	} else if (formName == "checkoutForm") {
	    form = window.document.checkoutForm;
	} else if (formName == "multiAddress") {
	    form = window.document.multiAddress;
	} 
    if(!validateFirstName(form.firstName)){
		success=false;	
		formField = form.firstName;
    } else if(!validateLastName(form.lastName)){
		success=false;	
		formField = form.lastName;		
	} else if(!validateCity(form.city)){
		success=false;	
		formField = form.city;		
    } else if(!validateState(form.state)){
		success=false;	
		formField = form.state;		
    } else if(!validatePostalCode(form.postalCode)){
		success=false;	
		formField = form.postalCode;		
    } 
	if(success) {
        if(form.address1) {	
			if(!validateAddress1(form.address1)){
				success=false;	
				formField = form.address1;
    		}
		}
    }	  
	 if(success) {
        if(form.validAddress2) {		
			if(!validateAddress2(form.address2)){
				success=false;	
				formField = form.address2;
    		}
		}
    } 
	if(success) {
        if(form.email) {		
			if(!validateEmailAddress(form.email)){
				success=false;	
				formField = form.email;
    		}
		}
    }
    if(success) {
		if(form.dueDateMonth) {
			if(form.dueDateMonth.value=="0") {
				alert("Invalid due date month");
				success=false;
				formField = form.dueDateMonth;
			} else if(form.dueDateYear.value=="Year") {
				alert("Invalid due date year");
				success=false;
				formField = form.dueDateYear;
			} else if (form.dueDateDay.value=="0") {
				alert("Invalid due date day");
				success=false;
				formField = form.dueDateDay;
			}
			if(form.motherBirthState) {
				if(form.motherBirthState.value=="") {
					alert("Please enter mother's birth state");
					success = false;
					formField = form.motherBirthState;
				}
			}
		}
    }
	if(!success) {
		formField.focus();
    	return success;
    } else {
        return true;
    }
}

function offSitePopupPos(name,link,width,height,top,left) {
	var remote = null;
    remote = window.open(link,name,"width=" + width + ",height=" + height + ",screenX=" + left + ",screenY=" + top + ",top=" + top + ",left=" + left + ",resizable=yes,scrollbars=yes");
    if (remote != null) {
	  if (remote.opener == null) {
  	    remote.opener = self;
	  }
      remote.name = name;
      remote.focus();
    }
}

function validateRegStep1(formName) {
	var form;
	var success = true;
    var message;
	form = window.document.registration1;
    
	if(form.validEmailAddress.value==""){
        alert("Email field required.");
        success=false;
		formField = form.validEmailAddress;		
    } else if(form.validPassword.value == "") {
        alert("Password field required.");
        formField = form.validPassword ;
		success=false;	
	} else if(!validateFirstName(form.validFirstName)){
		success=false;	
		formField = form.validFirstName;
    } 
	if(success) {
		if(form.dueDateMonth) {		
			if(!checkAbDateFields(form)) {
				success=false;				
			}	
		}		
	}
	if(!success) {
		formField.focus();
    	return success;
    } else {
		return true;
    }
}

