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"> </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.