1var IE6, IE7, IE8; 2var isIE = (navigator.userAgent.indexOf("MSIE") != -1 || navigator.userAgent.indexOf("Edge") != -1 || !!navigator.userAgent.match(/Trident.*rv\:11\./)); 3var touchmenu = 0; 4//var langfileurl = syspathpics + "/langscript.json"; 5var langfileurl = "/tradepro/shop/langscript.json"; 6 7 8var langfile; 9if (localStorage.getItem('langfile')) { 10 langfile = JSON.parse(localStorage.getItem('langfile')); 11} 12 13 14$(document).ready(function() { 15 16 initLangfile(1); 17 //LoadKatTree(); 18 //MainNavigationInit(); 19 scart_payment(); 20 21 if ( typeof Modernizr == 'object') { 22 Modernizr.load(); 23 } 24 25 FloatingMenu(); 26 27 if ( typeof Modernizr == 'object') { 28 if (Modernizr.ie8 || Modernizr.ie7 || Modernizr.ie9) { 29 placeholderAdd(); 30 } 31 } 32 33 if ( typeof $.fn.waitForImages != 'undefined') { 34 $('body').waitForImages().done(function() { 35 responsiveClass(); 36 }); 37 } 38 39 if ( typeof $.fn.fancybox != 'undefined') { 40 $("a.zoomThumb").fancybox({ 41 hideOnContentClick : true, 42 overlayColor : '#ccc', 43 overlayOpacity : 0.5, 44 titlePosition : 'inside' 45 }); 46 $("#DetailThumbs>a").fancybox({ 47 type : 'iframe' 48 }); 49 $("#DetailImageContainer>a").fancybox({ 50 type : 'iframe' 51 }); 52 } 53 54 $('#selectall').on('change', function() { 55 var value = this.checked; 56 $('#Fastpageliste .Article input[type=checkbox]').prop('checked', value); 57 }); 58 59 $('#SearchButton a').on('click',function() { 60 //$('#FactFinder').fadeToggle("fast"); 61 if ($('#FactFinder').css('display') == 'none') { 62 63 $('#SearchButton a').addClass("active"); 64 65 } else { 66 $('#SearchButton a').removeClass("active"); 67 68 } 69 $('#FactFinder').fadeToggle("fast"); 70 71 }); 72 73 74 75 $('.DetailCrossToggle').addClass('ico-caret-square-down'); 76 $('.DetailCrossList').hide(); 77 $('.DetailCrossToggle').on('click', function() { 78 79 //$('#FactFinder').fadeToggle("fast"); 80 $(this).parents('#DetailCross').find('.DetailCrossList').first().slideToggle(); 81 $(this).toggleClass('ico-caret-square-down'); 82 }); 83 if ($("body").hasClass("det")) { 84 var headlines = $('section h1'); 85 headlines.each(function() { 86 if (!$(this).find('div').length) { 87 $(this).append('<div class="toggle close"></div>'); 88 }; 89 }) 90 91 $('section[id] h1').on('click', function() { 92 $(this).parent().find('> *:not(h1,.toggle)').slideToggle(); 93 $(this).find('.toggle').toggleClass('close'); 94 }) 95 // fixWhitespace (); 96 } 97 98 if ( typeof $.fn.easyResponsiveTabs != 'undefined') { 99 $('.resptabs:not(#homeTab)').easyResponsiveTabs(); 100 } 101 102 //-------------------------------------------------------------------------------- 103 // Login-Dropdown offen halten wenn noetig und schliessen wenn möglich 104 //-------------------------------------------------------------------------------- 105 $("input[name='username'], input[name='pw']").on('hover', function() { 106 $(this).closest("ul").addClass("login-open"); 107 $(this).closest("#navLogin").addClass("login-button-open"); 108 }); 109 $(document).on("click", function(event) { 110 clickedtarget = $(event.target).closest('.login-open'); 111 $("#navLogin, #navLogin .level_2, #navLogin .level2").not(clickedtarget).removeClass("login-open login-button-open"); 112 }); 113 $(document).on('scroll', function() { 114 $("#navLogin, #navLogin .level_2, #navLogin .level2").removeClass("login-open login-button-open"); 115 116 }); 117 detailmengen(); 118 119 // Sprachregler selected element 120 var selectedLang = localStorage.getItem('SelectedLanguage'); 121 122 //console.log($('.fromTablet#languageSelection #languageselector').val()); 123 var defaultLangMobile = $('.fromTablet#languageSelection #languageselector').val(); 124 var defaultLang = $('#languageSelection #languageselector').val() 125 $('.fromTablet#languageSelection #languageselector').val(defaultLang); 126 $('.fromTablet#languageSelection #languageselector').on('change', function() { 127 if ((selectedLang != defaultLang)) { 128 $('.fromTablet#languageSelection #languageselector').val(selectedLang); 129 $('#languageSelection #languageselector').val(selectedLang); 130 } 131 }); 132 133 testpermission(); 134 135 136}); 137 138 139 140function old_screen_on() { 141 return; 142// $(".block_rechts").removeClass("small_off"); 143// $(".block_links").removeClass("small_off"); 144// $(".block_rechts_flex").addClass("wide_off"); 145// $(".block_links_flex").addClass("wide_off"); 146// $(".SiteContainer").removeClass("new_screen"); 147// $(".wrapper").removeClass("new_screen");
148// $("#Navi").removeClass("new_screen"); 149// $(".SiteContainer").addClass("old_screen"); 150// $(".wrapper").addClass("old_screen"); 151// $("#Navi").addClass("old_screen"); 152// $("#eprocMainNav").removeClass("new_screen"); 153// $("#eprocMainNav").addClass("old_screen"); 154} 155 156function old_screen_off() { 157 return; 158// $(".block_rechts").addClass("small_off"); 159// $(".block_links").addClass("small_off"); 160// $(".block_rechts_flex").removeClass("wide_off"); 161// $(".block_links_flex").removeClass("wide_off"); 162// $(".SiteContainer").removeClass("old_screen"); 163// $(".wrapper").removeClass("old_screen"); 164// $("#Navi").removeClass("old_screen"); 165// $(".SiteContainer").addClass("new_screen"); 166// $(".wrapper").addClass("new_screen"); 167// $("#Navi").addClass("new_screen"); 168// $("#eprocMainNav").addClass("new_screen"); 169// $("#eprocMainNav").removeClass("old_screen"); 170} 171 172function detailmengen() { 173 $('input.Input.menge.updfix').on("keyup change", function(e) { 174 artno = $(this).attr('data-artno') 175 val = $(this).val(); 176 $("input.Input.menge.updfix[data-artno|='" + artno + "']").each(function() { 177 if($(this).data("artno") == artno) { 178 $(this).val(val); 179 } 180 }); 181 }); 182} 183 184function setLoginUrl(LoginUrl2) { 185 var LoginUrl; 186 LoginUrl = LoginUrl2; 187 188 $("form").on("submit", function(e) { 189 var name = $(this).find("input[name=username]").val(); 190 var password = $(this).find("input[name=pw]").val(); 191 if (!name || !password) { 192 return true; 193 } 194 var $form = $(this); 195 $.ajax({ 196 url : LoginUrl, 197 type : "get", 198 async : true, 199 data : { 200 login : name, 201 password : password, 202 area : 'FE' 203 }, 204 complete : function() { 205 return true; 206 } 207 }); 208 }); 209 210} 211 212// Factfinder Tracking - Klick auf Produkt in Suchergebnis 213function fftClick(channel, sid, userId, query, id, pos, origPos, page, pageSize, origPageSize) { 214 $.ajax({ 215 type : 'POST', 216 url : '/tradepro_php/shop_fft.php', 217 data : { 218 event : "click", 219 channel : channel, 220 sid : sid, 221 userId : userId, 222 query : query, 223 id : id, 224 pos : pos, 225 origPos : origPos, 226 page : page, 227 pageSize : pageSize, 228 origPageSize : origPageSize 229 }, 230 contentType : 'application/x-www-form-urlencoded; charset=UTF-8', 231 cache : false, 232 async : false 233 }); 234} 235 236//Scandit # Zu letzten WK-Artikel springen 237function hasClass(ele,cls) { 238 return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); 239} 240 241$(document).ready(function() { 242 243 if ( (!!navigator.userAgent.match(/Trident.*rv\:11\./)) || (hasClass(document.getElementsByTagName('body')[0], "CMS")) ) { 244 $('#FactFinder a#popup').hide(); 245 }else{ 246 if ($('#scandit-barcode-picker').length > 0){ 247 initScanner(); 248 } 249 250 } 251 var scancheck = urlParam('fromscan'); 252 if (scancheck == "true"){ 253 scrolltolast(); 254 255 } 256}); 257function urlParam(name){ 258 var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); 259 if (results){ 260 return results[1] 261 }else{ 262 return 0; 263 } 264} 265function scrolltolast(){ 266 $('html, body').animate({ 267 scrollTop: $('#ScartTable .Article:last').offset().top - $('#header').height() 268 }, 1000); 269} 270 271 272//-------------------------------------------------- 273// UL in Spalten aufteilen 274//-------------------------------------------------- 275// 276// Default: splitList(8,"#prodNav"); 277// 278// size: Einträge pro Liste, default = 8 279// selector: UL CSS-Selector, default = #prodNav 280// style: Inline CSS 281 282function splitList(size, selector, style) { 283 284 if ($(selector + " li").length <= size) { 285 return; 286 } 287 288 var size = 9; 289 var ul = $(selector) || $("#prodNav"); 290 var lis = ul.children().filter(':gt(' + (size - 1) + ')'); 291 var loop = Math.ceil(lis.length / size); 292 var i = 0; 293 var lists = 0; 294 295 ul.addClass("split").wrap('<div id="navWrap" style="overflow: hidden; ' + style + '"></div>'); 296 297 for (; i < loop; i = i + 1) { 298 ul = $("<ul />").addClass("level_2 split").append(lis.slice(i * size, (i * size) + size)).insertAfter(ul); 299 } 300 301 lists = $("#navWrap ul").length; 302 $(this).closest("#navWrap").css("width", lists * 100 + "%"); 303 $(selector).addClass("split").attr("id", "prodNavSplit"); 304 $(selector).closest(".block").addClass("splitBlock"); 305}; 306 307var debug = false;
308function logVal(title, value) { 309 if (debug) { 310 console.log(title + ": " + value); 311 } 312} 313 314function getWhitespace() { 315 316 // Gibt die Höhe des WeiÃraums zwischen Details und Sidebar zurück 317 318 var contentHeight = $('.ShopContent').outerHeight(true); 319 var sidebarHeight = $('#ShopMenu').height(); 320 var whitespace = sidebarHeight - contentHeight; 321 return whitespace; 322} 323 324function fixWhitespace() { 325 326 // wird wohl nicht mehr aufgerufen? 327 // sollte, wenn, dann auch wie folgt aufgerufen werden: 328 329 /* 330 $(document).ready(function() { 331 document.fonts.ready.then(function() { 332 fixWhitespace(); 333 }); 334 }); 335 */ 336 337 // Verkleinert die Boxen in der Sidebar von unten nach oben bis der WeiÃraum kleiner als das festgelegte Maximum ist 338 // Shopping By Style bleibt immer sichtbar 339 340 var maxWhitespace = 100; 341 // maximale Höhe (px) des erlaubten WeiÃraums 342 343 if (getWhitespace() > maxWhitespace) { 344 var section = $('#ShopMenu section').not('.collapsed, .sbsContainer, #sbsContainer').last(); 345 // .not() -> zu ignorierende Boxen/Elemente 346 section.addClass('collapsed').find('> *:not(h1,.toggle)').hide(); 347 section.find('h1').append('<div class="toggle collapsed"></div>'); 348 } else { 349 // keine Ãnderung oder Maximum unterschritten 350 //logVal("nachher", getWhitespace()); 351 } 352 353} 354 355//-------------------------------------------------- 356//FloatingMenu 357//-------------------------------------------------- 358function FloatingMenu() { 359 var size = 1; 360 // gröÃer errechneter rechter Rand; der liegt im Normalfall bei 0 und Breite der gesamten Box, bei der Kontaktbox z.B. 237 361 // Event wenn man auf das Floatingmenü klickt. 362 $("div.floatingTrigger").on('click', function() { 363 state = parseInt($("#floatingMenu").css('right'), 10) * (-1) < size; 364 if (!state) { 365 $("#floatingMenu").removeClass("floatingMenuContact"); 366 $("#floatingMenu").addClass("floatingMenuContactActive"); 367 } else { 368 $("#floatingMenu").addClass("floatingMenuContact"); 369 $("#floatingMenu").removeClass("floatingMenuContactActive"); 370 } 371 }); 372 // Event im Floating Button auf den Telefonkontakt geklickt wurde. 373 $("#floatingMenu").find("a.telephone").on('click', function() { 374 $("#floatingMenuTele").animate({ 375 'top' : -1 + "px" 376 }, 300); 377 }) 378 // Floating Menü schlieÃen wenn der Chat geöffnet wird. 379 $("#floatingMenu").find("a.chat").on('click', function() { 380 $("#floatingMenu").addClass("floatingMenuContact"); 381 $("#floatingMenu").removeClass("floatingMenuContactActive"); 382 }) 383} 384 385//-------------------------------------------------- 386//placeholderAdd 387//Imitiert die placeholder funktionalität von HTML5 für ältere Browser. 388//-------------------------------------------------- 389 390function placeholderAdd() { 391 //Placeholder für den <IE9 einbinden. 392 $('[placeholder]').focus(function() { 393 var input = $(this); 394 if (input.val() == input.attr('placeholder')) { 395 input.val(''); 396 input.removeClass("'placeholder'"); 397 } 398 }).blur(function() { 399 var input = $(this); 400 if (input.val() == '' || input.val() == input.attr('placeholder')) { 401 input.addClass('placeholder'); 402 input.val(input.attr('placeholder')); 403 } 404 }).blur(); 405 406 //Wenn das Skript abgeschickt wird, nur mit Placeholdern gefüllt, sollen diese bereinigt werden. 407 $('[placeholder]').parents('form').on("submit", function() { 408 $(this).find('[placeholder]').each(function() { 409 var input = $(this); 410 if (input.val() == input.attr('placeholder')) { 411 input.val(''); 412 } 413 }) 414 }); 415} 416 417//-------------------------------------------------- 418//NavigationTouch 419//Ermöglicht das Hoverelemente auch auf Tablets / Touch geräten genutzt werden können. 420//-------------------------------------------------- 421 422var newTouchmenu = 0; 423$( window ).on( "orientationchange", function( event ) { 424 425 426 console.log(touchmenu); 427 428 if(touchmenu == 1) { 429 touchmenu = 0; 430 431 newTouchmenu = 1; 432 } else { 433 newTouchmenu = 0; 434 } 435 436 console.log(touchmenu); 437 NavigationTouch(); 438 439 }); 440 441function NavigationTouch() { 442 443 $("#UserNavi").prependTo("#Navi"); 444 if (touchmenu == 0) { 445 touchmenu = 1; 446 447 448 449 450 $('#MainNavi li a, #UserNavi li a').on('click', function(e) { 451 ParentOfLink = $(this).parent(); 452 if (ParentOfLink.find("ul").length || ParentOfLink.find("div").length) { 453 if (!ParentOfLink.hasClass('activemen') && (newTouchmenu == 0 && touchmenu == 1)
453) { 454 e.preventDefault(); 455 ParentOfLink.addClass('activemen'); 456 } else { 457 var elm = $(this); 458 var xPos = e.pageX - elm.offset().left; 459 var yPos = e.pageY - elm.offset().top; 460 if (xPos < 60 && ParentOfLink.hasClass('activemen')) { 461 e.preventDefault(); 462 ParentOfLink.removeClass('activemen'); 463 ParentOfLink.find(".activemen").each(function() { 464 $(this).removeClass('activemen'); 465 }); 466 $("#Navigationbar ul.productsnav li > ul.level_3").css("display", "block"); 467 } 468 } 469 } 470 $('#MainNavi li.activemen, #UserNavi li a').last().find('ul').hide(); 471 $('#MainNavi li.activemen, #UserNavi li a').last().find("ul").first().show(); 472 }); 473 } 474} 475 476 477 478 479 480/*$('.main-navigation > ul > li').hover(function() { 481 console.log("test6"); 482 $('#UserNavi > .level_2 ul').css("display", "none"); 483 484});*/ 485 486//-------------------------------------------------- 487//responsiveClass
488//Passt die Seite bei bestimmten Breakpoints/GröÃen an. 489//-------------------------------------------------- 490var ScrollHead = 116; 491 492function responsiveClass() { 493 var FactFinder = $('#FactFinder'); 494 var SuggestLayer = $('#suggestLayer'); 495 var NavBar = $('#Navigationbar'); 496 var navButton = $('#ResponsiveButton'); 497 var headerLogo = $("#Logo"); 498 var navLogo = $("#NaviLogo"); 499 var navHome = $("#NaviHome"); 500 var NavBarScartButton = $("#ScartScroll"); 501 var InputFieldFocus = $("#Navi .level1>li").find("input"); 502 NavBarScartButton.attr("style", ""); 503 504 $(window).setBreakpoints({ 505 distinct : true, 506 breakpoints : [320, 480, 640, 768, 800, 960, 1024, 1200] 507 }); 508 509 function Spalten3() { 510 show_accordions(); 511 RubViewNeu(".FFSContent #RubView li", 3, "left", 2.2, "%"); 512 RubViewNeu(".ShopContent #RubView li", 3, "left", 2.2, "%"); 513 RubViewNeu(".StartContent #RubView li", 5, "left", 2, "%"); 514 RubViewNeu("#FeedbackCampaign .CampaignItemRub", 4, "right", 22); 515 hide_accordions(); 516 517 } 518 519 function Spalten2() { 520 show_accordions(); 521 RubViewNeu(".FFSContent #RubView li", 2, "left", 2, "%"); 522 RubViewNeu(".ShopContent #RubView li", 2, "left", 2, "%"); 523 RubViewNeu(".StartContent #RubView li", 3, "left", 2, "%"); 524 RubViewNeu("#FeedbackCampaign .CampaignItemRub", 3, "right", 22); 525 hide_accordions(); 526 527 } 528 529 function Spalten1() { 530 show_accordions(); 531 RubViewNeu(".FFSContent #RubView li", 1, "left", 1, "%"); 532 RubViewNeu(".ShopContent #RubView li", 1, "left", 1, "%"); 533 RubViewNeu(".StartContent #RubView li", 1, "left", 1, "%"); 534 RubViewNeu("#FeedbackCampaign .CampaignItemRub", 1, "right", 22); 535 hide_accordions(); 536 537 } 538 539 function NavBarFix() { 540 if ($(window).scrollTop() < ScrollHead) { 541 NavBar.removeClass("fixed"); 542 } 543 } 544 545 function show_accordions() { 546 $('.ui-accordion-content').show(); 547 548 } 549 550 function hide_accordions() { 551 $('.ui-accordion-content').each(function() { 552 if (!$(this).hasClass('ui-accordion-content-active')) { 553 $(this).hide(); 554 } 555 }); 556 } 557 558 function HideFilter(Status) { 559 return; 560 } 561 562 563 $(window).on('enterBreakpoint1200', function() { 564 Spalten3(); 565 HideFilter("show"); 566 NavBarFix(); 567 NavBar.attr("style", ""); 568 569 }); 570 571 $(window).on('enterBreakpoint1024', function() { 572 Spalten3(); 573 HideFilter("show"); 574 NavBarFix(); 575 NavBar.attr("style", ""); 576 577 }); 578 579 $(window).on('enterBreakpoint960', function() { 580 Spalten3(); 581 HideFilter("show"); 582 NavBarFix(); 583 NavBar.attr("style", ""); 584 585 }); 586 587 $(window).on('enterBreakpoint800', function() { 588 HideFilter("show"); 589 Spalten3(); 590 NavBarFix(); 591 NavBar.attr("style", ""); 592 593 }); 594 595 $(window).on('enterBreakpoint768', function() { 596 HideFilter("show"); 597 Spalten2(); 598 NavBarFix(); 599 navHome.attr("style", "display:none;"); 600 NavBar.attr("style", ""); 601 NavigationTouch(); 602 603 604 605 606 }); 607 608 $(window).on('enterBreakpoint640', function() { 609 HideFilter(); 610 Spalten2(); 611 navHome.attr("style", "display:none;"); 612 $("body").addClass("m"); 613 $("#navWrap").css("margin", "0"); 614 $("#navWrap").css("width", "100%"); 615 616 }); 617 618 $(window).on('enterBreakpoint480', function() { 619 Spalten1(); 620 HideFilter(); 621 NavBar.addClass("fixed"); 622 navHome.attr("style", "display:none;"); 623 $("body").addClass("m"); 624 $("#navWrap").css("margin", "0"); 625 $("#navWrap").css("width", "100%"); 626 627 }); 628 629 $(window).on('enterBreakpoint320', function() { 630 Spalten1(); 631 HideFilter(); 632 navHome.attr("style", "display:none;"); 633 $("body").addClass("m"); 634 $("#navWrap").css("margin", "0"); 635 $("#navWrap").css("width", "100%"); 636 637 }); 638 639 if ($(window).width() <= 768) { 640 NavigationTouch(); 641 642 643 644 } 645 646 // Verhalten bei verschiedenen Auflösungen der Headerleiste 647 $(window).on('scroll', function() { 648 649 // Verhalten von über 1024 650 if ($(window).width() > 1024) { 651 if ($(this).scrollTop() > ScrollHead) { 652 NavBar.addClass("fixed"); 653 navLogo.attr("style", "display:block;"); 654 NavBarScartButton.attr("style", "position:relative; visibility:visible;"); 655 navHome.attr("style", "display:none;"); 656 } else { 657 navLogo.attr("style", ""); 658 NavBarScartButton.attr("style", ""); 659 navHome.attr("style", "") 660 NavBar.removeClass("fixed"); 661 } 662 // Verhalten von <= 768 663 } else if ($(window).width() <= 768) { 664 if ($(this).scrollTop() >= 1) { 665 navButton.addClass("fixed"); 666 if (!InputFieldFocus.is(":focus")) { 667 $('#Navi .level1 li').removeClass('active'); 668 } 669 670 671 672 } 673 674 675 676 677 // Verhalten von 1024 - 769 678 } else if ($(window).width() <= 1024 && $(window).width() > 768) { 679 if ($(this).scrollTop() > 180) { 680 NavBar.addClass("fixed"); 681 navLogo.attr("style", "display:block;"); 682 NavBarScartButton.attr("style", "display:block;"); 683 navHome.attr("style", "display:none;"); 684 } else { 685 navLogo.attr("style", ""); 686 NavBarScartButton.attr("style", ""); 687 NavBar.removeClass("fixed"); 688 navHome.attr("style", ""); 689 } 690 } 691 }); 692 693 navButton.on('click', function() { 694 if (NavBar.css('display') == 'none') { 695 navButton.removeClass("active"); 696 } else { 697 navButton.addClass("active"); 698 } 699 700 NavBar.fadeToggle(250, "linear"); 701 navButton.toggleClass("active"); 702 $('#MainNavi .level1 li.active').removeClass('active'); 703 }) 704 if ($("html").hasClass("touch") && $(window).width() <= 768) { 705 NavigationTouch(); 706 } 707 708} 709 710//-------------------------------------------------- 711//Scrollbar DetailTable mit fixen Columns 712//-------------------------------------------------- 713/* 714 * erste und letzte Spalte fest ohne Data-Tables 715 */ 716 717$(document).ready(function() {
718 if (navigator.userAgent.search("Safari") >= 0 && navigator.userAgent.search("Chrome") < 0) { 719 document.getElementsByTagName("BODY")[0].className += " safari"; 720 } 721 old_screen_off(); 722 repositionColumns(); 723 724}); 725 726$(window).on('resize',repositionColumns); 727 728function repositionColumns() { 729 730 731 diff = $('#DetailTable').width() - $('#DetailTableClone').width(); 732 // ggf. paddings oder margins hinzuzählen 733 734 diff1 = $('#DetailTable').first().width(); 735 736 diff2 = $('#DetailTableClone').first().width(); 737 738 $('#DetailTable tr').each(function() { 739 740 $(this).find('td:first').attr('style', 'border-right:1px solid #c8c8c8;'); 741 742 //background-color der letzten Spalten an übrige Spalten anpassen 743 744 $columnColor = $(this).find('td:not(:first, :last)').css('background-color'); 745 746 $(this).find('td:last').attr('style', 'background-color:' + $columnColor + '; box-shadow:-2px 0px 2px 0px rgba(0,0,0,0.2);'); 747 $(this).find('th:last').attr('style', 'box-shadow:9px 9px 4px 10px #c8c8c8;'); 748 $(this).find('th:first').attr('style', 'box-shadow: 2px 1px 4px -1px #c8c8c8;'); 749 $(this).find('td:first').attr('style', ' background-color:' + $columnColor + '; box-shadow:3px 0px 3px 0px rgba(0,0,0,0.2);'); 750 751 $(this).find('.Staffel').attr('style', 'box-shadow:none;'); 752 753 }); 754 755 if (diff2 >= diff1) { 756 757 $('#DetailTable tr').each(function() { 758 759 $columnColor = $(this).find('td:not(:first, :last)').css('background-color'); 760 761 $(this).find('td:first, td:last, th:first, th:last').attr('style', 'box-shadow:none; background-color:' + $columnColor + ';'); 762 763 }); 764 765 } else { 766 767 $('.innerScrollDetailTable').attr('style', 'overflow-x:auto; overflow-y:hidden;'); 768 769 } 770 771} 772 773 774 775//-------------------------------------------------- 776//Shopping By Style umrechnung 777//Umrechnung für Clickmaps in SBS 778//-------------------------------------------------- 779 780function ShoppingByStyle() { 781 782 Images = new Array(); 783 i = 0; 784 785 $('img.ImageBack').each(function() { 786 SizeImages = new Array(4); 787 SizeImages[2] = ($(this).width()); 788 SizeImages[3] = ($(this).height()); 789 790 // Get original Image Size 791 var screenImage = $(this); 792 var theImage = new Image(); 793 theImage.src = screenImage.attr("src"); 794 var imageWidth = theImage.width; 795 var imageHeight = theImage.height; 796 797 SizeImages[0] = imageWidth; 798 SizeImages[1] = imageHeight; 799 800 Images[i] = SizeImages; 801 i++; 802 }); 803 i = 0; 804 805 $('#ShoppingByStyle li').each(function() { 806 var li = $(this); 807 808 // li die Breite des Ãberliegenden Elements geben 809 var parentWidth = $(this).parents("#ShoppingByStyle").width(); 810 li.width(parentWidth); 811 // Skalierungsfaktor berechnen 812 var Factor = Images[i][0] / Images[i][2]; 813 // Für jede ImageMap die GröÃe und Position anpassen an die Aktuelle Anzeigebreite/höhe 814 li.find("a").each(function() { 815 // Jedes a in LinksFrom Image schreiben 816 var LinksFromImage = $(this); 817 var Left, Top, WidthOfImageMap, HeightOfImageMap; 818 var SizeOfImageMap = LinksFromImage.children("img"); 819 820 WidthOfImageMap = SizeOfImageMap.width(); 821 HeightOfImageMap = SizeOfImageMap.height(); 822 823 SizeOfImageMap.width(WidthOfImageMap / Factor); 824 SizeOfImageMap.height(HeightOfImageMap / Factor); 825 826 Left = LinksFromImage.css("left"); 827 Left = Left.substring(0, Left.length - 2); 828 Left = Left / Factor; 829 Left = Math.round(Left); 830 831 Top = LinksFromImage.css("top"); 832 Top = Top.substring(0, Top.length - 2); 833 Top = Top / Factor; 834 Top = Math.round(Top); 835 836 LinksFromImage.attr("Style", ""); 837 LinksFromImage.attr("Style", "left:" + Left + "px; top:" + Top + "px; margin:0px;"); 838 }); 839 i++; 840 }); 841 842} 843 844//-------------------------------------------------- 845//Slideshow Startseite jQuery CarouFredSel 846//-------------------------------------------------- 847function ShoppingByStyleSlider() { 848 849 $("#ShoppingByStyle").append('<button class="prevSBS" href="#">«</button>').append('<button class="nextSBS" href="#">»</button>'); 850 851 //jQuery CarouFredSel 852 $("#ShoppingByStyle ul").carouFredSel({ 853 scroll : { 854 pauseOnHover : true, 855 pauseDuration : 10000 856 }, 857 prev : ".prevSBS", 858 next : ".nextSBS" 859 }); 860} 861 862// -------------------------------------------------- 863// Aktualisieren-Button bei Ãnderung eines Input- 864// Feldes bei Artikelpositionen 865//-------------------------------------------------- 866 867function scartRefresh() { 868 869 $('#ScartTable input[type="text"]').each(function() { 870 var elem = $(this); 871 elem.data("oldVal", elem.val()); 872 elem.on("propertychange keyup input paste", function() { 873 if (elem.data("oldVal") != elem.val()) { 874 elem.data("oldVal", elem.val()); 875 displayRefreshButton(elem); 876 } 877 }); 878 }); 879 880 $('#ScartTable select').on("change", function() { 881 displayRefreshButton($(this)); 882 }); 883 884 // Aktualisieren-Button neben formField anzeigen 885 function displayRefreshButton(formField) { 886 var button = formField.next(".scartRefresh"); 887 var dummy = button.next(".scartRefreshDummy"); 888 dummy.hide(); 889 button.show(); 890 } 891 892} 893 894//-------------------------------------------------- 895// Warenkorb-Sets ein- und ausblenden 896//-------------------------------------------------- 897function scartSets() { 898 $("#ScartTable .setToggle").on("click", function() { 899 var button = $(this); 900 var set = button.attr("rel"); 901 var open = button.find(".open"); 902 var close = button.find(".close"); 903 904 open.toggle();
905 close.toggle(); 906 $("#ScartTable ." + set).toggle(); 907 }); 908} 909 910//-------------------------------------------------- 911// Warenkorb-Funktionen 912//-------------------------------------------------- 913 914function scart_payment() { 915 if ($("#porto_payment").length == 0) 916 return; 917 918 $("#PaymentInfo").before(" ").show(); 919 920 //Overlay initialisieren 921 if ( typeof $.fn.fancybox != 'undefined') { 922 $("#DetailImageContainer a").fancybox({ 923 hideOnContentClick : true, 924 overlayColor : '#ccc', 925 overlayOpacity : 0.5, 926 titlePosition : 'inside', 927 type : 'iframe' 928 }); 929 } 930 931 //Click-Handler für Infolink 932 $("#PaymentInfo").on('click', function() { 933 var url = $(this).attr("href"); 934 var title = $(this).attr("rel"); 935 $("#DetailZoomOverlay iframe").attr("src", url); 936 $("#DetailZoomOverlay .close").attr("title", title); 937 938 api.load(); 939 940 return false; 941 }); 942 943 scart_payment_text(); 944 945 $("#porto_payment").on('change', function() { 946 scart_payment_text(); 947 }); 948} 949 950function scart_payment_text() { 951 952 var payid = $("#porto_payment").val(); 953 954 $('[id^="paymenttxt"]').css("display", "none"); 955 $("#paymenttxt" + payid).css("display", "block"); 956 957} 958 959//-------------------------------------------------- 960//ASN Einklappbar machen 961//-------------------------------------------------- 962function ASNToggle(AnzahlOffen) { 963 var ASN = $(".FFSMenu"); 964 var AnzahlOffen = AnzahlOffen ? AnzahlOffen : 4; 965 if (!ASN) 966 return; 967 968 ASN.find("section").not(".angebote").each(function(i) { 969 var section = $(this); 970 var header = section.find("h1"); 971 var ul = section.find("ul"); 972 var asnToggle = $('<div class="ASN_Toggle" />'); 973 974 header.append(asnToggle); 975 976 // "AnzahlOffen" Sections und Sections mit aktiven Filtern geöffnet lassen 977 if (i < AnzahlOffen || section.find("a.active,li.active").length > 0) { 978 asnToggle.addClass("close"); 979 } else { 980 ul.hide(); 981 header.addClass("roundcorners"); 982 } 983 984 // Klick-Event 985 header.on('click', function() { 986 ul.slideToggle("fast"); 987 asnToggle.toggleClass("close"); 988 header.toggleClass("roundcorners"); 989 }); 990 }); 991} 992 993//-------------------------------------------------- 994//Allgemeine Shop-Funktionen 995//-------------------------------------------------- 996 997function wopen(link, wi, he) { 998 999 var width = wi; 1000 var height = he; 1001 var l = (screen.availWidth - width) / 2; 1002 var t = (screen.availHeight - height) / 2; 1003 1004 wincom = window.open(link, "oswin", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=" + wi + ",height=" + he + ",screenX=" + l + ",screenY=" + t + ",left=" + l + ",top=" + t); 1005 1006 if (wincom) { 1007 1008 wincom.focus(); 1009 } 1010} 1011 1012function wopen2(link, wi, he) { 1013 1014 var width = wi; 1015 var height = he; 1016 var l = (screen.availWidth - width) / 2; 1017 var t = (screen.availHeight - height) / 2; 1018 1019 wincom2 = window.open(link, "oswin", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=" + wi + ",height=" + he + ",screenX=" + l + ",screenY=" + t + ",left=" + l + ",top=" + t); 1020 1021 if (wincom2) { 1022 1023 wincom2.focus(); 1024 } 1025} 1026 1027function fielddel(f) { 1028 if (f.value == f.defaultValue) { 1029 1030 f.value = ""; 1031 } 1032} 1033 1034function fieldset(f) { 1035 1036 if (f.value == "") { 1037 1038 f.value = f.defaultValue; 1039 } 1040} 1041 1042function fieldemp(f) { 1043 1044 if (f.sbeg.value == f.sbeg.defaultValue) { 1045 1046 f.sbeg.value = ""; 1047 } 1048} 1049 1050//-------------------------------------------------- 1051//Shop-Dropdown-Navigation 1052//-------------------------------------------------- 1053function MainNavigationInit() { 1054 // Unterschiedliche Werte für IE6 1055 var delay = IE6 ? 0 : 500; 1056 var speed = IE6 ? 1 : 'normal'; 1057 1058 if ($(".MainNavigation ul").length == 0) 1059 return; 1060 1061 $(".MainNavigation ul").superfish({ 1062 delay : delay, 1063 speed : speed, 1064 autoArrows : false, 1065 onBeforeShow : function() { 1066 $(this).parent().addClass("hover"); 1067 }, 1068 onHide : function() { 1069 $(this).parent().removeClass("hover"); 1070 } 1071 }); 1072 1073 // Prüfen ob ein Menüpunkt untermenüpunkte hat, wenn ja, die Klasse submenu anhängen 1074 $(".MainNavigation ul li").each(function() { 1075 if ($(this).children("ul").length > 0) { 1076 $(this).addClass("submenu"); 1077 } 1078 }); 1079 1080 // z-index Bug mit select-Boxen im IE6 beheben 1081 if (IE6) { 1082 $(".MainNavigation ul").bgiframe(); 1083 } 1084} 1085 1086//-------------------------------------------------- 1087//Slideshow Startseite jQuery CarouFredSel 1088//-------------------------------------------------- 1089function MainPageSlideshow() { 1090} 1091 1092//-------------------------------------------------- 1093//Darstellung Rubrikenansichten 1094//-------------------------------------------------- 1095function RubViewNeu(rubView, numRows, align, margin, unit) { 1096 return; 1097 // Wird nun über Responsive gesteuert (responsive.css) 1098} 1099 1100//-------------------------------------------------- 1101//Auslagerung FFS aufgrund von JS Highlight der Vars 1102//--------------------------------------------------
1103function FactFinderInit(channel, moreText, moreArticle, moreCategory, shopLang, userId) { 1104 var formname = "search_word_inc"; 1105 var queryParamName = "query"; 1106 var channelParamName = "channel"; 1107 var channel = channel; 1108 var divLayername = "suggestLayer"; 1109 var instanceName = "suggest"; 1110 var debugMode = false; 1111 var pShowImages = true; 1112 var site = 'Demo'; 1113 var shopLang = shopLang; 1114 var userId = userId; 1115 var moreText = moreText; 1116 var moreArticle = moreArticle; 1117 var moreCategory = moreCategory; 1118 suggest.init(searchURL, formname, queryParamName, divLayername, instanceName, debugMode, channelParamName, channel, pShowImages, sid, uid, site, "", "", moreText, moreArticle, moreCategory, kundennummern, shopLang, shoplanguage, userId); 1119 document.onmousedown = suggest.hideLayerOutsideCall; 1120} 1121 1122//-------------------------------------------------- 1123//Zoomansicht 1124//-------------------------------------------------- 1125function zoomBox(closeText) { 1126 var closeText = closeText; 1127} 1128 1129function DetailZoomHover(preloadText) { 1130} 1131 1132//-------------------------------------------------- 1133// Zoomansicht 1134//-------------------------------------------------- 1135function zoomView() { 1136 //Links entfernen, wenn JavaScript aktiviert ist 1137 $('#DetailZoom .thumbs a').each(function() { 1138 var img = $(this).html(); 1139 $(this).remove(); 1140 $('#DetailZoom .thumbs').append(img); 1141 }); 1142 1143 //Bilder laden 1144 $("#DetailZoom .thumbs img").on('click', function() { 1145 // see if same thumb is being clicked 1146 if ($(this).hasClass("active")) { 1147 return; 1148 } 1149 1150 // calculate large image's URL based on the thumbnail URL 1151 var url = $(this).attr("rel"); 1152 1153 // get handle to element that wraps the image and make it semi-transparent 1154 var wrap = $("#DetailZoom .image img"); 1155 1156 // the large image 1157 var img = new Image(); 1158 1159 // call this function after it's loaded 1160 img.onload = function() { 1161 // change the image 1162 wrap.attr("src", url); 1163 }; 1164 1165 // begin loading the image 1166 img.src = url; 1167 1168 // activate item 1169 $("#DetailZoom .thumbs img").removeClass("active"); 1170 $(this).addClass("active"); 1171 }); 1172} 1173 1174//-------------------------------------------------- 1175//Live-Preise 1176//-------------------------------------------------- 1177function getPrice(url) { 1178 1179 var url = url; 1180 1181 $.ajax({ 1182 type : 'GET', 1183 url : url, 1184 success : function(response) { 1185 $('#DetailTableLoading').hide(); 1186 // $('#DetailTableShow').html(response); 1187 // ITB Fischer IE8-Fix 1188 $('#DetailTableShow')[0].innerHTML = response; 1189 //Funktionsaufruf, damit Plus-/Minusskript bei alter Livepreismethode greift 1190 reinit_scart_buttons(); 1191 1192 // ITB Schulera Fix für Responsive Ansicht bei Livepreisen 1193 // oh, oh, das sollte dringend überprüft werden! 1194 $("td:first-child").on("click", function() { 1195 var parent = $(this).parent("tr"); 1196 parent.toggleClass("active"); 1197 }); 1198 1199 //nachdem Preise geladen sind Tabellen Scrollbar Skript nochmals ausführen, 1200 //da sonst Tablewidth verfälscht wird und Scrollbarkeit nicht einwandfrei funktioniert 1201 repositionColumns(); 1202 1203 // SAV aktualisieren 1204 sav = $('#savartnr').length; 1205 if (sav) { 1206 savartnr = $('#savartnr').html(); 1207 1208 for ( i = 1; i <= 10; i++) { 1209 var startelement = $('#preis' + i + '-' + savartnr); 1210 $('#savpreis' + (i == 1 ? '' : i)).html(startelement.html()); 1211 } 1212 var startelement = $('#preis1-' + savartnr); 1213 $('#savmind').html(startelement.parents('tr').first().find('.mindestbestellmenge').html()); 1214 $('#savorderbox2 .lieferzeit').html(startelement.parents('tr').first().find('.lieferzeit').html()); 1215 // ggf. hier nochmal Hover-Javascript neu initialisieren. 1216 } 1217 }, 1218 error : function(xhr) { 1219 //alert('Error! Status = ' + xhr.status); 1220 } 1221 }); 1222} 1223 1224//-------------------------------------------------- 1225//Layout bei zu breiter Tabelle vergröÃern 1226//-------------------------------------------------- 1227function FixDetailTableWidth() { 1228 1229 var maxWidth = 1200; 1230 1231 var width = $('#DetailTable').width(); 1232 1233 if (width > maxWidth) { 1234 var missingWidth = width - maxWidth + 2; 1235 $(".SiteContainer").width($(".SiteContainer").width() + missingWidth); 1236 $(".ShopContent").width($(".ShopContent").width() + missingWidth); 1237 // $("#DetailInfo").width($("#DetailInfo").width() + missingWidth); 1238 // $("#DetailAttributes dd").width($("#DetailAttributes dd").width() + missingWidth); 1239 $("#languages").width($("#languages").width() + missingWidth); 1240 $("#Sitemap").width($("#Sitemap").width() + missingWidth); 1241 $("#FactFinder").width($("#FactFinder").width() + missingWidth); 1242 $("#FFquery").width($("#FFquery").width() + missingWidth); 1243 } 1244} 1245 1246function FixScartTableWidth() { 1247 var maxWidth = 715; 1248 var scartWidth; 1249 var ccWidth; 1250 1251 scartWidth(); 1252 ccWidth(); 1253 1254 // Warenkorb 1255 function scartWidth() { 1256 scartWidth = $("#ScartTable").width(); 1257 1258 if (scartWidth > maxWidth) { 1259 var missingScartWidth = scartWidth - maxWidth + 2; 1260 $('.SiteContainer').width($('.SiteContainer').width() + missingScartWidth); 1261 $('.ShopTableContainer').width($('.ShopTableContainer').width() + missingScartWidth); 1262 //$('.Info').width($('.Info').width() + missingScartWidth); 1263 } 1264 } 1265 1266 // Kostenstellen 1267 function ccWidth() { 1268 ccWidth = $("#CCTable").width(); 1269 if (ccWidth > maxWidth) { 1270 var missingCCWidth = ccWidth - maxWidth; 1271 $('.SiteContainer').width($('.SiteContainer').width() + missingCCWidth); 1272 $('.ShopTableContainer').width($('.ShopTableContainer').width() + missingCCWidth); 1273 //$('.Info').not(".ZweiSpalten .Info").width($('.Info').width() + missingCCWidth); 1274 } 1275 } 1276 1277} 1278 1279//-------------------------------------------------- 1280//Hinweisbox 1281//-------------------------------------------------- 1282function hinweisBox(textmsg) { 1283 if (textmsg) { 1284 $.fancybox({ 1285 content : '<div class="overlayWrap"><h3 class="overlayTitle">' + loadTranslation("Hinweis") + '</h3><p>' + textmsg + '</p></div>' 1286 }); 1287 } 1288} 1289 1290//-------------------------------------------------- 1291//Tastendruck 1292//-------------------------------------------------- 1293function Tastendruck(Ereignis) { 1294} 1295 1296//-------------------------------------------------- 1297//Zahlenpruefung 1298//-------------------------------------------------- 1299 1300function validate_num(formname, fieldname, format) { 1301 var field = document.forms[formname].elements[fieldname]; 1302 var myvalue = field.value; 1303 var reg = /,-{1,}|\.-{1,}/; 1304 var nantest_value = myvalue.replace(reg, ""); 1305 var num = nantest_value.match(/[^0-9,\.]/gi) 1306 sep = format.substr(1, 1) ? format.substr(1, 1) : '.'; 1307 if (field.value) { 1308 var myvalue = field.value.replace(/\,/, '.'); 1309 field.value = myvalue; 1310 if (num != null) { 1311 hinweisBox(loadTranslation("validate_num_error", "Dies ist keine richtige Zahl, bitte wiederholen Sie Ihre Eingabe")); 1312 this.value = ""; 1313 document.forms['os_scart_form'].elements['freeorder_ammount'].value = ""; 1314 } else if (myvalue.indexOf('.') == -1) { 1315 field.value = myvalue + sep + '000'; 1316 } else if (!myvalue.substring(myvalue.indexOf('.') + 2)) { 1317 field.value = field.value + "00"; 1318 } else if (!myvalue.substring(myvalue.indexOf('.') + 3)) { 1319 field.value = field.value + "0"; 1320 } else if (myvalue.substring(myvalue.indexOf('.') + 4) != '') { 1321 hinweisBox(loadTranslation("validate_num_error_wrongformat", "Bitte Eingabe ohne Tausender-Trennzeichen und nur drei Nachkommastellen")); 1322 field.value = ""; 1323 } 1324 if (format == "z." && field.value) { 1325 field.value = Math.floor(myvalue); 1326 } 1327 } 1328} 1329 1330//-------------------------------------------------- 1331//Tabellenslide 1332//-------------------------------------------------- 1333function CrossTableSlide(openText, closeText) { 1334 1335 return; 1336 1337} 1338 1339//-------------------------------------------------- 1340// Tabs umschalten 1341//-------------------------------------------------- 1342function tabs() { 1343 1344 // Alle Tabs ausblenden und den ersten Tab auswÃÆÃ¤hlen 1345 $("div.tabs .content").hide(); 1346 $("ul.menu li:first-child").addClass("active"); 1347 $("div#tab1").show(); 1348 1349 $("ul.menu li").on('click', function() { 1350 var id = $(this).children("a").attr("class"); 1351 1352 // Tabs abwählen und Inhalte ausblenden 1353 $("ul.menu li").removeClass("active"); 1354 $("div.tabs .content").hide(); 1355 1356 // Geklickten Tab aktivieren und Inhalt anzeigen 1357 $(this).addClass("active"); 1358 $("div#" + id).show(); 1359 }); 1360 1361} 1362 1363jQuery.fn.extend({ 1364 getUrlParam : function(strParamName) { 1365 strParamName = escape(unescape(strParamName)); 1366 1367 var returnVal = new Array(); 1368 var qString = null; 1369 1370 if ($(this).attr("nodeName") == "#document") { 1371 //document-handler 1372 1373 if (window.location.search.search(strParamName) > -1) { 1374
1375 qString = window.location.search.substr(1, window.location.search.length).split("&"); 1376 } 1377 1378 } else if ($(this).attr("src") != "undefined") { 1379 1380 var strHref = $(this).attr("src") 1381 if (strHref.indexOf("?") > -1) { 1382 var strQueryString = strHref.substr(strHref.indexOf("?") + 1); 1383 qString = strQueryString.split("&"); 1384 } 1385 } else if ($(this).attr("href") != "undefined") { 1386 1387 var strHref = $(this).attr("href") 1388 if (strHref.indexOf("?") > -1) { 1389 var strQueryString = strHref.substr(strHref.indexOf("?") + 1); 1390 qString = strQueryString.split("&"); 1391 } 1392 } else { 1393 return null; 1394 } 1395 1396 if (qString == null) 1397 return null; 1398 1399 for (var i = 0; i < qString.length; i++) { 1400 if (escape(unescape(qString[i].split("=")[0])) == strParamName) { 1401 returnVal.push(qString[i].split("=")[1]); 1402 } 1403 1404 } 1405 1406 if (returnVal.length == 0) 1407 return null; 1408 else if (returnVal.length == 1) 1409 return returnVal[0]; 1410 else 1411 return returnVal; 1412 } 1413}); 1414 1415/* * * * * * * * * * * * * * * * * * * * * * 1416 Ajax 1417 * * * * * * * * * * * * * * * * * * * * * * */ 1418 1419function popbox(title, message) { 1420 jQuery.fancybox.open({ 1421 width : 480, 1422 autoSize : false, 1423 autoHeight : true, 1424 content : '<div class="overlayWrap"><h3 class="overlayTitle">' + title + '</h3>' + message + '</div>' 1425 }); 1426} 1427 1428function add_to_etikettenliste_ajax(artnr, custartnr, pricestr, title) { 1429 var request = { 1430 'artnr' : artnr, 1431 'artnrcust' : custartnr, 1432 'price' : pricestr, 1433 'vartitle' : title 1434 }; 1435 1436 jQuery.post(syspathshop + '?func=ajax&action=add_to_etikettenliste', request).done(function(data) { 1437 if (data.result == "ok") { 1438 var popups = $(data.popup); 1439 add_to_scart_popup(popups); 1440 } else { 1441 alert(data.errormessage); 1442 location.reload(); 1443 } 1444 }).fail(function() { 1445 location.reload(); 1446 }); 1447} 1448 1449function add_to_scart_popup(popups) { 1450 var classname = "scart-popup-id-" + Date.now(); 1451 var default_dauer = 3000; 1452 var extended_dauer = 20000; 1453 //reinit_headshot(); 1454 popups.appendTo('#scart-popup-container').addClass(classname).fadeIn(); 1455 window.setTimeout(function() { 1456 //return; 1457 $('.good.' + classname).animate({ 1458 'opacity' : 0 1459 }, 1000, function() { 1460 $(this).animate({ 1461 'height' : 0, 1462 'margin' : 0, 1463 'padding' : 0 1464 }, 1000, function() { 1465 $(this).remove(); 1466 }); 1467 }); 1468 }, default_dauer); 1469 window.setTimeout(function() { 1470 //return; 1471 $('.bad.' + classname).animate({ 1472 'opacity' : 0 1473 }, 1000, function() { 1474 $(this).animate({ 1475 'height' : 0, 1476 'margin' : 0, 1477 'padding' : 0 1478 }, 1000, function() { 1479 $(this).remove(); 1480 }); 1481 }); 1482 }, extended_dauer); 1483} 1484 1485// Artikel im CMS - Funktionsbuttons 1486$(document).ready(function() { 1487 $('.artcmssubmit').on('click', ajax_add_to_cart); 1488}); 1489 1490var ajax_add_to_cart_blocked = 0; 1491 1492function ajax_add_to_cart(biohort = 0) { 1493 1494 1495 if (ajax_add_to_cart_blocked) 1496 return; 1497 ajax_add_to_cart_blocked = 1; 1498 1499 // Mengen und Artikelnummern sammeln 1500 var order = {}; 1501 var counter = 1; 1502 1503 // Artikeldetail 1504 if (!$(this).hasClass("artcmssubmit")) { 1505 $('#submitform .artNum').each(function() { 1506 var oartnr = $(this).find('a.nolink').attr('name'); 1507 var row = $(this).parents('tr').first(); 1508 var element = row.find('input.Input[name*="_' + oartnr + '_"]'); 1509 if (element.length == 0) { 1510 element = row.find('input.Input[name$="_' + oartnr + '"]'); 1511 } 1512 var artnr = element.attr('name'); 1513 var menge = element.val(); 1514 menge = menge.replace(/,/g, '.'); 1515 menge = menge.replace(/[.](?=.*[.])/g,''); 1516 element.val(0); 1517 if (menge > 0) { 1518 order['a' + counter] = artnr; 1519 order['m' + counter] = menge; 1520 counter++; 1521 } 1522 1523 }); 1524 } 1525 1526 1527 // Artikeldetail - Biohort Produktekonfigurator Artikel 1528 if (biohort) { 1529 $('#biohort-itemlist .biohort-item').each(function() { 1530 1531 var artnr = $(this).data('artnum'); 1532 var menge = $(this).data('qty'); 1533 1534 //menge = menge.replace(/,/g, '.'); 1535 //menge = menge.replace(/[.](?=.*[.])/g,''); 1536 1537 if (menge > 0) { 1538 order['a' + counter] = artnr; 1539 order['m' + counter] = menge; 1540 counter++; 1541 } 1542 }); 1543 } 1544 1545 1546 // Artikeldetail SAV-Order-Box 1547 if ($('#savorderbox2').length) { 1548 var oartnr = $('#sarvartnr').html(); 1549 var element = $('#savorderbox2 .amountcontainer .menge').first(); 1550 var artnr = element.attr('name'); 1551 var menge = element.val(); 1552 element.val(0); 1553 1554 if (menge > 0) { 1555 order['a' + counter] = artnr; 1556 order['m' + counter] = menge; 1557 counter++; 1558 } 1559 } 1560 1561 // Artikel im CMS 1562 if ($(this).hasClass('artcmssubmit')) { 1563 if ($(this).has("dom-addeventlistener") || (event && event.preventDefault)) { 1564 event.preventDefault(); 1565 event.stopPropagation(); 1566 } else { 1567 event = event || window.event; 1568 event.cancelBubble = true; 1569 on._preventDefault.call(event); 1570 } 1571 var artnr = $(this).parents('form').find('input[name="a1"]').val(); 1572 var menge = $(this).parents('form').find('input[name="m1"]').val(); 1573 if (menge > 0) { 1574 order['a' + counter] = 'artnr_001_' + artnr + '_0'; 1575 order['m' + counter] = menge; 1576 counter++; 1577 } 1578 $(this).parents('form').find('input[name="m1"]').val(1); 1579 } 1580 1581 // Favoritenliste 1582 if ($('#ScartTable input[id^="mengenfeld"]').length > 0) { 1583 $('#ScartTable input[id^="mengenfeld"]').each(function() { 1584 if (($(this).val()) && (parseInt($(this).val()) != 0)) { 1585 var menge = parseInt($(this).val()); 1586 $(this).val(''); 1587 var index = $(this).attr('name').substr(1); 1588 artnr = $('input[name=a' + index + ']').val(); 1589 order['a' + counter] = 'artnr_001_' + artnr + '_0'; 1590 order['m' + counter] = menge; 1591 counter++; 1592 } 1593 }); 1594 } 1595 1596 // Bestellliste 1597 if ($('#bestelllistenform #OlistTable input[name^="artnr"]').length > 0) { 1598 $('#bestelllistenform #OlistTable input[name^="artnr"]').each(function() { 1599 if (($(this).val()) && (parseInt($(this).val()) != 0)) { 1600 var menge = parseInt($(this).val()); 1601 $(this).val(''); 1602 var artnr = $(this).attr('name'); 1603 order['a' + counter] = artnr; 1604 order['m' + counter] = menge; 1605 counter++; 1606 } 1607 }); 1608 } 1609 1610 if (counter == 1) { 1611 popbox(lang_error, lang_noarticlesselected); 1612 ajax_add_to_cart_blocked = 0; 1613 return false;
1614 } 1615 1616 order['base_url'] = window.location.href; 1617 jQuery.post(syspathshop + '?func=ajax&action=addtocart', order).done(function(data) { 1618 if (data.result == "ok") { 1619 1620 var popups = $(data.popup); 1621 if (data.scartsize) { 1622 $('.scartcounternumber').html(data.scartsize); 1623 } 1624 if (data.headshot) { 1625 $('.ScartItemDetails').replaceWith(data.headshot); 1626 } 1627 add_to_scart_popup(popups); 1628 1629 1630 } else { 1631 alert(data.errormessage); 1632 } 1633 }).fail(function() { 1634 alert("Fehler beim Hinzufügen zum Warenkorb."); 1635 }).always(function() { 1636 ajax_add_to_cart_blocked = 0; 1637 }); 1638} 1639 1640var delete_array = Array(); 1641var delete_delay_timer; 1642 1643function delete_from_scart_ajax(id, biohortItem=false) { 1644 1645 1646 if (biohortItem) { 1647 1648 var question = loadTranslation("Biohort_scart_clear_dialog", "Dieser Artikel ist Teil einer Produktekonfiguration. Es werden daher alle Artikel dieser Konfiguration gelöscht. Möchten Sie fortfahren?") 1649 var ok = loadTranslation("Ok", "Bestätigen") 1650 var cancel = loadTranslation("Cancel", "Abbrechen") 1651 1652 var textmsg = `<p>${question}</p>`; 1653 var btn = `<p class="fancy-buttons"><a class='button fancy-button' href='javascript:deleteAllBiohortItems("${id}");jQuery.fancybox.close();'>${ok}</a> 1654 <a class='button fancy-button' href='javascript:jQuery.fancybox.close();'>${cancel}</a></p>`; 1655 1656 $.fancybox({ 1657 content : '<div class="overlayWrap"><h3 class="overlayTitle">' + loadTranslation("Hinweis") + '</h3>' + textmsg + btn +'</div>', 1658 closeBtn: false, 1659 1660 }); 1661 1662 } else { 1663 1664 var parent = $('a[onclick^="delete_from_scart_ajax(\'' + id + '\')"]').parents('tr'); 1665 if($(parent).hasClass("setContainer")){ 1666 let setID = $(parent).attr('id').replace(/\D/g,''); 1667 $('#ScartTable .Article.set'+setID).remove(); 1668 } 1669 parent.remove(); 1670 1671 var counter = $('.scartcounternumber').first().html(); 1672 counter--; 1673 $('.scartcounternumber').html(counter); 1674 delete_array.push(id); 1675 1676 grey_out_total_sum_scart(); 1677 window.clearTimeout(delete_delay_timer); 1678 delete_delay_timer = window.setTimeout(fire_ajax_delete, 2500); 1679 1680 } 1681} 1682 1683function deleteAllBiohortItems(id) { 1684 1685 var parent = $('a[onclick^="delete_from_scart_ajax(\'' + id + '\',\'true\')"]').parents('tr'); 1686 var biohortID = parent.data('biohort'); 1687 1688 $('.ShopTable tr[data-biohort=\''+ biohortID + '\']').each(function() { 1689 var counter = $('.scartcounternumber').first().html(); 1690 counter--; 1691 $('.scartcounternumber').html(counter); 1692 var deleteID = $(this).attr('id').replace(/\D/g,''); 1693 delete_array.push(deleteID); 1694 }); 1695 1696 $('.ShopTable tr[data-biohort=\''+ biohortID + '\']').remove() 1697 1698 grey_out_total_sum_scart(); 1699 window.clearTimeout(delete_delay_timer); 1700 delete_delay_timer = window.setTimeout(fire_ajax_delete, 2500); 1701 1702} 1703 1704function grey_out_total_sum_scart() { 1705 $('#scartsummator').css({ 1706 opacity : .25 1707 }); 1708} 1709 1710function fire_ajax_delete() { 1711 var request = {}; 1712 var counter = 1; 1713 1714 delete_array.forEach(function(id) { 1715 request['id' + counter] = id; 1716 counter++; 1717 }); 1718 request['max'] = counter - 1; 1719 delete_array = Array(); 1720 1721 console.log(request) 1722 1723 jQuery.post(syspathshop + '?func=ajax&action=deletefromcart', request).done(function(data) { 1724 console.log(data.result) 1725 if (data.result == "ok") { 1726 if (data.headshot) { 1727 $('.ScartItemDetails').replaceWith(data.headshot); 1728 1729 } 1730 if (data.summator) { 1731 $('#scartsummator').replaceWith(data.summator); 1732 } 1733 if (data.cctable) { 1734 $('#CCTable').replaceWith(data.cctable); 1735 } 1736 if (data.gift) { 1737 $('#bonusprogramm').replaceWith(data.gift); 1738 } 1739 if (data.freigabe == '1') { 1740 $('button[name="order"]').text(lbl_permit).fadeIn(); 1741 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 1742 formaction = formaction.replace('versand', 'permit'), $('button[name="order"]').parents('form').first().attr('action', formaction); 1743 } else { 1744 if (data.too_few == '1') { 1745 $('button[name="order"]').fadeOut(); 1746 } else { 1747 $('button[name="order"]').text(lbl_order).fadeIn(); 1748 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 1749 formaction = formaction.replace('permit', 'versand'); 1750 $('button[name="order"]').parents('form').first().attr('action', formaction); 1751 } 1752 } 1753 } else { 1754 alert(data.errormessage); 1755 location.reload(); 1756 } 1757 }).fail(function() { 1758 location.reload(); 1759 }); 1760} 1761 1762var auto_refresh_scart; 1763 1764function amount_changed(obj, event) { 1765 1766 var jObj = $(obj); 1767 1768 var biohortconfigid = jObj.parents('tr').data('biohort'); 1769 var elementId = jObj.attr('id').substring(4); 1770 console.log(elementId); 1771 var comment = jObj.val(); 1772 1773 copyBiohortComments(biohortconfigid, dbid, comment, 'copydisplay'); 1774 1775 1776 1777 // Absenden des Warenkorbs verhindern 1778 if( $("#scartInfoUpdate").length == 0 ) { 1779 $("button[name=order]").prop("disabled",true).css({"opacity": 0.5, "cursor": "progress"}); 1780 $('<p id="scartInfoUpdate" style="color: #999; line-height: 44px; float: right; margin: 1.125em 1em 0 0">Ihr Warenkorb wird aktualisiert…</p>').insertAfter("button[name=order]"); 1781 } 1782 1783 var timeout = 1500; 1784 var timeoutRotate = 20000; 1785 if (event) { 1786 if ((event.keyCode >= 37) && (event.keyCode <= 40)) { 1787 return; 1788 } 1789 } 1790 1791 if (jObj.attr('id').substr(0, 4) == 'TEXT') { 1792 timeout = 5000; 1793 // bei Texteingaben geduldiger warten 1794 } 1795 if (jObj.attr('id').substr(0, 2) == 'IN') { 1796 timeout = 5000; 1797 // bei Kostenstellentiteln geduldiger warten 1798 } 1799 1800 var dbid = jObj.parents('tr').find('input[id^="AM"]').first().attr('name'); 1801 $('#delete_link' + dbid).hide(); 1802 $('#update_link' + dbid).show(); 1803 var menge =$('#AM' + dbid).val() 1804 menge = menge.replace(/,/g,'.'); 1805 menge = parseFloat(menge); 1806 1807 1808 var bemerkung = jQuery('#TEXT' + dbid).val(); 1809 var kostenstelle = jQuery('#CC' + dbid).val(); 1810 var textcctitle = jQuery('#IN' + dbid).val(); 1811 var min = parseFloat(jQuery('#AM' + dbid).attr('min')) || 1; 1812 var steps = parseFloat(jQuery('#AM' + dbid).attr('steps')) || 1; 1813 1814 1815 alter_amount_ajax(dbid, menge, bemerkung, kostenstelle, textcctitle, min); 1816 1817 1818 1819 var elem = $('#update_link' + dbid + ' i').first(); 1820 $({ 1821 deg : 0 1822 }).animate({ 1823 deg : 7200 1824 }, {
1825 duration : timeoutRotate, 1826 easing : 'linear', 1827 step : function(now) { 1828 elem.css({ 1829 transform : 'rotate(' + now + 'deg)', 1830 display : 'inline-block', 1831 }); 1832 }, 1833 complete : function() { 1834 elem.hide(); 1835 } 1836 }); 1837 1838 window.clearTimeout(auto_refresh_scart); 1839 auto_refresh_scart = window.setTimeout(fire_ajax_alter_amount, timeout); 1840} 1841 1842var alter_array = Array(); 1843 1844function alter_coupon(remove) { 1845 if (remove) { 1846 alter_array['delete_coupon'] = true; 1847 fire_ajax_alter_amount(); 1848 } else { 1849 1850 alter_array['coupon'] = $('#couponcode').val(); 1851 1852 $('#sendcoupon').fadeIn(); 1853 var elem = jQuery('#sendcoupon i').first(); 1854 $({ 1855 deg : 360 1856 }).animate({ 1857 deg : 0 1858 }, { 1859 duration : 5000, 1860 step : function(now) { 1861 elem.css({ 1862 transform : 'rotate(' + now + 'deg)', 1863 display : 'inline-block' 1864 }); 1865 } 1866 }); 1867 1868 window.clearTimeout(auto_refresh_scart); 1869 auto_refresh_scart = window.setTimeout(fire_ajax_alter_amount, 5000); 1870 } 1871} 1872 1873function alter_ccall() { 1874 var kostenstelle = $('#CCALL :selected').val(); 1875 if (kostenstelle == "remove") { 1876 $('#os_scart_form select[name^="CC"]').each(function(index, element) { 1877 if ($(this).attr('id') == 'CCALL') 1878 return; 1879 $(this).val('').trigger('change'); 1880 }); 1881 } else if (kostenstelle) { 1882 $('#os_scart_form select[name^="CC"]').each(function(index, element) { 1883 if ($(this).attr('id') == 'CCALL') 1884 return; 1885 var kostenstelle_element = $(this).find(':selected').val(); 1886 if (kostenstelle_element == '') { 1887 $(this).val(kostenstelle).trigger('change'); 1888 } 1889 }); 1890 } 1891} 1892 1893function alter_amount_ajax(dbid, menge, bemerkung, kostenstelle, textcctitle, min) { 1894 1895 1896 var values = {}; 1897 values['menge'] = menge; 1898 values['min'] = min || 1; 1899 if ( typeof bemerkung != 'undefined') { 1900 values['bemerkung'] = bemerkung; 1901 } 1902 if ( typeof kostenstelle != 'undefined') { 1903 values['kostenstelle'] = kostenstelle; 1904 } 1905 if ( typeof textcctitle != 'undefined') { 1906 values['textcctitle'] = textcctitle; 1907 } 1908 alter_array[dbid] = values; 1909 1910 1911 1912 var biohortconfigid = $('input#TEXT'+dbid).parents('tr').data('biohort') 1913 if (biohortconfigid) { 1914 copyBiohortComments(biohortconfigid, dbid, bemerkung, 'save2session'); 1915 } 1916 1917} 1918 1919function fire_ajax_alter_amount() { 1920 1921 1922 window.clearTimeout(auto_refresh_scart); 1923 var counter = 1; 1924 var request = {}; 1925 console.log(alter_array) 1926 for (var element_id in alter_array) { 1927 if (element_id == "coupon") { 1928 request['coupon'] = alter_array['coupon']; 1929 } else if (element_id == "delete_coupon") { 1930 request['delete_coupon'] = 'true'; 1931 } else { 1932 if (alter_array[element_id].menge == 0) { 1933 delete_from_scart_ajax(element_id); 1934 } else { 1935 var amount = alter_array[element_id]; 1936 request['a' + counter] = element_id; 1937 if (alter_array[element_id].menge < alter_array[element_id].min) { 1938 alter_array[element_id].menge = alter_array[element_id].min; 1939 $('#AM' + element_id).val(alter_array[element_id].menge); 1940 1941 } 1942 1943 if ((alter_array[element_id].menge > alter_array[element_id].min) && (alter_array[element_id].menge % alter_array[element_id].min !== 0)) { 1944 1945 var next_value = Math.floor(alter_array[element_id].menge / alter_array[element_id].min) 1946 next_value = (next_value + 1) * alter_array[element_id].min; 1947 alter_array[element_id].menge = next_value; 1948 jQuery('#AM' + element_id).val(alter_array[element_id].menge); 1949 1950 } 1951 1952 1953 1954 request['m' + counter] = alter_array[element_id].menge; 1955 1956 if ( typeof alter_array[element_id].kostenstelle != 'undefined') { 1957 request['k' + counter] = alter_array[element_id].kostenstelle; 1958 } 1959 if ( typeof alter_array[element_id].bemerkung != 'undefined') { 1960 request['b' + counter] = alter_array[element_id].bemerkung; 1961 } 1962 if ( typeof alter_array[element_id].textcctitle != 'undefined') { 1963 request['ct' + counter] = alter_array[element_id].textcctitle; 1964 } 1965 1966 $('#ep' + element_id).parent().width($('#ep' + element_id).parent().width());
1967 $('#gp' + element_id).parent().width($('#gp' + element_id).parent().width()); 1968 $('#ep' + element_id).fadeOut(); 1969 $('#gp' + element_id).fadeOut(); 1970 counter++; 1971 } 1972 } 1973 }; 1974 request['max'] = (counter - 1); 1975 grey_out_total_sum_scart(); 1976 1977 jQuery.post(syspathshop + '?func=ajax&action=change_amount', request).done(function(data) { 1978 $('#update_link' + element_id).parent().width($('#update_link' + element_id).parent().width()); 1979 $('span[id^="update_link"]').hide(); 1980 1981 if (data.result == "ok") { 1982 console.log(data) 1983 console.log(request) 1984 1985 1986 1987 if (data.preise) { 1988 for (var i = 0; i < data.preise.length; i++) { 1989 var dbid = data.preise[i].dbid; 1990 1991 if (typeof data.preise[i].menge != "undefined" ) { 1992 $('#AM' + dbid).val(data.preise[i].menge); 1993 } 1994 $('#ep' + dbid).html(data.preise[i].einzelpreis).fadeIn(); 1995 $('#gp' + dbid).html(data.preise[i].gesamtpreis).fadeIn(); 1996 $('#ep' + dbid).parent().removeAttr("style"); 1997 $('#gp' + dbid).parent().removeAttr("style"); 1998 $('#delete_link' + dbid).fadeIn(); 1999 $('#delete_link' + dbid).parent().removeAttr("style"); 2000 } 2001 } 2002 if (data.summator) { 2003 $('#scartsummator').replaceWith(data.summator); 2004 } 2005 2006 if (data.headshot) { 2007 $('.ScartItemDetails').replaceWith(data.headshot); 2008 } 2009 2010 if (data.popup) { 2011 var popups = $(data.popup); 2012 add_to_scart_popup(popups); 2013 } 2014 2015 if (data.cctable) { 2016 $('#CCTable').replaceWith(data.cctable); 2017 } 2018 if (data.gift) { 2019 $('#bonusprogramm').replaceWith(data.gift); 2020 } 2021 if (data.freigabe == '1') { 2022 $('button[name="order"]').text(lbl_permit).fadeIn(); 2023 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 2024 formaction = formaction.replace('versand', 'permit'), $('button[name="order"]').parents('form').first().attr('action', formaction); 2025 } else { 2026 if (data.too_few == '1') { 2027 $('button[name="order"]').fadeOut(); 2028 } else { 2029 $('button[name="order"]').text(lbl_order).fadeIn(); 2030 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 2031 formaction = formaction.replace('permit', 'versand'); 2032 $('button[name="order"]').parents('form').first().attr('action', formaction); 2033 } 2034 } 2035 2036 2037 2038 2039 // Absenden des Warenkorbs wieder erlauben 2040 $("button[name=order]").prop("disabled",false).css({"opacity": 1, "cursor": "pointer"}); 2041 $("#scartInfoUpdate").remove(); 2042 2043 2044 //todo-biohort 2045 $("#ScartTable.ShopTable tr.biohort-item").each(function(){ 2046 $(this).find('.comment').data('value', $(this).find('.comment').val()) 2047 }) 2048 2049 2050 2051 } else { 2052 alert(data.errormessage); 2053 location.reload(); 2054 } 2055 }).fail(function() { 2056 alert(loadTranslation("WK_fehlermengenaenderung", "Fehler beim Ãndern der Menge im Warenkorb Warenkorb.")); 2057 location.reload(); 2058 }); 2059 2060 alter_array = Array(); 2061} 2062 2063function submit_direct_order() { 2064 var artnr = $("#directorder").val(); 2065 var menge = $("#MengeWert").val(); 2066 menge = menge.replace(/,/g, '.'); 2067 menge = menge.replace(/[.](?=.*[.])/g,''); 2068 menge = parseFloat(menge); 2069 var rub = $("#Rub").val(); 2070 2071 if (!artnr) { 2072 popbox(direct_order_error1, direct_order_error2); 2073 return false; 2074 } 2075 2076 var input = '<input class="Input" type="hidden" size="3" maxlength="5" name="artnr_001_' + artnr + '_0" value="' + menge + '"/>'; 2077 $('#Show_form').html(input); 2078 if ((!menge) || (menge == 0)) { 2079 popbox(direct_order_error3, direct_order_error4); 2080 return false;
2081 } 2082 2083 if (menge > 0) { 2084 send_directorder_ajax(artnr, menge); 2085 } 2086} 2087 2088function send_directorder_ajax(artnr, menge) { 2089 var article = { 2090 artnr : 'artnr_001_' + artnr + '_0', 2091 menge : menge 2092 }; 2093 2094 $('#MengeWert').hide(); 2095 $("#ShowWaitMenge").show(); 2096 document.getElementById("MengeWert").disabled = true; 2097 document.getElementById("DirectOrderButton").disabled = true; 2098 jQuery.post(syspathshop + '?func=ajax&action=directorder', article).done(function(data) { 2099 $("#ShowWaitMenge").hide(); 2100 $('#MengeWert').show(); 2101 document.getElementById("MengeWert").disabled = false; 2102 document.getElementById("DirectOrderButton").disabled = false; 2103 if (data.result == "ok") { 2104 var popups = $(data.popup); 2105 if (data.cart) { 2106 $('#ScartTable').replaceWith(data.cart); 2107 } 2108 if (data.headshot) { 2109 $('.ScartItemDetails').replaceWith(data.headshot); 2110 } 2111 if (data.scartsize) { 2112 $('.scartcounternumber').html(data.scartsize); 2113 } 2114 if (data.gift) { 2115 $('#bonusprogramm').replaceWith(data.gift); 2116 } 2117 if (data.mindbestDirectOrder) { 2118 $('#MengeWert').val(data.mindbestDirectOrder); 2119 } 2120 if (data.freigabe == '1') { 2121 $('button[name="order"]').text(lbl_permit).fadeIn(); 2122 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 2123 formaction = formaction.replace('versand', 'permit'), $('button[name="order"]').parents('form').first().attr('action', formaction); 2124 } else { 2125 if (data.too_few == '1') { 2126 $('button[name="order"]').fadeOut(); 2127 } else { 2128 $('button[name="order"]').text(lbl_order).fadeIn(); 2129 var formaction = $('button[name="order"]').parents('form').first().attr('action'); 2130 formaction = formaction.replace('permit', 'versand'); 2131 $('button[name="order"]').parents('form').first().attr('action', formaction); 2132 } 2133 } 2134 2135 var minbestDirect = data.mindbestDirectOrder; 2136 2137 if (minbestDirect > menge) { 2138 2139 } 2140 2141 add_to_scart_popup(popups); 2142 reinit_scart_buttons(); 2143 $('#FFqueryDO').val('').focus(); 2144 $('#MengeWert').val(''); 2145 $('#suggestLayer_directorder').hide(); 2146 $('#directorder').hide(); 2147 } else { 2148 alert(data.errormessage); 2149 } 2150 2151 arrangeBiohortDeliveries(); 2152 2153 2154 2155 }).fail(function() { 2156 alert(loadTranslation("WK_DOFEHLER", "Fehler beim Hinzufügen zum Warenkorb aus der Schnellbestellung.")); 2157 }).always(function() { 2158 // ajax_add_to_cart_blocked = 0; 2159 }); 2160 2161} 2162 2163function add_to_favourites_ajax(artnr, artnrcust) { 2164 var request = { 2165 artnr : artnr, 2166 artnrcust : artnrcust 2167 }; 2168 jQuery.post(syspathshop + '?func=ajax&action=add_to_favourites', request).done(function(data) { 2169 if (data.result == "ok") { 2170 var popups = $(data.popup); 2171 add_to_scart_popup(popups); 2172 $('#addtofavo' + artnr + ' i').delay(300).addClass('isFavo'); 2173 } else { 2174 alert(data.errormessage); 2175 } 2176 }).fail(function() { 2177 alert(loadTranslation("DET_FAVFEHLER", "Fehler beim Hinzufügen zu den Favoriten.")); 2178 }).always(function() { 2179 $('#addtofavo' + artnr + ' i').fadeIn(); 2180 }); 2181} 2182 2183 2184function add_to_fastpage_ajax(artnr, artnrcust, whole) { 2185 var request = { 2186 artnr : artnr, 2187 artnrcust : artnrcust, 2188 whole: whole 2189 }; 2190 jQuery.post(syspathshop + '?func=ajax&action=add_to_fastpage', request).done(function(data) { 2191 if (data.result == "ok") { 2192 var popups = $(data.popup); 2193 add_to_scart_popup(popups); 2194 $('#addtofavo' + artnr + ' i').delay(300).addClass('isFavo'); 2195 } else { 2196 alert(data.errormessage); 2197 } 2198 }).fail(function() { 2199 alert(loadTranslation("DET_FAVFEHLER", "Fehler beim Hinzufügen zu Fastpage.")); 2200 }).always(function() { 2201 $('#addtofavo' + artnr + ' i').fadeIn(); 2202 }); 2203} 2204 2205 2206function dynamically_load_prices() { 2207 var sbug = false;
2208 if ($(document).getUrlParam("sbug") == '47475_sh') { 2209 sbug = true; 2210 } 2211 var sinfo = $(document).getUrlParam("sinfo"); 2212 2213 if (WarenwirtschaftModus == 'ajax-all') { 2214 2215 // Alle Artikel gleichzeitig in einem Request anfragen. 2216 2217 var request = {}; 2218 var counter = 0; 2219 var artnr; 2220 var savbox = 0; 2221 2222 /*$('#submitform tbody tr').each(function(index, element) { 2223 var artnr = $(this).find('.artikelnummer').first().val(); 2224 counter++; 2225 request['a' + counter] = artnr; 2226 });*/ 2227 2228 2229 $('#submitform tbody tr, #savorderbox2').each(function(index, element) { 2230 2231 // FIX: Livepreise wenn ein Artikel 2232 if ($(this).prop('id') == 'savorderbox2') { 2233 artnr = $('#savartnr').html(); 2234 savbox = 1; 2235 } else { 2236 artnr = $(this).find('.artikelnummer').first().val(); 2237 } 2238 2239 2240 counter++; 2241 request['a'+counter] = artnr; 2242 }); 2243 2244 2245 2246 request['max'] = counter; 2247 2248 var query = window.location.search.substring(1); 2249 2250 var vars = query.split("&"); 2251 for (var i = 0; i < vars.length; i++) { 2252 var pair = vars[i].split("="); 2253 if ((pair[0] == 'livepreisdemo') && (pair[1] == '1')) { 2254 request['livepreisdemo'] = 1; 2255 } 2256 } 2257 2258 //Livepreis für Zubehör Artikel 2259 $('.DetailCross tr').each(function(index, element) { 2260 var artnrCross = $(this).find('.artikelnummerCross').first().val(); 2261 2262 var request = { 2263 'a1' : artnrCross, 2264 'max' : 1 2265 }; 2266 2267 2268 2269 ajax_get_prices_detail(request); 2270 2271 }); 2272 2273 } else {// WarenwirtschaftModus == "ajax-single" 2274 2275 // jede Zeile der Detailtabelle durchgehen und für jeden Artikel 2276 // eine Ajax-Anfrage starten 2277 2278 $('#submitform tr').each(function(index, element) { 2279 var artnr = $(this).find('.artikelnummer').first().val(); 2280 2281 var request = { 2282 'a1' : artnr, 2283 'max' : 1 2284 }; 2285 2286 if ($(this).parents().hasClass("DTFC_Cloned") || !artnr) { 2287 return; 2288 } 2289 var query = window.location.search.substring(1); 2290 2291 var vars = query.split("&"); 2292 for (var i = 0; i < vars.length; i++) { 2293 var pair = vars[i].split("="); 2294 if ((pair[0] == 'livepreisdemo') && (pair[1] == '1')) { 2295 request['livepreisdemo'] = 0; 2296 } 2297 } 2298 2299 ajax_get_prices_detail(request); 2300 }); 2301 2302 //Livepreis für Zubehör Artikel 2303 $('.DetailCross tr').each(function(index, element) { 2304 var artnrCross = $(this).find('.artikelnummerCross').first().val(); 2305 2306 var request = { 2307 'a1' : artnrCross, 2308 'max' : 1 2309 }; 2310 2311 ajax_get_prices_detail(request); 2312 2313 }); 2314 2315 } 2316} 2317 2318function ajax_get_prices_detail(request) { 2319 2320 var urlparam = '?func=ajax&action=get_price'; 2321 var sbug = false;
2322 var debug = 'off'; 2323 if ($(document).getUrlParam("sbug") == '47475_sh') { 2324 sbug = true; 2325 } 2326 var sinfo = $(document).getUrlParam("sinfo"); 2327 if (sbug == true && sinfo == 'request') { 2328 urlparam = urlparam + '&debug=request'; 2329 debug = 'request'; 2330 } else if (sbug == true && sinfo == 'response') { 2331 urlparam = urlparam + '&debug=response'; 2332 debug = 'response'; 2333 } else if (sbug == true) { 2334 urlparam = urlparam + '&debug=all'; 2335 debug = 'all'; 2336 } 2337 jQuery.ajax({ 2338 type : 'POST', 2339 url : syspathshop + urlparam, 2340 data : request, 2341 timeout : 300000 2342 }).done(function(data) { 2343 if (data.result == "ok") { 2344 //console.log(data); 2345 2346 if (debug == 'request' || debug == 'all') { 2347 console.log('%c ERP-Request: ', 'background:black;color:#fff') 2348 console.dir(data.xmlrequest); 2349 } 2350 if (debug == 'response' || debug == 'all') { 2351 console.log('%c ERP-Response: ', 'background:black;color:#fff') 2352 console.dirxml(data.xmlresponse); 2353 } 2354 for (var i = 1; i <= request.max; i++) { 2355 if ( typeof data.prices[request['a' + i]] == 'undefined') { 2356 data.prices[request['a' + i]] = Array(99).fill(null); 2357 } 2358 } 2359 for (var artnr in data.prices) { 2360 sav = $('#savartnr').length; 2361 if (sav) { 2362 savartnr = $('#savartnr').html(); 2363 } 2364 for (var i = 1; i <= 10; i++) { 2365 if (data.prices[artnr][i - 1] == null) { 2366 // DB-Fallbacks aus den hidden fields übernehmen 2367 if (sav && (savartnr == artnr)) { 2368 if (i == 1) { 2369 $('#savpreis').html($('#dbpreis' + i + '-' + artnr).html()); 2370 } else { 2371 $('#savpreis' + i).html($('#dbpreis' + i + '-' + artnr).html()); 2372 } 2373 } 2374 2375 $('tr').each(function() { 2376 2377 $(this).find('#preis' + i + '-' + artnr.replace(/\./gi, "")).html($('#dbpreis' + i + '-' + artnr.replace(/\./gi, "")).html()); 2378 2379 }); 2380 2381 //Comparelink Preisanpassung Livepreise 2382 2383 $('a#preisCompare').each(function() { 2384 2385 if (data.prices[artnr][0]) { 2386 2387 var newLink = '&price=' + data.prices[artnr][0].toString().replace(/\./, ","); 2388 2389 if ($(this).attr("href")) { 2390 2391 $(this).attr("href", $(this).attr("href").replace(/&price=([^&]*)/, newLink)); 2392 2393 } 2394 2395 } 2396 2397 }); 2398 2399 //$('#preis'+i+'-'+artnr).html($('#dbpreis'+i+'-'+artnr).html()); 2400 2401 //Comparelink Preisanpassung Livepreise 2402 2403 $('a#preisCompare-'+artnr).each(function() { 2404 2405 if (data.prices[artnr][0]) { 2406 2407 var newLink = '&price=' + data.prices[artnr][0].toString().replace(/\./, ","); 2408 2409 if ($(this).attr("href")) { 2410 2411 $(this).attr("href", $(this).attr("href").replace(/&price=([^&]*)/, newLink)); 2412 2413 } 2414 2415 } 2416 2417 }); 2418 2419 2420 2421 } else { 2422 if (sav && (savartnr == artnr)) { 2423 if (i == 1) { 2424 $('#savpreis').html(data.prices[artnr][i - 1]); 2425 } else { 2426 $('#savpreis' + i).html(data.prices[artnr][i - 1]); 2427 } 2428 } 2429 $('tr').each(function() { 2430 2431 $(this).find('#preis' + i + '-' + artnr.replace(/\./gi, "")).html(Trenner(data.prices[artnr][i - 1].toFixed(2))); 2432 }); 2433 //$('#preis'+i+'-'+artnr).html(data.prices[artnr][i-1]); 2434 } 2435 } 2436 2437 $('tr').each(function() { 2438 2439 //var theelement = $('#preis1-'+artnr).parents('tr').find('.lieferzeit-symbol').first(); 2440 var theelement; 2441 var hasPrice = $(this).find('#preis1-' + artnr).length; 2442 2443 if (hasPrice == 0) { 2444 var theelement = $(this).find('#artnr-' + artnr.replace(/\./gi, "")).parents('tr').find('.lieferzeit-symbol').first(); 2445 } else { 2446 var theelement = $(this).find('#preis1-' + artnr.replace(/\./gi, "")).parents('tr').find('.lieferzeit-symbol').first(); 2447 } 2448 2449 var inhalt = theelement.attr('src'); 2450 var inhalt2 = theelement.attr('title'); 2451 2452 2453 2454 if ((artnr != "undefined") && (theelement.length)) { 2455 2456 if (data.prices[artnr][10] == null) { 2457 // var dbinhalt = $('#preis1-'+artnr).find('.dblieferzeit-symbol').first().html(); 2458 var dbinhalt = theelement.parent().find('.dblieferzeit-symbol').html(); 2459 2460 inhalt = inhalt.replace(/\.\.\/layout\/wait\.gif/, dbinhalt); 2461 } else { 2462 2463 inhalt = inhalt.replace(/\.\.\/layout\/wait\.gif/, data.prices[artnr][10]); 2464 2465 var lieferzeit_title = "LIEFERZEIT_ALT"+data.prices[artnr][10];
2466 2467 inhalt2 = loadTranslation(lieferzeit_title); 2468 2469 2470 } 2471 2472 theelement.attr('src', inhalt); 2473 theelement.attr('title', inhalt2); 2474 theelement.removeClass('wait'); 2475 delete theelement; 2476 if (sav && (savartnr == artnr)) { 2477 $('#savlagerrow img').first().attr('src', inhalt); 2478 } 2479 if (data.prices[artnr][11] == null) { 2480 if (sav && (savartnr == artnr)) { 2481 if (hasPrice) { 2482 $('#savmind').html($('#preis1-' + artnr.replace(/\./gi, "")).parents('tr').find('.dbmindestbestellmenge').first().html()); 2483 } else { 2484 $('#savmind').html($('#artnr-' + artnr.replace(/\./gi, "")).parents('tr').find('.dbmindestbestellmenge').first().html()); 2485 } 2486 } 2487 2488 $('tr').each(function() { 2489 if (hasPrice) { 2490 $(this).find('#preis1-' + artnr.replace(/\./gi, "")).parents('tr').find('.mindestbestellmenge').first().html($('#preis1-' + artnr.replace(/\./gi, "")).parents('tr').find('.dbmindestbestellmenge').first().html()); 2491 } else { 2492 $(this).find('#artnr-' + artnr.replace(/\./gi, "")).parents('tr').find('.mindestbestellmenge').first().html($('#artnr-' + artnr.replace(/\./gi, "")).parents('tr').find('.dbmindestbestellmenge').first().html()); 2493 } 2494 }); 2495 // $('#preis1-'+artnr).parents('tr').find('.mindestbestellmenge').first().html($('#preis1-'+artnr).parents('tr').find('.dbmindestbestellmenge').first().html()); 2496 } else { 2497 if (sav && (savartnr == artnr)) { 2498 $('#savmind').html(data.prices[artnr][11]); 2499 } 2500 $('tr').each(function() { 2501 if (hasPrice) { 2502 $(this).find('#preis1-' + artnr.replace(/\./gi, "")).parents('tr').find('.mindestbestellmenge').first().html(data.prices[artnr][11]); 2503 } else { 2504 $(this).find('#artnr-' + artnr.replace(/\./gi, "")).parents('tr').find('.mindestbestellmenge').first().html(data.prices[artnr][11]); 2505 2506 } 2507 }); 2508 //$('#preis1-'+artnr).parents('tr').find('.mindestbestellmenge').first().html(data.prices[artnr][11]); 2509 } 2510 2511 2512 //UVP 2513 if ( data.pricedata[artnr][66] == null) { 2514 // DB-Fallbacks aus den hidden fields übernehmen 2515 jQuery('#uvp-'+artnr.replace(/\./gi, "")).html(jQuery('#dbuvp-'+artnr.replace(/\./gi, "")).html()); 2516 } else { 2517 jQuery('#uvp-'+artnr.replace(/\./gi, "")).html(data.pricedata[artnr][66]); 2518 } 2519 2520 2521 2522 } 2523 2524 }); 2525 2526 }; 2527 } else { 2528 alert(data.errormessage); 2529 } 2530 }).fail(function() { 2531 2532 }).always(function() { 2533 $(window).trigger('refresh-table-head'); 2534 }); 2535} 2536 2537/* 2538 * scroll to topmost .error container 2539 */ 2540$(document).ready(function() { 2541 var topmost = 0; 2542 $('.error').each(function(index, element) { 2543 var top = $(this).offset().top; 2544 if (topmost) { 2545 if (top < topmost) { 2546 topmost = top; 2547 } 2548 } else { 2549 topmost = top; 2550 } 2551 }); 2552 if (topmost) { 2553 topmost -= 150; 2554 $('html, body').animate({ 2555 scrollTop : topmost 2556 }, 2000); 2557 } 2558}); 2559 2560/** 2561 * Plus-Minus-Buttons in da House 2562 */ 2563 2564$(document).ready(function() { 2565 2566 2567 2568 reinit_scart_buttons(); 2569 2570}); 2571 2572function reinit_scart_buttons() { 2573 2574 $('.increase').on('click', function() { 2575 alter_plus_minus($(this), 1); 2576 }); 2577 2578 $('.decrease').on('click', function() { 2579 alter_plus_minus($(this), 0); 2580 }); 2581} 2582 2583function alter_plus_minus(jObject, up) { 2584 var inputmenge = jObject.closest('tr').find('.menge'); 2585 var menge = parseFloat(inputmenge.val()) || 0; 2586 var min = parseFloat(jObject.attr('min')) || 1; 2587 var intervall = parseFloat(jObject.attr('steps')) || 1; 2588 2589 if (intervall == 0) { 2590 intervall = 1; 2591 } 2592 min = 0; 2593 if (up) { 2594 if (menge % intervall == 0) { 2595 menge += intervall; 2596 } else { 2597 menge = (Math.floor(menge / intervall) + 1) * intervall; 2598 } 2599 if (menge < min) { 2600 menge = min; 2601 } 2602 } else { 2603 if (menge % intervall == 0) { 2604 menge -= intervall; 2605 } else { 2606 menge = Math.floor(menge / intervall) * intervall; 2607 } 2608 if (menge < min) { 2609 menge = min; 2610 } 2611 } 2612 if (menge < 0) { 2613 menge = 0; 2614 } 2615 inputmenge.val(menge); 2616 // auf der Scartseite das Aktualisieren-Event starten 2617 inputmenge.val(menge).trigger('change'); 2618 2619 if (inputmenge.hasClass('autoupdate')) { 2620 amount_changed(inputmenge[0]); 2621 } 2622} 2623 2624// URL Parameter erfassen
2625// für Stripe 2626 2627function getParameterByName(name) { 2628 name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 2629 var regex = new RegExp("[\\?&]" + name + "=([^&]*)"), results = regex.exec(location.search); 2630 return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 2631} 2632 2633/* 2634 * Sprachwechsler 2635 */ 2636 2637$(document).ready(function() { 2638 $('#languageselector').on('change', function() { 2639 window.location = $(this).find(':selected').val(); 2640 }); 2641 2642 $('#languageSelection2 a').on('click', function() { 2643 $('#languageSelection2 a').addClass("active"); 2644 $('#languageSelection2 #languageselector2').on('change', function() { 2645 window.location = $(this).find(':selected').val(); 2646 var selectedLang = $(this).find(':selected').val(); 2647 localStorage.setItem("SelectedLanguage", selectedLang); 2648 }); 2649 }); 2650}); 2651 2652// Category Selector Named Cate Thereza Cory 2653 2654jQuery(document).ready(function() { 2655 $('#categorydropdown').on('change', function() { 2656 refresh_search_catecory(); 2657 }); 2658 2659 // Da Fonts nicht zu document.ready gehören, kann die Breitenberechnung bei ungeladener Font falsch sein 2660 if(!isIE){ 2661 document.fonts.ready.then(function() { 2662 refresh_search_catecory(); 2663 $(window).trigger('refresh-table-head'); 2664 }); 2665 } 2666 $(window).on('resize', refresh_search_catecory); 2667}); 2668 2669function refresh_search_catecory() { 2670 var ww = $(window).width(); 2671 $('.selected_category').text($('#categorydropdown :selected').text()); 2672 var padding = $('.selected_category').first().width() + 40; 2673 if (ww <= 640) { 2674 $('#FFquery').css({ 2675 'padding-left' : 5 2676 }); 2677 $('#categorydropdown option').attr('selected', false); 2678 } else { 2679 $('#FFquery').css({ 2680 'padding-left' : padding 2681 }); 2682 } 2683} 2684 2685// Sprachdatei laden (wenn gecachte Daten älter als 1 Tag oder wenn es fehler gab) und im LocalStorage speichern 2686function initLangfile(force) { 2687 var d1 = new Date(); 2688 var olddate = new Date(parseInt(localStorage.getItem("langfiledate"))); 2689 var diff = d1 - olddate; 2690 diff = Math.floor(diff / 86400000); 2691 if (langfileurl != localStorage.getItem("langfileurl")) { 2692 force = true; 2693 } 2694 if (diff || !localStorage.getItem("langfiledate") || !langfile || force) { 2695 2696 console.log('forced ajax') 2697 2698 $.ajax({ 2699 type : "POST", 2700 dataType : 'json', 2701 url : langfileurl, 2702 cache : true, 2703 success : function(data) { 2704 langfile = data; 2705 localStorage.setItem("langfiledate", d1.getTime()); 2706 localStorage.setItem('langfile', JSON.stringify(langfile)); 2707 localStorage.setItem("langfileurl", langfileurl); 2708 }, 2709 error : function(xhr, textStatus, error) { 2710 console.log("languagefile not found. " + langfileurl); 2711 } 2712 }); 2713 } 2714} 2715 2716function resizetheMegaMenu() { 2717 paddingScreen = "10px"; 2718 2719 /* 2720 let marginScreen = $("#Navi").css('margin-left'); 2721 let marginPage = $(".page-header").css('margin-left'); 2722 if (marginPage > marginScreen) { 2723 marginScreen = marginPage; 2724 } 2725 marginScreen = "-" + marginScreen; 2726 2727 if (marginScreen > "-0px") { 2728 paddingScreen = marginScreen; 2729 $('.mega-dropdown').css({ 2730 'margin-left' : marginScreen 2731 }); 2732 } else { 2733 $('.mega-dropdown').css({ 2734 'margin-left' : 0 2735 }); 2736 } 2737 */ 2738 2739 widthScreen = $(window).width(); 2740 var fixedheight = $('#Navi').height(); 2741 var height = $(window).height() - fixedheight; 2742 $('#Navi .mega-dropdown.level_3').css({ 2743 'max-height' : height 2744 }); 2745 2746 2747 if (widthScreen >= 1920) { 2748 $('.mega-dropdown').css({'width': widthScreen, 'margin-left': -60}); 2749 } else { 2750 jQuery('.mega-dropdown').css({'width': widthScreen, 'margin-left': (-1 * $('.mega-dropdown').offset()['left'] + parseFloat($('.mega-dropdown').css('margin-left')))}); 2751 if ($("body").hasClass("fixedscreen")) { 2752 $('.mega-dropdown').css({ 2753 'padding-left' : paddingScreen 2754 }); 2755 $('.mega-dropdown').css({ 2756 'padding-right' : paddingScreen 2757 }); 2758 } 2759 } 2760 2761} 2762 2763 2764$(window).resize(resizetheMegaMenu); 2765$(document).ready(function() { 2766 if (jQuery('.mega-dropdown').lenght > 0) { 2767 resizetheMegaMenu(); 2768 } 2769 2770}); 2771//$(window).ready(window.setTimeout(resizetheMegaMenu, 100)); // das sollte auch überflüssig sein, ursache finden, auÃerdem falsch formuliert 2772//$(document).ready(function() { 2773// console.log('delayed start'); 2774// window.setTimeout(resizetheMegaMenu, 1000); 2775//}); 2776 2777// Ãbersetzungen aus Variable auslesen und ggf. neuladen der Sprachdatei antriggern / Fallback zurückliefern 2778// Verwendung: 2779// Param1: Gesuchte Value aus Sprachdatei (script Tab) 2780// Param2: Fallback, falls Value nicht vorhanden 2781// Beispiel: 2782// loadTranslation("validate_num_error","Dies ist keine richtige Zahl, bitte wiederholen Sie Ihre Eingabe"); 2783function loadTranslation(question, fallback) { 2784 2785 var lang_selector = "lang_" + shoplanguage; 2786 2787 console.log(langfile) 2788 2789 if (!fallback) { 2790 fallback = question; 2791 } 2792 if (langfile) { 2793 if (langfile[lang_selector][question]) { 2794 return unescape(langfile[lang_selector][question]); 2795 2796 } 2797 } 2798 initLangfile(1); 2799 return fallback; 2800} 2801 2802// IE 11 FIX 2803if (!Array.prototype.fill) { 2804 Object.defineProperty(Array.prototype, 'fill', { 2805 value : function(value) { 2806 2807 // Steps 1-2. 2808 if (this == null) { 2809 throw new TypeError('this is null or not defined'); 2810 } 2811 2812 var O = Object(this); 2813 2814 // Steps 3-5. 2815 var len = O.length >>> 0; 2816 2817 // Steps 6-7. 2818 var start = arguments[1]; 2819 var relativeStart = start >> 0; 2820 2821 // Step 8. 2822 var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len); 2823 2824 // Steps 9-10. 2825 var end = arguments[2]; 2826 var relativeEnd = end === undefined ? len : end >> 0; 2827 2828 // Step 11. 2829 var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len); 2830 2831 // Step 12. 2832 while (k < final) { 2833 O[k] = value; 2834 k++; 2835 } 2836 2837 // Step 13. 2838 return O; 2839 } 2840 }); 2841} 2842 2843function position_popupbox() { 2844 if ($(window).width() > 768) { 2845 if ($(window).scrollTop() < ScrollHead) { 2846 var start = 110;
2846 // was ist in der css als top eingetragen 2847 var scrollto = start - jQuery(window).scrollTop(); 2848 if (scrollto < 57) { 2849 scrollto = 57; 2850 } 2851 $('#scart-popup-container').css({'top': scrollto}); 2852 } else { 2853 $('#scart-popup-container').css({'top': 57}); 2854 } 2855 } else { 2856 $('#scart-popup-container').css({'top': 70}); 2857 } 2858} 2859$(window).on('scroll', position_popupbox); 2860$(window).on('resize', position_popupbox); 2861$(document).ready(position_popupbox); 2862 2863function Trenner(number) { 2864 2865 var orig_number = number; 2866 var point = number.indexOf('.'); 2867 var decimal = number.substr(point); 2868 number = number.substr(0, point); 2869 number = '' + number; 2870 if (number.length > 3) { 2871 var mod = number.length % 3; 2872 var output = (mod > 0 ? (number.substring(0,mod)) : ''); 2873 for (i=0 ; i < Math.floor(number.length / 3); i++) { 2874 if ((mod == 0) && (i == 0)) 2875 output += number.substring(mod+ 3 * i, mod + 3 * i + 3); 2876 else 2877 // hier wird das Trennzeichen festgelegt mit '.' 2878 output+= "'" + number.substring(mod + 3 * i, mod + 3 * i + 3); 2879 } 2880 return (output + decimal); 2881 } 2882 else{ 2883 return orig_number; 2884 2885 } 2886} 2887 2888function TableSort() 2889{ 2890 2891 // $(".TableSort").hide(); 2892 // $(".ShopTable th").hover( function(){ 2893 // $(this).children(".TableSort").show(); 2894 // }, function(){ 2895 // $(this).children(".TableSort").hide(); 2896 // }); 2897 2898} 2899 2900function copyBiohortComments(configid,dbid,comment,modus) { 2901 2902 $("#ScartTable.ShopTable tr[data-biohort='" + configid + "'].biohort-item").each(function(){ 2903 var this_id = $(this).find('.comment').attr('id').substring(4) 2904 var this_comment_isempty = !$(this).find('.comment').data('value') 2905 if ((this_id != dbid) && (this_comment_isempty)){ 2906 2907 switch (modus) { 2908 2909 case 'copydisplay': 2910 $(this).find('.comment').val(comment) 2911 break; 2912 2913 2914 2915 case 'save2session': 2916 var menge = $(this).find('.menge').val() 2917 var min = $(this).find('.menge').attr('min') 2918 2919 var values = {}; 2920 values['menge'] = menge; 2921 values['min'] = min || 1; 2922 values['bemerkung'] = comment; 2923 2924 alter_array[this_id] = values; 2925 break; 2926 } 2927 2928 } 2929 2930 }); 2931 2932 2933 2934} 2935 2936function arrangeBiohortDeliveries() { 2937 var biohortConfigArray = []; 2938 $('#ScartTable.ShopTable .biohort-item').each(function(){ 2939 if (typeof $(this).data('biohort') !== 'undefined') { 2940 biohortConfigArray.push($(this).data('biohort')) 2941 } 2942 }) 2943 2944 biohortConfigArray = $.unique(biohortConfigArray); 2945 2946 biohortConfigArray.forEach(function(configid){ 2947 var longestDeliveryTime = '0'; 2948 var longestDeliveryTimeToolTip = ""; 2949 2950 $("#ScartTable.ShopTable tr[data-biohort='" + configid + "'].biohort-item").each(function(){ 2951 if ($(this).find('.lieferzeit img').data('delivery') > longestDeliveryTime) { 2952 longestDeliveryTime = $(this).find('.lieferzeit img').data('delivery') 2953 longestDeliveryTimeToolTip = $(this).find('.lieferzeit img').attr('title') 2954 } 2955 }); 2956 2957 $("#ScartTable.ShopTable tr[data-biohort='" + configid + "'].biohort-item").each(function(){ 2958 var imagePath = $(this).find('.lieferzeit img').attr('src'); 2959 imagePath = imagePath.slice(0, -1); 2960 $(this).find('.lieferzeit img').attr('src',imagePath + longestDeliveryTime) 2961 $(this).find('.lieferzeit img').attr('title',longestDeliveryTimeToolTip) 2962 }); 2963 }) 2964} 2965 2966function testpermission() { 2967 let anonymous = $('body').hasClass('anonymous'); 2968 let onlycustomer = $('body').hasClass('onlycustomer'); 2969 2970 if (onlycustomer && anonymous) { 2971 window.location.href = syspathshop; 2972 } 2973 2974 2975} 2976 2977$(window).scroll(position_popupbox); 2978$(window).resize(position_popupbox); 2979$(document).ready(position_popupbox);
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.