//=================getProdCodeIndex===============// // Param: Product sku name. // // Returns: Index number of product sku. // // // var prodCodeHash = new Array(); prodCodeHash["CB"] = 1; prodCodeHash["CIP"] = 2; prodCodeHash["SCB"] = 3; prodCodeHash["PCB"] = 4; prodCodeHash["BC"] = 5; prodCodeHash["SCBPSM"] = 6; prodCodeHash["ENDOW"] = 7; function getProdCodeIndex(prodCode){ var returnVal = prodCodeHash[prodCode]; if(isNaN(String(returnVal))){ returnVal = 0; } return returnVal; } //================================================// //=================getProdCodeName================// // Param: Index number. // // Returns: Name of product sku. // // // var prodCodeArray = new Array(); prodCodeArray[1] = "CB"; prodCodeArray[2] = "CIP"; prodCodeArray[3] = "SCB"; prodCodeArray[4] = "PCB"; prodCodeArray[5] = "BC"; prodCodeArray[6] = "SCBPSM"; prodCodeArray[7] = "ENDOW"; function getProdCodeName(index){ var returnVal = ""; var tmpIndex = parseInt(index, 10); if(tmpIndex >= 1 && tmpIndex <= 7){ returnVal = String(prodCodeArray[tmpIndex]); } return returnVal; } //================================================// //=================getProdCodeTitle===============// // Param: Index number or product name. // // Returns: Product Title. // // // var prodCodeTitleArray = new Array(); prodCodeTitleArray[1] = "Conservation Biology"; prodCodeTitleArray[2] = "Conservation In Practice"; prodCodeTitleArray[3] = "SCB Membership"; prodCodeTitleArray[4] = "Pacific Conservation Biology"; prodCodeTitleArray[5] = "Biological Conservation"; prodCodeTitleArray[6] = "SCB Programs and Awards"; prodCodeTitleArray[7] = "SCB Endowment"; var prodCodeTitleHash = new Array(); prodCodeTitleHash["CB"] = prodCodeTitleArray[1]; prodCodeTitleHash["CIP"] = prodCodeTitleArray[2]; prodCodeTitleHash["SCB"] = prodCodeTitleArray[3]; prodCodeTitleHash["PCB"] = prodCodeTitleArray[4]; prodCodeTitleHash["BC"] = prodCodeTitleArray[5]; prodCodeTitleHash["SCBPSM"] = prodCodeTitleArray[6]; prodCodeTitleHash["ENDOW"] = prodCodeTitleArray[7]; function getProdCodeTitle(value){ var returnVal = ""; if(isNaN(String(value))){ returnVal = String(prodCodeTitleHash[value]); } else { var tmpIndex = parseInt(value, 10); if(tmpIndex >= 1 && tmpIndex <= 7){ returnVal = String(prodCodeTitleArray[tmpIndex]); } } return returnVal; } //================================================// //=================getProdCodeTitle===============// // Param: Index number of products to write out. // // // function writeProductFormVars(index){ document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); document.write(''); } //================================================// //=================processProducts================// // Param: Current form document. // // Returns: boolean error code value. // // // function processProducts(form, refreshAddressFlag, validateAddressFlag){ var error = false; if(refreshAddressFlag == null || refreshAddressFlag == true){ if(form["differentBilling"][0].checked){ refreshAddressForm(form); } } if(validateAddressFlag == null || validateAddressFlag == true){ if(!error) error = validateAddressForm(form); } if(!error) error = prepareProduct(form, "CB"); if(!error) error = prepareProduct(form, "CIP"); if(!error) error = prepareProduct(form, "SCB"); if(!error) error = prepareProduct(form, "PCB"); if(!error) error = prepareProduct(form, "BC"); if(!error) error = prepareDonation(form, "SCBPSM"); if(!error) error = prepareDonation(form, "ENDOW"); //if(!error) error = prepareCCtype(form); if(!error) error = prepareFreeMembership(form); if(!error) error = prepareAffiliates(form); if(!error) error = preparePromotions(form); if(!error) error = preparePriceClass(form); if(!error) error = prepareOrderType(form); if(!error) error = prepareOvrPriceFlag(form, "SCB", "Y"); if(!error) error = prepareEmailMessage(form); return !error; } //=================validateAddressForm============// // Param: Current form document. // // Returns: boolean error code value. // // // function validateAddressForm(form){ var error = false; var message = ""; var messageST = ""; if(form["FirstName"].value.length == 0) message += "- First Name\n"; if(form["LastName"].value.length == 0) message += "- Last Name\n"; if(form["StreetAdr"].value.length == 0) message += "- Street Address\n"; if(form["City"].value.length == 0) message += "- City\n"; if(form["Country"].selectedIndex == 0 && form["State"].selectedIndex == 0){ message += "- State, Province, Country\n"; } if(form["EmailAdr"].value.length == 0) message += "- Email Address\n"; if(form["differentBilling"][0].checked){ if(form["FirstNameST"].value.length == 0) messageST += "- First Name\n"; if(form["LastNameST"].value.length == 0) messageST += "- Last Name\n"; if(form["StreetAdrST"].value.length == 0) messageST += "- Street Address\n"; if(form["CityST"].value.length == 0) messageST += "- City\n"; if(form["CountryST"].selectedIndex == 0 && form["StateST"].selectedIndex == 0){ messageST += "- State, Province, Country\n"; } } // else if(form["differentBilling"][1].checked){ // if(form["FirstNameST"].value.toLowerCase() != form["FirstName"].value.toLowerCase()) // messageST += " - First Name must be the same on an alternate shipping address\n"; // if(form["LastNameST"].value.toLowerCase() != form["LastName"].value.toLowerCase()) // messageST += " - Last Name must be the same on an alternate shipping address\n"; // } else if(form["differentBilling"][2].checked){ // if(form["FirstNameST"].value.toLowerCase() == form["FirstName"].value.toLowerCase() && // form["LastNameST"].value.toLowerCase() == form["LastName"].value.toLowerCase()) // messageST += " - First or Last Name must be different on an order for a friend\n"; // } else {messageST += " - Please select a shipping address option.\n";} if(message.length > 0 || messageST.length > 0){ if(message.length > 0){ message = "BILLING INFORMATION ERROR(S):\n\n" + message; } if(messageST.length > 0){ messageST = "SHIPPING INFORMATION ERROR(S):\n\n" + messageST; if(message.length > 0){ messageST = "\n" + messageST;} } window.alert(message + messageST); error = true; } if(!error){ if(form["CountryFullName"] != null){ form["CountryFullName"].value = form["Country"].options[form["Country"].selectedIndex].text; } if(form["CountryFullNameST"] != null){ form["CountryFullNameST"].value = form["CountryST"].options[form["CountryST"].selectedIndex].text; } } return error; } //================================================// //=================prepareProduct=================// // Param: Current form document, product name // // Returns: boolean error code value. // // // function prepareProduct(form, prodCode){ var error = false; var foundCount = 0; var foundIndex = 0; for(var ii = 0; ii < form[prodCode + "Product"].length; ii++){ if(form[prodCode + "Product"][ii].checked){ if(++foundCount > 1){ window.alert("Please select only one " + getProdCodeTitle(prodCode) + " offer."); form[prodCode + "Product"][foundIndex].focus(); error = true; break; } else { foundIndex = ii; } } } if(foundCount == 1){ var prodIndex = getProdCodeIndex(prodCode); var productArray = form[prodCode + "Product"][foundIndex].value.split("#"); form["PRICE_CLASS" + prodIndex].value = productArray[0]; //Index 0: PriceClass form["ProdCode" + prodIndex].value = productArray[1]; //Index 1: ProdCode form["BillType" + prodIndex].value = productArray[2]; //Index 2: BillType form["Promotion" + prodIndex].value = productArray[3]; //Index 3: Promotion form["Price" + prodIndex].value = productArray[4]; //Index 4: Price form["Qty" + prodIndex].value = productArray[5]; //Index 5: Qty form["Term" + prodIndex].value = productArray[6]; //Index 6: Term form["LevelQLA" + prodIndex].value = productArray[7]; //Index 7: LevlQLA form["TypeQLB" + prodIndex].value = productArray[8]; //Index 8: TypeQLB form["ENABLED" + prodIndex].value = "TRUE"; } else { resetProduct(form, prodCode); } return error; } //================================================// function prepareDonation(form, prodCode){ var error = false; var process = false; if(!isPriceZero(form[prodCode + "Donation"].value)){ process = true; } else { if(!isValidPrice(form[prodCode + "Donation"].value)){ window.alert("Donation amount for " + getProdCodeTitle(prodCode) + " is not valid."); error = true; } } if(!error && process){ var prodIndex = getProdCodeIndex(prodCode); productArray = form[prodCode + "Product"].value.split("#"); form["ProdCode" + prodIndex].value = productArray[1]; //Index 1: ProdCode form["BillType" + prodIndex].value = productArray[2]; //Index 2: BillType form["Promotion" + prodIndex].value = productArray[3]; //Index 3: Promotion form["Price" + prodIndex].value = getFormattedPrice(form[prodCode + "Donation"].value); form["Qty" + prodIndex].value = productArray[5]; //Index 5: Qty form["Term" + prodIndex].value = productArray[6]; //Index 6: Term form["LevelQLA" + prodIndex].value = productArray[7]; //Index 7: LevlQLA form["TypeQLB" + prodIndex].value = productArray[8]; //Index 8: TypeQLB form["ENABLED" + prodIndex].value = "TRUE"; } else { resetProduct(form, prodCode) } return error; } function prepareEmailMessage(form){ if(form["EMAIL_ItemsPurchased"] != null){ form["EMAIL_ItemsPurchased"].value = ""; for(var ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ form["EMAIL_ItemsPurchased"].value = form["EMAIL_ItemsPurchased"].value + getProdCodeTitle(ii) + "\r\n"; } } } var paymentIndex = 0; if(form["EMAIL_PaymentType"] != null && form["CCType"] != null){ for(var ii = 0; ii < form["CCType"].length; ii++){ if(form["CCType"][ii].checked){ paymentIndex = ii; break; } } if(paymentIndex < 3){ form["EMAIL_PaymentType"].value = "credit card"; } else if(paymentIndex == 3){ form["EMAIL_PaymentType"].value = "bank wire"; } else if(paymentIndex == 4){ form["EMAIL_PaymentType"].value = "check or money order"; } else if(paymentIndex == 5){ form["EMAIL_PaymentType"].value = "faxing credit card"; } else if(paymentIndex == 6){ form["EMAIL_PaymentType"].value = "purchase order"; } } return false; } function prepareFreeMembership(form){ var error = false; var prodIndex = 0; var theTerm; if(form["ENABLED" + getProdCodeIndex("CB")].value == "TRUE" || form["ENABLED" + getProdCodeIndex("CIP")].value == "TRUE"){ if(form["Term" + getProdCodeIndex("CB")].value == "999" || form["Term" + getProdCodeIndex("CIP")].value == "999"){ theTerm = "999"; } else if(form["Term" + getProdCodeIndex("CIP")].value == "8"){ theTerm = "24"; } else { theTerm = "12"; } resetProduct(form, "SCB"); prodIndex = getProdCodeIndex("SCB"); form["ProdCode" + prodIndex].value = "SCB"; form["BillType" + prodIndex].value = "PAID"; form["Promotion" + prodIndex].value = "W[M1][M2][Y3][Y4]"; if(form["ENABLED" + getProdCodeIndex("CB")].value == "TRUE"){ if(form["Term" + getProdCodeIndex("CB")].value == "999"){ form["Price" + prodIndex].value = "400.00"; } else { if(form["TypeQLB" + getProdCodeIndex("CB")].value != "STU" && form["PRICE_CLASS" + getProdCodeIndex("CB")].value != "DEVC"){ form["Price" + prodIndex].value = "15.00"; } else { form["Price" + prodIndex].value = "0.00"; } } } else { form["Price" + prodIndex].value = "0.00"; } form["Qty" + prodIndex].value = "1"; form["Term" + prodIndex].value = theTerm; form["LevelQLA" + prodIndex].value = "REG"; form["TypeQLB" + prodIndex].value = "SNGL"; form["ENABLED" + prodIndex].value = "TRUE"; } return error; } function prepareAffiliates(form){ var error = false; if(form["ENABLED" + getProdCodeIndex("PCB")].value == "TRUE" || form["ENABLED" + getProdCodeIndex("BC")].value == "TRUE"){ if(form["ENABLED" + getProdCodeIndex("CB")].value != "TRUE" && form["ENABLED" + getProdCodeIndex("CIP")].value != "TRUE" && form["ENABLED" + getProdCodeIndex("SCB")].value != "TRUE"){ for(ii = 0; ii < form["PCBProduct"].length; ii++){ if(!error && form["PCBProduct"][ii].checked){ window.alert("SCB Affiliates, Pacific Conservation Biology and Biological Conservation, require a membership selection.\n* Your current SCB Affiliates selection(s) will be removed. *"); error = true; } form["PCBProduct"][ii].checked = false; } form["ENABLED" + getProdCodeIndex("PCB")].value = "FALSE"; for(ii = 0; ii < form["BCProduct"].length; ii++){ if(!error && form["BCProduct"][ii].checked){ window.alert("SCB Affiliates, Pacific Conservation Biology and Biological Conservation, require a membership selection.\n* Your current SCB Affiliates selection(s) will be removed. *"); error = true; } form["BCProduct"][ii].checked = false; } form["ENABLED" + getProdCodeIndex("BC")].value = "FALSE"; } } return error; } function preparePromotions(form){ form["PromotionBox"].value = String(form["PromotionBox"].value).toUpperCase(); var error = false; var updatedPromotions = false; var promotion = form["PromotionBox"].value; if(String(promotion) == "undefined"){ promotion = ""; } if(promotion.length > 0){ if(promotion.toUpperCase() == "COMBO"){ if(form["ENABLED" + getProdCodeIndex("CB")].value == "TRUE" && form["Term" + getProdCodeIndex("CB")].value == "6" && form["ENABLED" + getProdCodeIndex("CIP")].value == "TRUE" && form["Term" + getProdCodeIndex("CIP")].value == "4" ){ updatePromotion(form, "COMBO"); updatedPromotions = true; } } else { for(var jj = 0; jj < promotion.length; jj++){ if(promotion.charAt(jj) != ' '){ updatePromotion(form, promotion); updatedPromotions = true; break; } } } } if(!updatedPromotions){ var DateObject = new Date(); var cMonth = ("00" + String((DateObject.getMonth() + 1))).substring(String((DateObject.getMonth() + 1)).length); var cYear = ("0000" + String(DateObject.getYear())).substring(String(DateObject.getYear()).length); var originalSource; var thePosition; //Replace [M1] [M2] [Y1] [Y2] [Y3] [Y4] for(var ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ originalSource = form["Promotion" + ii].value; while((thePosition = originalSource.indexOf("[M1]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cMonth.substring(0,1) + originalSource.substring(thePosition + 4); } while((thePosition = originalSource.indexOf("[M2]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cMonth.substring(1,2) + originalSource.substring(thePosition + 4); } while((thePosition = originalSource.indexOf("[Y1]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cYear.substring(0,1) + originalSource.substring(thePosition + 4); } while((thePosition = originalSource.indexOf("[Y2]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cYear.substring(1,2) + originalSource.substring(thePosition + 4); } while((thePosition = originalSource.indexOf("[Y3]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cYear.substring(2,3) + originalSource.substring(thePosition + 4); } while((thePosition = originalSource.indexOf("[Y4]", 0)) != -1){ originalSource = originalSource.substring(0, thePosition) + cYear.substring(3,4) + originalSource.substring(thePosition + 4); } form["Promotion" + ii].value = originalSource; } } //updatePromotion(form, "W05"); } return error; } function prepareOvrPriceFlag(form, pubCode, value){ if(value != null){ form["OvrPriceFlag" + getProdCodeIndex(pubCode)].value = String(value); } return false; } function preparePriceClass(form){ var priceClassList = new Array(); var currentPriceClass = ""; var found = false; var error = false; var ii = 0; var focusPoint = ""; for(ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ priceClassList[priceClassList.length] = new Array(); priceClassList[priceClassList.length - 1][0] = getProdCodeTitle(ii); priceClassList[priceClassList.length - 1][1] = form["PRICE_CLASS" + ii].value; if(form["PRICE_CLASS" + ii].value != ""){ if(!found){ currentPriceClass = form["PRICE_CLASS" + ii].value; found = true; } else { if(form["PRICE_CLASS" + ii].value != currentPriceClass){ if(focusPoint == ""){ focusPoint = form["ProdCode" + ii].value; } error = true; } } } } } if(found){ if(!error){ form["PriceClass"].value = currentPriceClass; } else { var message = ""; for(ii = 0; ii < priceClassList.length; ii++){ if(priceClassList[ii][1] != ""){ message += "Product: " + priceClassList[ii][0] + "\nSelected Locale: "; if(priceClassList[ii][1] == "STND"){ message += "USA"; } else if(priceClassList[ii][1] == "CANA"){ message += "Canada"; } else if(priceClassList[ii][1] == "FRGN"){ message += "Other Developed Countries"; } else if(priceClassList[ii][1] == "DEVC"){ message += "All Developing Countries"; } message += "\n\n"; } } window.alert("Error - Multiple Locations were selected:\n\n" + message); if(form[focusPoint + "Product"] != null){ form[focusPoint + "Product"][0].focus(); } error = true; } } else { if(priceClassList.length > 0){ form["PriceClass"].value = "STND"; } else { window.alert("At least one product must be selected."); error = true; } } return error; } function prepareCCtype(form){ var error = false; var enabledCount = 0; for(ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ enabledCount++; } } if(enabledCount == 1 && form["ENABLED" + getProdCodeIndex("CIP")].value == "TRUE"){ if( form["CCType"][3].checked == true || form["CCType"][4].checked == true || form["CCType"][5].checked == true || form["CCType"][6].checked == true ){ form["PayTerm"].value = "CR"; } else { form["PayTerm"].value = "CC"; } } else { if( form["CCType"][3].checked == true || form["CCType"][4].checked == true || form["CCType"][5].checked == true || form["CCType"][6].checked == true ){ window.alert("Send payment later option is ONLY available for " + getProdCodeTitle("CIP") + " purchase."); form["CCType"][3].checked = false; form["CCType"][3].disabled = true; form["CCType"][4].checked = false; form["CCType"][4].disabled = true; form["CCType"][5].checked = false; form["CCType"][5].disabled = true; form["CCType"][6].checked = false; form["CCType"][6].disabled = true; error = true; } form["PayTerm"].value = "CC"; } return error; } function prepareOrderType(form){ var error = false; if(form["differentBilling"][2].checked){ if(form["isRenewalType"] == null || form["isRenewalType"].value != "1"){ form["OrderType"].value = "NBGiftOrder"; } else { form["OrderType"].value = "NBGiftRenew"; } updateBillType(form, "GIFT"); } else { if(form["isRenewalType"] == null || form["isRenewalType"].value != "1"){ form["OrderType"].value = "NBNewOrder"; } else { form["OrderType"].value = "NBNewRenew"; } } if(form["ENABLED" + getProdCodeIndex("SCB")].value == "FALSE"){ form["iResponseEmail"].value = "SCCN.NEWORDER"; } else { form["iResponseEmail"].value = "SCCN.NEW ORDER MBR"; } return error; } function resetProduct(form, prodCode){ var prodIndex = getProdCodeIndex(prodCode); form["PRICE_CLASS" + prodIndex].value = ""; form["ProdCode" + prodIndex].value = ""; form["BillType" + prodIndex].value = ""; form["Promotion" + prodIndex].value = ""; form["Price" + prodIndex].value = ""; form["Qty" + prodIndex].value = ""; form["Term" + prodIndex].value = ""; form["LevelQLA" + prodIndex].value = ""; form["TypeQLB" + prodIndex].value = ""; form["ENABLED" + prodIndex].value = "FALSE"; } function updateBillType(form, value){ for(var ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ form["BillType" + ii].value = value; } } } function updatePromotion(form, value){ for(var ii = 1; ii <= parseInt(form["TOTAL_PRODUCTS"].value, 10); ii++){ if(form["ENABLED" + ii].value == "TRUE"){ form["Promotion" + ii].value = value; } } } function refreshAddressForm(form){ if(form["FirstNameST"].value != form["FirstName"].value) form["FirstNameST"].value = form["FirstName"].value; if(form["LastNameST"].value != form["LastName"].value) form["LastNameST"].value = form["LastName"].value; if(form["CompanyST"].value != form["Company"].value) form["CompanyST"].value = form["Company"].value; if(form["StreetAdrST"].value != form["StreetAdr"].value) form["StreetAdrST"].value = form["StreetAdr"].value; if(form["SuppAdrST"].value != form["SuppAdr"].value) form["SuppAdrST"].value = form["SuppAdr"].value; if(form["CityST"].value != form["City"].value) form["CityST"].value = form["City"].value; if(form["PostalCodeST"].value != form["PostalCode"].value) form["PostalCodeST"].value = form["PostalCode"].value; if(form["CountryST"].selectedIndex != form["Country"].selectedIndex) form["CountryST"].selectedIndex = form["Country"].selectedIndex; if(form["StateST"].selectedIndex != form["State"].selectedIndex) form["StateST"].selectedIndex = form["State"].selectedIndex; } function areAddressFormsEqual(form){ if(form["FirstNameST"].value.toLowerCase() != form["FirstName"].value.toLowerCase()) return false; if(form["LastNameST"].value.toLowerCase() != form["LastName"].value.toLowerCase()) return false; if(form["CompanyST"].value.toLowerCase() != form["Company"].value.toLowerCase()) return false; if(form["StreetAdrST"].value.toLowerCase() != form["StreetAdr"].value.toLowerCase()) return false; if(form["SuppAdrST"].value.toLowerCase() != form["SuppAdr"].value.toLowerCase()) return false; if(form["CityST"].value.toLowerCase() != form["City"].value.toLowerCase()) return false; if(form["PostalCodeST"].value.toLowerCase() != form["PostalCode"].value.toLowerCase()) return false; if(form["CountryST"].selectedIndex != form["Country"].selectedIndex) return false; if(form["StateST"].selectedIndex != form["State"].selectedIndex) return false; return true; } function areAddressFormsBlank(form){ if(form["CompanyST"].value != "" || form["Company"].value != "") return false; if(form["StreetAdrST"].value != "" || form["StreetAdr"].value != "") return false; if(form["SuppAdrST"].value != "" || form["SuppAdr"].value != "") return false; if(form["CityST"].value != "" || form["City"].value != "") return false; if(form["PostalCodeST"].value != "" || form["PostalCode"].value != "") return false; return true; } function manageBillingAddressFocus(form){ if(!form["differentBilling"][0].checked){ if(!areAddressFormsBlank(form) && areAddressFormsEqual(form)){ form["differentBilling"][0].checked = false; } } else { refreshAddressForm(form); } } function manageMailingAddressFocus(form){ if(!areAddressFormsBlank(form)){ if(form["differentBilling"][0].checked){ refreshAddressForm(form); } else if(form["differentBilling"][1].checked){ } } } function manageCheckbox(element, prodCode){ var thisForm = element.form; if(element.checked){ for(var ii = 0; ii < thisForm[prodCode + "Product"].length; ii++){ if(element != thisForm[prodCode + "Product"][ii]){ thisForm[prodCode + "Product"][ii].checked = false; } } thisForm["ENABLED" + getProdCodeIndex(prodCode)].value = "TRUE"; } else { thisForm["ENABLED" + getProdCodeIndex(prodCode)].value = "FALSE"; } manageFreeMembership(element, prodCode); manageAffiliates(element, prodCode); managePriceClassDisables(element); //manageBillMeLaterDisables(element); } function manageDonation(element, prodCode){ if(!isPriceZero(element.value)){ element.form[prodCode + "Donation"].value = getFormattedPrice(element.value); element.form["ENABLED" + getProdCodeIndex(prodCode)].value = "TRUE"; } else { element.form[prodCode + "Donation"].value = "0.00"; element.form["ENABLED" + getProdCodeIndex(prodCode)].value = "FALSE"; } manageFreeMembership(element, prodCode); //manageBillMeLaterDisables(element); } function manageBillMeLaterDisables(element){ var thisForm = element.form; var enabledCount = 0; for(ii = 1; ii <= parseInt(thisForm["TOTAL_PRODUCTS"].value, 10); ii++){ if(thisForm["ENABLED" + ii].value == "TRUE"){ enabledCount++; } } if(enabledCount == 1 && thisForm["ENABLED" + getProdCodeIndex("CIP")].value == "TRUE"){ thisForm["CCType"][3].disabled = false; thisForm["CCType"][4].disabled = false; thisForm["CCType"][5].disabled = false; thisForm["CCType"][6].disabled = false; } else { thisForm["CCType"][3].checked = false; thisForm["CCType"][3].disabled = true; thisForm["CCType"][4].checked = false; thisForm["CCType"][4].disabled = true; thisForm["CCType"][5].checked = false; thisForm["CCType"][5].disabled = true; thisForm["CCType"][6].checked = false; thisForm["CCType"][6].disabled = true; } } function managePriceClassDisables(element){ var thisForm = element.form; var curPriceClass = ""; var productLength = 5; var enabledCount = 0; var ii, jj; if(!element.checked && thisForm["DISABLE_NPC"].value != "FALSE"){ for(ii = 1; ii <= productLength; ii++){ if(thisForm["ENABLED" + ii].value == "TRUE"){ enabledCount++; } } if(enabledCount == 0){ thisForm["PriceClass"].value = ""; thisForm["DISABLE_NPC"].value = "FALSE"; for(ii = 1; ii <= productLength; ii++){ for(jj = 0; jj < thisForm[getProdCodeName(ii) + "Product"].length; jj++){ thisForm[getProdCodeName(ii) + "Product"][jj].disabled = false; } } } } else { for(ii = 1; ii <= productLength; ii++){ if(thisForm["ENABLED" + ii].value == "TRUE"){ enabledCount++; } } if(enabledCount == 1){ thisForm["PriceClass"].value = curPriceClass = element.value.substring(0,4); thisForm["DISABLE_NPC"].value = "TRUE"; for(ii = 1; ii <= productLength; ii++){ for(jj = 0; jj < thisForm[getProdCodeName(ii) + "Product"].length; jj++){ if(curPriceClass != thisForm[getProdCodeName(ii) + "Product"][jj].value.substring(0,4)){ thisForm[getProdCodeName(ii) + "Product"][jj].disabled = true; } } } } } } function manageFreeMembership(element, prodCode){ var thisForm = element.form; if(thisForm["ENABLED" + getProdCodeIndex("SCB")].value == "TRUE"){ if(thisForm["ENABLED" + getProdCodeIndex("CB")].value == "TRUE" || thisForm["ENABLED" + getProdCodeIndex("CIP")].value == "TRUE"){ var found = false; for(ii = 0; ii < thisForm["SCBProduct"].length; ii++){ if(!found && thisForm["SCBProduct"][ii].checked){ window.alert("Conservation Biology and Conservation In Practice subscription includes a FREE SCB membership. \nYour current SCB Membership will be unselected."); found = true; } thisForm["SCBProduct"][ii].checked = false; } element.form["ENABLED" + getProdCodeIndex("SCB")].value = "FALSE"; } else { if((prodCode == "CB" || prodCode == "CIP") && !element.checked){ resetProduct(element.form, "SCB"); } } } } function manageAffiliates(element, prodCode){ var thisForm = element.form; var found = false; if(thisForm["ENABLED" + getProdCodeIndex("PCB")].value == "TRUE" || thisForm["ENABLED" + getProdCodeIndex("BC")].value == "TRUE"){ if(thisForm["ENABLED" + getProdCodeIndex("CB")].value != "TRUE" && thisForm["ENABLED" + getProdCodeIndex("CIP")].value != "TRUE" && thisForm["ENABLED" + getProdCodeIndex("SCB")].value != "TRUE"){ for(ii = 0; ii < thisForm["PCBProduct"].length; ii++){ if(!found && thisForm["PCBProduct"][ii].checked){ window.alert("SCB Affiliates, Pacific Conservation Biology and Biological Conservation, require a membership selection.\n* Your current SCB Affiliates selection(s) will be removed. *"); found = true; } thisForm["PCBProduct"][ii].checked = false; } element.form["ENABLED" + getProdCodeIndex("PCB")].value = "FALSE"; for(ii = 0; ii < thisForm["BCProduct"].length; ii++){ if(!found && thisForm["BCProduct"][ii].checked){ window.alert("SCB Affiliates, Pacific Conservation Biology and Biological Conservation, require a membership selection.\n* Your current SCB Affiliates selection(s) will be removed. *"); found = true; } thisForm["BCProduct"][ii].checked = false; } element.form["ENABLED" + getProdCodeIndex("BC")].value = "FALSE"; } } } function manageAddressForm(element){ var thisForm = element.form; //Check State - AutoCorrect Country Field if(element.name == "State" || element.name == "StateST"){ if(element.selectedIndex >= 66){ if(element.name.substring(element.name.length - 2) == "ST"){ thisForm["CountryST"].selectedIndex = 1; } else { thisForm["Country"].selectedIndex = 1; } } else if(element.selectedIndex >= 1){ if(element.name.substring(element.name.length - 2) == "ST"){ thisForm["CountryST"].selectedIndex = 0; } else { thisForm["Country"].selectedIndex = 0; } } } //Check Country - AutoCorrect State Field if(element.name == "Country" || element.name == "CountryST"){ if(element.selectedIndex >= 2){ if(element.name.substring(element.name.length - 2) == "ST"){ thisForm["StateST"].selectedIndex = 0; } else { thisForm["State"].selectedIndex = 0; } } else if(element.selectedIndex == 1) { if(element.name.substring(element.name.length - 2) == "ST"){ if(thisForm["StateST"].selectedIndex < 66){ thisForm["StateST"].selectedIndex = 66; } } else { if(thisForm["State"].selectedIndex < 66){ thisForm["State"].selectedIndex = 66; } } } else { if(element.name.substring(element.name.length - 2) == "ST"){ if(thisForm["StateST"].selectedIndex >= 66){ thisForm["StateST"].selectedIndex = 0; } } else { if(thisForm["State"].selectedIndex >= 66){ thisForm["State"].selectedIndex = 0; } } } } //Different Billing/Echo Section if(thisForm["differentBilling"][0].checked){ if(element.name == "differentBilling"){ refreshAddressForm(thisForm); } else if(element.name == "State" || element.name == "Country"){ thisForm["StateST"].selectedIndex = thisForm["State"].selectedIndex; thisForm["CountryST"].selectedIndex = thisForm["Country"].selectedIndex; } else if(element.name.substring(element.name.length - 2) == "ST"){ if(!areAddressFormsEqual(thisForm)){ thisForm["differentBilling"][0].checked = false; alert("Please select a shipping address option."); } } else { thisForm[element.name + "ST"].value = thisForm[element.name].value; } } else if(element.name == "differentBilling" && thisForm["differentBilling"][1].checked){ thisForm["FirstNameST"].value = thisForm["FirstName"].value; thisForm["LastNameST"].value = thisForm["LastName"].value; thisForm["CompanyST"].value = ""; thisForm["StreetAdrST"].value = ""; thisForm["SuppAdrST"].value = ""; thisForm["CityST"].value = ""; thisForm["PostalCodeST"].value = ""; thisForm["CountryST"].selectedIndex = 0; thisForm["StateST"].selectedIndex = 0; } else if(element.name == "differentBilling" && thisForm["differentBilling"][2].checked) { thisForm["FirstNameST"].value = ""; thisForm["LastNameST"].value = ""; } else if(areAddressFormsEqual(thisForm)){ thisForm["differentBilling"][0].checked = true; } } function getFormattedPrice(price){ var returnVal = "0.00"; var length = 0; var difference = 0; var decimalIndex = -1; var ii = 0; var isLeadingZeros = true; if(isValidPrice(price)){ returnVal = ""; for(ii = 0; ii < price.length; ii++){ if(isLeadingZeros){ if(price.charAt(ii) != '0'){ isLeadingZeros = false; } } if(!isLeadingZeros && price.charAt(ii) != ','){ returnVal += price.charAt(ii); } } if(returnVal.indexOf(".", 0) == -1){ returnVal += "."; } if(returnVal.charAt(0) == "."){ returnVal = "0" + returnVal; } length = returnVal.length; decimalIndex = returnVal.indexOf(".", 0); difference = length - (decimalIndex + 1); if(difference > 2){ returnVal = returnVal.substring(0, length - (difference - 2)); } else { for(ii = difference; ii < 2; ii++){ returnVal += "0"; } } } return returnVal; } function isValidPrice(price){ var returnVal = true; var foundDecimal = false; var leadingZeros = true; var validDigits = "0123456789"; var numDecimals = 0; var numLeadingDigits = 0; for(var ii = 0; ii < price.length; ii++){ if(validDigits.indexOf(price.charAt(ii), 0) == -1){ if(price.charAt(ii) == '.'){ if(++numDecimals > 1){ returnVal = false; break; } else { foundDecimal = true; } } else if(price.charAt(ii) != ','){ returnVal = false; break; } } else { if(leadingZeros){ leadingZeros = (price.charAt(ii) != '0') ? !leadingZeros : leadingZeros; } if(!foundDecimal && !leadingZeros){ numLeadingDigits++; } } } if(numLeadingDigits > 5){ returnVal = false; } return returnVal; } function isPriceZero(price){ var returnVal = true; var validZero = ".0"; var tmpPrice = getFormattedPrice(price); for(var ii = 0; ii < tmpPrice.length; ii++){ if(validZero.indexOf(tmpPrice.charAt(ii), 0) == -1){ returnVal = false; break; } } return returnVal; } function getExpirationStringCast(value, fill){ return (fill == null) ? String(value) : (String(fill) + String(value)).substring(String(value).length); } function getExpirationMonth(index){ var ii = String(index); var returnVal = ""; if(ii == "1"){ returnVal = "January"; } else if(ii == "2"){ returnVal = "February"; } else if(ii == "3"){ returnVal = "March"; } else if(ii == "4"){ returnVal = "April"; } else if(ii == "5"){ returnVal = "May"; } else if(ii == "6"){ returnVal = "June"; } else if(ii == "7"){ returnVal = "July"; } else if(ii == "8"){ returnVal = "August"; } else if(ii == "9"){ returnVal = "September"; } else if(ii == "10"){ returnVal = "October"; } else if(ii == "11"){ returnVal = "November"; } else if(ii == "12"){ returnVal = "December"; } return returnVal; } function getExpirationOptions(){ var DateObject = new Date(); var returnVal = ''; var monthIndex = 0; var yearIndex = 0; var ii = 0; monthIndex = parseInt(DateObject.getMonth() + 1, 10); yearIndex = parseInt(DateObject.getYear()); if(String(yearIndex).length != 4) yearIndex = 1900 + yearIndex; if(isNaN(yearIndex)) yearIndex = 2006; if(isNaN(monthIndex)) monthIndex = 1; for(ii = 0; ii < 72; ii++){ returnVal += ''; if(++monthIndex > 12){ monthIndex = 1; yearIndex++; } } return returnVal; }