1/* pÅywajÄ ce menu*/ 2 3function update() { 4 if ($(window).scrollTop() > 100) { 5 $('.one').addClass('active'); 6 $('.top-bar').addClass('noactive'); 7 } else { 8 $('.one').removeClass('active'); 9 $('.top-bar').removeClass('noactive'); 10 } 11} 12setInterval(update, 100); 13 14 15 16/* MAMEZI - box config*/ 17 18let configureProduct = { 19 'groupVariantIDs': [13], 20 'stockFlavours': ['WiÅnia z ciasteczkiem', 'Caffè Latte', 'Malina', 'Czekolada BiaÅa Karmelowa E.Wedel', 'Czekolada Mleczna E.Wedel', 'Ice Tea BIG', 'Banan w polewie kakaowej BIG', 'Kokos w polewie kakaowej BIG', 'Kiwi BIG', 'WiÅnia BIG', 'Tutti Frutti', 'Brzoskwinia-Marakuja', 'Oranżada', 'Pina Colada', 'BIG Mango', 'BIG WiÅnia', 'BIG Kiwi', 'BIG Truskawka', 'BIG Banan w czekoladzie', 'BIG Kokos w czekoladzie', 'Wata cukrowa', 'Wanilia', 'Truskawka', 'Åmietanka z ciasteczkiem', 'Pianki', 'Mango', 'Jagoda', 'Guma balonowa', 'MiÄta z czekoladÄ ', 'Czekolada', 'Cytryna - limonka', 'Banana Split'], 21 'stockAccesories': ['Kolorowe czapeczki', 'Czapeczki EKO', 'Kolorowe kubeczki'], 22 'stockSpoons': ['Åyżeczki w zestawie'], 23 'stockPortion': ['Wybierz iloÅÄ porcji'], 24 'stockPortionExeptions': { 25 'MINIBOX: 15 porcji': 15, 26 'MIDIBOX: 20 +2 porcje gratis': 22, 27 'MEGABOX: 25 +6 porcji gratis': 31, 28 'GIGABOX: 30 +10 porcji gratis': 40, 29 }, 30 'text': { 31 'error': 'BÅÄ d', 32 'too_much_spoons': 'IloÅÄ Åyżeczek nie może przekroczyÄ iloÅci porcji', 33 'choose_portion_first': 'Najpierw wybierz iloÅÄ porcji', 34 'config_error': 'BÅÄ d w konfiguracji sklepu.<br>W celu zamówienia innej iloÅci skontaktuj siÄ z administratorem sklepu.', 35 }, 36} 37 38if (!String.prototype.replaceAll) { 39 String.prototype.replaceAll = function(str, newStr){ 40 if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') { 41 return this.replace(str, newStr); 42 } 43 return this.replace(new RegExp(str, 'g'), newStr); 44 }; 45} 46 47/* MAMEZI - box config*/ 48/* more links effect in menu */ 49 50var collapseMenu = function(arrSelectors) { 51 52 var mobileViewport = window.matchMedia("screen and (max-width: 767px)"); 53 var menu = document.querySelector(".menu"); 54 55 if (mobileViewport.matches || !menu) { 56 return; 57 } 58 59 var htmlLang = document.getElementsByTagName('html')[0].getAttribute('lang'); 60 var moreText = { 61 'pl': 'wiÄcej', 62 'en': 'more', 63 'de': 'mehr', 64 'fr': 'plus', 65 'ru': 'более' 66 }; 67 68 moreTextLang = moreText[htmlLang] || 'more'; 69 70 var arrSelectors = arrSelectors || []; 71 72 73 var innerMenu = document.querySelector(".menu .innermenu"); 74 var innerMenuChildren = Array.prototype.slice.call(innerMenu.children); 75 76 var menuContainer = document.querySelector(".menu-list"); 77 var menuItems = document.querySelectorAll(".menu-list > li:not(.showMore)"); 78 79 menuContainer.insertAdjacentHTML("beforeend", '<li class="showMore parent"><h3><a href="#" title="' + moreTextLang + '" class="spanhover mainlevel"><span>' + moreTextLang + '</span></a></h3><div class="submenu level1"><ul class="secondMenu level1">' + menuContainer.innerHTML + '</ul></div></li>'); 80 81 var secondMenuItems = menuContainer.querySelectorAll(".secondMenu > li"); 82 83 var allItems = menuContainer.querySelectorAll("li"); 84 var moreLi = menuContainer.querySelector(".showMore"); 85 var moreBtn = moreLi.querySelector("h3"); 86 87 function reCount() { 88 89 var selectedMenuPositionWidth = 0; 90 91 innerMenuChildren.forEach(function(item) { 92 93 var flag = false; 94 95 for (var i = 0; i < arrSelectors.length; i++) { 96 if (item.classList.contains(arrSelectors[i])) { 97 flag = true; 98 } 99 } 100 101 if (!flag) { 102 var itemStyle = item.currentStyle || window.getComputedStyle(item); 103 var itemMargin = parseFloat(itemStyle.marginLeft) + parseFloat(itemStyle.marginRight); 104 105 selectedMenuPositionWidth += item.offsetWidth + itemMargin; 106 } 107 108 }); 109 110 if (innerMenu.offsetWidth - selectedMenuPositionWidth < menuContainer.offsetWidth) { 111 menuContainer.style.width = innerMenu.offsetWidth - selectedMenuPositionWidth - moreBtn.offsetWidth + "px"; 112 } 113 } 114 115 var doAdapt = function() { 116
117 allItems.forEach(function(item) { 118 item.classList.remove("none"); 119 }); 120 121 var stopWidth = moreBtn.offsetWidth; 122 var onlyMenuItemsWidth = 0; 123 var hiddenItems = []; 124 var primaryWidth = menuContainer.offsetWidth; 125 126 menuItems.forEach(function(item, i) { 127 if (primaryWidth >= stopWidth + item.offsetWidth) { 128 onlyMenuItemsWidth += item.offsetWidth; 129 stopWidth += item.offsetWidth; 130 } else { 131 item.classList.add("none"); 132 hiddenItems.push(i); 133 } 134 }); 135 136 if (!hiddenItems.length) { 137 moreLi.classList.add("none"); 138 menuContainer.classList.remove("showSecond"); 139 } else { 140 secondMenuItems.forEach(function(item, i) { 141 if (!hiddenItems.includes(i)) { 142 item.classList.add("none"); 143 item.parentNode.removeChild(item); 144 } else { 145 item.classList.remove("none"); 146 } 147 }); 148 } 149 150 menuContainer.style.opacity = "1"; 151 menuContainer.style.position = "relative"; 152 }; 153 154 reCount(); 155 doAdapt(); 156 157}; 158 159$(document).ready(function() { 160 var fxLogo = $("header .logo-bar .link-logo").clone(); 161 var fxBasket = $("header .logo-bar .basket").detach(); 162 var fxLogin = $("header .login-bar .links").detach(); 163 var fxCustom = $('<div class="ue"><a href="/pl_PL/i/Unia-Europejska/52" class="fx-custom-icon"><img src="/userdata/public/assets/2026/icons/eu-center-pl.svg" alt="" width="131" height="80" /></a></div>') 164 if ($(".menu .innermenu").length) { 165 $(".menu .innermenu").prepend(fxLogo, fxBasket, fxLogin, fxCustom); 166 }; 167 168 // search button 169 170 $('.menu .innermenu').prepend('<p id="fx-search" class="fx-searchBtn"></p>'); 171 172 if ($(".logo-bar .search-form").hasClass('none') || $(".search__container").hasClass('none')) { 173 $("#fx-search").addClass('none'); 174 } 175 176 $("#fx-search").click(function() { 177 $(this).toggleClass('fx-active'); 178 $('.logo-bar .search-form').toggleClass('fx-active'); 179 }); 180 181 // user panel button 182 183 $('.menu .innermenu').prepend('<p id="fx-panel" class="fx-panelBtn"></p>'); 184 185 if ($(".menu .basket").length) { 186 console.log("basket on"); 187 }else{ 188 $("#fx-panel").addClass('none'); 189 } 190 191 $("#fx-panel").click(function() { 192 $(this).toggleClass('fx-active'); 193 $('.menu .links').toggleClass('fx-active'); 194 }); 195 196 // menu fix init 197 198 window.setTimeout(function(){ 199 collapseMenu(['menu-mobile', 'links', 'menu-list']); 200 }, 0); 201 202}); 203Shop.include({ 204 selectorFunctions: { 205 imgReplace: { 206 selector: '[data-src][data-src-alt]', 207 domready: function($img) { 208 $img.on('mouseenter', function() { 209 $(this).attr('src', $(this).data('srcAlt')); 210 }).on('mouseleave', function() { 211 $(this).attr('src', $(this).data('src')); 212 }); 213 } 214 } 215 } 216}); 217 218//Polyfill 219if ('NodeList' in window && !NodeList.prototype.forEach) { 220 NodeList.prototype.forEach = function (callback, thisArg) { 221 thisArg = thisArg || window; 222 for (var i = 0; i < this.length; i++) { 223 callback.call(thisArg, this[i], i, this); 224 } 225 }; 226} 227 228if (!Array.prototype.includes) { 229 Array.prototype.includes = function(searchElement /*, fromIndex*/ ) { 230 'use strict'; 231 var O = Object(this); 232 var len = parseInt(O.length) || 0; 233 if (len === 0) { 234 return false; 235 } 236 var n = parseInt(arguments[1]) || 0; 237 var k; 238 if (n >= 0) { 239 k = n; 240 } else { 241 k = len + n; 242 if (k < 0) {k = 0;} 243 } 244 var currentElement; 245 while (k < len) { 246 currentElement = O[k]; 247 if (searchElement === currentElement || 248 (searchElement !== searchElement && currentElement !== currentElement)) { // NaN !== NaN 249 return true; 250 } 251 k++; 252 } 253 return false; 254 }; 255} 256 257$(document).ready(function() { 258 let targets = $('.box .product .shaded_inputwrap, #box_productfull .basket .form-basket .quantity_wrap .number-wrap, .products.viewphot .product .buttons form .shaded_inputwrap, .productlist tbody tr td.quantity .shaded_inputwrap'); 259 targets.each(function (i, e) { 260 let inputs = $('<div/>', { 261 class: 'fancy-inputs', 262 html: '<span class="fancy-inputs-bttn fancy-inputs-minus">-</span><span class="fancy-inputs-bttn fancy-inputs-plus">+</span>', 263 });
264 let input = $(e).find('input'); 265 $(e).addClass('fancy-inputs-wrap').append(inputs); 266 inputs.find('span').click(function () { 267 if( input.val() && Number(input.val()) ){ 268 if( $(this).hasClass('fancy-inputs-minus') ){ 269 if( Number(input.val()) > 1 ){ 270 input.val(Number(input.val())-1); 271 } 272 }else{ 273 input.val(Number(input.val())+1); 274 } 275 }else{ 276 input.val(1); 277 } 278 input.change(); 279 }); 280 }); 281}); 282 283function configureProductScript () { 284 let self = this; 285 this.nodes = {}; 286 this.stockFlavours = {}; 287 this.stockAccesories = {}; 288 this.stockSpoons = false; 289 this.stockPortion = false; 290 this.options = { 291 portionChoosen: false, 292 flavoursChoosen: 0, 293 flavoursTotal: 0, 294 accesoriesChoosen: 0, 295 accesoriesTotal: 0, 296 } 297 this.init = function (data) { 298 self.data = data; 299 this.pll = data.text; 300 self.nodes.stock = $('#box_productfull .basket .form-basket .stocks'); 301 let groupVariantID = Number( self.nodes.stock.attr('data-stock') ); 302 if( !(self.data.groupVariantIDs.indexOf(groupVariantID) > -1) ){ 303 return true; 304 }else{ 305 self.nodes.stock.removeClass('configure-stock configure-stock-loading'); 306 } 307 self.nodes.stock.addClass('configure-stock configure-stock-loading'); 308 self.nodes.stockHead = $('<div/>', { 309 class: 'f-row configure-stock-head', 310 html: '<strong>Zbuduj swój box</strong>', 311 }); 312 self.nodes.stock.prepend(self.nodes.stockHead); 313 let nodeSpoon = false; 314 self.nodes.popupFlavours = $('<div/>', { 315 class: 'configure-popup configure-popup-flavours', 316 html: '<div class="configure-popup-inner"><div class="configure-popup-head"><strong>Wybierz swoje smaki</strong><span class="configure-popup-close"></span></div>'+ 317 '<div class="configure-popup-body"></div>'+ 318 '<div class="configure-popup-footer"><span class="configure-popup-close">WYJDŹ</span>'+ 319 '<div class="configure-popup-sum">Wybrano: <strong><span class="configure-popup-choosen">0</span>/<span class="configure-popup-total">0</span></strong></div>'+ 320 '<span class="configure-popup-apply">+ DODAJ SMAKI</span></div></div>', 321 }); 322 self.nodes.popupAccesories = $('<div/>', { 323 class: 'configure-popup configure-popup-accesories', 324 html: '<div class="configure-popup-inner"><div class="configure-popup-head"><strong>Wybierz swoje akcesoria (0,50zÅ/szt.)</strong><span class="configure-popup-close"></span></div>'+ 325 '<div class="configure-popup-body"></div>'+ 326 '<div class="configure-popup-footer"><span class="configure-popup-close">WYJDŹ</span>'+ 327 '<div class="configure-popup-sum">Wybrano: <strong><span class="configure-popup-choosen">0</span>/<span class="configure-popup-total">0</span></strong></div>'+ 328 '<span class="configure-popup-apply">+ DODAJ AKCESORIA</span></div></div>', 329 }); 330 self.nodes.stock.append(self.nodes.popupFlavours); 331 self.nodes.stock.append(self.nodes.popupAccesories); 332 self.nodes.popupFlavoursInner = self.nodes.popupFlavours.find('.configure-popup-body'); 333 self.nodes.popupAccesoriesInner = self.nodes.popupAccesories.find('.configure-popup-body'); 334 self.nodes.stock.find('.stock-item-data').each(function (i, e) { 335 let itemName = $(e).attr('data-name'); 336 let itemId = $(e).attr('data-id'); 337 let itemType = $(e).attr('data-type'); 338 let frow = $(e).closest('.f-row'); 339 let elem = { 340 'frow': frow, 341 'itemType': itemType, 342 'itemId': itemId, 343 'itemName': itemName, 344 }; 345 if( self.data.stockFlavours.indexOf(itemName) > -1 ){ 346 self.stockFlavours[itemId] = elem; 347 frow.addClass('soft-hide'); 348 //frow.find('select').val( frow.find('select option[value]:not([value=""])').attr('value') ); 349 let div = $('<div/>', { 350 'data-itemId': itemId, 351 'class': 'configure-popup-item', 352 'html': '<div class="configure-popup-item-img"><img src="' + window.location.origin + '/userdata/public/assets/configImages/' + itemName.replaceAll(' ', '_') + '.jpg"></div>'+ 353 '<div class="configure-popup-item-name"><strong>' + itemName + '</strong></div>'+ 354 '<div class="configure-popup-item-basket"><span class="input-btn input-btn-minus">-</span>
354<input type="number" data-last="0" value="0"><span class="input-btn input-btn-plus">+</span></div>', 355 }); 356 self.nodes.popupFlavoursInner.append(div); 357 }else if( self.data.stockAccesories.indexOf(itemName) > -1 ){ 358 self.stockAccesories[itemId] = elem; 359 frow.addClass('soft-hide'); 360 frow.find('select').val( frow.find('select option[value]:not([value=""])').attr('value') ); 361 let div = $('<div/>', { 362 'data-itemId': itemId, 363 'class': 'configure-popup-item', 364 'html': '<div class="configure-popup-item-img"><img src="' + window.location.origin + '/userdata/public/assets/configImages/' + itemName.replaceAll(' ', '_') + '.jpg"></div>'+ 365 '<div class="configure-popup-item-name"><strong>' + itemName + '</strong></div>'+ 366 '<div class="configure-popup-item-basket"><span class="input-btn input-btn-minus">-</span><input type="number" data-last="0" value="0"><span class="input-btn input-btn-plus">+</span></div>', 367 }); 368 self.nodes.popupAccesoriesInner.append(div); 369 }else if( self.data.stockSpoons.indexOf(itemName) > -1 ){ 370 self.stockSpoons = elem; 371 frow.addClass('configure-stock-spoon configure-stock-last'); 372 nodeSpoon = frow; 373 }else if( self.data.stockPortion.indexOf(itemName) > -1 ){ 374 self.stockPortion = elem; 375 frow.addClass('configure-stock-portion'); 376 } 377 }); 378 self.nodes.stockFlavours = $('<div/>', { 379 class: 'f-row configure-stock-flavours', 380 html: '<div class="label f-grid-6"><label class="label">Smaki:</label></div>'+ 381 '<div class="stock-options f-grid-6"><div class="configure-stock-choose configure-stock-empty">Wybierz</div>'+ 382 '<div class="configure-stock-full">'+ 383 '<strong class="configure-stock-doneshort"></strong><strong class="configure-stock-donesum"></strong><div class="configure-stock-choose">ZmieÅ</div>'+ 384 '<div class="configure-stock-info"><div class="configure-stock-infoonner"><strong>WYBRANE SMAKI</strong><strong class="configure-stock-doneshort"></strong></div></div>'+ 385 '</div></div>', 386 }); 387 self.nodes.stockAccesories = $('<div/>', { 388 class: 'f-row configure-stock-accesories', 389 html: '<div class="label f-grid-6"><label class="label">Akcesoria:</label></div>'+ 390 '<div class="stock-options f-grid-6"><div class="configure-stock-choose configure-stock-empty">Wybierz</div>'+ 391 '<div class="configure-stock-full">'+ 392 '<strong class="configure-stock-doneshort"></strong><strong class="configure-stock-donesum"></strong><div class="configure-stock-choose">ZmieÅ</div>'+ 393 '<div class="configure-stock-info"><div class="configure-stock-infoonner"><strong>WYBRANE AKCESORIA</strong><strong class="configure-stock-doneshort"></strong></div></div>'+ 394 '</div></div>', 395 }); 396 if(nodeSpoon){ 397 nodeSpoon.before(self.nodes.stockFlavours); 398 nodeSpoon.before(self.nodes.stockAccesories); 399 }else{ 400 self.nodes.stock.append(self.nodes.stockFlavours); 401 self.nodes.stock.append(self.nodes.stockAccesories); 402 } 403 self.addEvents(); 404 self.nodes.stock.removeClass('configure-stock-loading'); 405 } 406 this.addEvents = function () { 407 self.nodes.stockFlavours.on('click', '.configure-stock-choose', function (event) { 408 if( !self.options.portionChoosen ){ 409 shoper.alert(self.pll.choose_portion_first, self.pll.error); 410 return true; 411 } 412 event.preventDefault(); 413 self.nodes.popupFlavours.addClass('configure-popup-open'); 414 self.nodes.popupFlavours.find('.configure-popup-total').text(self.options.flavoursTotal); 415 $('body').addClass('popup-fixed'); 416 $('html').addClass('popup-fixed'); 417 }); 418 self.nodes.stockAccesories.on('click', '.configure-stock-choose', function (event) { 419 if( !self.options.portionChoosen ){ 420 shoper.alert(self.pll.choose_portion_first, self.pll.error); 421 return true; 422 } 423 event.preventDefault(); 424 self.nodes.popupAccesories.addClass('configure-popup-open'); 425 self.nodes.popupAccesories.find('.configure-popup-total').text(self.options.accesoriesTotal); 426 $('body').addClass('popup-fixed'); 427 $('html').addClass('popup-fixed'); 428 });
429 self.nodes.stock.on('click', '.configure-popup-close', function (event) { 430 event.preventDefault(); 431 $(this).closest('.configure-popup').removeClass('configure-popup-open'); 432 $('body').removeClass('popup-fixed'); 433 $('html').removeClass('popup-fixed'); 434 $([document.documentElement, document.body]).animate({ 435 scrollTop: self.nodes.stock.offset().top 436 }, 0); 437 }); 438 self.nodes.stock.on('click', '.input-btn', function (event) { 439 event.preventDefault(); 440 let input = $(this).siblings('input'); 441 let v = Number( input.val() ); 442 if( $(this).hasClass('input-btn-minus') ){ 443 if(v && v > 1){ 444 input.val(v-1); 445 }else{ 446 input.val(0); 447 } 448 }else{ 449 if(v){ 450 input.val(v+1); 451 }else{ 452 input.val(1); 453 } 454 } 455 input.change(); 456 }); 457 self.stockPortion.frow.find('select').change(function () { 458 if( $(this).val() ){ 459 let number = $(this).find('option:selected').text(); 460 if( self.data.stockPortionExeptions[ number ] ){ 461 number = self.data.stockPortionExeptions[ number ]; 462 }else{ 463 number = parseFloat( number ); 464 } 465 self.options.portionChoosen = number; 466 self.options.flavoursTotal = number; 467 self.options.accesoriesTotal = number; 468 469 $.each(self.stockFlavours, function (i, e) { 470 e.frow.find('select').val('').change(); 471 }); 472 $.each(self.stockAccesories, function (i, e) { 473 let val = $(e.frow.find('select').children('[value]:not([value=""])').eq(0)).attr('value'); 474 e.frow.find('select').val(val).change(); 475 }); 476 self.stockSpoons.frow.find('select').val('').change(); 477 $('.configure-popup-footer .configure-popup-sum strong .configure-popup-choosen').text('0'); 478 $('.configure-popup-footer .configure-popup-sum strong.popup-choosen-all').removeClass('popup-choosen-all'); 479 $('.configure-popup-footer .configure-popup-apply.popup-choosen-all').removeClass('popup-choosen-all'); 480 $('.configure-popup-item .configure-popup-item-basket input').val(0).attr('data-last', 0); 481 $('.configure-popup-item.configure-popup-item-active').removeClass('configure-popup-item-active'); 482 self.options.flavoursChoosen = 0; 483 self.options.accesoriesChoosen = 0; 484 self.nodes.stockAccesories.find('.configure-stock-empty').removeClass('off'); 485 self.nodes.stockAccesories.find('.configure-stock-full').removeClass('on'); 486 self.nodes.stockFlavours.find('.configure-stock-empty').removeClass('off'); 487 self.nodes.stockFlavours.find('.configure-stock-full').removeClass('on'); 488 }else{ 489 self.options.portionChoosen = false; 490 } 491 }); 492 self.nodes.popupFlavours.find('input').change(function () { 493 let input = $(this); 494 let lastValue = Number( input.attr('data-last') ); 495 let currentValue = Math.round( Number( input.val() ) ); 496 if(currentValue<0){ 497 currentValue = 0; 498 input.val(0); 499 } 500 let change = currentValue - lastValue; 501 self.options.flavoursChoosen += change; 502 if( self.options.flavoursChoosen > self.options.flavoursTotal ){ 503 let howMuch = self.options.flavoursChoosen - self.options.flavoursTotal; 504 self.options.flavoursChoosen = self.options.flavoursTotal; 505 currentValue = currentValue - howMuch; 506 input.val(currentValue); 507 self.nodes.popupFlavours.find('.configure-popup-sum strong').addClass('popup-choosen-all'); 508 self.nodes.popupFlavours.find('.configure-popup-footer .configure-popup-apply').addClass('popup-choosen-all'); 509 }else if( self.options.flavoursChoosen == self.options.flavoursTotal ){ 510 self.nodes.popupFlavours.find('.configure-popup-sum strong').addClass('popup-choosen-all'); 511 self.nodes.popupFlavours.find('.configure-popup-footer .configure-popup-apply').addClass('popup-choosen-all'); 512 }else{ 513 self.nodes.popupFlavours.find('.configure-popup-sum strong').removeClass('popup-choosen-all'); 514 self.nodes.popupFlavours.find('.configure-popup-footer .configure-popup-apply').removeClass('popup-choosen-all'); 515 } 516 let selectId = Number( input.closest('.configure-popup-item').attr('data-itemid') ); 517 let allGood = self.chceckSelect( self.stockFlavours[selectId], currentValue ); 518 if( !allGood ){ 519 shoper.alert(self.pll.config_error, self.pll.error); 520 let last = Number( input.attr('data-last') ); 521 self.options.flavoursChoosen = self.options.flavoursChoosen - (currentValue - last); 522 currentValue = last; 523 input.val( last ); 524 self.nodes.popupFlavours.find('.configure-popup-sum strong').removeClass('popup-choosen-all'); 525 self.nodes.popupFlavours.find('.configure-popup-footer .configure-popup-apply').removeClass('popup-choosen-all'); 526 } 527 self.nodes.popupFlavours.find('.configure-popup-choosen').text(self.options.flavoursChoosen); 528 input.attr('data-last', currentValue); 529 if(currentValue>0){ 530 input.closest('.configure-popup-item').addClass('configure-popup-item-active'); 531 }else{ 532 input.closest('.configure-popup-item').removeClass('configure-popup-item-active'); 533 } 534 });
535 self.nodes.popupAccesories.find('input').change(function () { 536 let input = $(this); 537 let lastValue = Number( input.attr('data-last') ); 538 let currentValue = Math.round( Number( input.val() ) ); 539 if(currentValue<0){ 540 currentValue = 0; 541 input.val(0); 542 } 543 let change = currentValue - lastValue; 544 self.options.accesoriesChoosen += change; 545 if( self.options.accesoriesChoosen > self.options.accesoriesTotal ){ 546 let howMuch = self.options.accesoriesChoosen - self.options.accesoriesTotal; 547 self.options.accesoriesChoosen = self.options.accesoriesTotal; 548 currentValue = currentValue - howMuch; 549 input.val(currentValue); 550 self.nodes.popupAccesories.find('.configure-popup-sum strong').addClass('popup-choosen-all'); 551 self.nodes.popupAccesories.find('.configure-popup-footer .configure-popup-apply').addClass('popup-choosen-all'); 552 }else if( self.options.accesoriesChoosen > 0 ){ 553 self.nodes.popupAccesories.find('.configure-popup-sum strong').addClass('popup-choosen-all'); 554 self.nodes.popupAccesories.find('.configure-popup-footer .configure-popup-apply').addClass('popup-choosen-all'); 555 }else if( self.options.accesoriesChoosen == 0 ){ 556 self.nodes.popupAccesories.find('.configure-popup-sum strong').removeClass('popup-choosen-all'); 557 } 558 let selectId = Number( input.closest('.configure-popup-item').attr('data-itemid') ); 559 let allGood = self.chceckSelect( self.stockAccesories[selectId], currentValue ); 560 if( !allGood ){ 561 shoper.alert(self.pll.config_error, self.pll.error); 562 let last = Number( input.attr('data-last') ); 563 self.options.accesoriesChoosen = self.options.accesoriesChoosen - (currentValue - last); 564 currentValue = last; 565 input.val( last ); 566 } 567 self.nodes.popupAccesories.find('.configure-popup-choosen').text(self.options.accesoriesChoosen); 568 input.attr('data-last', currentValue); 569 if(currentValue>0){ 570 input.closest('.configure-popup-item').addClass('configure-popup-item-active'); 571 }else{ 572 input.closest('.configure-popup-item').removeClass('configure-popup-item-active'); 573 } 574 }); 575 self.nodes.popupFlavours.on('click', '.configure-popup-apply.popup-choosen-all', function (event) { 576 event.preventDefault(); 577 $(this).closest('.configure-popup').removeClass('configure-popup-open'); 578 $('body').removeClass('popup-fixed'); 579 $('html').removeClass('popup-fixed'); 580 $([document.documentElement, document.body]).animate({ 581 scrollTop: self.nodes.stock.offset().top 582 }, 0); 583 let resultString = ''; 584 $.each(self.stockFlavours, function (i, e) { 585 let v = Number( self.nodes.popupFlavours.find('.configure-popup-item[data-itemid="' + e.itemId + '"] .configure-popup-item-basket input').val() ); 586 if(v){ 587 e.frow.find('select option').each(function (x, y) { 588 if( Number($(y).text()) == v ){ 589 let val = $(y).attr('value'); 590 e.frow.find('select').val(val).change(); 591 } 592 }); 593 }else{ 594 let val = $(e.frow.find('select').children('[value]:not([value=""])').eq(0)).attr('value'); 595 e.frow.find('select').val(val).change(); 596 } 597 if(v){ 598 resultString = resultString + v + 'x ' + e.itemName + ' <br>'; 599 } 600 }); 601 // console.log(resultString); 602 self.nodes.stockFlavours.find('.configure-stock-doneshort').html(resultString); 603 self.nodes.stockFlavours.find('.configure-stock-donesum').text('Wybrano: ' + self.options.flavoursChoosen); 604 self.nodes.stockFlavours.find('.configure-stock-empty').addClass('off'); 605 self.nodes.stockFlavours.find('.configure-stock-full').addClass('on'); 606 }); 607 self.nodes.popupAccesories.on('click', '.configure-popup-apply.popup-choosen-all', function (event) { 608 event.preventDefault(); 609 $(this).closest('.configure-popup').removeClass('configure-popup-open'); 610 $('body').removeClass('popup-fixed'); 611 $('html').removeClass('popup-fixed'); 612 $([document.documentElement, document.body]).animate({ 613 scrollTop: self.nodes.stock.offset().top 614 }, 0); 615 let resultString = ''; 616 $.each(self.stockAccesories, function (i, e) { 617 let v = Number( self.nodes.popupAccesories.find('.configure-popup-item[data-itemid="' + e.itemId + '"] .configure-popup-item-basket input').val() ); 618 if(v){ 619 e.frow.find('select option').each(function (x, y) { 620 if( Number($(y).text()) == v ){ 621 let val = $(y).attr('value'); 622 e.frow.find('select').val(val).change(); 623 } 624 }); 625 }else{ 626 let val = $(e.frow.find('select').children('[value]:not([value=""])').eq(0)).attr('value'); 627 e.frow.find('select').val(val).change(); 628 } 629 if(v){ 630 resultString = resultString + v + 'x ' + e.itemName + ' <br>'; 631 } 632 }); 633 // console.log(resultString); 634 self.nodes.stockAccesories.find('.configure-stock-doneshort').html(resultString); 635 self.nodes.stockAccesories.find('.configure-stock-donesum').text('Wybrano: ' + self.options.accesoriesChoosen); 636 self.nodes.stockAccesories.find('.configure-stock-empty').addClass('off'); 637 self.nodes.stockAccesories.find('.configure-stock-full').addClass('on'); 638 });
639 self.stockSpoons.frow.find('select').change(function () { 640 let number = Number( $(this).find( "option:selected" ).text() ); 641 if(!self.options.portionChoosen){ 642 shoper.alert(self.pll.choose_portion_first, self.pll.error); 643 $(this).val(''); 644 return true; 645 } 646 if(number > self.options.portionChoosen){ 647 shoper.alert(self.pll.too_much_spoons, self.pll.error); 648 $(this).val(''); 649 return true; 650 } 651 }); 652 } 653 this.chceckSelect = function (data, value) { 654 let isOk = false; 655 data.frow.find('select option').each(function (i, e) { 656 if( Number($(e).text()) == value ){ 657 isOk = true; 658 } 659 }); 660 return isOk; 661 } 662} 663$(document).ready(function() { 664 if( typeof configureProduct === 'object' && configureProduct !== null && $('#box_productfull .basket .form-basket .stocks').length ){ 665 let newconfigureProduct = new configureProductScript; 666 newconfigureProduct.init(configureProduct); 667 } 668});
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.