var phoneID = 'IPHONE_6S'; var iPhone_6s = null; var iPhone_6splus = null; var phoneName ="iPhone 6S"; var phonecolorid,deviceprice,dapid,dapprice,papid,papprice,ppid; function complete(phoneID) { var plans = []; var deviceColors; var selectedPlan = {}; var addToCartUrl = ''; var selectedColor; var selectedMemory; var planDetailsList = []; var plansObj; var plansDetails = {}; var deviceInfo = {}; var selectedDeviceSKU = ''; var defaultColor = ""; var defaultStorage = ""; var defaultPlanSKU = ""; var firstTime = "true"; var selectedPlanIndex; if ((phoneID === 'IPHONE_6S' && iPhone_6s === null) || (phoneID === 'IPHONE_6S_PLUS' && iPhone_6splus === null)) { $.ajax({ url: "https://store.digi.com.my/storefront/responsive/mini-cart.ep?pID=" + phoneID + "", cache: "true", jsonpCallback:"iphoneCallBack", dataType: "jsonp", success: function (response) { if (response.responseStatus && response.responseStatus.status == 'success') { if (iPhone_6s != null) { iPhone_6splus = response; } else { iPhone_6s = response; } defaultColor = response.deviceColorFormBean; defaultStorage = response.deviceMemoryFormBean; defaultPlanSKU = response.planTenureFormBean; deviceInfo = response.deviceInfo; initCalculator(deviceInfo); $('#add-to-cart').click(function () { //kenshoo_conv('device_lead', 0.00, '', selectedDeviceSKU, 'USD'); pushClick(); window.location.href = addToCartUrl; }); } } }); } else { //console.log('Redraw Calculator'); defaultColor = response.deviceColorFormBean; defaultStorage = response.deviceMemoryFormBean; defaultPlanSKU = response.planTenureFormBean; deviceInfo = response.deviceInfo; initCalculator(deviceInfo); $('#add-to-cart').click(function () { //kenshoo_conv('device_lead', 0.00, '', selectedDeviceSKU, 'USD'); pushClick(); window.location.href = addToCartUrl; }); } function initCalculator(deviceInfo) { var planDetailsListDup = []; for (var dataVar in deviceInfo.colors) { for (var dataVar1 in deviceInfo.colors[dataVar]) { for (var dataVar2 in deviceInfo.colors[dataVar][dataVar1]) { for (var dataVar3 in deviceInfo.colors[dataVar][dataVar1][dataVar2]) { if (dataVar3 == "plans") { for (var dataVar4 in deviceInfo.colors[dataVar][dataVar1][dataVar2][dataVar3]) { planDetailsListDup.push(dataVar4); } } } } } } $.each(planDetailsListDup, function (i, el) { if ($.inArray(el, planDetailsList) === -1) planDetailsList.push(el); }); makeRequestURI(planDetailsList); } /** * Plans Detail Object */ function Plans(code, name, description, price) { this.code = code; this.name = name; this.description = description; this.price = price; } function makeRequestURI(array) { var SPLIT_SYMBOL = ","; var url = '/cs/Satellite?pagename=ecr%2Fext%2Fplan_information'; var parameters = 'product_id='; $.each(array, function (index) { parameters += array[index]; index == array.length - 1 ? parameters : parameters += SPLIT_SYMBOL; }); $.ajax({ type: "GET", url: url, dataType: "json", data: parameters, cache: false, async: true, success: function (resData) { var patternLength = 6; $.each(resData.plans, function (index, entry) { plansObj = new Plans(); var price_ = entry['price']; var tempLength = ''; plansObj.code = entry['code']; //Hard Coded //console.log("plansObj.code"+plansObj.code); plansObj.name = entry['name']; plansObj.description = entry['description']; if (price_.length < patternLength) { for (var i = 1; i <= patternLength - price_.length; i++) { tempLength += "0"; } } plansObj.price = tempLength + price_; plansDetails[plansObj.code] = plansObj; }); }, error: function (resData) { }, complete: function (data) { deviceColors = getDeviceColors(deviceInfo.colors); plotColorComponent(deviceColors, deviceInfo); } }); } window.fillCalculator = function (deviceInfo, color, memory) { plans = selectPlans(deviceInfo, color, memory); var filtredPlanArray = []; for (var k = 0; k < plans.length; k++) { var bundlePlanKey = plans[k]["bundlePlanKey"]; var planData = getPlanDesc(bundlePlanKey); filtredPlanArray.push($.extend({}, planData, plans[k])); } plans = filtredPlanArray; var dataPlan = []; var dataEPPPlan = []; var voicePlan = []; var voiceEPPPlan = []; for (var kk = 0; kk < plans.length; kk++) { var planTypeString = plans[kk].bundlePlanKey.substr(plans[kk].bundlePlanKey.length - 1); var planSKU = plans[kk].plansku.split('_'); var EPPString = planSKU[0].slice(-3); if (planTypeString == "D") { if (EPPString == "EPP") { dataEPPPlan.push(plans[kk]) } else { dataPlan.push(plans[kk]); } } else if (planTypeString == "V") { if (EPPString == "EPP") { voiceEPPPlan.push(plans[kk]) } else { voicePlan.push(plans[kk]); } } } if (dataPlan.length > 0) sortArrOfObjectsByParam(dataPlan, 'price'); if (dataEPPPlan.length > 0) sortArrOfObjectsByParam(dataEPPPlan, 'price'); if (dataPlan.length > 0 && dataEPPPlan.length > 0) dataPlan = dataPlan.concat(dataEPPPlan); if (voicePlan.length > 0) sortArrOfObjectsByParam(voicePlan, 'price'); if (voiceEPPPlan.length > 0) sortArrOfObjectsByParam(voiceEPPPlan, 'price'); if (voicePlan.length > 0 && voiceEPPPlan.length > 0) voicePlan = voicePlan.concat(voiceEPPPlan); if (dataPlan.length > 0 && voicePlan.length > 0) plans = dataPlan.concat(voicePlan); else sortArrOfObjectsByParam(plans, 'price'); fillPlansDropdown(plans); selectedPlanIndex = $('.dropdown__item').attr('data-plan-index'); updateSelectedPlan(plans[$('.dropdown__item').attr('data-plan-index')]); $('#spin').css('display', 'none'); $('#ep-dynamic-section').css('display', 'block'); if (firstTime == "true") { firstTime = "false"; var plandet = plans[$('.dropdown__item').attr('data-plan-index')]; var bundlePlanKey = plandet["bundlePlanKey"]; var planData = getPlanDesc(bundlePlanKey); var deviceDetails = "(Color: " + color + ", Memory Capacity: " + memory + ")"; var planTenure = "(Tenure: " + plandet.tenure + ")"; } } function sortArrOfObjectsByParam(arrToSort /* array */ , strObjParamToSortBy /* string */ , sortAscending /* bool(optional, defaults to true) */ ) { if (sortAscending == undefined) sortAscending = true; // default to true if (sortAscending) { arrToSort.sort(function (a, b) { return Number(a[(strObjParamToSortBy)]) > Number(b[strObjParamToSortBy]); }); } else { arrToSort.sort(function (a, b) { return Number(a[(strObjParamToSortBy)]) < Number(b[strObjParamToSortBy]); }); } } function getDeviceColors(obj) { var a = []; for (prop in obj) { if (obj.hasOwnProperty(prop)) { a.push(obj[prop]); } } return a; } function fillPlansDropdown(plan_Array) { if (plan_Array.length > 0) { $('#product-dropdown-1-list').empty(); $('.dropdown__button').empty(); var addedFirstPlan = false; var numberOfPlans = 0; for (var i = 0; i < plan_Array.length; i++) { if (plan_Array[numberOfPlans].price && plan_Array[numberOfPlans].description) { var html = ''; if (plan_Array[numberOfPlans].plansku == defaultPlanSKU) { //console.log("addedFirstPlan : "+html ); $('#product-dropdown-1-list').append(html); $('.dropdown__button').append(html); var arrowMark = ' '; $('.dropdown__button').append(arrowMark); } else { //console.log("AFTER : "+html ); $('#product-dropdown-1-list').append(html); } addedFirstPlan = true; numberOfPlans++; } } } $('.dropdown__button label.dropdown__item, span.icon-arrow-down').click(function (event) { if ($("#product-dropdown-1").hasClass("is-open")) { $("#product-dropdown-1").removeClass("is-open"); } else { $("#product-dropdown-1").addClass("is-open dropdown"); } event.preventDefault(); }); $('.dropdown__content label.dropdown__item').click(function (event) { event.preventDefault(); if ($(this).data("plan-index") >= 0) { selectedPlanIndex = $(this).data("plan-index"); updateSelectedPlan(plans[$(this).data("plan-index")]); $('.dropdown__button .dropdown__item').empty(); $('.dropdown__button .dropdown__item').append($(this).html()).html(); } if ($("#product-dropdown-1").hasClass("is-open")) { $("#product-dropdown-1").removeClass("is-open"); } else { $("#product-dropdown-1").addClass("is-open dropdown"); } }); $('.dropdown__content__close').click(function (event) { event.preventDefault(); $('.clac__dropdown .dropdown').removeClass('is-open'); }); } function getPlanDesc(bundlePlanKeyValue) { for (var objtype in plansDetails) { if (plansDetails[objtype].code == bundlePlanKeyValue) return plansDetails[objtype]; } } function replaceBulletpointWithPipeSymbol(data) { return data.replace(/\u2022/g, "|"); } function selectPlans(deviceInfo, color, memory) { var plans = []; selectedColor = selectProperty(deviceInfo.colors, color); selectedMemory = selectProperty(selectedColor.memories, memory); if (!selectedMemory) { var __memory = parseInt(memory); var temp = memory.split(__memory.toString()); if (temp[1] == 'GB') { selectedMemory = selectProperty(selectedColor.memories, (__memory + 'MB').toString()); } else if (temp[1] == 'MB') { selectedMemory = selectProperty(selectedColor.memories, (__memory + 'GB').toString()); } } $.each(selectedMemory.plans, function (key, planInfo) { $.each(planInfo.tenures, function (key, tenureInfo) { var plan = {}; plan.name = planInfo.name; plan.type = planInfo.planType; plan.tenure = tenureInfo.name; plan.buttonName = selectedMemory.buttonName; plan.pap = tenureInfo.prices.planAdvPymt; plan.monthly = tenureInfo.prices.eppMonthlyPymt; plan.total = tenureInfo.prices.totalPrice; plan.dap = tenureInfo.prices.deviceAdvPymt; plan.devicePrice = tenureInfo.prices.devicePrice; plan.devicesku = selectedMemory.deviceSkuCode; plan.paymenttype = planInfo.paymentType; plan.plansku = tenureInfo.planSkuCode; plan.bundlePlanKey = planInfo.bundlePlanKey; plan.code = planInfo.code; plan.upfrontPymt = tenureInfo.prices.upfrontPymt; plans.push(plan); }); }); return plans; } function selectProperty(obj, property) { if (property) { return obj[property]; } for (prop in obj) { if (obj.hasOwnProperty(prop)) { return obj[prop]; } } } window.updateSelectedPlan = function(plan) { phoneName = $('#ep-dynamic-section h2.text--telenor-bold.text--larger.padding-trailer--xsmall').text(); var bundlePlanKey = plan["bundlePlanKey"]; var planData = getPlanDesc(bundlePlanKey); $('#plan-name').text(plan.name); $('#plan-detail').text(plan.tenure); $('#add-to-cart').text(plan.buttonName.toLowerCase() == "buy online" ? "Buy now" : plan.buttonName); if (plan.buttonName.toLowerCase() == "out of stock") { $('#add-to-cart').attr('disabled', 'disabled'); } else { $('#add-to-cart').removeAttr('disabled'); } ppid = plan.devicesku; papid = "PAP_"+ppid; dapid = "DAP_"+ppid; papprice = plan.pap.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); $('#plan-adv-payment').text('RM ' + papprice); $('#monthly-payment').text(parseFloat(planData.price)); $('#due-today').text(plan.total.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); dapprice = plan.dap; $('#device-adv-payment').text('RM ' + plan.dap); deviceprice = plan.devicePrice.toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); $('#device-price').text('RM ' + deviceprice); $('#up-front-payment').text('RM ' + plan.upfrontPymt); addToCartUrl = 'https://store.digi.com.my/storefront/product-config.ep?pID=' + phoneID + '&isBundle=y&ppymttype=' + plan.paymenttype + '&ptype=' + plan.type + '&selDeviceSku=' + plan.devicesku + '&selPlanSku=' + plan.plansku; selectedDevicePlan = plan.name; selectedDeviceDuration = plan.tenure; selectedDeviceSKU = plan.devicesku; selectedDeviceName = phoneID; phonecolorid = phoneName+"(Color:" +selectedColor.name+ ","+"Memory Capacity: "+selectedMemory.name + ")";//iPhone 6S Plus(Color: Gold, Memory Capacity: 16GB) } function pushClick() { var plandet = plans[selectedPlanIndex]; var bundlePlanKey = plandet["bundlePlanKey"]; var planData = getPlanDesc(bundlePlanKey); var deviceDetails = "(Color: " + selectedColor.name + ", Memory Capacity: " + selectedMemory.name + ")"; var planTenure = "(Tenure: " + selectedDeviceDuration + ")"; } } complete(phoneID); $(function(){ $('#ep-dynamic-section h2.text--telenor-bold.text--larger.padding-trailer--xsmall').text('iPhone 6s'); $('.ip6s').on('click', function () { $('#ep-dynamic-section h2.text--telenor-bold.text--larger.padding-trailer--xsmall').text('iPhone 6s'); $('.calcbtn').removeClass('active'); $('this').removeClass('active'); $('.ip6s').addClass('active'); phoneID = 'IPHONE_6S'; window.response = iPhone_6s; complete(phoneID); }); $('.ip6sp').on('click', function () { $('#ep-dynamic-section h2.text--telenor-bold.text--larger.padding-trailer--xsmall').text('iPhone 6s Plus'); $('.calcbtn').removeClass('active'); $('this').removeClass('active'); $('.ip6sp').addClass('active'); phoneID = 'IPHONE_6S_PLUS'; window.response = iPhone_6splus; complete(phoneID); }); $(document).on('click', '.faqtrigger', function() { if (!$('#faqsToggler').hasClass('is-toggled')) { $('.section__title--toggler#faqsToggler').trigger('click'); } var optval = $('.faq-subsection-switcher.dropdown select optgroup:eq(0) option').eq(1).val(); $('.faq-subsection-switcher.dropdown select').val(optval); $('.faq-subsection-switcher.dropdown select').trigger('change'); }); $(document).on('click', '[data-scroll-to]', function(e) { e.preventDefault(); var $target = $($(this).data('scroll-to')); digiFE.scrollTo($target); }); });