1$(document).ready( function() { 2 3 $(document).ajaxStop(function() { 4 //moveSortFilter() 5 wrapProductNavigationItems() 6 horizontalWebshopProductsFilterScripts() 7 }); 8 9 if(typeof $.scrollTo !== 'undefined'){ 10 $.extend($.scrollTo.defaults, { 11 offset: {top:-150} 12 }); 13 } 14 15}); 16 17let scrollPos = window.pageYOffset, 18 headerTop = document.querySelector('.placeholder-header'), 19 contentTop = document.querySelector('.placeholder-content_top'), 20 contentTopHeight = contentTop.getBoundingClientRect().height, 21 productNavigation = false, 22 productNavigationFixed = false, 23 productNavigationPosition, 24 productNavigationHeight = 0, 25 productNavigationChildren, 26 productNavigationChildrenWrapper = document.createElement('div'), 27 footerWidth, 28 footerCollapseBlocks, 29 addCloseMenuButton = document.createElement('div'), 30 moveShortDesc, 31 moveOrderBtn, 32 moveWishlistBtn, 33 moveUSPList, 34 moveStock, 35 wrapProductTabs, 36 wrapProductTabsWrap = document.createElement('div'), 37 addSliderBlocks, 38 addSliderTarget, 39 addSliderTargetChildren, 40 addSliderTargetWidth, 41 addSliderToSlide, 42 addSliderBlock, 43 addSliderBlockWidth, 44 addSliderCurrentLeft, 45 addSliderMaxLeft = 0, 46 addSliderPrev = document.createElement('div'), 47 addSliderNext = document.createElement('div'), 48 xDown, 49 yDown, 50 moveSortSelectLabel, 51 moveSortSelectSelect, 52 moveSortSelectWrap = document.createElement('div'), 53 moveSortSelectTitle = document.createElement('div'), 54 moveSortSelectTitleH3 = document.createElement('h3'), 55 moveSortSelectTitleA = document.createElement('a'), 56 moveSortSelectContent = document.createElement('div'), 57 filterBlocks, 58 moveClearLink, 59 getClearLinks, 60 getClearText, 61 filterPricesTitle = document.createElement('div'), 62 orderBtnOffset 63 64window.addEventListener('scroll', function() { 65 scrollPos = this.pageYOffset 66 if(scrollPos > 1) { 67 headerTop.classList.add('small-header') 68 contentTop.classList.add('small-header') 69 } else { 70 headerTop.classList.remove('small-header') 71 contentTop.classList.remove('small-header') 72 } 73 74 if(productNavigation === true) { 75 productNavigationPosition = document.querySelector('.product-navigation-container').getBoundingClientRect().y 76 if(productNavigationPosition > contentTopHeight) { 77 document.querySelector('.product-navigation-container .page-information').classList.remove('fixed') 78 } else { 79 document.querySelector('.product-navigation-container .page-information').classList.add('fixed') 80 } 81 } 82 83 if(document.querySelector('.webshop-product #sticky-addtocart')) { 84 orderBtnOffset = document.querySelector('.webshop-product #product-info-left #order-button').getBoundingClientRect().top 85 86 if(orderBtnOffset < contentTop.getBoundingClientRect().height) { 87 document.querySelector('.webshop-product #sticky-addtocart').classList.add('shown') 88 } else { 89 document.querySelector('.webshop-product #sticky-addtocart').classList.remove('shown') 90 } 91 } 92}) 93 94if(scrollPos > 1) { 95 headerTop.classList.add('small-header') 96 contentTop.classList.add('small-header') 97 98 if(document.querySelector('.webshop-product #sticky-addtocart')) { 99 orderBtnOffset = document.querySelector('.webshop-product #product-info-left #order-button').getBoundingClientRect().top 100 101 if(orderBtnOffset < contentTop.getBoundingClientRect().height) { 102 document.querySelector('.webshop-product #sticky-addtocart').classList.add('shown') 103 } else { 104 document.querySelector('.webshop-product #sticky-addtocart').classList.remove('shown') 105 } 106 } 107} 108 109let addFilterButton = document.createElement('div'), 110 setProNavHeight 111 112function createFilterButton() { 113 114 setProNavHeight = document.querySelector('.product-navigation-container').getBoundingClientRect().height 115 116 addFilterButton.classList.add('mobile-filter-button') 117 addFilterButton.innerHTML = '<div class="btn"><i class="fa fa-filter"></i> Filter</div>' 118 119 addFilterButton.onclick = function () { 120 if (document.querySelector('.horizontal_webshop_products_filter').classList.contains('open-filter')) { 121 document.querySelector('.horizontal_webshop_products_filter').classList.remove('open-filter') 122 document.querySelector('.horizontal_webshop_products_filter').classList.add('close-filter') 123 document.querySelector('#container').classList.remove('no-scroll') 124 } else { 125 document.querySelector('.horizontal_webshop_products_filter').classList.add('open-filter') 126 document.querySelector('.horizontal_webshop_products_filter').classList.remove('close-filter') 127 document.querySelector('#container').classList.add('no-scroll') 128 } 129 } 130 131 document.addEventListener('click', function (e) { 132 target = e.target 133 if (target.getAttribute('class') !== null) { 134 if (target.getAttribute('class').includes('horizontal_webshop_products_filter')) { 135 document.querySelector('.horizontal_webshop_products_filter').classList.remove('open-filter') 136 document.querySelector('.horizontal_webshop_products_filter').classList.add('close-filter') 137 document.querySelector('#container').classList.remove('no-scroll') 138 } 139 } 140 }) 141 142 document.querySelector('.product-navigation-container').setAttribute('style', 'he
142ight:' + setProNavHeight + 'px;') 143 document.querySelector('.product-navigation-container .page-information .page-information-wrapper').prepend(addFilterButton) 144} 145 146wrapProductNavigationItems() 147 148function wrapProductNavigationItems() { 149 if(document.querySelector('.horizontal_webshop_products_filter')) { 150 if (!document.querySelector('.horizontal_webshop_products_filter').classList.contains('close-filter') && !document.querySelector('.horizontal_webshop_products_filter').classList.contains('open-filter')) { 151 document.querySelector('#container').classList.remove('no-scroll') 152 } 153 } 154 if (document.querySelector('.product-navigation-container')) { 155 productNavigation = true 156 productNavigationHeight = document.querySelector('.product-navigation-container').getBoundingClientRect().height 157 158 document.querySelector('.product-navigation-container').setAttribute('style', 'height:' + productNavigationHeight + 'px;') 159 160 productNavigationChildren = document.querySelectorAll('.product-navigation-container .page-information > *') 161 productNavigationChildrenWrapper.classList.add('page-information-wrapper') 162 if(!document.querySelector('.product-navigation-container .page-information-wrapper')) { 163 productNavigationChildrenWrapper.innerHTML = '' 164 165 productNavigationChildren.forEach(function (elem) { 166 productNavigationChildrenWrapper.appendChild(elem) 167 }) 168 } 169 document.querySelector('.product-navigation-container .page-information').appendChild(productNavigationChildrenWrapper) 170 createFilterButton() 171 } 172} 173 174if(document.querySelector('.placeholder-content_top')) { 175 if(document.querySelector('.placeholder-content_top .sticky-menu-btn')) { 176 document.querySelector('.placeholder-content_top .sticky-menu-btn').addEventListener('click', function() { 177 if(document.querySelector('#custom-toolbar').classList.contains('open-menu')) { 178 document.querySelector('#custom-toolbar').classList.remove('open-menu') 179 document.querySelector('#custom-toolbar').classList.add('close-menu') 180 } else { 181 document.querySelector('#custom-toolbar').classList.add('open-menu') 182 document.querySelector('#custom-toolbar').classList.remove('close-menu') 183 } 184 }) 185 } 186 if(document.querySelector('.placeholder-content_top .sticky-search-btn')) { 187 document.querySelector('.placeholder-content_top .sticky-search-btn').addEventListener('click', function() { 188 if(document.querySelector('.placeholder-content_top .block_type_search_box_2').classList.contains('open-src')) { 189 document.querySelector('.placeholder-content_top .block_type_search_box_2').classList.remove('open-src') 190 } else { 191 document.querySelector('.placeholder-content_top .block_type_search_box_2').classList.add('open-src') 192 } 193 }) 194 } 195 if(document.querySelector('.placeholder-content_top .block_type_login_box .login-link-element')) { 196 document.querySelector('.placeholder-content_top .block_type_login_box .login-link-element').addEventListener('click', function(e) { 197 e.preventDefault() 198 if(document.querySelector('.placeholder-content_top .block_type_login_box .show-login').classList.contains('shown')) { 199 document.querySelector('.placeholder-content_top .block_type_login_box .show-login').classList.remove('shown') 200 } else { 201 document.querySelector('.placeholder-content_top .block_type_login_box .show-login').classList.add('shown') 202 } 203 }) 204 } 205} 206 207let wrapSubmenu = document.createElement('div'), 208 wrapSubmenuUl 209 210if(document.querySelector('.placeholder-content_top .sticky-menu-main #item_93 .submenu')) { 211 wrapSubmenu.classList.add('submenu-in') 212 wrapSubmenuUl = document.querySelector('.placeholder-content_top .sticky-menu-main #item_93 .submenu > ul') 213 wrapSubmenu.appendChild(wrapSubmenuUl) 214 document.querySelector('.placeholder-content_top .sticky-menu-main #item_93 .submenu').appendChild(wrapSubmenu) 215 document.querySelector('.placeholder-content_top .sticky-menu-main').addEventListener('mouseenter',maxSubmenu) 216 maxSubmenu() 217} 218 219function maxSubmenu() { 220 let contentTopHeight = document.querySelector('.placeholder-content_top').getBoundingClientRect().height, 221 windowHeight = window.innerHeight, 222 submenuMaxHeight = windowHeight - contentTopHeight 223 document.querySelector('.placeholder-content_top .sticky-menu-main #item_93 .submenu-in > ul').setAttribute('style','max-height:' + submenuMaxHeight + 'px;') 224} 225 226if(document.querySelector('.pages-page .page_columns')) { 227 document.querySelector('body').classList.add('has-blocks') 228 document.querySelector('.pages-page').classList.add('has-blocks') 229 if(document.querySelector('.content-google-map')) { 230 document.querySelector('.content-google-map').parentElement.classList.add('full-width') 231 } 232} 233 234horizontalWebshopProductsFilterScripts() 235 236function horizontalWebshopProductsFilterScripts() { 237 238 filterBlocks = document.querySelectorAll('.horizontal_webshop_products_filter .block-content .product-specs-block') 239 240 filterBlocks.forEach( function(filter) { 241 moveClearLink = filter.querySelector('.ps-block-clear') 242 if(filter.classList.contains('prices-slider')) { 243 filterPricesTitle.classList.add('ps-block-title') 244 filterPricesTitle.innerHTML = '<h3><a href="#">Price</a></h3>' 245 filter.querySelector('.in').prepend(filterPricesTitle) 246 } 247 filter.classList.add('checkbox') 248 if(moveClearLink !== null) { 249 filter.querySelector('.ps-block-content').appendChild(moveClearLink) 250 } 251 filter.querySelector('.ps-block-title').addEventListener('click', function() { 252 if(this.parentElement.querySelector('.ps-block-content').getAttribute('style') === undefined) { 253 if (this.parentElement.querySelector('.ps-block-content').getAttribute('style') !== '') { 254 filterBlocks.forEach(function (filtercontent) { 255 if (filtercontent.querySelector('.ps-block-content').getAttribute('style') !== 'display:none') { 256 filtercontent.querySelector('.ps-block-content').setAttribute('style', 'display:none;') 257 } 258 }) 259 } else { 260 this.parentElement.querySelector('.ps-block-content').setAttribute('style', 'display:none;') 261 } 262 } 263 }) 264 }) 265 266 getClearLinks = document.querySelectorAll('.horizontal_webshop_products_filter .block-content .ps-block-clear a') 267 268 getClearLinks.forEach( function(link) { 269 getClearText = link.innerText 270 if(getClearText.includes('(') && getClearText.includes(')')) { 271 link.classList.add('show') 272 } 273 }) 274} 275 276if(document.querySelector('.webshop-product #product-info-left')) { 277 if(document.querySelector('.webshop-product #product-info-left #short-desc')) { 278 moveShortDesc = document.querySelector('.webshop-product #product-info-left #short-desc') 279 document.querySelector('.webshop-product #product-info-left .prices').before(moveShortDesc) 280 } 281 if(document.querySelector('.webshop-product #product-info-left #order-button')) { 282 moveOrderBtn = document.querySelector('.webshop-product #product-info-left #order-button') 283 document.querySelector('.webshop-product #product-info-left #product-options li[class="quantity"]').appendChild(moveOrderBtn) 284 if(document.querySelector('.webshop-product #product-info-left #wishlist-bottom')) { 285 moveWishlistBtn = document.querySelector('.webshop-product #product-info-left #wishlist-bottom') 286 document.querySelector('.webshop-product #product-info-left #product-options li[class="quantity"]').appendChild(moveWishlistBtn) 287 } 288 } 289 if(document.querySelector('.webshop-product #product-info-left #usp-list')) { 290 moveUSPList = document.querySelector('.webshop-product #product-info-left #usp-list') 291 if(document.querySelector('.webshop-product #product-info-left .linked_products')) { 292 document.querySelector('.webshop-product .linked_products').before(moveUSPList) 293 } else if(document.querySelector('.webshop-product .special-text')) { 294 document.querySelector('.webshop-product .special-text').before(moveUSPList) 295 } 296 } 297 if(document.querySelector('.webshop-product #product-info-left .stock_indication')) { 298 moveStock = document.querySelectorAll('.webshop-product #product-info-left .stock_indication') 299 if(moveStock[1] !== undefined) { 300 document.querySelector('.webshop-product #product-info-left .page-title').after(moveStock[1]) 301 } 302 } 303} 304 305if(document.querySelector('.product-tab.fixed')) { 306 wrapProductTabsWrap.classList.add('product-tab-wrapper') 307 document.querySelector('.product-tab.fixed').before(wrapProductTabsWrap) 308 309 wrapProductTabs = document.querySelectorAll('.product-tab.fixed') 310
311 wrapProductTabs.forEach( function(tab) { 312 tab.querySelector('.tab-title').addEventListener('click', function() { 313 if(this.parentElement.classList.contains('shown')) { 314 this.parentElement.classList.remove('shown') 315 } else { 316 this.parentElement.classList.add('shown') 317 } 318 }) 319 document.querySelector('.product-tab-wrapper').appendChild(tab) 320 }) 321 document.querySelector('.product-tab-wrapper').firstElementChild.classList.add('shown') 322} 323 324if(document.querySelector('.placeholder-footer')) { 325 if (document.querySelector('.placeholder-footer .block_type_subscribeform')) { 326 footerWidth = document.querySelector('body').getBoundingClientRect().width 327 document.querySelector('.placeholder-footer .block_type_subscribeform > .wrap').setAttribute('style','width:'+footerWidth+'px; flex: 0 0 '+footerWidth+'px;') 328 } 329 if (document.querySelector('.placeholder-footer .footer-collapse-block')) { 330 footerCollapseBlocks = document.querySelectorAll('.footer-collapse-block') 331 332 footerCollapseBlocks.forEach(function (block) { 333 block.querySelector('.block-title').addEventListener('click', function () { 334 if (this.parentElement.classList.contains('shown')) { 335 this.parentElement.classList.remove('shown') 336 } else { 337 this.parentElement.classList.add('shown') 338 } 339 }) 340 }) 341 } 342} 343 344if(document.querySelector('#product-info-left .linked_products.not_orderable')) { 345 const elem = document.querySelector('#product-info-left .linked_products.not_orderable') 346 addSliderTarget = elem 347 addSliderToSlide = elem.querySelector('.webshop_products') 348 addSliderBlock = elem.querySelector('.webshop_products .product') 349 makeBlockSlider(addSliderTarget, addSliderToSlide, addSliderBlock) 350} 351 352if(document.querySelector('.content-add-slider')) { 353 addSliderBlocks = document.querySelectorAll('.content-add-slider') 354 355 addSliderBlocks.forEach( function(elem) { 356 if(elem.classList.contains('block_type_webshop_popularcategories') || elem.classList.contains('block_type_webshop_categories') || elem.classList.contains('block_type_webshop_popularfeaturedproducts') || elem.classList.contains('block_type_webshop_featuredproducts')) { 357 addSliderTarget = elem 358 addSliderToSlide = elem.querySelector('.webshop_products') 359 addSliderBlock = elem.querySelector('.webshop_products .product') 360 makeBlockSlider(addSliderTarget, addSliderToSlide, addSliderBlock) 361 } else if(elem.classList.contains('block_type_newsitems')) { 362 addSliderTarget = elem 363 addSliderToSlide = elem.querySelector('.block-content') 364 addSliderBlock = elem.querySelector('.block-content > div') 365 makeBlockSlider(addSliderTarget, addSliderToSlide, addSliderBlock) 366 } 367 }) 368} 369 370function makeBlockSlider(target,toslide,block) { 371 372 addSliderCurrentLeft = 0 373 374 toslide.setAttribute('data-slide-left',0) 375 376 addSliderPrev.className = 'slide-prev' 377 addSliderPrev.innerHTML = '<i class="fa fa-angle-left"></i>' 378 addSliderNext.className = 'slide-next' 379 addSliderNext.innerHTML = '<i class="fa fa-angle-right"></i>' 380 381 target.querySelector('.wrap').append(addSliderPrev.cloneNode(true),addSliderNext.cloneNode(true)) 382 target.querySelector('.slide-prev').addEventListener('click', function() { showPrevBlock() }) 383 target.querySelector('.slide-next').addEventListener('click', function() { showNextBlock() }) 384 385 function showPrevBlock() { 386 addSliderBlockWidth = block.getBoundingClientRect() 387 if(addSliderCurrentLeft > 0) { 388 addSliderCurrentLeft = toslide.getAttribute('data-slide-left') - addSliderBlockWidth.width 389 toslide.setAttribute('style', 'left: -' + addSliderCurrentLeft + 'px;') 390 toslide.setAttribute('data-slide-left',addSliderCurrentLeft) 391 } 392 } 393 394 function showNextBlock() { 395 addSliderBlockWidth = block.getBoundingClientRect() 396 addSliderTargetWidth = toslide.getBoundingClientRect() 397 addSliderTargetChildren = toslide.children.length - Math.round(addSliderTargetWidth.width / addSliderBlockWidth.width) 398 addSliderMaxLeft = (addSliderTargetChildren * addSliderBlockWidth.width) + (addSliderBlockWidth.width / 2) 399 addSliderCurrentLeft = parseInt(toslide.getAttribute('data-slide-left')) + addSliderBlockWidth.width
400 if(addSliderCurrentLeft < addSliderMaxLeft) { 401 toslide.setAttribute('style', 'left: -' + addSliderCurrentLeft + 'px;') 402 toslide.setAttribute('data-slide-left',addSliderCurrentLeft) 403 } 404 console.log(addSliderCurrentLeft,addSliderMaxLeft,addSliderTargetChildren) 405 } 406 407 target.addEventListener('touchstart', handleTouchStart, {passive: true}); 408 target.addEventListener('touchmove', handleTouchMove, {passive: true}); 409 410 function getTouches(evt) { 411 return evt.touches || // browser API 412 evt.originalEvent.touches; // jQuery 413 } 414 415 function handleTouchStart(evt) { 416 const firstTouch = getTouches(evt)[0]; 417 xDown = firstTouch.clientX; 418 yDown = firstTouch.clientY; 419 } 420 421 function handleTouchMove(evt) { 422 if (!xDown || !yDown) { return; } 423 424 var xUp = evt.touches[0].clientX, yUp = evt.touches[0].clientY, xDiff = xDown - xUp, yDiff = yDown - yUp; 425 426 if (Math.abs(xDiff) > Math.abs(yDiff)) {/*most significant*/ 427 if (xDiff > 0) { 428 //left 429 showNextBlock() 430 } else { 431 //right 432 showPrevBlock() 433 } 434 } else { 435 if (yDiff > 0) { 436 /* up swipe */ 437 } else { 438 /* down swipe */ 439 } 440 } 441 /* reset values */ 442 xDown = null 443 yDown = null 444 } 445} 446 447window.addEventListener('load', function() { 448 addCloseMenuButton.innerHTML = '<i class="fa fa-times"></i>' 449 addCloseMenuButton.setAttribute('id','close-menu') 450 451 addCloseMenuButton.addEventListener('click', function() { 452 document.querySelector('#custom-toolbar').classList.remove('open-menu') 453 document.querySelector('#custom-toolbar').classList.add('close-menu') 454 }) 455 456 document.querySelector('#custom-toolbar').addEventListener('click', function() { 457 this.classList.remove('open-menu') 458 this.classList.add('close-menu') 459 }) 460 461 document.querySelector('#custom-toolbar .block_type_navigation').prepend(addCloseMenuButton) 462}) 463 464let windowHeight, 465 footerPosition, 466 footerInScreen = false, 467 addElfsight = document.createElement('script'), 468 uspPdpPosition = 0, 469 uspPdpPositionInScreen = false, 470 checkoutRightPosition = 0, 471 checkoutRightPositionInScreen = false 472 473window.addEventListener('scroll', function() { 474 windowHeight = window.outerHeight 475 footerPosition = document.querySelector('footer').getBoundingClientRect().y 476 if(document.querySelector('.webshop-product #product-info-left')){ 477 uspPdpPosition = document.querySelector('#product-info-left').getBoundingClientRect().y 478 } 479 if(document.querySelector('#one-page-checkout #checkout-right')){ 480 checkoutRightPosition = document.querySelector('#checkout-right').getBoundingClientRect().y 481 } 482 483 addElfsight.setAttribute('src', 'https://apps.elfsight.com/p/platform.js') 484 addElfsight.setAttribute('defer', '') 485 486 if(footerPosition < windowHeight && footerInScreen === false) { 487 footerInScreen = true 488 document.querySelector('head').appendChild(addElfsight) 489 } 490 491 if (uspPdpPosition < windowHeight && uspPdpPositionInScreen === false){ 492 uspPdpPositionInScreen = true 493 if(document.querySelector('#product-info-left')){ 494 document.querySelector('#product-info-left').innerHTML += '<div class="elfsight-app-c43271ab-0972-4fec-a4fc-55f9a2efc0af"></div>'; 495 } 496 document.querySelector('head').appendChild(addElfsight) 497 } 498 499 if (checkoutRightPosition < windowHeight && checkoutRightPositionInScreen === false){ 500 checkoutRightPositionInScreen = true 501 if(document.querySelector('#checkout-right')){ 502 document.querySelector('#checkout-right').innerHTML += '<div class="elfsight-app-c43271ab-0972-4fec-a4fc-55f9a2efc0af"></div>'; 503 } 504 document.querySelector('head').appendChild(addElfsight) 505 } 506}) 507 508window.addEventListener('resize', maxSubmenu) 509 510let getAllColumns 511 512if(document.querySelector('.column > .in')) { 513 getAllColumns = document.querySelectorAll('.column > .in') 514 getAllColumns.forEach( function(column) { 515 if(column.children.length < 1) { 516 column.parentElement.remove() 517 } 518 }) 519}
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.