PageSourceSearch

https://www.discountschoolsupply.com/_ui/responsive/common/js/acc.pickupinstore.js?v=S530

js discountschoolsupply.com collected 2026-09-25 18:18:27 UTC 15,084 bytes, 510 lines download raw bytes

1ACC.pickupinstore = {
2
3	_autoload: [
4		"bindClickPickupInStoreButton",
5		"bindPickupButton",
6		"bindPickupClose",
7		"bindPickupInStoreSearch"
8	],
9
10	storeId:"",
11
12	unbindPickupPaginationResults:function ()
13	{
14		$(document).off("click","#colorbox .js-pickup-store-pager-prev")
15		$(document).off("click","#colorbox .js-pickup-store-pager-next")
16	},
17
18	bindPickupPaginationResults:function ()
19	{
20		var listHeight=  $("#colorbox .js-pickup-store-list").height();
21		var $listitems= $("#colorbox .js-pickup-store-list > li");
22		var listItemHeight = $listitems.height();
23		var displayCount = 5;
24		var totalCount= $listitems.length;
25		var curPos=0
26		var pageEndPos = (((totalCount/displayCount)-1) * (displayCount*listItemHeight)) * -1;
27
28
29		$("#colorbox .js-pickup-store-pager-item-all").text(totalCount);
30
31		$("#colorbox .store-navigation-pager").show();
32
33
34
35		checkPosition()
36
37		$(document).on("click","#colorbox .js-pickup-store-pager-prev",function(e){
38			e.preventDefault();
39			$listitems.css("transform","translateY("+(curPos+listHeight)+"px)")
40			curPos = curPos+listHeight;
41			checkPosition("prev");
42		})
43
44		$(document).on("click","#colorbox .js-pickup-store-pager-next",function(e){
45			e.preventDefault();
46			$listitems.css("transform","translateY("+(curPos-listHeight)+"px)")
47			curPos = curPos-listHeight;
48			checkPosition("next");
49		})
50
51		function checkPosition(){
52
53			var curPage = Math.ceil((curPos/(displayCount*listItemHeight))*-1)+1;
54			$("#colorbox .js-pickup-store-pager-item-from").text(curPage*displayCount-4);
55
56			var tocount = (curPage*displayCount > totalCount)? totalCount :curPage*displayCount;
57
58			if(curPage*displayCount-4 == 1){
59				$("#colorbox .js-pickup-store-pager-prev").hide()
60			}else{
61				$("#colorbox .js-pickup-store-pager-prev").show()
62			}
63
64			if(curPage*displayCount >= totalCount){
65				$("#colorbox .js-pickup-store-pager-next").hide()
66			}else{
67				$("#colorbox .js-pickup-store-pager-next").show()
68			}
69
70
71			$("#colorbox .js-pickup-store-pager-item-to").text(tocount);
72		}
73	},
74
75
76
77	bindPickupInStoreQuantity:function(){
78		$('.pdpPickupQtyPlus').click(function(e){
79			e.preventDefault();
80
81			var inputQty = $('.js-add-pickup-cart #pdpPickupAddtoCartInput');
82			var currentVal = parseInt(inputQty.val());
83			var maxVal = inputQty.data('max');
84
85			if (!isNaN(currentVal) && currentVal < maxVal) {
86				inputQty.val(currentVal + 1);
87				inputQty.change();
88			}
89		});
90
91		$('.pdpPickupQtyMinus').click(function(e){
92			e.preventDefault();
93			var inputQty = $('.js-add-pickup-cart #pdpPickupAddtoCartInput');
94			var currentVal = parseInt(inputQty.val());
95			var minVal = inputQty.data('min');
96
97			if (!isNaN(currentVal) && currentVal > minVal) {
98				inputQty.val(currentVal - 1);
99				inputQty.change();
100			}
101		});
102
103		$("body").on("keyup", ".js-add-pickup-cart #pdpPickupAddtoCartInput", function(event) {
104			var input = $(event.target);
105			input.val(this.value.match(/[0-9]*/));
106			var value = input.val();
107		});
108	},
109
110	bindPickupInStoreSearch: function ()
111	{
112		$(document).on('click', '#pickupstore_location_search_button', function (e)
113		{
114			ACC.pickupinstore.locationSearchSubmit($('#locationForSearch').val(), $('#atCartPage').val(), $('#entryNumber').val(), $(this).parents('form').attr('action'));
115			return false;
116		});
117
118		$(document).on('keypress', '#locationForSearch', function (e)
119		{
120			if (e.keyCode === 13)
121			{
122				e.preventDefault();
123				ACC.pickupinstore.locationSearchSubmit($('#locationForSearch').val(), $('#atCartPage').val(), $('input.entryNumber').val(), $(this).parents('form').attr('action'));
124				return false;
125			}
126		});
127	},
128
129	bindPickupHereInStoreButtonClick: function ()
130	{
131		$(document).on('click','.pickup_add_to_bag_instore_button', function (e){
132			$(this).prev('.hiddenPickupQty').val($('#pickupQty').val());
133		});
134
135		$(document).on('click','.pickup_here_instore_button', function (e){
136			$(this).prev('.hiddenPickupQty').val($('#pickupQty').val());
137			ACC.colorbox.close();
138		});
139	},
140
141	locationSearchSubmit: function (location, cartPage, entryNumber, actionUrl, latitude, longitude)
142	{
143		$("#colorbox .js-add-to-cart-for-pickup-popup, #colorbox .js-qty-selector-minus, #colorbox .js-qty-selector-input, #colorbox .js-qty-selector-plus").attr("disabled","disabled");
144
145		$.post({
146			url: actionUrl,
147			data: {locationQuery: location, cartPage: cartPage, entryNumber: entryNumber, latitude: latitude, longitude: longitude},
148			dataType: "text",
149			success: function (response)
150			{
151				ACC.pickupinstore.refreshPickupInStoreColumn(response);
152			}
153		});
154	},
155
156	createListItemHtml: function (data,id){
157
158		
159		var $rdioEl = $("<input>").attr("type","radio")
160							.attr("name","storeNamePost")
161							.attr("id","pickup-entry-" + id)
162							.attr("data-id", id)
163							.addClass("js-pickup-store-input")
164							.val(data.displayName);
165		
166		var $spanElStInfo = $("<span>")
167							.addClass("pickup-store-info")
168							.append($("<span>").addClass("pickup-store-list-entry-name").text(data.displayName))
169							.append($("<span>").addClass("pickup-store-list-entry-address").text(data.line1 + " " + data.line2))
170							.append($("<span>").addClass("pickup-store-list-entry-city").text(data.town));
171			
172		var $spanElStAvail = $("<span>")
173							.addClass("store-availability")
174							.append(
175									$("<span>")
176									.addClass("available")
177									.append(document.createTextNode(data.formattedDistance))
178									.append("<br>")
179									.append(data.stockPickupHtml)
180							);
181		
182		var $lblEl = $("<label>").addClass("js-select-store-label")
183						.attr("for","pickup-entry-" + id)
184						.append($spanElStInfo)
185						.append($spanElStAvail);
186		
187		return $("<li>").addClass("pickup-store-list-entry")
188						.append($rdioEl)
189						.append($lblEl);
190	},
191
192	refreshPickupInStoreColumn: function (data){
193		data = $.parseJSON(data);
194		var $storeList = $('#colorbox .js-pickup-store-list');
195		$storeList.empty();
196		
197		$("#colorbox .js-pickup-component").data("data",data);
198
199		for(i = 0;i < data["data"].length;i++){
200			$storeList.append(ACC.pickupinstore.createListItemHtml(data["data"][i],i));
201		}
202
203		ACC.pickupinstore.unbindPickupPaginationResults()
204		ACC.pickupinstore.bindPickupPaginationResults()
205
206		// select the first store
207		var firstInput= $("#colorbox .js-pickup-store-input")[0];
208		$(firstInput).click();
209
210
211		$("#colorbox .js-add-to-cart-for-pickup-popup, #colorbox .js-qty-selector-minus, #colorbox .js-qty-selector-input, #colorbox .js-qty-selector-plus").removeAttr("disabled");
212
213
214	},
215
216	bindClickPickupInStoreButton :function()
217	{
218
219
220		$(document).on("click",".js-pickup-in-store-button",function(e){
221			e.preventDefault();
222			var ele = $(this);
223			var productId = "pickupModal_" + $(this).attr('id');
224			var cartItemProductPostfix = '';
225			var productIdNUM = $(this).attr('id');
226			productIdNUM = productIdNUM.split("_");
227			productIdNUM = productIdNUM[1];
228
229			if (productId !== null)
230			{
231				cartItemProductPostfix = '_' + productId;
232			}
233
234			var boxContent =  $("#popup_store_pickup_form > #pickupModal").clone();
235			var titleHeader = $('#pickupTitle > .pickup-header').html();
236
237
238			ACC.colorbox.open(titleHeader,{
239				html:boxContent,
240				width:"960px",
241				onComplete: function(){
242
243					$("#colorbox .js-add-to-cart-for-pickup-popup, #colorbox .js-qty-selector-minus, #colorbox .js-qty-selector-input, #colorbox .js-qty-selector-plus").attr("disabled","disabled");
244
245
246					boxContent.show();
247					ACC.pickupinstore.pickupStorePager();
248					var tabs = $("#colorbox .js-pickup-tabs").accessibleTabs({
249						tabhead:'.tabhead',
250						tabbody: '.tabbody',
251						fx:'show',
252						fxspeed: 0,
253						currentClass: 'active',
254						autoAnchor:true,
255						cssClassAvailable:true
256					});
257
258					$("#colorbox #pickupModal *").each(function ()
259					{
260						if($(this).attr("data-id")!= undefined)
261						{
262							$(this).attr("id", $(this).attr("data-id"));
263							$(this).removeAttr("data-id");
264						}
265					});
266
267					$("#colorbox input#locationForSearch").focus();
268
269					// set a unique id
270					$("#colorbox #pickupModal").attr("id", productId);
271
272					// insert the product image
273					$("#colorbox #" + productId + " .thumb").html(ele.data("imgHtml"));
274
275					// insert the product cart details
276					$("#colorbox #" + productId + " .js-pickup-product-price").html(ele.data("productcart"));
277
278					var variants=ele.data("productcartVariants");
279					var variantsBox = $("#colorbox #" + productId + " .js-pickup-product-variants");
280					$.each(variants,function(key,value){
281					    variantsBox.append($("<span>").text(value));
282					});
283
284					// insert the product name
285					$("#colorbox  #" + productId + " .js-pickup-product-info").html(ele.data("productnameHtml"))
286
287					// insert the form action
288					$("#colorbox #" + productId + " form.searchPOSForm").attr("action", ele.data("actionurl"));
289
290					// set a unique id for the form
291					$("#colorbox #" + productId + " form.searchPOSForm").attr("id", "pickup_in_store_search_form_product_" + productIdNUM);
292
293					// set the quantity, if the quantity is undefined set the quantity to the data-value defined in the jsp
294					$("#colorbox #" + productId + " #pdpPickupAddtoCartInput").attr("value", ($('#pdpPickupAddtoCartInput').val() !== undefined ? $('#pdpPickupAddtoCartInput').val() : ele.data("value")));
295					// set the entry Number
296					$("#colorbox #" + productId + " input#entryNumber").attr("value", ele.data("entrynumber"));
297					// set the cartPage bolean
298					$("#colorbox #" + productId + " input#atCartPage").attr("value", ele.data("cartpage"));
299
300					
301					if(navigator.geolocation){
302						navigator.geolocation.getCurrentPosition(
303							function (position){
304								ACC.pickupinstore.locationSearchSubmit('', $('#atCartPage').val(),  ele.data("entrynumber"), ele.data("actionurl"),position.coords.latitude, position.coords.longitude);
305							},
306							function (error){
307									console.log("An error occurred... The error code and message are: " + error.code + "/" 
307+ error.message);
308							}
309						);
310					}
311					
312					ACC.product.bindToAddToCartStorePickUpForm();
313
314					
315				}
316
317			});
318
319		})
320	},
321
322	pickupStorePager:function()
323	{
324		$(document).on("change","#colorbox .js-pickup-store-input",function(e){
325			e.preventDefault();
326
327
328			$("#colorbox .js-pickup-tabs li.first a").click();
329
330			var storeData=$("#colorbox .js-pickup-component").data("data");
331			storeData=storeData["data"];
332
333			var storeId=$(this).data("id");
334
335			var $ele = $("#colorbox .display-details");
336
337
338			$.each(storeData[storeId],function(key,value){
339				if(key=="url"){
340					$ele.find(".js-store-image").empty();
341					if(value!=""){
342						$ele.find(".js-store-image").append($("<img>").attr("src", value).attr("alt", ""));
343					}
344				}else if(key=="productcode"){
345					$ele.find(".js-store-productcode").val(value);
346				}
347				else if(key=="openings"){
348					var $oele = $ele.find(".js-store-"+key);
349					$oele.empty();
350					if(value!=""){
351						$.each(value,function(key2,value2){
352							$oele.append($("<dt>").text(key2));
353							$oele.append($("<dd>").text(value2));
354						});
355					}
356
357				}
358				else if(key=="specialOpenings")
359				{}
360				else{
361					if(value!=""){
362						$ele.find(".js-store-"+key).text(value);
363					}else{
364						$ele.find(".js-store-"+key).empty();
365					}
366				}
367
368			})
369
370			$(document).one("click", "#colorbox .js-pickup-map-tab",function(){
371				ACC.pickupinstore.storeId = storeData[storeId];
372				ACC.global.addGoogleMapsApi("ACC.pickupinstore.drawMap");
373			})
374
375			
376			
377
378			var e=$("#colorbox .pickup-store-list-entry input:checked");
379
380
381			$("#add_to_cart_storepickup_form .js-store-id").attr("id",e.attr("id"))
382			$("#add_to_cart_storepickup_form .js-store-id").attr("name",e.attr("name"))
383			$("#add_to_cart_storepickup_form .js-store-id").val(e.val())
384
385			if(storeData[storeId]["stockLevel"] > 0 || storeData[storeId]["stockLevel"] == "")
386			{
387				var input = $("#add_to_cart_storepickup_form .js-qty-selector-input");
388				input.data("max",storeData[storeId]["stockLevel"]); 
389				ACC.productDetail.checkQtySelector(input, "reset");
390				$("#add_to_cart_storepickup_form").show()
391				
392			} else{
393				$("#add_to_cart_storepickup_form").hide()
394			}
395
396
397		})
398
399		$(document).on("click",".js-select-store-label",function(e){
400			$("#colorbox .js-pickup-component").addClass("show-store");
401			$("#colorbox #cboxTitle .headline-inner").addClass('hidden-xs hidden-sm');
402			$("#colorbox #cboxTitle .back-to-storelist").removeClass('hidden-xs hidden-sm');
403		})
404
405		$(document).on("click",".js-back-to-storelist",function(e){
406			$("#colorbox .js-pickup-component").removeClass("show-store");
407			$("#colorbox #cboxTitle .headline-inner").removeClass('hidden-xs hidden-sm');
408			$("#colorbox #cboxTitle .back-to-storelist").addClass('hidden-xs hidden-sm');
409		})
410
411	},
412
413
414	bindPickupButton : function(){
415		$(document).on("click",".js-pickup-button",function(e){
416			e.preventDefault();
417			$e = $(this).parent().nextAll(".js-inline-layer")
418			$e.addClass("open")
419
420			//$e.height($e.height())
421			var h= $e.height()
422			$e.removeClass("open")
423
424			$e.animate({
425				height: h
426			})
427		})
428	},
429
430
431	bindPickupClose : function(){
432		$(document).on("click",".js-close-inline-layer",function(e){
433			e.preventDefault();
434			$e = $(this).parents(".js-inline-layer")
435
436			$e.animate({
437				height: 0
438			})
439		})
440	},
441	
442	checkIfPointOfServiceIsEmpty: function (cartEntryDeliveryModeForm)
443	{
444		return (!cartEntryDeliveryModeForm.find('.pointOfServiceName').text().trim().length);
445	},
446	
447	validatePickupinStoreCartEntires: function ()
448	{
449		var validationErrors = false;
450		$("form.cartEntryShippingModeForm").each(function ()
451		{
452			var formid = "#" + $(this).attr('id');
453			if ($(formid + ' input[value=pickUp][checked]').length && ACC.pickupinstore.checkIfPointOfServiceIsEmpty($(this)))
454			{
455				$(this).addClass("shipError");
456				validationErrors = true;
457			}
458		});
459
460		if (validationErrors)
461		{
462			$('div#noStoreSelected').show().focus();
463			$(window).scrollTop(0);
464		}
465		return validationErrors;
466	},
467
468	
469	drawMap: function(){
470
471		storeInformation = ACC.pickupinstore.storeId;
472
473		if($("#colorbox .js-map-canvas").length > 0)
474		{			
475
476
477			$("#colorbox .js-map-canvas").attr("id","pickup-map")
478			var centerPoint = new google.maps.LatLng(storeInformation["storeLatitude"], storeInformation["storeLongitude"]);
479			
480			var mapOptions = {
481				zoom: 13,
482				zoomControl: true,
483				panControl: true,
484				streetViewControl: false,
485				mapTypeId: google.maps.MapTypeId.ROADMAP,
486				center: centerPoint,
487				mapId: "DEMO_MAP_ID"
488			}
489			
490			var map = new google.maps.Map(document.getElementById("pickup-map"), mapOptions);
491			const img = document.createElement("img");
492			img.src = "https://maps.google.com/mapfiles/markerA.png";
493			var marker = new google.maps.marker.AdvancedMarkerElement({
494				position: new google.maps.LatLng(storeInformation["storeLatitude"], storeInformation["storeLongitude"]),
495				map: map,
496				title: storeInformation["name"],
497				content: img
498			});
499			var infowindow = new google.maps.InfoWindow({
500				content: ACC.common.encodeHtml(storeInformation["name"]),
501				disableAutoPan: true
502			});
503			google.maps.event.addListener(marker, 'click', function (){
504				infowindow.open(map, marker);
505			});
506		}
507		
508	}
509
510};

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.