PageSourceSearch

https://www.scalabad.no/scripts/campaigncode.js

js scalabad.no collected 2026-10-08 01:16:21 UTC 7,162 bytes, 197 lines download raw bytes

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.