PageSourceSearch

https://www.borderstates.com/_ui/responsive/common/js/acc.quickorder.js

js borderstates.com collected 2026-10-03 21:43:59 UTC 26,437 bytes, 501 lines download raw bytes

1var ACC = ACC || {}; // make sure ACC is available
2
3//if ($("#quickOrder").length > 0) {
4    ACC.quickorder = {
5        _autoload: [
6            "bindClearQuickOrderRow",
7            "bindAddSkuInputRow",
8            "bindResetFormBtn",
9            "bindAddToCartClick"
10        ],
11
12        $quickOrderContainer: $('.js-quick-order-container'),
13        $quickOrderMinRows: Number($('.js-quick-order-container').data('quickOrderMinRows')),
14        $quickOrderMaxRows: Number($('.js-quick-order-container').data('quickOrderMaxRows')),
15        $productExistsInFormMsg: $('.js-quick-order-container').data('productExistsInFormMsg'),
16        $quickOrderLeavePageMsg: $('#quickOrder').data('gridConfirmMessage'),
17        $hiddenSkuInput: 'input.js-hidden-sku-field',
18        $addToCartBtn: $('#js-add-to-cart-quick-order-btn-top, #js-add-to-cart-quick-order-btn-bottom'),
19        $resetFormBtn: $('#js-reset-quick-order-form-btn-top, #js-reset-quick-order-form-btn-bottom'),
20        $productInfoContainer: '.js-product-info',
21        $skuInputField: '.js-sku-input-field',
22        $qtyInputField: '.js-quick-order-qty',
23        $unitSelectField: '.js-packagingUnits',
24        $jsLiContainer: 'li.js-li-container',
25        $removeQuickOrderRowBtn: '.js-remove-quick-order-row',
26        $skuValidationContainer: '.js-sku-validation-container',
27        $qtyValidationContainer: '.js-qty-validation-container',
28        $productItemTotal: '.js-quickorder_total_price',
29        $productItemPrice: '.js-quickorder_item_price',
30        $classHasError: 'has-error',
31
32        bindResetFormBtn: function () {
33            ACC.quickorder.$resetFormBtn.on("click", ACC.quickorder.clearForm);
34        },
35
36        bindAddToCartClick: function () {
37            ACC.quickorder.$addToCartBtn.on("click", ACC.quickorder.addToCart);
38        },
39
40        bindAddSkuInputRow: function () {
41            $(ACC.quickorder.$skuInputField).on("focusin", ACC.quickorder.addInputRow)
42                .on("focusout keyup paste", ACC.quickorder.handleSearchSkuInput);
43        },
44
45        bindClearQuickOrderRow: function () {
46            $(ACC.quickorder.$removeQuickOrderRowBtn).on("mousedown", ACC.quickorder.clearQuickOrderRow);
47        },
48
49        addToCart: function () {
50            $("#quickOrder .loader-img").show();
51            $.ajax({
52                url: ACC.quickorder.$quickOrderContainer.data('quickOrderAddToCartUrl'),
53                type: 'POST',
54                dataType: 'json',
55                contentType: 'application/json',
56                data: ACC.quickorder.getJSONDataForAddToCart(),
57                async: false,
58                success: function (response) {
59                    ACC.quickorder.handleAddToCartSuccess(response);
60                },
61                error: function (jqXHR, textStatus, errorThrown) {
62                    // log the error to the console
63                    $("#quickOrder .loader-img").hide();
64                    console.log("The following error occurred: " + textStatus, errorThrown);
65                }
66            });
67        },
68
69        handleAddToCartSuccess: function (response) {
70            if ($(response.quickOrderErrorData).length > 0) {
71                ACC.quickorder.disableBeforeUnloadEvent();
72            }
73            var lookup = {};
74            response.quickOrderErrorData.forEach(function (el) {
75                lookup[el.sku] = el.errorMsg;
76            });
77
78            $(ACC.quickorder.$qtyInputField).each(function () {
79                var parentLi = ACC.quickorder.getCurrentParentLi(this);
80                var sku = ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).val();
81                var errorMsg = lookup[sku];
82
83                if (errorMsg) {
84                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text(errorMsg);
85                }
86                else {
87                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$removeQuickOrderRowBtn).trigger("mousedown");
88                }
89            });
90
91            ACC.quickorder.handleBeforeUnloadEvent();
92
93            if(window.location.href && window.location.href.substring(window.location.href.lastIndexOf('/') + 1) === "quickOrder")
94                window.location.href = "/cart";
95            else
96                ACC.product.displayAddToCartPopup(response);
97        },
98
99        getJSONDataForAddToCart: function () {
100            var skusAsJSON = [];
101            $(ACC.quickorder.$qtyInputField).each(function () {
102                var qty = Number($(this).val());
103                if (qty > 0) {
104                    var sku = jQuery.trim(ACC.quickorder.findElementInCurrentParentLi(this, ACC.quickorder.$skuInputField).val());
105                    var ttlQty = Number(ACC.quickorder.findElementInCurrentParentLi(this, ACC.quickorder.$unitSelectField).val()) * qty;
106                    skusAsJSON.push({"product": {"code": sku}, "quantity": ttlQty});
107                }
108            });
109            return JSON.stringify({"cartEntries": skusAsJSON});
110        },
111
112        handleSearchSkuInput: function (event) {
113            if (event.type == "focusout" || event.keyCode == $.ui.keyCode.TAB) {
114                ACC.quickorder.handleGetProduct(event);
115                ACC.quickorder.handleBeforeUnloadEvent();
116            }
117            else
118            {
119                $(event.target).autocomplete({
120                    delay: 100,
121                    minLength: 3,
122                    create: function (event, ui) {
123
124                    },
125                    source: function (request, response) {
126                        $.getJSON({url: "/search/quickordersearch/"}, {term: request.term.toLowerCase()}, function (data) {
127                            response(data);
128                        });
129                    },
130                    select: function (event, ui) {
131                        event.preventDefault();
132                        $(event.target).val(ui.item.code);
133                        $('#selection-ajax').html('You selected: '
134                            + ui.item.code);
135                        ACC.quickorder.handleGetProduct(event);
136                        ACC.quickorder.handleBeforeUnloadEvent();
137                    },
138                    focus: function (event, ui) {
139                        event.preventDefault();
140                        $(event.target).val(ui.item.code);
141                    }
142                }).on('focus', function () {
143                        $(this).keydown();
144                    })
145                    .on('keyup', function (event) {
146                        if ($(event.target).val().length == 0) $('#selection-ajax').html('');
147                    }).data('ui-autocomplete')._renderItem = function (ul, item) {
148                    var manufacturerPartNumber = "";
149                    var customerPartNumber = "";
150                    if (ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.manufacturerPartNumber) != '') {
151                        manufacturerPartNumber = ',' + ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.manufacturerPartNumber);
152                    }
153                    if (ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.customerPartNumber) != '') {
154                        customerPartNumber = ',' + ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.customerPartNumber);
155                    }
156                    var imageUrl = (item.images && item.images.length > 0) ? item.images[0].url : "/_ui/responsive/theme-lambda/images/null_product_image_96x96.jpg";
157
158                    var $div = $("<div class='quick-order-autocomplete'></div>")
159                        .append($("<div>").addClass("thumb").append($("<img>").attr("src", imageUrl)))
160                        .append($("<div>").addClass("name")
161                            .append($("<div>").addClass("product-name").html(ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.name)))
162                            .append($("<div>").addClass("number")
163                                .html((manufacturerPartNumber && ("Mfg #:" + manufacturerPartNumber)) + (ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.code) && '| BOR #:') + '<span class="product_code">' + (ACC && ACC.sanitizer && ACC.sanitizer.sanitize(item.code)) + '</span>' + (customerPartNumber && ('| Customer #:' + customerPartNumber))))
164                        );
165                    ul.addClass('ui-quickOrder-autocomplete');
166                    return $("<li></li>").append($div).appendTo(ul);
167                };
168            }
169        },
170
171        handleFocusOutOnQtyInput: function (event) {
172        	var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
173        	if (key == 13) {	
174        		event.preventDefault();
175        		var parentLi = ACC.quickorder.getCurrentParentLi(event.target);        		
176        		parentLi.next().find(ACC.quickorder.$skuInputField).focus();
177        		$(event.target).focusout();
178        	}
179        	if (event.type == "focusout") {
180        		ACC.quickorder.validateAndUpdateItemTotal(event);
181        		ACC.quickorder.enableDisableAddToCartBtn();
182        	}
183        },
184
185        handleChangeUnit: function (event) {
186            var sapPriceWsDTO = {};
187            var priceWs = [ ];
188            var parentLi = ACC.quickorder.getCurrentParentLi(event.target)
189            var productCode = ACC.quickorder.findElement(parentLi,'#productCode').val();
190            var optionAttr = ACC.quickorder.findElement(parentLi,'option:selected').attr('uom');
191            var isDefaultUnit  = ACC.quickorder.findElement(parentLi,'option:selected').hasClass('defaultuom');
192            var minOrderQuantity =  isDefaultUnit ? jQuery.trim(ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('minDefaultQty')) : 1;
193
194            sapPriceWsDTO.productCode = productCode;
195            sapPriceWsDTO.minOrderQuantity = 1;
196            sapPriceWsDTO.unit = optionAttr;
197            priceWs.push(sapPriceWsDTO);
198            ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).addClass('loading');
199            $.ajax({
200                type: 'POST',
201                url: ACC.config.encodedContextPath + '/c/priceStockWs',
202                contentType: 'application/json',
203                data:JSON.stringify(priceWs),
204                success: function (response) {
205                    ACC.quickorder.productCodeResponse(response, parentLi, minOrderQuantity);
206                },
207                error: function(){
208                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).removeClass('loading');
209                }
210            });
211        },
212        productCodeResponse: function (response, parentLi, minOrderQuantity) {
213            if(response.length>0){
214                var prdPrice = response[0].price;
215                var stockLevel = response[0].stock.stockLevel;
216                var stockLevelStatus = response[0].stock.stockLevelStatus.code;
217                //Price
218                ACC.quickorder.findElement(parentLi, ACC.quickorder.$productItemPrice).html(prdPrice.formattedValue);
219                ACC.quickorder.findElement(parentLi, '.js-product-price').data('productPrice', prdPrice.value);
220                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).val(minOrderQuantity);
221                var qtyValue = parseFloat(ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).val());
222                var itemPrice = parseFloat(ACC.quickorder.findElement(parentLi, '.js-product-price').data('productPrice'));
223                ACC.quickorder.findElement(parentLi, ACC.quickorder.$productItemTotal)
224                    .html(ACC.productorderform.formatTotalsCurrency(itemPrice * qtyValue));
225                //Stock
226                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('maxProductQty', stockLevel);
227                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('minProductQty', minOrderQuantity);
228                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('stockLevelStatus', stockLevelStatus);
229
230                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).removeClass(ACC.quickorder.$classHasError);
231                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer).text('');
232
233                if (stockLevel > 0) {
234                    ACC.quickorder.findElement(parentLi, '.stock-available-number').removeClass('not-available');
235                    ACC.quickorder.findElement(parentLi, '.stock').removeClass('not-available');
236                    ACC.quickorder.findElement(parentLi,'.stock img').attr("src", ACC.config.commonResourcePath + "/images/available.svg");
237                    ACC.quickorder.findElement(parentLi, '.stock-available-number').html(stockLevel + " In Stock");
238                }
239                else{
240                    ACC.quickorder.findElement(parentLi, '.stock-available-number').addClass('not-available');
241                    ACC.quickorder.findElement(parentLi, '.stock').addClass('not-available');
242                    ACC.quickorder.findElement(parentLi,'.stock img').attr("src", ACC.config.commonResourcePath + "/images/not-available.svg");
243                    ACC.quickorder.findElement(parentLi, '.stock-available-number').html("Not Available");
244                }
245            }
246            ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).removeClass('loading');
247        },
248
249        clearForm: function () {
250        	window.location.reload();
251        },
252
253        validateAndUpdateItemTotal: function (event) {
254            var parentLi = ACC.quickorder.getCurrentParentLi(event.target);
255            var qtyValue = jQuery.trim(ACC.productorderform.filterSkuEntry($(event.target).val()));
256            var minQty = jQuery.trim(ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('minProductQty'));
257
258            //Min Quantity Restriction
259            if (isNaN(qtyValue)) {
260                qtyValue = minQty;
261                $(event.target).removeClass(ACC.quickorder.$classHasError);
262                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer).text('');
263                $(event.target).val(minQty);
264            }
265            else if(qtyValue % minQty != 0){
266                var removeQuantity =parseInt(qtyValue)%minQty;
267                qtyValue = (qtyValue - removeQuantity) > minQty ? qtyValue - removeQuantity : minQty;
268                $(event.target).val(qtyValue);
269
270                var qtyValidationContainer = ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer);
271                var element=$(event.target);
272                element.attr("title",qtyValidationContainer.data('minProductQtyMsg') + " " + minQty);
273                element.tooltip();
274                element.trigger("mouseover");
275                setTimeout(function(){element.tooltip('destroy');},3000);
276            }
277            else{
278                $(event.target).val(qtyValue);
279                $(event.target).removeClass(ACC.quickorder.$classHasError);
280                ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer).text('');
281            }
282
283            // Stock Restriction Code
284            // else {
285            //   qtyValue = Number(qtyValue);
286            //   $(event.target).val(qtyValue);
287            //   var maxQty = jQuery.trim(ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('maxProductQty'));
288            //   var stockLevelStatus = jQuery.trim(ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField).data('stockLevelStatus'));
289            //   maxQty = ($.isEmptyObject(maxQty) && stockLevelStatus == "inStock") ? "FORCE_IN_STOCK" : Number(maxQty);
290            //   if (!isNaN(maxQty) && qtyValue > maxQty) {
291            //     $(event.target).addClass(ACC.quickorder.$classHasError);
292            //     var qtyValidationContainer = ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer);
293            //     qtyValidationContainer.text(qtyValidationContainer.data('maxProductQtyMsg'));
294            //     qtyValue = maxQty;
295            //     $(event.target).val(maxQty);
296            //   }
297            //   else {
298            //     $(event.target).removeClass(ACC.quickorder.$classHasError);
299            //     ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyValidationContainer).text('');
300            //   }
301            // }
302
303            if (qtyValue > 0) {
304                var itemPrice = parseFloat(ACC.quickorder.findElement(parentLi, '.js-product-price').data('productPrice'));
305                ACC.quickorder.findElement(parentLi, ACC.quickorder.$productItemTotal)
306                    .html(ACC.productorderform.formatTotalsCurrency(itemPrice * qtyValue));
307            }
308            else {
309                ACC.quickorder.findElement(parentLi, ACC.quickorder.$productItemTotal).text('');
310            }
311        },
312
313        clearQuickOrderRow: function () {
314            var quickOrderMinRows = ACC.quickorder.$quickOrderMinRows;
315            var parentLi = ACC.quickorder.getCurrentParentLi(this);
316            if ($('.js-ul-container li.js-li-container').length > quickOrderMinRows) {
317                parentLi.remove();
318                ACC.quickorder.bindClearQuickOrderRow();
319            }
320            else {
321                ACC.quickorder.findElement(parentLi, ACC.quickorder.$productInfoContainer).remove();
322                ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text('');
323                ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).val('');
324                ACC.quickorder.findElement(parentLi, ACC.quickorder.$hiddenSkuInput).val('');
325            }
326            ACC.quickorder.enableDisableAddToCartBtn();
327            ACC.quickorder.handleBeforeUnloadEvent();
328        },
329
330        addInputRow: function (event) {
331
332            if ($('.js-quick-order-container li.js-li-container:last-child').find(ACC.quickorder.$skuInputField).is($(event.target)) &&
333                $(ACC.quickorder.$jsLiContainer).length < ACC.quickorder.$quickOrderMaxRows) {
334                var liClone = $('.js-quick-order-container li.js-li-container:first').clone();
335                ACC.quickorder.findElement(liClone, ACC.quickorder.$productInfoContainer).remove();
336                ACC.quickorder.findElement(liClone, ACC.quickorder.$skuValidationContainer).text('');
337                ACC.quickorder.findElement(liClone, ACC.quickorder.$hiddenSkuInput).val('');
338                var currentSkuInputField = ACC.quickorder.findElement(liClone, ACC.quickorder.$skuInputField);
339                currentSkuInputField.val('');
340                currentSkuInputField.focusin(ACC.quickorder.addInputRow).focusout(ACC.quickorder.handleSearchSkuInput).keyup(ACC.quickorder.handleSearchSkuInput)
341                    .bind("paste", ACC.quickorder.handleSearchSkuInput);
342                ACC.quickorder.findElement(liClone, ACC.quickorder.$removeQuickOrderRowBtn).click(ACC.quickorder.clearQuickOrderRow);
343                $('.js-ul-container').append(liClone);
344            }
345        },
346
347        handleGetProduct: function (event) {
348            var parentLi = ACC.quickorder.getCurrentParentLi(event.target);
349            var productCode = $.trim(event.target.value).toUpperCase();
350            $(event.target).val(productCode);
351            if (!ACC.quickorder.isCurrentSkuSameAsPrevious(parentLi, productCode)) {
352                if (productCode.length > 0) {
353                    $(event.target).addClass('loading');
354                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$productInfoContainer).remove();
355
356                    if (ACC.quickorder.isDuplicateSku(event.target, productCode)) {
357                        ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text(ACC.quickorder.$productExistsInFormMsg);
358                        $(event.target).removeClass('loading');
359                    }
360                    else {
361                        ACC.quickorder.getAndDisplayProductInfo(event, parentLi, productCode);
362                    }
363                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$hiddenSkuInput).val(productCode);
364                }
365                else {
366                    $(event.target).removeClass(ACC.quickorder.$classHasError);
367                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text('');
368                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$productInfoContainer).remove();
369                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$hiddenSkuInput).val("");
370                }
371            }
372        },
373
374        isCurrentSkuSameAsPrevious: function (parentLi, productCode) {
375            return ACC.quickorder.findElement(parentLi, ACC.quickorder.$hiddenSkuInput).val() == productCode;
376        },
377
378        isDuplicateSku: function (currentInput, productCode) {
379            var exists = false;
380            $(ACC.quickorder.$skuInputField).each(function () {
381                if ($(this).val() == productCode && !$(this).is($(currentInput))) {
382                    exists = true;
383                    return false
384                }
385            });
386            return exists;
387        },
388
389        getAndDisplayProductInfo: function (event, parentLi, productCode) {
390            var url = ACC.config.encodedContextPath + '/quickOrder/productInfo?code=' + encodeURIComponent(productCode);
391            $.getJSON(url, function (result) {
392                if (result.errorMsg != null && result.errorMsg.length > 0) {
393                    $(event.target).addClass(ACC.quickorder.$classHasError);
394                    ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text(result.errorMsg);
395                    $(event.target).removeClass('loading');
396                }
397                else {
398                    if (ACC.quickorder.isDuplicateSku(event.target, result.productData.code)) {
399                        ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text(ACC.quickorder.$productExistsInFormMsg);
400                        $(event.target).removeClass('loading');
401                    }
402                    else {
403                        $(event.target).removeClass(ACC.quickorder.$classHasError);
404                        ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuValidationContainer).text('');
405                        ACC.quickorder.findElement(parentLi, ACC.quickorder.$skuInputField).val(result.productData.code);
406                        $('#quickOrderRowTemplate').tmpl(result.productData).insertAfter(ACC.quickorder.findElement(parentLi, '.js-sku-container'));
407                        var qtyInputField = ACC.quickorder.findElement(parentLi, ACC.quickorder.$qtyInputField);
408                        qtyInputField.focusout(ACC.quickorder.handleFocusOutOnQtyInput).keydown(ACC.quickorder.handleFocusOutOnQtyInput);
409                        var unitSelectField = ACC.quickorder.findElement(parentLi, ACC.quickorder.$unitSelectField);
410                        unitSelectField.change(ACC.quickorder.handleChangeUnit);
411                        var stockLevelStatus = result.productData.stock.stockLevelStatus.code;
412                        if (stockLevelStatus == "outOfStock") {
413                            qtyInputField.val(0);
414                            qtyInputField.prop('disabled', true);
415                        } else {
416                            qtyInputField.focus().select();
417                        }
418                        $(event.target).removeClass('loading');
419                        ACC.quickorder.enableDisableAddToCartBtn();
420                    }
421                }
422            });
423        },
424
425        handleBeforeUnloadEvent: function () {
426            if (ACC.quickorder.isAnySkuPresent()) {
427                ACC.quickorder.disableBeforeUnloadEvent();
428                ACC.quickorder.enableBeforeUnloadEvent();
429            }
430            else {
431                ACC.quickorder.disableBeforeUnloadEvent();
432            }
433        },
434
435        disableBeforeUnloadEvent: function () {
436            $(window).off('beforeunload', ACC.quickorder.beforeUnloadHandler);
437        },
438
439        enableBeforeUnloadEvent: function () {
440            $(window).on('beforeunload', ACC.quickorder.beforeUnloadHandler);
441        },
442
443        beforeUnloadHandler: function () {
444            return ACC.quickorder.$quickOrderLeavePageMsg;
445        },
446
447        enableDisableAddToCartBtn: function () {
448            var addToCartButtonEnabled = ACC.quickorder.shouldAddToCartBeEnabled();
449
450            // if there are no items to add, disable addToCartBtn, otherwise, enable it
451            if (addToCartButtonEnabled) {
452                ACC.quickorder.$addToCartBtn.removeAttr('disabled');
453            } else {
454                ACC.quickorder.$addToCartBtn.attr('disabled', 'disabled');
455            }
456        },
457
458        shouldAddToCartBeEnabled: function () {
459            var sum = 0;
460            var enable = false;
461            $(ACC.quickorder.$qtyInputField).each(function () {
462                var str = this.value.trim();  // .trim() may need a shim
463                if (str) {   // don't send blank values to `parseInt`
464                    sum = parseInt(str, 10);
465                }
466                if (sum >= 1) {
467                    enable = true;
468                }
469                else{
470                    enable = false;
471                    return false;
472                }
473            });
474            return enable;
475        },
476
477        isAnySkuPresent: function () {
478            var present = false;
479            $(ACC.quickorder.$skuInputField).each(function () {
480                var str = jQuery.trim(this.value);  // .trim() may need a shim
481                if (str) {
482                    present = true;
483                    return false;
484                }
485            });
486            return present;
487        },
488
489        getCurrentParentLi: function (currentElement) {
490            return $(currentElement).closest(ACC.quickorder.$jsLiContainer);
491        },
492
493        findElement: function (currentElement, toFind) {
494            return $(currentElement).find(toFind);
495        },
496
497        findElementInCurrentParentLi: function (currentElement, toFind) {
498            return $(currentElement).closest(ACC.quickorder.$jsLiContainer).find(toFind);
499        }
500    };
501//}

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.