PageSourceSearch

https://easy-surfshop.com/assets/ec/js/itemPage.js

js easy-surfshop.com collected 2026-09-26 07:41:57 UTC 36,787 bytes, 986 lines download raw bytes

1"use strict";
2var itemPage = function () {
3	var _parentFiltres = [];
4	var isNotModal = true;
5	var _oldValue = 0;
6	var _filtred = { indexFilters : []}, _subitems =[], _subitemsDOM = $('.subitem'), _filtredSelectedPathDOM = '.filtres select option:selected', _filtredPathDOM = '.filtres select', _activeOptions = {},
7	_handlePopover = function () {
8		$.each($('.popoverItem'), function (i, item) {
9			$(item).popover({
10				html: true,
11				content: $(item).next().html(),
12				trigger: 'hover',
13				placement: "bottom"
14			});
15		});
16	},
17	//generated uniquen/initial value from global ecAttributes
18	_generateValue = function (){
19		if (typeof ecAttributes === "undefined") {
20			return false;
21		}
22		_subitems = [];
23		_filtred = {indexFilters : []};
24		if (typeof ecAttributes.subitems !== "undefined") {
25			_subitems = $.extend(true, [], ecAttributes.subitems);
26			$('#priceFrom').hide();
27		}
28
29		//iteruje subitemy, w poszukiwaniu unikalnych wartosci, buduje tutaj filtry =
30		$.each(_subitems, function (i, item) {
31			var _index = 0;
32			$.each(item.filtred, function (i, filtr) {
33				if (typeof _filtred[filtr.id] === 'undefined') {
34					//nie ma jeszcze dodanego filtra
35					_filtred[filtr.id] = {
36						'id' : filtr.id,
37						'name' : _getNameFiltred(filtr.id),
38						'options' : []
39					};
40					filtr.items = [item.id];
41					_filtred[filtr.id].options.push(filtr);
42					_filtred.indexFilters.push(filtr.id);
43				} else if (!_checkIfExistElementInArray(_filtred[filtr.id].options, filtr.value, 'value')) {
44					//jest już taki filtr, dodaje następną opce
45					filtr.items = [item.id];
46					_filtred[filtr.id].options.push(filtr);
47				} else {
48					//jest filtr, jest taka opcja już, dodaje item do filtra
49					fnPushItemToOptionsFilters(_filtred[filtr.id].options, filtr.value, item.id);
50				}
51			});
52		});
53	},
54	fnPushItemToOptionsFilters = function (tab, value, itemId) {
55		var i=0, l=tab.length;
56		for(i=l;i--;) {
57			if (tab[i].value === value) {
58				if (tab[i].items.indexOf(itemId) === -1){
59					tab[i].items.push(itemId);
60				}
61				break;
62			}
63		}
64	},
65	_getNameFiltred = function (id){
66		var _return = "", _id = parseInt(id, 10);
67		$.each(ecAttributes.filtred, function (i, item) {
68			if(_id === parseInt(item.id, 10)) {
69				_return = item.name;
70				return false;
71			}
72		});
73		return _return;
74	},
75	//check if object with valueName exist in array
76	_checkIfExistElementInArray = function (_arr, _value, _valueName) {
77		var _returnValue = false;
78		if (typeof _arr !== "undefined") {
79			$.each(_arr, function (i, ele) {
80				 if (_valueName === "id") {
81					 if (parseInt(_value, 10) === parseInt(ele.id, 10)) {
82						_returnValue = true;
83						return false;
84					 }
85				 } else if (_valueName === "value") {
86					 if (_value === ele.value) {
87							_returnValue = true;
88							return false;
89					 }
90				 } else {
91					 return false;
92				 }
93			});
94		}
95		return _returnValue;
96	},
97	fnGetIdFilterToRender = function (idFiltred) {
98		return _filtred.indexFilters.slice(_filtred.indexFilters.indexOf(idFiltred) + 1)
99	},
100	//generated All filtred with option filtr subitems
101	_generateAttrFiltred = function (options) {
102		var _newFiltred, _label, _allOptions, _wrapper, i = 0, i, l , filtr, indexFilters =[];
103		if (typeof options !== 'undefined' && typeof options.currentFiltr !== 'undefined') {
104			indexFilters = fnGetIdFilterToRender(options.currentFiltr);
105		} else {
106			indexFilters = _filtred.indexFilters;
107		}
108		l = indexFilters.length;
109		for (i = 0; i < l; i++) {
110			filtr = _filtred[indexFilters[i]];
111			_newFiltred = $('<div>');
112			_label = $('<label class="control-label">').html(filtr.name);
113			filtr.options = _sortByEnumValues(filtr.id, filtr.options);
114			_newFiltred.attr('class', 'form-group');
115			_newFiltred.attr('id', "filter_" + filtr.id);
116			_wrapper = _newFiltred;
117			_newFiltred.append(_label);
118			_wrapper.append(_generateSelectFiltred({'idAttr' :filtr.id}));
119			_newFiltred.append(_wrapper);
120			$('.filtres').append(_newFiltred);
121			if (typeof options.itemToSelect !== 'undefined') {
122				_fnSelectFiletrForItem(options.itemToSelect, filtr.id);
123			} else if (!$.isEmptyObject(_activeOptions)) {
124				_fnSelectSavedOptions(filtr.id);
125			}
126        }
127        if (typeof options.itemToSelect === 'undefined') {
128			_fnSelectMatchingItem();
129		}
130	},
131	_fnSelectMatchingItem = function () {
132		var i=0, l = _filtred.indexFilters.length, selectedValue, idFiltr, x, y, items =[];
133		for (i=l;i--;) {
134			idFiltr = _filtred.indexFilters[i];
135			selectedValue = $('#filter_' + idFiltr).find('select').val();
136			y = _filtred[idFiltr].options.length;
137			for (x=y; x--;) {
138				if (_filtred[idFiltr].options[x].value === selectedValue) {
139					if (items.length === 0) {
140						items = _filtred[idFiltr].options[x].items
141					} else {
142						items = items.filter(function(n) {
143							return _filtred[idFiltr].options[x].items.indexOf(n) != -1
144						});
145					}
146					break;
147				}
148			}
149		}
150		try {
151			$('tr#'+ items[0]).find('input')[0].checked=true;
152			_activateSubItem($('tr#'+ items[0]));
153		}catch (e) {}
154	},
155	_fnGetSubItemForSymbol = function (symbol){
156		var i=0, l = _subitems.length;
157		for(i=l;i--;) {
158			if (_subitems[i].symbol === symbol) {
159				return _subitems[i];
160				break;
161			}
162		}
163	},
164	_fnGetFiltredForObjectSuitem = function (object, idFiltred){
165		var i=0, l = object.filtred.length;
166		for(i=l;i--;) {
167			if (object.filtred[i].id == idFiltred) {
168				return object.filtred[i];
169				break;
170			}
171		}
172	},
173	_fnSelectFiletrForItem = function (itemToSelect, filtrType) {
174		var filtr = _fnGetFiltredForObjectSuitem(_fnGetSubItemForSymbol(itemToSelect), filtrType);
175		$('#filter_' + filtrType).find('select').val(filtr.value)
176	},
177	fnGetAvailableItemToSelect = function (tabTypeFilters) {
178		var items = [], i = 0, l = tabTypeFilters.length, value, x = 0, y = 0;
179		for (i=l;i--;) {
180			if (typeof _filtred[tabTypeFilters[i]] === 'undefined') continue;
181			x = y = 0;
182			value = $('select[data-id="' + tabTypeFilters[i] + '"]').val();
183			y = _filtred[tabTypeFilters[i]].options.length;
184			for (x=y;x--;) {
185				if (typeof _filtred[tabTypeFilters[i]].options[x] === 'undefined') continue;
186				if (_filtred[tabTypeFilters[i]].options[x].value === value) {
187					if ($.isEmptyObject(items)) {
188						items = _filtred[tabTypeFilters[i]].options[x].items;
189					} else {
190						items = items.filter(function(n) {
191							return _filtred[tabTypeFilters[i]].options[x].items.indexOf(n) != -1
192						});
193					}
194					break;
195				}
196			}
197		}
198		return items;
199	},
200	fnGetAvailableOptions = function (typeFilter) {
201		var orderFilter = _filtred.indexFilters.indexOf(typeFilter), optionsToSelect = [], items, i, l, itemsConcat;
202		if (orderFilter === 0) {
203			return _filtred[typeFilter].options;
204		}
205		items = fnGetAvailableItemToSelect(_filtred.indexFilters.slice(0, orderFilter));
206		l = _filtred[typeFilter].options.length;
207		for (i=l;i--;) {
208			itemsConcat = items.filter(function(n) {
209				return _filtred[typeFilter].options[i].items.indexOf(n) != -1
210			});
211			if (itemsConcat.length > 0) {
212				optionsToSelect.push(_filtred[typeFilter].options[i]);
213			}
214		}
215		return optionsToSelect;
216	},
217	//generated filtr type = SELECT
218	_generateSelectFiltred = function (options) {
219		var _select = $('<select>'), _attrOption = {}, _optionsToSelect;
220		_optionsToSelect = fnGetAvailableOptions(options.idAttr);
221		_select.attr("class", "form-control");
222		_select.attr("data-id", options.idAttr);
223		//_select.append($('<option>', {id : 0}).html('---'));
224		$.each(_optionsToSelect, function (i, op) {
225			_attrOption = {};
226			_attrOption.id = op.id;
227			_attrOption.value = op.value;
228			_select.append($('<option>', _attrOption).html(op.value));
229		});
230		_select.bind('change', function () {
231			_refreshAll({currentFiltr : $(this).attr('data-id')});
232		});
233		return _select;
234	},
235	_showQuantitySelectedItem = function () {
236
237	},
238	//refresh all subitems after selected filtr
239	_refreshAll = function (options) {
240		_saveOptions();
241		if (typeof options !== 'undefined' && typeof options.currentFiltr !== 'undefined') {
242			var filtredToRemove = fnGetIdFilterToRender(options.currentFiltr);
243			$.each(filtredToRemove, function () {
244				$('#filter_' + this).remove();
245			});
246		} else {
247			$('.filtres').html("");
248		}
249		_generateAttrFiltred(options);
250		if (ecAttributes.warehouse === true) {
251		 _showQuantitySelectedItem();
252		}
253		_showSmallerPrice();
254		_toggleCartButton(false);
255		if (!isNotModal) {
256			_selectSubitem(_findSelected().find("input").val());
257		}
258	},
259	_isAnyFiltrSelected = function () {
260		var _selected = false,  _options = $(_filtredSelectedPathDOM);
261		$.each(_options, function (i, optionDOM) {
262			if (parseInt(optionDOM.id, 10) > 0) {
263				_selected = true;
264				return true;
265			}
266		});
267		return _selected;
268	},
269	_showSmallerPrice = function () {
270		var _smallerPrice = 0, _currency = "", _actualPrice;
271		$.each(_subitemsDOM, function (i, itemDOM) {
272			_actualPrice = parseFloat($(itemDOM).data('price'));
273			if (i === 0 ) {
274				_currency = $(itemDOM).data('currency');
275				_smallerPrice = _actualPrice;
276			} else {
277				if (_actualPrice < _smallerPrice) {
278					_currency = $(itemDOM).data('currency');
279					_smallerPrice = _actualPrice;
280				}
281			}
282		});
283		if ($('#price').attr("data-update") === undefined || $('#price').attr("data-update") === "default") {
284			$('#price').html(_smallerPrice + " <span>" + _currency + "</span>");
285		}
286	},
287	_toggleCartButton = function (value) {
288		var _visible = !value;
289		$('#AddCart button[type="submit"]').attr("disabled", _visible);
290		$('#AddCart').unbind();
291		if (_visible) {
292			// $('#AddCart').popover({
293			// 	html: true,
294			// 	content: ecAttributes.otherInfo[1],
295			// 	trigger: 'hover',
296			// 	placement: "bottom"
297			// });
298			$('#AddCart').hover(function () {
299				$('.filtres').addClass('blink');
300				$('#AddCart').popover('show');
301				setTimeout(function(){ $('.filtres').removeClass('blink'); }, 3000);
302			}, function () {
303				$('#AddCart').popover('hide')
304			});
305		}
306	},
307	//save actual selected filtred before refresh
308	_saveOptions = function () {
309		var _options = $(_filtredSelectedPathDOM), i =0, l= _options.length;
310		for (i=l;i--;l) {
311			_activeOptions[_options[i].id] = _options[i].value;
312		}
313	},
314	_fnSelectSavedOptions = function (idFilter) {
315		var options, i, x, value;
316		if (!$.isEmptyObject(_activeOptions) && typeof _activeOptions[idFilter] !== 'undefined') {
317			value = _activeOptions[idFilter];
318			options = $("#filter_" + idFilter).find('option');
319			x = options.length;
320			for (i=x;i--;){
321				if (options[i].value == value) {
322					options[i].selected = true;
323					break;
324				}
325			}
326		}
327		_activeOptions = {};
328	},
329	_removeStickers = function () {
330		if ($(".sticker-special-sale").length) {
331			$(".sticker-special-sale").remove();
332		}
333		if ($(".sticker-sale:not(.sticker-special-sale)").length) {
334			$(".sticker-sale:not(.sticker-special-sale)").remove();
335		}
336		if ($(".sticker-new").length) {
337			$(".sticker-new").remove();
338		}
339		if ($(".sticker-promotion").length) {
340			$(".sticker-promotion").remove();
341		}
342		if ($(".sticker-novelty").length) {
343			$(".sticker-novelty").remove();
344		}
345	},
346	_handleStickers = function (item) {
347		_removeStickers();
348		if ($(item).data("sticker-specialsale")) {
349			$(".item-transaction-image").prepend($('<div class="sticker sticker-sale sticker-special-sale"></div>'));
350		} else {
351			if ($(item).data("sticker-sale")) {
352				$(".item-transaction-image").prepend($('<div class="sticker sticker-sale"></div>'));
353			}
354			if ($(item).data("sticker-novelty")) {
355				$(".item-transaction-image").prepend($('<div class="sticker sticker-new"></div>'));
356			}
357			if ($(item).data("sticker-promotion")) {
358				$(".item-transaction-image").prepend($('<div class="sticker sticker-promotion"></div>'));
359			}
360		}
361	},
362	//handle subitems
363	_handleSubItems = function () {
364		if (!_isAnySelected()) {
365			_selectFirst();
366		}
367		_activateSubItem(_findSelected());
368		$('input.subitem_radio').bind('change', function() {
369			_activateSubItem(_findSelected());
370			_refreshAll({itemToSelect : _findSelected().find('input').val()});
371		});
372	 },
373	//return actually selected subitem
374	_findSelected = function () {
375		return _subitemsDOM.find("input[name=subitems]:checked").parents('.sub
375item');
376	},
377	// copy data from selected item to other part of page
378	_activateSubItem = function(item) {
379		if (item.data('price') !== undefined) {
380			$("#price").html(item.data('price') + " <span>" + item.data('currency') + "</span>");
381		} else {
382			$("#price").empty();
383		}
384		if (item.data("lowest-price") || item.data("already-lowest-msg")) {
385			if (item.data("lowest-price") == "" || item.data("lowest-price") == item.data("price")) {
386				$("#lowest-price").text(item.data("already-lowest-msg"));
387			} else {
388				$("#lowest-price").html(item.data("lowest-price-msg") + item.data("lowest-price") + "<span>" + item.data('currency') + "</span>");
389			}
390			$("#lowest-price").show();
391		} else {
392			$("#lowest-price").hide();
393		}
394
395		if (item.data('itempromotion') !== undefined) {
396			$(".product-promotion-message").html(item.data('itempromotion'));
397			$(".product-promotion-message").show();
398		} else {
399			$(".product-promotion-message").hide();
400			$(".product-promotion-message").html("");
401		}
402
403		$("#AddCart > input[name='item']").val(item.find("input").val());
404		$("#AddCart > button[type='submit']").removeAttr("disabled");
405		
406		var regularPrice = parseFloat(item.data('regularprice'));
407		var newPrice = parseFloat(item.data('price'));
408		
409		var shippingCost = item.data('shippingcost');
410		if (shippingCost !== undefined && shippingCost.length > 0) {
411			$(".delivery-cost-info").html(ecAttributes.otherInfo[5] + " "+ shippingCost + " " + ecAttributes.otherInfo[6]);
412		} else {
413			$(".delivery-cost-info").html(ecAttributes.otherInfo[7]);
414		}
415		
416		//$('#priceFrom').hide();
417		if(item.data('yousave')) {
418			var youSave = parseFloat(item.data('yousave'));
419			if((youSave > 0) && (regularPrice > newPrice)) {
420				$(".price-info").html("<div class='wrapper'> <span class='discount-price oldPrice'>" + item.data('regularprice') + " " + item.data('currency') + "</span> <span class='savePrice-perc'> -" + Math.round((youSave / regularPrice) * 100) + "%</span>" + ecAttributes.otherInfo[3] + " <span class='discount-price savePrice'>" + item.data('yousave') + " " + item.data('currency') + "</span></div>");
421			}
422		}
423
424		// TWS Clock Promotion
425		_handleTwsClockPromotion(item);
426		
427		//SYGMA
428		if (item.data("sygma")) {
429			var _content = "";
430			if ((regularPrice <= newPrice) && newPrice >= 150) {
431				$(".price-availability-block").find(".sygma").remove();
432				$(".price-availability-block").append("<div class='sygma'></div>");
433				_content = "<a class='btn btn-more-circle sygma-link' rel='nofollow' href='https://irata.bgzbnpparibas.pl/eshop-form/calc?RequestedAmount=" + newPrice + "&AgreementNo=2310909&CreditType=124683'>" + ecAttributes.sygmaCanvas[0] + "</a>"
434			}
435			if (newPrice >= 150) {
436				if ($(".price-availability-block").find(".sygma").length > 0) {
437					$(".price-availability-block .sygma").find();
438					_content += "<a class='btn btn-more-circle sygma-link' rel='nofollow' href='https://irata.bgzbnpparibas.pl/eshop-form/calc?RequestedAmount=" + newPrice + "&AgreementNo=2310909&CreditType=124450'>" + ecAttributes.sygmaCanvas[1] + "</a>";
439				} else {
440					$(".price-availability-block").append("<div class='sygma'></div>");
441					_content += "<a class='btn btn-more-circle sygma-link' rel='nofollow' href='https://irata.bgzbnpparibas.pl/eshop-form/calc?RequestedAmount=" + newPrice + "&AgreementNo=2310909&CreditType=124450'>" + ecAttributes.sygmaCanvas[1] + "</a>";
442				}
443			}
444			$(".price-availability-block .sygma").html(_content);
445			_handleSygmaLinks();
446		}
447		//SYGMA
448		
449		
450		
451		// Get images for subitem, create structure and build slider
452		_adjustImages(item, 'subitem');
453		
454		if (ecAttributes.warehouse === true) {
455			$('.availability strong').css('display', 'block');
456			var _msg = "", _quantity = parseInt(item.data('quantityinternal'), 10) + parseInt(item.data('quantityexternal'), 10);
457
458			if (item.data('buyable') === true) {
459				$("#AddCart").show();
460				$("#availabilityInfo").hide();
461				if (!item.data("externalstock") && item.data("quantityinternal") > 0) {
462					_msg = ecAttributes.infoWarehouse[0]; // "Produkt dostępny w sklepie. Wysyłamy w ciągu 24h";
463				} else if (item.data("externalstock") && item.data("quantityexternal") > 0) {
464					_msg = ecAttributes.infoWarehouse[1]; // "Produkt dostępny w magazynie. Wysyłka w x dni.";
465
466				} else if (item.data("externalstock") && item.data("quantityexternal") <= 0 && item.data("allowoutofstock") === true) {
467					_msg = ecAttributes.infoWarehouse[3]; // "Dostawa tego produktu może zająć więcej niż 7 dni. Zapytaj o czas realizacji.";
468				} else if (_quantity <=0 && item.data('allowoutofstock') === false) {
469					_msg = ecAttributes.infoWarehouse[2];
470					$("#AddCart").hide();
471					$("#availabilityInfo").attr('href', '/do/notifyproductchange?symbol=available&itemId=' + $(item).attr('id')); // id aktualnego podtowaru dla notifyProductChange
472					$("#availabilityInfo").text(ecAttributes.infoWarehouse[4]);
473					$("#availabilityInfo").show();
474				}
475			} else {
476				_msg = ecAttributes.infoWarehouse[2];
477				$("#AddCart").hide();
478				$("#availabilityInfo").attr('href', '/do/notifyproductchange?symbol=available&itemId=' + $(item).attr('id')); // id aktualnego podtowaru dla notifyProductChange
479				$("#availabilityInfo").text(ecAttributes.infoWarehouse[4]);
480				$("#availabilityInfo").show();
481			}
482			
483			$('.availability strong').html(_msg);
484
485			if ($('span#stockAvailabilityTime').length > 0) {
486				$('span#stockAvailabilityTime').html(item.data("stockavailabilitytime"));
487			}
488
489			if (item.data('buyable')) {
490				if (_quantity == 1) {
491                    _msg = ecAttributes.infoStockQuantity[0];
492				} else if (_quantity > 1 && _quantity <= 5) {
493					_msg = ecAttributes.infoStockQuantity[1] + _quantity + ecAttributes.infoStockQuantity[2];
494				} else if (_quantity > 5) {
495                    _msg = ecAttributes.infoStockQuantity[3];
496				} else {
497					_msg = "";
498				}
499			} else {
500                _msg = "";
501            }
502			
503			$('.stock-info').html(_msg);
504		} else {
505			$('.availability strong').css('display', (item.data('available') === true) ? 'block' : 'none' );
506		}
507		
508		if (typeof $(item).find('[name="subitems"]') !== "undefined" && typeof $(item).find('[name="subitems"]').val() !== "undefined" && isNotMod
508al) {
509			location.hash = "sub-" + $(item).find('[name="subitems"]').val()
510		}
511		_updateQuestionOnItemLink();
512		if (EC.callback !== undefined && EC.callback.itemPage !== undefined && EC.callback.itemPage.activateSubItem) {
513			var idItem = parseInt(item.attr("id"), 10);
514			if (_oldValue === 0 || _oldValue != idItem) {
515				_oldValue = idItem;
516				if ($.isArray(EC.callback.itemPage.activateSubItem)) {
517					$.each(EC.callback.itemPage.activateSubItem, function () {
518						this.method(item);
519					})
520				} else {
521					EC.callback.itemPage.activateSubItem(item);
522				}
523			}
524		}
525		$(".savePriceWrapper").hide();
526		$(".savePriceWrapper[data-subitem='" + item.find("input").val() + "']").show();
527		_handleStickers(item);
528	},
529	_handleSygmaLinks = function() {
530		$(".sygma-link").each(function (){
531			$(this).click(function(e) {
532				e.preventDefault();
533				_popup($(this).attr("href"), "sygma");
534			});
535		})
536	},
537	_popup = function (mylink, windowname) { 
538		if (! window.focus)
539			return true; 
540		var href; 
541		if (typeof(mylink) == 'string') 
542			href=mylink; 
543		else 
544			href=mylink.href; 
545		window.open(href, windowname, 'width=600,height=600,scrollbars=yes'); 
546		return false;
547	},
548	// if any radio is selected than true
549	_isAnySelected = function () {
550		return (_subitemsDOM.find("input.visible[name=subitems]:checked").lenght > 0);
551	},
552	// selects first visible subitem
553	_selectFirst = function() {
554		_subitemsDOM.find("input.visible[name=subitems]:first").click();
555	},
556	//sorted array object by Value
557	_sortByValue = function (array) {
558		function sortValue(a, b){
559			  var aName = a.value.toLowerCase();
560			  var bName = b.value.toLowerCase();
561			  return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
562		}
563		return array.sort(sortValue);
564	},
565	//sorted array object by Value
566	_sortByName = function (array) {
567		function sortName(a, b){
568			  var aName = a.name.toLowerCase();
569			  var bName = b.name.toLowerCase();
570			  return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
571		}
572		return array.sort(sortName);
573	},
574	_sortByEnumValues = function(id, array) {
575		var result = $.grep(ecAttributes.possibleValues, function(e){ return e.id == id; });
576		var index = 0;
577		var newArray = [];
578		$.each(array, function (i, item) {
579			if (result[0].values.indexOf(item.value) >= index) {
580				if (i == 0) {
581					newArray[0] = item;
582					index = result[0].values.indexOf(item.value);
583				} else {
584					newArray.push(item);
585					index = result[0].values.indexOf(item.value);
586				}
587			} else if (result[0].values.indexOf(item.value) < index){
588				var j;
589				for(j = 0; j < newArray.length; j++) {
590					if (result[0].values.indexOf(newArray[j].value) > result[0].values.indexOf(item.value)) {
591						newArray.splice(j, 0, item);
592						break;
593					}
594				}
595			}
596		});
597		return newArray;
598		
599	},
600	_hiddenAvail = function () {
601		$('.availability strong').css('display', 'none');
602	},
603	/*
604	 * RELATED ITEMS
605	 */
606	_handleRelated = function () {
607		var _li = $('li[data-type="related"]');
608		if (_li.length > 0) {
609			_li.click(_getRelatedItems);
610		}
611		if($(_li.find('a')).attr('href') === location.hash) {
612			_li.click();
613		}
614	},
615	_getRelatedItems = function () {
616		var _this = this;
617		if (typeof $(this).data('fill') === "undefined") {
618			$.ajax({
619				  url: "/do/ajaxJsp/relatedItems.jsp",
620				  data : {
621					  'id' : $('.product-page').data('id')
622				  }
623				}).done(function(data) {
624					var _href = $(_this).find('a').attr('href'), _id = _href.substring(1, _href.length);
625					$('#' + _id).html(data);
626					$(_this).attr('data-fill', true)
627				});
628		}
629	},
630	_checkVisibleSubitemsList = function () {
631		$('.subitems[data-visible="false"]').css('display', 'none');
632	},
633	_activateFiltredForSubitem = function (_symbol) {
634		var _subitem = null, option = null;
635		$.each(_subitems, function (i, item) {
636			if (item.symbol === _symbol){
637				_subitem = item;
638				return false;
639			}
640		});
641		if (_subitem !== null) {
642			$.each(_subitem.filtred, function (i, filtr) {
643				$('#filter_' + filtr.id + ' option:contains("' + filtr.value + '")').prop('selected', true);
644			});
645		}
646	},
647	_selectFirstNotVisible = function() {
648		_subitemsDOM.find("input[name=subitems]").first().click();
649	},
650	_isAnySelectedNotVisible = function () {
651		return (_subitemsDOM.find("input[name=subitems]:checked").length > 0);
652	},
653	_selectSubitem = function (_symbol) {
654		$('[name="subitems"][value="' + _symbol + '"]').prop("checked", true);
655		if (!_isAnySelectedNotVisible()) {
656			_selectFirstNotVisible();
657		}
658		_activateSubItem(_findSelected());
659		//_activateFiltredForSubitem(_symbol);
660	},
661	_checkHash = function () {
662		if (location.hash.indexOf('#sub-') === 0) {
663			_selectSubitem(location.hash.replace('#sub-',''));
664		} else {
665			_selectFirst();
666		}
667	},
668	_handleHash = function () {
669		$(window).on('hashchange', _checkHash);
670	},
671	_handleDescriptionButton = function() {
672		$("#descReadMore").click(function(e) {
673			e.preventDefault();
674			$(this).hide();
675			$("#description").hide();
676			$("#moreDescription").show();
677		});
678		$("#descHide").click(function(e) {
679			e.preventDefault();
680			$("#moreDescription").hide();
681			$("#description").show();
682			$("#descReadMore").show();
683			
684		});
685	},
686	_updateQuestionOnItemLink = function() {
687		$( document ).ajaxComplete(function() {
688			$("#questionOnItem").find('input[property=location]').val(location.href);
689		});
690		$("#questionOnItem").find('input[property=location]').val(location.href);
691	},
692	_rebuildBxSlider = function() {
693		$("#product_slider").bxSlider({
694			 mode: 'horizontal',
695			 minSlides: 1,
696			 maxSlides: 1,
697			 moveSlides: 1,
698			 controls: true,
699			 pagerCustom: '#bx-pager',
700			 onSliderLoad: function() {
701				 $("li.bx-clone").children("a").attr("rel", "");
702				 $(".image").css("visibility", "visible");
703				 $("#bx-pager").css("visibility", "visible");
704			 }
705		});
706		
707	},
708	_initPrettyPhoto = function() {
709		$("a[rel^='prettyPhoto[product_gallery]']").prettyPhoto({
710			social_tools: '',
711			markup: '<div class="pp_pic_holder"> \
712	             <div class="ppt">&nbsp;</div> \
713	             <div class="pp_top"> \
714	                 <div class="pp_left"></div> \
715	                 <div class="pp_middle"></div> \
716	                 <div class="pp_right"></div> \
717	             </div> \
718	             <div class="pp_content_container"> \
719	                 <div class="pp_left"> \
720	                 <div class="pp_right"> \
721	                     <div class="pp_content"> \
722	                         <div class="pp_loaderIcon"></div> \
723	                         <div class="pp_fade"> \
724									<a class="pp_close" href="#" style="top: -20px; right: -10px; z-index: 20000">Close</a> \
725									<a href="#" class="pp_expand" style="display: block; top: 10px; right: 30pxpx" title="Expand the image">Expand</a> \
726										<div class="pp_hoverContainer"> \
727	                                 <a class="pp_next" href="#">next</a> \
728	                                 <a class="pp_previous" href="#">previous</a> \
729	                             </div> \
730	                             <div id="pp_full_res"></div> \
731	                             <div class="pp_details"> \
732	                                 <p class="pp_description"></p> \
733	                                 {pp_social} \
734	                             </div> \
735	                         </div> \
736	                     </div> \
737	                 </div> \
738	                 </div> \
739	             </div> \
740	             <div class="pp_bottom"> \
741	                 <div class="pp_left"></div> \
742	                 <div class="pp_middle"></div> \
743	                 <div class="pp_right"></div> \
744	             </div> \
745	         </div> \
746	         <div class="pp_overlay"></div>',
747	         gallery_markup: '<div class="pp_gallery"> \
748	 			</div>'
749		});
750	},
751	_handleTwsClockPromotion = function(item) {
752		var endOfTWS = item.data('endofpromotion');
753		if (!endOfTWS || endOfTWS.length == 0) {
754			$(".counter-tws").fadeOut('fast');
755			$(".product-tws-counter").attr('data-end', endOfTWS);
756		} else {
757			$(".product-tws-counter").attr('data-end', endOfTWS);
758			$.fn.handleTwsClock();
759			$(".counter-tws").fadeIn('fast');
760		} 
761	},
762	_removeExtension = function (path) {
763		return path.substring(0, path.lastIndexOf(".")) || path;
764	},
765	_getExtension = function (path) {
766		return path.substring(path.lastIndexOf(".") + 1, path.length);
767	},
768	_changeExtension = function (path, extension) {
769		return _removeExtension(path) + "." + extension;
770	},
771	_adjustImages = function(item, mode) {
772		var overallDisplayedImages = 0;
773		if (item.data('article_big')) {
774			$(".image").html("<ul id='product_slider'></ul>");
775			$("#bx-pager").html("");
776			overallDisplayedImages++;
777			
778			for(var i = 17; i >= 0; i--) {
779				var count = "" + i;
780				var numberpad = "00000";
781				var multiNumberPadded = numberpad.substring(0, numberpad.length - count.length) + count;
782				if (item.data('article_big_multi_' + multiNumberPadded)) {
783					if (item.data("showwebp") == true) {
784						$("#product_slider").prepend("<li id='article_big_multi_" + multiNumberPadded + "'><a><picture><source srcset='" + _changeExtension(item.data('article_big_multi_' + multiNumberPadded), "webp") + "' type='image/webp'><source srcset='" + item.data('article_big_multi_' + multiNumberPadded) + "' type='image/" + _getExtension(item.data('article_big_multi_' + multiNumberPadded)) +"'><img src='" + item.data('article_big_multi_' + multiNumberPadded) + "'/></picture></a></li>");
785						$("#article_big_multi_" + multiNumberPadded).find("img").attr('src', item.data('article_big_multi_' + multiNumberPadded));
786						overallDisplayedImages++;
787					} else {
788						$("#product_slider").prepend("<li id='article_big_multi_" + multiNumberPadded + "'><a><img/></a></li>");
789						$("#article_big_multi_" + multiNumberPadded).find("img").attr('src', item.data('article_big_multi_' + multiNumberPadded));
790						overallDisplayedImages++;
791					}
792					if(item.data('article_popup_multi_' + multiNumberPadded)) {
793						$("#article_big_multi_" + multiNumberPadded).find("a").attr({
794							'href': item.data('article_popup_multi_' + multiNumberPadded),
795							'rel': 'prettyPhoto[product_gallery]'
796						});
797					} else {
798						$("#article_big_multi_" + multiNumberPadded).find("a").attr({
799							'href': item.data('article_big_multi_' + multiNumberPadded),
800							'rel': 'prettyPhoto[product_gallery]'
801						});
802					}
803					if (item.data('article_mini_multi_' + multiNumberPadded)) {
804						if (item.data("showwebp") == true) {
805							$("#bx-pager").prepend("<a id='article_mini_multi_" + multiNumberPadded + "'><picture><source srcset='" + _changeExtension(item.data('article_mini_multi_' + multiNumberPadded), "webp") + "' type='image/webp'><source srcset='" + item.data('article_mini_multi_' + multiNumberPadded) + "' type='image/" + _getExtension(item.data('article_mini_multi_' + multiNumberPadded)) +"'><img src='" + item.data('article_mini_multi_' + multiNumberPadded) + "'/></picture></a>");
806						} else {
807							$("#bx-pager").prepend("<a id='article_mini_multi_" + multiNumberPadded + "'><img/></a>");
808							$("#article_mini_multi_" + multiNumberPadded).find("img").attr('src', item.data('article_mini_multi_' + multiNumberPadded));
809						}
810					}
811				}
812			}
813			
814			if (mode == 'parent') {
815				if (item.data("showwebp") == true) {
816					$("#product_slider").prepend("<li id='article_big' ><a><picture><source srcset='" + _changeExtension(item.data('article_big'), "webp") + "' type='image/webp'><source srcset='" + item.data('article_big') + "' type='image/" + _getExtension(item.data('article_big')) +"'><img src='" + item.data('article_big') + "'/></picture></a></li>");
817					("#bx-pager").prepend("<a id='article_mini'><picture><source srcset='" + _changeExtension(item.data('article_mini'), "webp") + "' type='image/webp'><source srcset='" + item.data('article_mini') + "' type='image/" + _getExtension(item.data('article_mini')) +"'><img src='" + item.data('article_mini') + "'/></picture></a>");
818				} else {
819					$("#product_slider").prepend("<li id='article_big' ><a><img/></a></li>");
820					$("#article_big").find("img").attr('src', item.data('article_big'));
821					$("#bx-pager").prepend("<a id='article_mini'><img/></a>");
822					$("#article_mini").find("img").attr('src', item.data('article_mini'));
823				}
824				
825				if(item.data('article_popup')) {
826					$("#article_big").find("a").attr({
827						'href': item.data('article_popup'),
828						'rel': 'prettyPhoto[product_gallery]'
829					});
830				} else {
831					$("#article_big").find("a").attr({
832						'href': item.data('article_big'),
833						'rel': 'prettyPhoto[product_gallery]'
834					});
835				}
836			}
837			
838			/*$("#product_slider").prepend("<li id='article_big' ><a><img/></a></li>");
839			$("#article_big").find("img").attr('src', item.data('article_big'));
840			
841			$("#bx-pager").prepend("<a id='article_mini'><img/></a>");
842			$("#article_mini").find("img").attr('src', item.data('article_mini'));
843			
844			if(item.data('article_popup')) {
845				$("#article_big").find("a").attr({
846					'href': item.data('article_popup'),
847					'rel': 'prettyPhoto[product_gallery]'
848				});
849			} else {
850				$("#article_big").find("a").attr({
851					'href': item.data('article_big'),
852					'rel': 'prettyPhoto[product_gallery]'
853				});
854			}*/
855			
856			if (item.data('_big') /*&& item.data('_big') != item.data('article_big')*/) {
857				overallDisplayedImages++;
858				
859				for(var i = 17; i >= 0; i--) {
860					var count = "" + i;
861					var numberpad = "00000";
862					var multiNumberPadded = numberpad.substring(0, numberpad.length - count.length) + count;
863					if (item.data('_big_multi_' + multiNumberPadded)) {
864						if (item.data("showwebp") == true) {
865							$("#product_slider").prepend("<li id='_big_multi_" + multiNumberPadded + "'><a><picture><source srcset='" + _changeExtension(item.data('_big_multi_' + multiNumberPadded), "webp") + "' type='image/webp'><source srcset='" + item.data('_big_multi_' + multiNumberPadded) + "' type='image/" + _getExtension(item.data('_big_multi_' + multiNumberPadded)) +"'><img src='" + item.data('_big_multi_' + multiNumberPadded) + "'/></picture></a></li>");
866							overallDisplayedImages++;
867						} else {
868							$("#product_slider").prepend("<li id='_big_multi_"+ multiNumberPadded +"'><a><img/></a></li>");
869							$("#_big_multi_" + multiNumberPadded).find("img").attr('src', item.data('_big_multi_' + multiNumberPadded));
870							overallDisplayedImages++;
871						}
872						
873						if(item.data('_popup_multi_' + multiNumberPadded)) {
874							$("#_big_multi_" + multiNumberPadded).find("a").attr({
875								'href': item.data('_popup_multi_' + multiNumberPadded),
876								'rel': 'prettyPhoto[product_gallery]'
877							});
878						} else {
879							$("#_big_multi_" + multiNumberPadded).find("a").attr({
880								'href': item.data('_big_multi_' + multiNumberPadded),
881								'rel': 'prettyPhoto[product_gallery]'
882							});
883						}
884						
885						if (item.data('_mini_multi_' + multiNumberPadded)) {
886							if (item.data("showwebp") == true) {
887								$("#bx-pager").prepend("<a id='_mini_multi_" + multiNumberPadded + "'><picture><source srcset='" + _changeExtension(item.data('_mini_multi_' + multiNumberPadded), "webp") + "' type='image/webp'><source srcset='" + item.data('_mini_multi_' + multiNumberPadded) + "' type='image/" + _getExtension(item.data('_mini_multi_' + multiNumberPadded)) +"'><img src='" + item.data('_mini_multi_' + multiNumberPadded) + "'/></picture></a>");
888							} else {
889								$("#bx-pager").prepend("<a id='_mini_multi_" + multiNumberPadded + "'><img/></a>");
890								$("#_mini_multi_" + multiNumberPadded).find("img").attr('src', item.data('_mini_multi_' + multiNumberPadded));
891							}
892						}
893					}
894				}
895
896				if (item.data("showwebp") == true) {
897					$("#product_slider").prepend("<li id='_big' ><a><picture><source srcset='" + _changeExtension(item.data('_big'), "webp") + "' type='image/webp'><source srcset='" + item.data('_big') + "' type='image/" + _getExtension(item.data('_big')) +"'><img src='" + item.data('_big') + "'/></picture></a></li>");
898					$("#bx-pager").prepend("<a id='_mini'><picture><source srcset='" + _changeExtension(item.data('_mini'), "webp") + "' type='image/webp'><source srcset='" + item.data('_mini') + "' type='image/" + _getExtension(item.data('_mini')) +"'><img src='" + item.data('_mini') + "'/></picture></a>");
899				} else {
900					$("#product_slider").prepend("<li id='_big' ><a><img/></a></li>");
901					$("#_big").find("img").attr('src', item.data('_big'));
902					$("#bx-pager").prepend("<a id='_mini'><img/></a>");
903					$("#_mini").find("img").attr('src', item.data('_mini'));
904				}
905				
906				if(item.data('_popup')) {
907					$("#_big").find("a").attr({
908						'href': item.data('_popup'),
909						'rel': 'prettyPhoto[product_gallery]'
910					});
911				} else {
912					$("#_big").find("a").attr({
913						'href': item.data('_big'),
914						'rel': 'prettyPhoto[product_gallery]'
915					});
916				}
917			}
918			
919			// Build bxPager indexes
920			var iterator = 0;
921			$("#bx-pager").find('a').each(function() {
922				$(this).attr('data-slide-index', iterator);
923				iterator++;
924			});
925			
926			_rebuildBxSlider();
927			_initPrettyPhoto();
928		}
929	},
930	_fnResetVariable = function () {
931		_parentFiltres = [];
932		isNotModal = true;
933		_filtred = { indexFilters : []};
934		_subitems =[];
935		_subitemsDOM = $('.subitem');
936		_filtredSelectedPathDOM = '.filtres select option:selected';
937		_filtredPathDOM = '.filtres select';
938		_activeOptions = {};
939	};
940	return {
941		init : function (options) {
942			_oldValue = 0;
943			_fnResetVariable();
944			isNotModal = (options === undefined || options.isModal === undefined);
945			if (_subitemsDOM.length === 0) {
946				_subitemsDOM = $('.subitem');
947			}
948			_handlePopover();
949			_handleRelated();
950			_checkVisibleSubitemsList();
951			_handleDescriptionButton();
952			if ($('.subitem').length > 0) {
953				$('.filtres').addClass('form-inline');
954				if (isNotModal) {
955					_checkHash();
956				} else {
957					_selectSubitem(_subitemsDOM.find("input[name=subitems]:first").val());
958				}
959				_generateValue();
960				_generateAttrFiltred({
961					itemToSelect : _findSelected().find('input').val()
962				});
963				_handleSubItems();
964				//_hiddenAvail();
965				if (isNotModal) {
966					_handleHash();
967				}
968				_updateQuestionOnItemLink();
969				if(isNotModal && !_isAnyFiltrSelected()) {
970					_showSmallerPrice();
971					_toggleCartButton(false);
972					_rebuildBxSlider();
973					_initPrettyPhoto();
974				}
975			} else {
976				//IF SINGLE ITEM - for subitems, these methods are started when subitem is changed
977				_rebuildBxSlider();
978				_initPrettyPhoto();
979				_handleSygmaLinks();
980			}
981		}
982	}
983}();
984EC.modules.addF(function () {
985	itemPage.init();
986});

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.