1mcWeb.campaignCode = new function() { 2 var $ = jQuery; 3 this.events = { 4 onChangedCampaignCode: "mcWeb.campaignCode.onChangedCampaignCode", 5 onShowHideCampaignCode: "mcWeb.campaignCode.onShowHideCampaignCode", 6 onShowHideCampaignCodeInlineEdit: "mcWeb.campaignCode.onShowHideCampaignCodeInlineEdit" 7 } 8 9 var getqTipDelay = function(msg) { 10 var seconds = 2; //at least visible for 4 seconds 11 //returns 2 seconds + 0.15s per estimatet word (guessing each word is 6 letters) 12 return (seconds + (msg.length / 6) * 0.15) * 1000;//returns values in milliseconds 13 }; 14 15 this.vm = function(id) { 16 17 var self = this; 18 19 self.id = "#" + id; 20 self.settings = null; 21 self.service = new WebApiService("Campaign"); 22 self.hasCartItems = ko.observable(false); 23 self.showLoginButton = ko.observable(false); 24 self.code = ko.observable(''); 25 26 var silientlyAddGiftcard = function(code){ 27 var data = { 28 code: code 29 }; 30 31 self.service.GetAction("ApplyCampaignCode", data).then(function (result) { 32 window.StorageService.localStorage.removeItem("mcWeb.giftcardPortal.giftcard"); 33 }); 34 }; 35 var giftcard = window.StorageService.localStorage.getItem("mcWeb.giftcardPortal.giftcard"); 36 if(giftcard){ 37 silientlyAddGiftcard(giftcard); 38 } 39 self.code.subscribe(function () { 40 $('.qtip').remove(); 41 }); 42 self.hrefLogin = ko.observable('#Login'); 43 self.showSearchBtn = ko.observable(true); 44 self.showSearchSpin = ko.observable(false); 45 self.showErrorCampaignCode = ko.observable(false); 46 self.showErrorCampaignCodeInfo = ko.observable(false); 47 self.showCampaignMessage = ko.observable(false); 48 self.isCodeSelected = ko.observable(false); 49 self.onBlurCode = ko.observable(false); 50 self.showCampaignInlineEdit = ko.observable(false); 51 self.showCampaignInlineEditors = ko.observable(false); 52 self.onBlurCode.subscribe(function () { 53 self.isCodeSelected(false); 54 }); 55 56 self.clearqtip = function() { 57 $('.qtip').remove(); 58 }; 59 60 self.load = function (data, settings) { 61 self.clearqtip(); 62 if (settings !== null && settings) { 63 self.settings = settings; 64 self.hrefLogin(settings.HrefLogin); 65 if (self.settings.ShowCampaignCodeRegistration) { 66 PubSub.publish(mcWeb.campaignCode.events.onShowHideCampaignCode, null); 67 } 68 69 if (self.settings.ShowCampaignInlineEdit) { 70 PubSub.publish(mcWeb.campaignCode.events.onShowHideCampaignCodeInlineEdit, null); 71 } 72 } 73 } 74 75 76 77 78 var verifyCode = function () { 79 80 self.showSearchBtn(false); 81 self.showSearchSpin(true); 82 83 var data = { 84 code: self.code() 85 }; 86 87 self.service.GetAction("ApplyCampaignCode", data).then(function (result) { 88 self.clearqtip(); 89 self.showSearchSpin(false); 90 self.showSearchBtn(true); 91 self.showCampaignMessage(false); 92 //we may have tried using a giftcard code. it must always be removed from the localstorage so we don't keep showing it 93 var giftcard = window.StorageService.localStorage.getItem("mcWeb.giftcardPortal.giftcard"); 94 if(giftcard){ 95 self.code(''); 96 window.StorageService.localStorage.removeItem("mcWeb.giftcardPortal.giftcard"); 97 } 98 99 if (result === null || !result.Success) { 100 101 if (result !== null) { 102 if(result.ErrorMsg !== null){ 103 var target = $("#campaing-code-field"); 104 mcWeb.validation.qTipActionShowAndHide(target, result.ErrorMsg, false, getqTipDelay(result.ErrorMsg)); 105 } 106 if (result.ErrorType === 17) { 107 self.showLoginButton(true); 108 } 109 } else { 110 // self.showErrorCampaignCode(true); 111 //self.showErrorCampaignCodeInfo(false); 112 } 113 return; 114 } else { 115 // self.showErrorCampaignCode(false); 116 //self.showErrorCampaignCodeInfo(false); 117 if (result.SuccessMsg !== null && result.SuccessMsg.length > 0) { 118 var target2 = $("#btn-add-campaign"); 119 120 if (result.ErrorType === 17) { 121 self.showLoginButton(true); 122 } 123 mcWeb.validation.qTipActionShowAndHide(target2, result.SuccessMsg, false, getqTipDelay(result.SuccessMsg)); 124 //self.showCampaignMessage(true); 125 //$("#campaign-code-msg").text(result.SuccessMsg); 126 } 127 128 } 129 PubSub.publish(mcWeb.cart.events.onChangedCart, null); 130 PubSub.publish(mcWeb.campaignCode.events.onChangedCampaignCode, true);//code successfully registered 131 PubSub.publish(mcWeb.shipment.events.reloadShipment, null); 132 if (mcWeb.customerRegistration !== undefined 133 && mcWeb.customerRegistration !== null 134 && mcWeb.customerRegistration.instances['checkout-registration'] !== null 135 && mcWeb.customerRegistration.instances['checkout-registration'] !== undefined) { 136 var registrationVM = mcWeb.customerRegistration.instances['checkout-registration'].registrationVM; 137 if (registrationVM.usingPorterbuddy() && porterbuddy !== undefined && porterbuddy.refresh !== undefined) { 138 //This variable should have been injected by Porterbuddy, if the Porterbuddy module is active. 139 140 porterbuddy.refresh();
141 } 142 } 143 144 145 }); 146 }; 147 148 self.onClickCheckCampaignCode = function (d, e) { 149 self.clearqtip(); 150 if (e.keyCode === 13 || e.type === "click") { 151 if (self.code() !== null && self.code().length > 0) { 152 verifyCode(); 153 } else { 154 var target = $("#campaing-code-field"); 155 var message = $("#error-msg-campaign").text(); 156 mcWeb.validation.qTipActionShow(target, message); 157 //self.showErrorCampaignCode(true); 158 //self.showErrorCampaignCodeInfo(false); 159 } 160 e.preventDefault(); 161 } 162 return true; 163 }; 164 165 self.onClickLoginCampaignCode = function () { 166 if (self.hrefLogin() === '#login') { 167 mcWeb.login.load(); 168 } else { 169 window.location.href = self.hrefLogin(); 170 } 171 }; 172 173 self.onClickShowCampaignInlineEdit = function (d, e) { 174 if (e.keyCode === 13 || e.type === "click") { 175 self.showCampaignInlineEditors(!self.showCampaignInlineEditors()); 176 return false; 177 } 178 }; 179 180 PubSub.subscribe(mcWeb.campaignCode.events.onShowHideCampaignCode, function(message, data) { 181 $('#campaign-code').show(); 182 }); 183 184 PubSub.subscribe(mcWeb.campaignCode.events.onShowHideCampaignCodeInlineEdit, function(message, data) { 185 $('#inline-edit-campaign').show(); 186 }); 187 188 PubSub.subscribe(mcWeb.cart.events.hasCartItems, function (message, hasCartItems) { 189 if (hasCartItems !== null) { 190 self.hasCartItems(hasCartItems); //was False 191 if (hasCartItems === false) 192 self.clearqtip(); 193 } 194 }); 195 196 }; 197};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.