PageSourceSearch

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

js scalabad.no collected 2026-10-08 01:16:22 UTC 12,428 bytes, 284 lines download raw bytes

1mcWeb.bidBanner = new (function($) {
2     'use strict';
3    var self = this;
4    self.daysTxt = 'DAY(S)';
5    self.hoursTxt = 'HR(S)';
6    self.minutesTxt = 'MIN(S)';
7    self.secondsTxt = 'SEC(S)';
8    self.startCountdown = function(bidId, days, hours, minutes, seconds){
9        if(bidId === "")
10            return;
11        self.daysTxt = days;
12        self.hoursTxt = hours;
13        self.minutesTxt = minutes;
14        self.secondsTxt = seconds;
15
16        var banner = $("div[data-bid-id="+bidId +"]");
17        var dateExpiry = banner.data("bid-end");
18        var dateStart = banner.data("bid-start");
19        var bidStarted = banner.data("bid-started");
20        var bidEnded = banner.data("bid-expired");
21
22        var startDate =  new Date(dateStart).getTime();
23        var endDate = new Date(dateExpiry).getTime();
24
25        var now = new Date().getTime();
26        if(startDate > now){
27            bidStarted = false;
28        }
29        else{
30            bidStarted = true;
31        }
32
33        if(endDate > now){
34            bidEnded = false;
35        } else{
36            bidEnded = true;
37        }
38
39        if(bidEnded === true && bidStarted === true){
40            //show msg saying bid has ended
41            banner.find(".banner-bid-ended").removeClass("hide");
42        }
43        else{
44            if(bidStarted === true){
45                //show countdown to when the sale ends
46                self.runCountdown(banner, banner.find(".banner-bid-countdown"),  new Date(dateStart).getTime(), new Date(dateExpiry).getTime());
47            }
48            else{
49                //sale not started and not ended. Hence we can set a countdown to when it starts
50                self.runCountdown(banner, banner.find(".banner-bid-countdown"), new Date(dateStart).getTime(),new Date(dateExpiry).getTime());
51            }
52        }
53
54    };
55
56    //self.runCountdown = function(banner, salesCountdown, startDate, endDate){
57    //    var timer = setInterval(function() {
58    //        var now = new Date().getTime();
59    //        salesCountdown.removeClass("hide");
60            
61    //        var started;
62    //        if(startDate > now){
63    //            started = false;
64    //        }
65    //        else{
66    //            started = true;
67    //        }
68    //        var bidEnded;
69    //        if(endDate > now){
70    //            bidEnded = false;
71    //        } else{
72    //            bidEnded = true;
73    //        }
74
75    //        var t;
76    //        if(started)
77    //            t = endDate - now;
78    //        else t = startDate - now;
79    //        var timeFromStart = startDate - now;
80
81    //        if (t >= 0) {
82    //            var showCountdown = true;
83    //            var days = Math.floor(t / (1000 * 60 * 60 * 24));
84    //            var hours = Math.floor((t % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
85    //            var mins = Math.floor((t % (1000 * 60 * 60)) / (1000 * 60));
86    //            var secs = Math.floor((t % (1000 * 60)) / 1000);
87    //            if(started){
88    //                if (timeFromStart > 0) {
89    //                    if (banner.find(".banner-bid-ended").hasClass("hide")) {
90    //                        banner.find(".banner-bid-ends-in").removeClass("hide");
91    //                        banner.find(".banner-bid-starts-in").addClass("hide");
92    //                        banner.find(".banner-bid-loading").addClass("hide");
93    //                    }
94    //                } else {
95    //                    var days2 = Math.floor(timeFromStart / (1000 * 60 * 60 * 24));
96    //                    var hours2 = Math.floor((timeFromStart % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
97    //                    var mins2 = Math.floor((timeFromStart % (1000 * 60 * 60)) / (1000 * 60));
98    //                    var secs2 = Math.floor((timeFromStart % (1000 * 60)) / 1000);
99
100    //                    if (days2 <= 0 && days2 > -2 && hours2 <= 0 && hours2 > -2 && mins2 <= 0 && mins2 > -2 && secs2 > -5) {
101    //                        //show info that we are waiting for prices to load. It is now less than 5 seconds since sale started. Prices are being loaded on the server, lets wait 5 seconds before showing that is has started
102    //                        showCountdown = false;
103    //                        banner.find(".banner-bid-loading").removeClass("hide");
104    //                        banner.find(".banner-bid-ends-in").addClass("hide");
105    //                        banner.find(".banner-bid-starts-in").addClass("hide");
106    //                    }
107    //                    else {
108    //                        banner.find(".banner-bid-starts-in").addClass("hide");
109    //                        banner.find(".banner-bid-ends-in").removeClass("hide");
110    //                        banner.find(".banner-bid-loading").addClass("hide");
111    //                    }
112    //                }
113
114    //            }
115    //            else{
116
117    //                if(banner.find(".banner-bid-starts-in").hasClass("hide")){
118    //                    banner.find(".banner-bid-starts-in").removeClass("hide");
119    //                    banner.find(".banner-bid-ends-in").addClass("hide");
120    //                    banner.find(".banner-bid-loading").addClass("hide");
121    //                }
122    //            }
123
124               
125
126    //            if(days <=0 && hours <= 0 && mins <= 0 && secs <= 1){
127    //                setTimeout(self.refreshPriceCache, 4000);
128    //               setTimeout(self.refreshFields, 5000);
129    //            }
130    //            var countdown = "";
131
132    //            if (showCountdown) {
133    //                if (days > 0) {
134    //                    countdown += days + "<span class='label'>" + self.daysTxt +"</span>";
135    //                }
136    //                if (hours > 0 && days < 8) {
137    //                    countdown += hours + "<span class='label'>"+ self.hoursTxt + "</span>";
138    //                }
139    //                if (mins > 0 && days === 0 && hours < 24 && days < 2) {
140    //                    countdown += mins + "<span class='label'>" + self.minutesTxt +"</span>";
141    //                }
142    //                if (days === 0 && hours === 0) {
143    //                    countdown += secs + "<span class='label'>" +self.secondsTxt +"</span>";
144    //                }
145    //            }
146    //            jQuery(salesCountdown).html(countdown);
147    //        } else {
148    ////the price for this product should now be invalid
149    //            salesCountdown.removeClass("sale-countdown");
150    //            salesCountdown.data("bid-expires","");
151    //            salesCountdown.html('');
152    //             if(started){
153    //                 if(banner.find(".banner-bid-ended").hasClass("hide")){
154    //                    banner.find(".banner-bid-ended").removeClass("hide");
155    //                    banner.find(".banner-bid-ends-in").addClass("hide");
156    //                    self.refreshFields();
157    //                 }
158                    
159    //            }
160    //        }
161    //    }, 1000);
162    //}
163
164
165    self.runCountdown = function (banner, salesCountdown, startDate, endDate) {
166        var timer;
167        var refreshInterval = 1000; // Default to 1 second
168        var fieldsRefreshed = false; // Track if fields have been refreshed
169
170        function updateTimer() {
171            var now = new Date().getTime();
172            salesCountdown.removeClass("hide");
173
174            var started = startDate <= now;
175            var bidEnded = endDate <= now;
176
177            if (bidEnded) {
178                // Sale has ended
179                clearInterval(timer);
180                banner.find(".banner-bid-ended").removeClass("hide");
181                banner.find(".banner-bid-ends-in").addClass("hide");
182                banner.find(".banner-bid-starts-in").addClass("hide");
183                banner.find(".banner-bid-loading").addClass("hide");
184
185                // Refresh fields exactly once after the sale has ended
186                if (!fieldsRefreshed) {
187                    self.refreshFields();
188                    fieldsRefreshed = true;
189                }
190                return;
191            }
192
193            if (started) {
194                // Sale has started
195                var timeSinceStart = now - startDate;
196                if (timeSinceStart < 10000) {
197                    // Show loading banner for the first 4-5 seconds
198                    banner.find(".banner-bid-loading").removeClass("hide");
199                    banner.find(".banner-bid-ends-in").addClass("hide");
200                    banner.find(".banner-bid-starts-in").addClass("hide");
201
202                    if (timeSinceStart > 4000 && timeSinceStart < 5000) {
203                        // Refresh price cache and fields exactly once
204                        self.refreshPriceCache();
205                        self.refreshFields();
206                    }
207                } else {
208                    // Show ends-in banner after about 10 seconds
209                    banner.find(".banner-bid-loading").addClass("hide");
210                    banner.find(".banner-bid-ends-in").removeClass("hide");
211                    banner.find(".banner-bid-starts-in").addClass("hide");
212                }
213            } else {
214                // Sale has not started yet
215                banner.find(".banner-bid-starts-in").removeClass("hide");
216                banner.find(".banner-bid-ends-in").addClass("hide");
217                banner.find(".banner-bid-loading").addClass("hide");
218            }
219
220            // Update countdown timer
221            var t = started ? endDate - now : startDate - now;
222            if (t >= 0) {
223                var days = Math.floor(t / (1000 * 60 * 60 * 24));
224                var hours = Math.floor((t % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
225                var mins = Math.floor((t % (1000 * 60 * 60)) / (1000 * 60));
226                var secs = Math.floor((t % (1000 * 60)) / 1000);
227
228                var countdown = "";
229                if (days > 0) {
230                    countdown += days + "<span class='label'>" + self.daysTxt + "</span>";
231                }
232                if (hours > 0 && days < 8) {
233                    countdown += hours + "<span class='label'>" + self.hoursTxt + "</span>";
234                }
235                if (mins > 0 && days === 0 && hours < 24 && days < 2) {
236                    countdown += mins + "<span class='label'>" + self.minutesTxt + "</span>";
237                }
238                if (days === 0 && hours === 0) {
239                    countdown += secs + "<span class='label'>" + self.secondsTxt + "</span>";
240                }
241                salesCountdown.html(countdown);
242
243                // Calculate total minutes remaining
244                var totalMinutesRemaining = Math.floor(t / (1000 * 60));
245
246                // Adjust refresh interval based on remaining time
247                if (totalMinutesRemaining <= 60) {
248                    refreshInterval = 1000; // Update every second
249                } else {
250                    refreshInterval = 60000; // Update every minute
251                }
252            } else {
253                // Hide the countdown when it has completed
254                salesCountdown.html('');
255            }
256
257            // Clear and restart the timer with the new interval
258            clearInterval(timer);
259            timer = setInterval(updateTimer, refreshInterval);
260        }
261
262        // Start the timer
263        timer = setInterval(updateTimer, refreshInterval);
264    }
265    self.refreshFields = function(){
266            var loadFirstParams = {
267                targetKey: ".ajax-field",
268                filterTargetKey: "#AttributeListBox",
269                onlyUpdateProductList: false,
270                doNotRenderFilter: false,
271                useDummyData: false,
272                popupFilter: 0,
273                nextPageNumber: 0
274            };
275        window.mcWeb.ajaxRenderEngine.fieldsToLoad = [];
276        window.mcWeb.ajaxRenderEngine.fieldsToLoad.push(loadFirstParams);
277        window.mcWeb.ajaxRenderEngine.runUpdateFields();
278    };
279
280    self.refreshPriceCache = function() {
281        window.mcWeb.ajaxRenderEngine.refreshPriceCache();
282
283    }
284})(jQuery);

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.