// JavaScript Document function currency(anynum) { //-- Returns passed number as string in $xxx,xxx.xx format. anynum=eval(anynum) workNum=Math.abs((Math.round(anynum*100)/100));workStr=""+workNum if (workStr.indexOf(".")==-1){workStr+=".00"} dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0 pStr=workStr.substr(workStr.indexOf(".")) while (pStr.length<3){pStr+="0"} //--- Adds comma in thousands place. if (dNum>=1000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen) } //-- Adds comma in millions place. if (dNum>=1000000) { dLen=dStr.length dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen) } retval = dStr + pStr //-- Put numbers in parentheses if negative. if (anynum<0) {retval="("+retval+")"} return "$"+retval }; function setFeatureID(intFeatureID) { //alert(intFeatureID); document.regForm.FeatureID.value = intFeatureID; }; function getPricing(Users, FeatureID) { Users = Number(Users); FeatureID = Number(FeatureID); //alert(Users); //Users.toFixed(2); switch (FeatureID) { case 1: switch (Users){ case 5: return 79; break; case 15: return 120; break; case 25: return 174; break; case 50: return 325; break; } break; case 2: switch (Users){ case 5: return 99; break; case 15: return 175; break; case 25: return 325; break; case 50: return 575; break; } break; case 3: switch (Users){ case 5: return 39; break; case 15: return 59; break; case 25: return 89; break; case 50: return 114; break; } break; } }; function getPlanPricing(Users, FeatureID) { Users = Number(Users); FeatureID = Number(FeatureID); switch (FeatureID) { case 1: switch (Users){ case 5: return 89; break; case 15: return 29; break; case 25: return 199; break; case 50: return 349; break; } break; case 2: switch (Users){ case 5: return 129; break; case 15: return 39; break; case 25: return 349; break; case 50: return 599; break; } break; case 3: switch (Users){ case 5: return 49; break; case 15: return 29; break; case 25: return 99; break; case 50: return 149; break; } break; case 4: switch (Users){ case 5: return 39.99; break; case 15: return 49.99; break; case 25: return 74.99; break; case 50: return 149.99; break; } break; case 6: switch (Users){ case 5: return 0; break; case 15: return 0; break; case 25: return 0; break; case 50: return 0; break; } break; case 7: switch (Users){ case 1500: return 16; break; case 3000: return 32; break; case 6000: return 60; break; case 12000: return 116; break; case 30000: return 220; break; case 60000: return 440; break; } break; } }; function refreshPricing() { for (i = 0; i < document.regForm.Viewers.length; i++ ) { if (document.regForm.Viewers[i].checked == true) { selectedUsers = document.regForm.Viewers[i].value; } } for (i = 0; i < document.regForm.Duration.length; i++ ) { if (document.regForm.Duration[i].checked == true) { selectedHours = document.regForm.Duration[i].value; } } featureID = document.regForm.FeatureID.value; var total = getPricing(selectedUsers, featureID) * selectedHours; document.regForm.Total.value = currency(total); if (document.planSeats != undefined) document.planSeats.value = selectedUsers; }; function refreshPlanPricing() { var selectedUsers = 15; var recordingHostingCost; //populate our selectedUsers variable from the Viewers[i].value (the radio button list) if (typeof(document.regForm.Viewers) != "undefined") { for (i = 0; i < document.regForm.Viewers.length; i++ ) { if (document.regForm.Viewers[i].checked == true) { selectedUsers = document.regForm.Viewers[i].value; } } } if (typeof(document.regForm.FeatureID) != "undefined") { featureID = document.regForm.FeatureID.value; switch(Number(featureID)) { case Number(3): PlanName = "Web Conference with PowerPoint " + selectedUsers; break; case Number(1): PlanName = "Web Conference with PowerPoint and VoIP " + selectedUsers; break; case Number(2): PlanName = "Web Conference with PowerPoint, VoIP and Video " + selectedUsers; break; } } if (featureID != null) var total = getPlanPricing(selectedUsers, featureID); //if we selected screen sharing if (typeof(document.regForm.addScreenSharing) != "undefined") { var screenShareCost = getPlanPricing(selectedUsers, 4); var screenShareCostSpan = document.getElementById("screenSharingCost"); screenShareCostSpan.innerHTML = screenShareCost; var doAddScreenSharing = document.regForm.addScreenSharing.checked; if (doAddScreenSharing == true) total += screenShareCost; } //if we added conference calling if (typeof(document.regForm.addConferenceCall) != "undefined") { var conferenceCallCostSpan = document.getElementById("conferenceCallCost"); var conferenceCallCost = getPlanPricing(selectedUsers, 6); conferenceCallCostSpan.innerHTML = conferenceCallCost; var doConferenceCall = document.regForm.addConferenceCall.checked; if (doConferenceCall == true) total += conferenceCallCost; } var doRecordingHostingCheckbox = document.getElementById("addRecordingHosting"); //if we added recording hosting if (typeof(document.regForm.addRecordingHosting) != "undefined") { var doRecordingHosting = document.regForm.addRecordingHosting.checked; selectedRate = document.regForm.planRecordingHosting.options[document.regForm.planRecordingHosting.selectedIndex].value; var numMinutes = selectedRate.split(" minutes")[0]; aryValue = selectedRate.split(" - "); aryDollars = aryValue[1].split(" per ")[0]; recordingHostingCost = aryDollars.substring(1) * 1; var recordingHostingCostSpan = document.getElementById("recordingHostingCost"); recordingHostingCostSpan.innerHTML = recordingHostingCost; if (doRecordingHosting == true) { total += recordingHostingCost; } } //if we have a total... do the following if (total != undefined) { var totalSpan = document.getElementById("totalSpan"); var planNameSpan = document.getElementById("spanPlanName"); var discount = document.getElementById("ddlContractTerm").value; //throw in our discount setDisplayPricing(total); planNameSpan.innerHTML = PlanName; } }; //This is called by updatePrice(...) and refreshPlanPricing(...) function setDisplayPricing(totalPrice) { var monthlyCost; var monthlyProrated; var billedNow; var billedRecurring; var selectedContract; var selectedContractDiscount; var selectedContractTerm; //this is the value of the contract term drop down list if (document.regForm.ddlContractTerm != undefined) { selectedContract = document.regForm.ddlContractTerm.options[document.regForm.ddlContractTerm.selectedIndex].value; aryContractInfo = selectedContract.split("|"); selectedContractDiscount = aryContractInfo[1]; selectedContractTerm = aryContractInfo[0]; } else { selectedContract = 0; selectedContractDiscount = 0; selectedContractTerm = 1; } var numPreBillTerms = document.regForm.hPreBilledTerms.value; var rowRecurringBilling = document.getElementById("recurringBillingRow"); var spanContractTerm = document.getElementById("spanContractTerm"); var spanMonthlyCost = document.getElementById("spanMonthlyCost"); var spanMonthProrated = document.getElementById("spanMonthProrated"); var spanBilledRecurring = document.getElementById("spanBilledRecurring"); var spanBilledNow = document.getElementById("spanBilledNow"); var numDays = document.getElementById("numDays"); var spanMonthlyTerm = document.getElementById("spanMonthlyTerm"); if (rowRecurringBilling) { if (selectedContractTerm > 1) rowRecurringBilling.style.display = "block"; else rowRecurringBilling.style.display = "none"; } //set our number of months (contract term) if (spanContractTerm != undefined) { if (selectedContractTerm > 1) spanContractTerm.innerHTML = selectedContractTerm + " Months"; else spanContractTerm.innerHTML = "Month"; } //MonthlyCost monthlyCost = totalPrice - (totalPrice * selectedContractDiscount); spanMonthlyCost.innerHTML = currency(monthlyCost); //prorated amount (first month) monthlyProrated = ((monthlyCost/getNumberOfDaysInMonth()) * getNumberOfDaysLeftInMonth()); spanMonthProrated.innerHTML = currency(monthlyProrated); //billed Recurring billedRecurring = monthlyCost * selectedContractTerm; //alert("spanBilledRecurring: " + spanBilledRecurring); if (spanBilledRecurring != undefined) spanBilledRecurring.innerHTML = currency(billedRecurring); //billed Now //handle our m2m if(selectedContractTerm <=1) { billedNow = (billedRecurring * numPreBillTerms )+ monthlyProrated; } //handle our contractual else { billedNow = (billedRecurring + monthlyProrated); } spanBilledNow.innerHTML = currency(billedNow); numDays.innerHTML = getNumberOfDaysLeftInMonth() + " days"; if (numPreBillTerms > 0) { if (selectedContractTerm != 1) spanMonthlyTerm.innerHTML = "(Prorated + Contract"; else spanMonthlyTerm.innerHTML = "(Prorated + Monthly"; } else { if (selectedContractTerm != 1) spanMonthlyTerm.innerHTML = "(Prorated + Contract"; else spanMonthlyTerm.innerHTML = "(Prorated"; } if (document.regForm.testBilledNow != undefined) { document.regForm.testBilledNow.value = currency(billedNow); } } //this is used by in_class_plan_registration.asp function updatePrice() { var totalPrice = 0; var totalBilledAmount = 0; var proRatedAmount = 0; //var jPlanCost = 0; var selectedContractDiscount = ""; var monthlyProrated = 0; var monthlyCost = 0; var billedNow = 0; var billedRecurring = 0; if(document.regForm.PlanID == undefined) return; //This check is to make sure we are not using inc_plan_table.asp which does not use PlanID because it has a bulleted list instead of a drop down list if ((document.noPlanID == "true") || ((document.noPlanID == undefined) && (document.regForm.PlanID.selectedIndex == undefined))) { return; } if (document.regForm.PlanID.selectedIndex == undefined) { setDisplayPricing(0); return; } if (document.regForm.PlanID.selectedIndex != 0 && document.regForm.PlanID.selectedIndex != -1) { //this is our plan cost selectedRate = document.regForm.PlanID.options[document.regForm.PlanID.selectedIndex].text; //this is what is displayed in the drop down plan list selectedValue = document.regForm.PlanID.options[document.regForm.PlanID.selectedIndex].value; var selectedContract; var selectedContractDiscount; var selectedContractTerm; //this is the value of the contract term drop down list if (document.regForm.ddlContractTerm != undefined) { selectedContract = document.regForm.ddlContractTerm.options[document.regForm.ddlContractTerm.selectedIndex].value; aryContractInfo = selectedContract.split("|"); selectedContractDiscount = aryContractInfo[1]; selectedContractTerm = aryContractInfo[0]; } else { selectedContract = 0; selectedContractDiscount = 0; selectedContractTerm = 1; } if (selectedValue == "TRIAL") { totalPrice = 0; } else { aryValue = selectedRate.split(" | "); aryDollars = aryValue[1].split(" / ")[0]; seats = aryValue[1].split(" ")[0] * 1; totalPrice = aryDollars.substring(1); if (isNaN(totalPrice)) { totalPrice = totalPrice.replace(/,/g, ""); } //NO RECORDING HOSTING OR CONFERENCE CALLING PLANS!!! //apply our discount here //monthlyCost = totalPrice - (totalPrice * selectedContractDiscount); //billedRecurring = monthlyCost * selectedContractTerm; //jPlanCost = billedRecurring; } } else { seats = undefined; } setDisplayPricing(totalPrice); } //this is used by in_class_plan_registration.asp function LeapYear(year) { if ((year/4) != Math.floor(year/4)) return false; if ((year/100) != Math.floor(year/100)) return true; if ((year/400) != Math.floor(year/400)) return false; return true; } //this is used by in_class_plan_registration.asp function y2k(number) { return (number < 1000) ? number + 1900 : number; } //this is used by in_class_plan_registration.asp function getNumberOfDaysInMonth() { var daysofmonth = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var daysofmonthLY = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var today = new Date(); var year = y2k(today.getYear()); var monthNumber = -1; if (LeapYear(year)) { daysofmonth = daysofmonthLY; } monthNumber = today.getUTCMonth(); return daysofmonth[monthNumber]; }//end function GetNumberOfDaysInMonth //this is used by in_class_plan_registration.asp function getNumberOfDaysLeftInMonth() { var today = new Date(); return getNumberOfDaysInMonth() - today.getDate(); } /*function FormatNumber(num, decimalNum, bolLeadingZero, bolParens) IN - num: the number to be formatted decimalNum: the number of decimals after the digit bolLeadingZero: true / false to use leading zero bolParens: true / false to use parenthesis for - num Returns - formatted number { var tmpNum = num; var periodIndex = -1; var decimalValue = -1; Return the right number of decimal places tmpNum *= Math.pow(10,decimalNum); tmpNum = Math.floor(tmpNum); tmpNum /= Math.pow(10,decimalNum); var tmpStr = new String(tmpNum); See if we need to hack off a leading zero or not if (!bolLeadingZero && num < 1 && num > -1 && num !=0) { if (num > 0) { tmpStr = tmpStr.substring(1,tmpStr.length); } else { Take out the minus sign out (start at 2) tmpStr = "-" + tmpStr.substring(2,tmpStr.length); } } See if we need to put parenthesis around the number if (bolParens && num < 0) tmpStr = "(" + tmpStr.substring(1,tmpStr.length) + ")"; make sure we always have 2 decimal places periodIndex = tmpStr.lastIndexOf("."); if(periodIndex != -1) { decimalValues = tmpStr.substring(periodIndex+1,tmpStr.length); if(decimalValues.length <2) { tmpStr += "0"; } } return tmpStr; }//end FormatNumber(...) */ function refreshSeats() { for (i = 0; i < document.regForm.planSeats.length; i++ ) { if (document.regForm.planSeats[i].checked == true) selectedSeats = document.regForm.planSeats[i].value; } var total = 0; switch(selectedSeats) { case "5": total = "39.00"; break; case "10": total = "69.00"; break; case "20": total = "99.00"; break; default: total = "0.00"; break; }//end switch document.regForm.NumOfSeats.value = selectedSeats; document.regForm.SeatsTotal.value = total; }//end function refreshSeats() function doCopyContactInfo() { document.regForm.BillingFirstName.value = document.regForm.FirstName.value; document.regForm.BillingLastName.value = document.regForm.LastName.value; document.regForm.BillingAddress.value = document.regForm.Address.value; document.regForm.BillingCity.value = document.regForm.City.value; document.regForm.BillingState.value = document.regForm.State.value; document.regForm.BillingCountry.value = document.regForm.Country.value; document.regForm.BillingZip.value = document.regForm.Zip.value; document.regForm.BillingPhone.value = document.regForm.Phone.value; }//end function doCopyContactInfo() function meetingURLUpdate() { var snRegExp = new RegExp("\[^a-zA-Z]","gi"); var meetingURLSpan = document.getElementById("meetingurl"); var sn = document.regForm.ScreenName.value; sn = sn.replace(snRegExp, ""); document.regForm.ScreenName.value = sn; if (meetingURLSpan != null) meetingURLSpan.innerHTML = sn; }//end function meetingURLUpdate()