Source: https://catch.app/itm/v1%7C232972755554%7C0/VELVET-DREAM-Samtkissen-Blatter-45x45-cm-Metallische-Tone?category=356
Timestamp: 2019-03-20 20:29:16
Document Index: 184207769

Matched Legal Cases: ['§ 5', '§6', '§ 6', 'Art. 14', 'Art. 6', 'Art. 15', 'Art. 16', 'Art. 17', 'Art. 18', 'Art. 19', 'Art. 20', 'Art. 7', 'Art. 77']

BUTLERS VELVET DREAM Samtkissen Blätter 45x45 cm
butlers-madeforyourhome (11940)
Verschiedene Farben erhältlich, ideal auch zum Kombinieren. Bei BUTLERS finden Sie von allem das Schönste. Um Sie zu inspirieren, dürfen wir laufend grübeln, zeichnen, entwerfen, einkaufen. Wir freuen uns auf Sie und Ihre Gäste.
Vollständige Informationen Telefon: 022159985998
Fax: 02212726480
E-Mail: ebay@butlers.com
Handelregisternummer: Köln HRA 21085
Umsatzsteuer-Identifikationsnummer: DE 200049899
Allgemeine Geschäftsbedingungen für dieses Angebot Allgemeine Geschäftsbedingungen & Informationen zum Datenschutz
Diese Allgemeinen Geschäftsbedingungen (nachfolgend AGB) gelten ausschließlich für die Geschäftsbeziehung zwischen BUTLERS GmbH & Co. KG und dem Besteller.
Geschäftsführerende Gesellschafter: Jörg Funke, Wilhelm Josten
persönlich haftende Gesellschafterin: BUTLERS Beteiligungs GmbH
Die Darstellung der Produkte stellt kein verbindliches Angebot dar. Sie ist freibleibend und unverbindlich.
Der Abschluss des Bestellvorgangs im Onlineshop stellt ein verbindliches Angebot Ihrerseits an uns zum Abschluss eines Kaufvertrages dar. Der Vertragsabschluss erfolgt ausschließlich in deutscher Sprache.
Bei Verkauf von gekennzeichneten, altersbeschränkten Produkten behält sich Butlers vor, die Auslieferung der Produkte nur nach entsprechendem Nachweis des Mindestalters des Kunden vorzunehmen. Bei fehlendem Altersnachweis ist Butlers zum Rücktritt des Vertrages berechtigt. In diesem Fall werden bereits geleistete Zahlungen des Kunden unverzüglich erstattet.
Um Ihr Widerrufsrecht auszuüben, müssen Sie uns (BUTLERS GmbH & Co. KG, z. Hd. Kundenservice, Hohenzollernring 16-18, 50672 Köln, Telefon: +49 (0) 221 5998 5998, Fax: +49 (0) 221 272 648 48) mittels einer eindeutigen Erklärung (z. B. per Post oder Fax) über Ihren Entschluss, diesen Vertrag zu widerrufen, informieren. Sie können dafür das beigefügte Muster-Widerrufsformular verwenden, das jedoch nicht vorgeschrieben ist.
Sie haben die Waren unverzüglich und in jedem Fall spätestens binnen vierzehn Tagen ab dem Tag, an dem Sie uns über den Widerruf dieses Vertrags unterrichten, an uns (Butlers-Onlineshop Rücksendezentrum, BUTLERS GmbH & Co. KG, Jagenbergstr. 19, 41468 Neuss) zurückzusenden oder zu übergeben. Die Frist ist gewahrt, wenn Sie die Waren vor Ablauf der Frist von vierzehn Tagen absenden. Wir tragen die Kosten der Rücksendung der Waren.
Wenn Sie den Vertrag widerrufen wollen, dann füllen Sie bitte dieses Formular aus und senden Sie es zurück (z. B. per Post oder Fax). Sie können das Formular auch dem Paket beilegen, in welchem Sie die Waren an unser Rücksendezentrum in Neuss senden (BUTLERS GmbH & Co. KG, Jagenbergstr. 19, 41468 Neuss).
An BUTLERS GmbH & Co. KG, z. Hd. Kundenservice, Hohenzollernring 16-18, 50672 Köln, Fax: +49 (0) 221 272 648 48:
§ 5 Preise und Angebote
Die angegebenen Preise sind in Euro und inklusive der gesetzlichen Mehrwertsteuer. Für einige Produkte können zusätzliche Versandkosten anfallen (vgl. §6 unten).
§ 6 Lieferung, Versandkosten
Innerhalb Deutschlands liefern wir alle Artikel zu Ihnen nach Hause. Die jeweiligen aktuellen Lieferzeiten erfahren Sie am Artikel im Shop. Sofern nicht anders vereinbart, erfolgt die Lieferung ab Lager des Butlers-Onlineshop an die vom Kunden angegebene Lieferadresse.
Butlers ist berechtigt Teillieferungen vorzunehmen, sofern dies für den Kunden zumutbar ist.
Soweit eine Lieferung an den Kunden nicht möglich ist, weil die gelieferte Ware nicht durch die Eingangstür, Haustür oder den Treppenaufgang des Kunden passt oder weil der Kunde nicht unter der von ihm angegebenen Lieferadresse angetroffen wird, obwohl der Lieferzeitpunkt dem Kunden mit angemessener Frist angekündigt wurde, trägt der Kunde die Kosten für die erfolglose Anlieferung. Speditionsartikel (bspw. Möbelstücke) werden durch eine Spedition montags bis freitags angeliefert, so dass eine Terminabsprache notwendig ist. Zur Terminabsprache ist die Telefonnummer im Bestellformular anzugeben, unter der der Empfänger tagsüber erreichbar ist.
Die Versandkosten werden pro Lieferung berechnet und sind unabhängig von Teillieferungen und der bestellten Artikelanzahl. Sollte aus logistischen Gründen eine Versendung in mehreren Lieferungen erfolgen, werden die Versandkosten ebenfalls nur einmal berechnet.
Bei Insellieferung gilt nur ein reiner Abgabeservice ohne jegliche Serviceleistung (keine Lieferung frei Verwendungsstelle und auch keine Verpackungsrücknahme).
Die angegebenen Maße der Artikel sind Zirkaangaben, die minimal variieren können. Enthält die Produktbeschreibung eine Farbangabe, ist diese maßgeblich. Geringe Abweichungen im äußeren Erscheinungsbild zwischen Original und Produktabbildung sind dabei möglich. Einige Artikel, insbesondere Möbel, werden in Einzelteilen geliefert, die händisch aufgebaut werden müssen. Einen Montageservice bietet Butlers nicht an.
Bei allen Waren aus dem Butlers-Markenshop bestehen die gesetzlichen Gewährleistungsrechte.
Ist die Nacherfüllung im Wege der Ersatzlieferung erfolgt, ist der Besteller dazu verpflichtet, die zuerst gelieferte Ware innerhalb von 14 Tagen an den Butlers auf Kosten des Butlers-Onlineshops zurückzusenden. Die Rücksendung der mangelhaften Ware hat nach den gesetzlichen Vorschriften zu erfolgen. Butlers behält sich vor, unter den gesetzlich geregelten Voraussetzungen Schadensersatz geltend zu machen.
Butlers haftet für Schäden aus der Verletzung des Lebens, des Körpers oder der Gesundheit, die auf einer schuldhaften Pflichtverletzung des Butlers-Onlineshops, seiner Vertreter, Arbeitnehmer oder Erfüllungsgehilfen beruhen. Der Butlers-Onlineshop haftet ferner für Ansprüche nach dem Produkthaftungsgesetz oder soweit ein Mangel arglistig verschwiegen wurde oder der Butlers-Onlineshop eine Garantie für die Beschaffenheit eines Liefergegenstandes übernommen hat.
Butlers haftet für sonstige Schäden außerhalb der vorstehenden Fälle, die auf einer vorsätzlichen oder grob fahrlässigen Pflichtverletzung oder im Falle wesentlicher Vertragspflichten auf einer einfach fahrlässigen Pflichtverletzung seitens des Butlers-Onlineshops, seiner Vertreter, Arbeitnehmer oder Erfüllungsgehilfen beruhen. Im Falle einfach fahrlässiger Pflichtverletzung von wesentlichen Vertragspflichten ist die Haftung jedoch auf den vertragstypischen, vorhersehbaren Schaden beschränkt. Wesentlich sind solche Pflichten, deren Erfüllung die ordnungsgemäße Durchführung des Vertrages überhaupt erst ermöglicht und auf deren Einhaltung der Vertragspartner regelmäßig vertrauen darf.
Online-Streitbeilegung gemäß Art. 14 Abs. 1 ODR-VO: Die Europäische Kommission hat eine Plattform zur Online-Streitbeilegung (OS) eingerichtet. Es handelt sich um eine zentrale Anlaufstelle für Verbraucher und Händler zur außergerichtlichen Beilegung bei Streitigkeiten im Zusammenhang mit Online-Kaufverträgen oder Online-Dienstleistungsverträgen. Die Plattform ist unter dem Link http://ec.europa.eu/consumers/odr/ erreichbar.
1.2 Verantwortlicher für die Datenverarbeitung im Sinne der Datenschutz-Grundverordnung (DSGVO) ist „BUTLERS GmbH & Co. KG, Hohenzollernring 16-18, 50672 Köln, Deutschland, Tel.: +49 22159985998, E-Mail: ebay@butlers.com“. Der für die Verarbeitung von personenbezogenen Daten Verantwortliche ist diejenige natürliche oder juristische Person, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet.
1.3 Der Verantwortliche hat einen Datenschutzbeauftragten bestellt, dieser ist wie folgt zu erreichen: "Herr Rechtsanwalt Dr. Karsten Kinast, LL.M., datenschutz@butlers.com."
- Tradebyte
Die Bestellabwicklung erfolgt über den Dienstanbieter "Tradebyte" (Tradebyte Software GmbH, Bahnhofsplatz 8, 91522 Ansbach). Name, Anschrift sowie gegebenenfalls weitere personenbezogene Daten werden gemäß Art. 6 Abs. 1 lit. b DSGVO ausschließlich zur Abwicklung der Online-Bestellung an Tradebyte weitergegeben. Die Weitergabe Ihrer Daten erfolgt hierbei nur, soweit dies für die Abwicklung der Bestellung tatsächlich erforderlich ist. Details zum Datenschutz bei Tradebyte und die Datenschutzerklärung der Tradebyte GmbH sind auf der Internetseite von Tradebyte unter " http://www.tradebyte.com/datenschutz/ " einsehbar.
•	Auskunftsrecht gemäß Art. 15 DSGVO;
•	Recht auf Berichtigung gemäß Art. 16 DSGVO;
•	Recht auf Löschung gemäß Art. 17 DSGVO;
•	Recht auf Einschränkung der Verarbeitung gemäß Art. 18 DSGVO;
•	Recht auf Unterrichtung gemäß Art. 19 DSGVO;
•	Recht auf Datenübertragbarkeit gemäß Art. 20 DSGVO;
•	Recht auf Widerruf erteilter Einwilligungen gemäß Art. 7 Abs. 3 DSGVO;
•	Recht auf Beschwerde gemäß Art. 77 DSGVO.
10217553
4035644146339
', infinite: true, slidesToShow: 5, slidesToScroll: 5, responsive: [ { breakpoint: 1024, settings: { slidesToShow: 4, slidesToScroll: 4 } } ] }); //event listener for clicks on miniimages in desktop mode. Also set the first mini image as selected on startup var lastClicked = $('#container-0'); var miniImage = $('.mini-image-container'); miniImage.click(function () { if($('.slick-track').css('transition').indexOf("transform") === -1){ onImageClick(parseInt($(this).attr('id').replace('container-', '')), "click"); } }); miniImage.mousedown(function () { changedBySelectorOrMini = true; }); $('.product-image').mousedown(function () { changedBySelectorOrMini = false; }); $('.slick-arrow').mousedown(function () { changedBySelectorOrMini = false; }); /**Set the color of the feedback according to its value*/ if (sellerRating) { if (sellerRating > 95) { $('.feedback').css('color', '#55930e'); } else if (sellerRating > 90) { $('.feedback').css('color', '#f4d442'); } else { $('.feedback').css('color', '#ed1212'); } } var items = [{"id":"v1|232972755554|0","price":{"amount":"12.99","currency":"EUR","display_price":"12,99\u00a0\u20ac"},"quantity":10,"sold_quantity":8,"quantity_type":"MORE_THAN","attr":{"Marke":"BUTLERS","Material":"100% Polyester, F\u00fcllung: 100% Polyester","Herstellernummer":"10217553","Breite":"45 cm","EAN":"4035644146339","Gewicht":"0,60 kg","Farbe":"Gold","H\u00f6he":"16 cm","Stil":"Modern","Tiefe":"45 cm","Groesse":"L\u00e4nge 45 x Breite 45 x H\u00f6he 16 cm","Anwendungsbereiche":"Schlafzimmer, Wohnzimmer"},"energy_efficiency_class":"","unit_pricing_measure":"","unit_price":{"value":"","currency":""},"enabled_for_guest_checkout":true,"marketing_price":{"discount_percentage":null,"original_price":{"value":null,"currency":null,"display_price":""},"discount_amount":{"value":null,"currency":null,"display_price":""}},"unit_price_display":"","images":["https:\/\/i.ebayimg.com\/00\/s\/MTIwMFgxMjAw\/z\/nBQAAOSwszVbylNn\/$_1.JPG?set_id=2","https:\/\/i.ebayimg.com\/00\/s\/MTIwMFgxMjAw\/z\/guUAAOSwW~pbylNo\/$_1.JPG?set_id=2"]}]; var configurableAttributeCount = 0; var selectedValues = {}; var selectors = $('.attribute-select'); /** * set price for the item that matches the selected attributes and show it over * the buy-button. If not all attributes are selected, show the lowest price */ var resetValueArray = { "price": $('#price').html(), "uvp":$('.uvp').html(), "unitPrice":$('.unit-price').html(), "discount":$('.discount').html() }; function setPrice() { if (arrayLength(selectedValues) === configurableAttributeCount) { for (var b = 0; b < items.length; b++) { if (itemValid(items[b], selectedValues)) { $('#price').html(items[b]['price']['display_price']); $('#variantPrice').val(items[b]['price']['amount']); if(items[b]['unit_price']['value']){ $('.unit-price').html(items[b]['unit_price_display']); } if(items[b]['marketing_price']['discount_percentage']){ $('.discount').html('Sie sparen' + ' ' + items[b]['marketing_price']['discount_amount']['display_price'] + ' (-' + parseFloat(items[b]['marketing_price']['discount_percentage']).toFixed(0) + ' %)') } if(items[b]['marketing_price']['original_price']['value']){ $('.uvp').html('' + items[b]['marketing_price']['original_price']['display_price'] + ''); } } } } else { $('#price').html(resetValueArray.price); $('#variantPrice').val(12.99); $('.uvp').html(resetValueArray.uvp); $('.unit-price').html(resetValueArray.unitPrice); $('.discount').html(resetValueArray.discount); } } var selectorBuildArray = []; var optionAvailable = []; var imageArray = [{"imageArray":{"imgUrl":"https:\/\/i.ebayimg.com\/00\/s\/MTIwMFgxMjAw\/z\/nBQAAOSwszVbylNn\/$_1.JPG?set_id=2"}},{"imageArray":{"imgUrl":"https:\/\/i.ebayimg.com\/00\/s\/MTIwMFgxMjAw\/z\/guUAAOSwW~pbylNo\/$_1.JPG?set_id=2"}}]; /**set the item-attributes, that interact with the images*/ var configAttributes = null; var validPictureChangeAttributes = ['Size', 'Width', 'Character', 'Fabric', 'Modell', 'Model', 'Style', 'Art', 'Motiv', 'Style', 'style', 'Design', 'design', 'Letter', 'kind', 'Select', 'Pattern', 'Fassung' ,'fassung', 'Land', 'land', 'Variante', 'Auswahl', 'Designauswahl', 'Variante wählen', 'Product Shape', 'Paw Patrol', 'Variation']; var colorVariants = ['Color', 'Colour', 'Colors', 'Colours', 'Main Color', 'Main Colour', 'Main Colors', 'Main Colours', 'Frame Colour' , 'Farbe', 'Farben', 'FARBE', 'farbe', 'farben', 'FarbeID', 'Haupt farbe', 'Farbe wählen', 'Farbauswahl', 'Farbe-Color']; if (configAttributes !== null) { for (var x = 0; x < colorVariants.length; x++) { if ( [colorVariants[x]] !== undefined) { validPictureChangeAttributes = colorVariants; break; } } } /** * if an item variant id is supplied in the url, the corresponding item attributes are selected */ var startingItemId = "v1|232972755554|0"; const itemVariant = startingItemId.split('|').pop(); if(itemVariant !== "0") { idInput.val(startingItemId); for(var i = 0; i < items.length; i++){ if(items[i]['id'] === startingItemId){ $.each(items[i]['attr'], function (attr, value) { if (configAttributes !== null) { if(configAttributes[attr] !== undefined){ $('[id="attr-' + attr.replace(/\s/g, "-").toLowerCase() + '"]').val(value); } } }); break; } } } /** * set item-id in the form-input if there are no selectable attributes for that item * if there are, check if all attributes are selected and set the corresponding item */ if (configurableAttributeCount === 0) { if (items) { idInput.val(items[0].id); if (items[0].id) { $('.buy-button').removeClass('disabled'); } else { $('.buy-button').addClass('disabled'); } } }else { var callingSelector = 0; $.each(selectors, function (index, element) { var selector = $(element); if(selector.val() === ''){ selectedValues = {}; return false; }else{ selector.attr('data-selected', 'selected'); selectedValues[selector.attr('title')] = selector.val(); if(validPictureChangeAttributes.indexOf(element.title) !== -1 && imageArray !== null){ callingSelector = index; } } }); if(arrayLength(selectedValues) === configurableAttributeCount){ selectorHandler(selectors[callingSelector], true); } } //set value of qty select to 1 as default $('#qty').val('1'); // disable buy button if item out of stock var itemLimit = 10; if (itemLimit == 0) { $('.buy-button').addClass('disabled'); } /** * get the length of an associative array * * @param array - the array whose length we want to know * @return int - length of array */ function arrayLength(array) { var count = 0; for (var value in array) { count++; } return count; } /** * deletes characters from a string that would otherwise provoke an error * * @param string - The string that should be correctified * @return string - The correctified String */ function correctifyString(string) { return string.split('"').join(''); } /** * goes through the selected attributes and checks the item attributes against them * * @param item - item array with its properties * @param valueArray - the properties in an associative array which a valid item must have * @return boolean - true if item is valid, false if not */ function itemValid(item, valueArray) { for (var selectedTitle in valueArray) { if (correctifyString(item.attr[selectedTitle]) != valueArray[selectedTitle]) { return false; } } return true; } var changedBySelectorOrMini = false; $('#image-carousel').on('beforeChange', function(event, slick, currentSlide, nextSlide){ if(!changedBySelectorOrMini){ onImageClick(nextSlide, "imageCarousel"); } }); /** * clicking on mini-images makes them the bigger product-image * * @param index - the position of the image in the carousel * * @param calledFromSelector - bool: specifies if this function was called because the user used a selector * */ var lastIndex = 0; function onImageClick(index, typeOfCall) { $('#image-carousel').slick('slickGoTo', index); $('#container-' + lastIndex).removeClass('mini-image-selected'); $('#container-' + index).addClass('mini-image-selected'); lastIndex = index; if(typeOfCall === "selector" || typeOfCall === "imageCarousel"){ $('#thumbnail-image-carousel').slick('slickGoTo', index); } if(typeOfCall === "click" || typeOfCall === "imageCarousel"){ setValue(index); } } /** * set the color-selector to the color of the selected mini-image. Will delete all options * from that selector and add all back * * @param listIndex - int: index of the image container that was clicked on */ function setValue(listIndex) { $.each(selectors, function (index, element) { var selector = $(element); if (validPictureChangeAttributes.indexOf(selector.attr('title')) !== -1) { deleteOptions(selector, ''); for (var a = 0; a < items.length; a++) { addOptions(items[a], selector); } if (imageArray[listIndex]['imageArray']['attributes'] && optionAvailable[imageArray[listIndex]['imageArray']['attributes'][selector.attr('title')]]) { selector.val(correctifyString(imageArray[listIndex]['imageArray']['attributes'][selector.attr('title')])); } else { selector.val(''); } selectorHandler(selector[0], false); } }); } /**checks if the selected attributes exist in the imageArray*/ function imageAttributeCheck(imageArray) { for (var key in imageArray) { if ($.inArray(key, validPictureChangeAttributes) !== -1) { if (correctifyString(imageArray[key]) && selectedValues[key] && correctifyString(imageArray[key]) === selectedValues[key]) { return true; } } } return false; } /** * checks if there is an option in the selector with the given value * * @param options - a collection of options from one selector * @param value - the value that should be searched for in the options * @return boolean - true if the option exists, false if not */ function checkOptionExisting(options, value) { var optionExists = false; $.each(options, function (index, element) { var option = $(element); if (value == option.attr('value')) { optionExists = true; } }); return optionExists; } /** * add attributes from an item as options to a selector * * @param item - array of one items with its properties * @param selector - the selector where the item properties should be * appended as options */ function addOptions(item, selector) { var itemAttr; for (itemAttr in item.attr) { if (itemAttr === selector.attr('title')) { if (!(checkOptionExisting(selector.children(), correctifyString(item.attr[itemAttr])))) { if (optionAvailable[item.attr[itemAttr]]) { selector.append('' + item.attr[itemAttr] + ''); } else { selector.append('' + item.attr[itemAttr] + ' [nicht mehr vorrätig]'); } } } } } /** * remove all options except - Select - from one or multiple selectors * * @param selectorContainer - jquery object: the selectors whose options should be deleted * @param noDeleteSelector - string: title of the selector whose options shouldnt be deleted */ function deleteOptions(selectorContainer, noDeleteSelector) { $.each(selectorContainer, function (index, element) { var selector = $(element); if (!(selector.attr('title') === noDeleteSelector)) { var options = selector.children(); $.each(options, function (index, element) { var option = $(element); if (option.attr('value') !== "") { option.remove(); } }); } }); } /** * if all configurable attributes are selected, set the number of available items to the * amount if the selected item. also sets the qty selector to the amount available if its * lower than limit */ function setAvailable() { for (var z = 0; z < items.length; z++) { if (arrayLength(selectedValues) === configurableAttributeCount) { if (itemValid(items[z], selectedValues)) { var limit = 10; var qtySelect = $('select[name=qty]'); var selectedAmount = qtySelect.val(); deleteOptions(qtySelect, ''); if (items[z]['quantity'] < 10) { limit = items[z]['quantity'] } qtySelect.append('Qty'); for (var i = 1; i <= limit; i++) { qtySelect.append('' + i + ''); } qtySelect.val(selectedAmount > limit ? limit : selectedAmount); if (items[z]['quantity_type'] === 'MORE_THAN') { if (items[z]['quantity'] < 10) { $('#number-of-available, #mobile-number-of-available').html( 'Mehr als' + ' ' + items[z]['quantity'] + ' ' + 'quantity' ); } else { $('#number-of-available, #mobile-number-of-available').html( 'Mehr als' + ' ' + '10' + ' ' + 'quantity' ); } } else if (items[z]['quantity_type'] === 'EXACT') { if (items[z]['quantity'] !== 1) { $('#number-of-available, #mobile-number-of-available').html(items[z]['quantity'] + ' ' + 'verfügbar' ); } else { $('#number-of-available, #mobile-number-of-available').html('1 verfügbar') } } } } } } /** * Check if all item-attributes are chosen, then set the id of the fitting item * as value of the id input field and change the item image, else set its value to empty */ function setItemId() { var correctImageFound = false; if (arrayLength(selectedValues) === configurableAttributeCount) { for (var a = 0; a < arrayLength(items); a++) { if (itemValid(items[a], selectedValues)) { idInput.val(items[a].id); $('.buy-button').removeClass('disabled'); for (var i = 0; i < imageArray.length; i++) { if(correctImageFound){ break; } if (imageArray[i]['imageArray']['attributes'] !== undefined) { for(var j = 0; j < imageArray[i]['imageArray']['attributes']['itemId'].length; j++){ if(imageArray[i]['imageArray']['attributes']['itemId'][j] === items[a].id){ correctImageFound = true; onImageClick(i, "selector"); break; } } } } break; } } } else { idInput.val(''); $('.buy-button').addClass('disabled'); buttonClicked = 0; showMessage = 0; } } /** * if the attribute from the selector is set, set the selector to this attribute * else set it to default * Needed because every selection deletes and readds all the options which * causes the value to reset */ function setSelectorValue() { $.each(selectors, function (index, element) { var selector = $(element); if (selectedValues[selector.attr('title')] !== null) { if (checkOptionExisting(selector.children(), selectedValues[selector.attr('title')])) { selector.val(selectedValues[selector.attr('title')]); } } else { selector.val(''); } }); } /** * if user clicks on buy button and not all attributes are selected -> highlight * attribute selectors that are not set */ var buttonClicked = 0, showMessage = 0; $('.buy-button.disabled').on('click', function(event) { if ($('.buy-button').hasClass('disabled')) { event.preventDefault(); } if (buttonClicked == 0) { $.each(selectors, function (index, element) { var selector = $(element); if ( selector.attr('data-selected') == 'unselected') { $(this).css('border-color', 'red'); if (showMessage == 0) { $('.selector-wrapper').append('
'); showMessage = 1; push2dataLayer({ 'event': 'variantError', 'errorMessage': selector.attr('title') }); } } }); buttonClicked = 1; } }); /**call the selectorHandler if the user selects something in a selector*/ selectors.change(function () { changedBySelectorOrMini = true; selectorHandler(this, true); }); /**disables attributes of selectors when an attribute is selected and it is out of stock*/ function disableOptions() { $.each(selectedValues, function (key, value) { $.each(selectorBuildArray[key][value], function (attrName, attrValueArray) { $.each(attrValueArray, function (attrValue, available) { if (attrValue.indexOf('"') >= 0) { attrValue = correctifyString(attrValue); } var option = $('select[title="' + attrName + '"] > option[value="' + attrValue + '"]'); if (option.is(':enabled')) { option.attr('disabled', !available); } if (option.is(':disabled') && !(option.html()).includes('[nicht mehr vorrätig]')) { option.html(option.html() + ' [nicht mehr vorrätig]'); } }); }); }); } /** * handles the selection of the item variants. Deletes all options if a option is * selected and adds only the ones corresponding to the already selected ones */ function selectorHandler(selector, calledFromSelector) { var callSelectorTitle = selector.title; var callSelectorValue = selector.value; /**save selected values in associative array*/ if (!(callSelectorValue === '')) { selectedValues[callSelectorTitle] = callSelectorValue; } else { delete selectedValues[callSelectorTitle]; } /** * if selectorHandler was called by selecting a value, and that value was a type that should * change the image, go to the first Image associated with that value * if it was not, reset the selectedValues and the data tag in the selectors */ if (calledFromSelector) { if (validPictureChangeAttributes.indexOf(callSelectorTitle) !== -1 && imageArray !== null) { for (var i = 0; i < imageArray.length; i++) { if (imageArray[i]['imageArray']['attributes'] !== undefined) { if (imageAttributeCheck(imageArray[i]['imageArray']['attributes'])) { onImageClick(i, "selector"); break; } } } } } else { selectedValues = {}; if (callSelectorValue !== '') { selectedValues[callSelectorTitle] = callSelectorValue; } $.each(selectors, function (index, element) { var jElm = $(element); jElm.attr('data-selected', 'unselected'); }); } /** * if the calling selector was set to a value, set its html attribute 'data-selected' * to selected */ if (callSelectorValue !== '') { $(selector).attr('data-selected', 'selected'); if (buttonClicked !== 0) { $(selector).css('border-color', '#E3E3E3'); $('.no-option-selected').remove(); } } else { $(selector).attr('data-selected', 'unselected'); } deleteOptions(selectors, callSelectorTitle); /**add all options that fit the selected ones to all selectors*/ $.each(selectors, function (index, element) { var selector = $(element); var selectedValuesExclusive = $.extend({}, selectedValues); var selectorTitle = selector.attr('title'); var selectorData = selector.attr('data-selected'); if (selectedValuesExclusive[selectorTitle] !== null) { delete selectedValuesExclusive[selectorTitle]; } if (selectorData === 'unselected') { for (var a = 0; a < items.length; a++) { if (itemValid(items[a], selectedValues)) { addOptions(items[a], selector); } } } else { if (selectorTitle !== callSelectorTitle) { for (var b = 0; b < items.length; b++) { if (itemValid(items[b], selectedValuesExclusive)) { addOptions(items[b], selector); } } } } }); disableOptions(); setSelectorValue(); setPrice(); setAvailable(); setItemId(); } }); })(jQuery); // faceboook pixel & gAds integration(s) fbq('track', 'ViewContent', { content_name: 'BUTLERS VELVET DREAM Samtkissen Blätter 45x45 cm', content_ids: ['v1|232972755554|0'], content_type: 'product', value: 12.99, currency: 'EUR' }); // i-ways GTM tracking helper push2dataLayer({ ecomm_prodid: 'v1|232972755554|0', ecomm_pagetype: 'ViewContent', ecomm_totalvalue: 12.99, ecomm: { ecomm_prodid: 'v1|232972755554|0', ecomm_pagetype: 'ViewContent', ecomm_totalvalue: 12.99 } }); $('form').on('submit', function (e) {//e.preventDefault(); if ($('#qty').val() === '0') { $('#qty').val('1'); } var data = {"auctTitl":"BUTLERS VELVET DREAM Samtkissen Bl\u00e4tter 45x45 cm","brand":"BUTLERS","category":20563,"currency_code":"EUR","id":"232972755554","dimension4":null,"dimension5":"N","dimension6":"N","dimension7":"N","dimension8":"N","dimension9":"N","dimension10":"Y","dimension11":6,"dimension12":30,"dimension13":"DHL Paket","dimension14":"DE","dimension15":"new","dimension16":"butlers-madeforyourhome","dimension17":"v1|232972755554|0","itemVrtnId":"v1|232972755554|0","list":"Product","metric1":6,"metric2":7,"metric3":30,"metric4":null,"metric5":4.9900000000000002,"name":"BUTLERS VELVET DREAM Samtkissen Bl\u00e4tter 45x45 cm","price":0,"quantity":10,"slrId":"butlers-madeforyourhome","variant":""}; data.dimension17 = data.itemVrtnId = $('#item-id-input').val(); data.price = parseFloat($('#variantPrice').val()); data.quantity = parseFloat($('#qty').val()); pushEcommerce('addToCart', [processProductData(data)]); fbq('track', 'AddToCart', { content_name: 'BUTLERS VELVET DREAM Samtkissen Blätter 45x45 cm', content_ids: ['v1|232972755554|0'], contents: [ { 'id': 'v1|232972755554|0', 'quantity': $('#qty').val(), 'item_price': 12.99 } ], content_type: 'product', value: 12.99, currency: 'EUR' }); // i-ways GTM tracking helper push2dataLayer({ ecomm_prodid: 'v1|232972755554|0', ecomm_pagetype: 'AddToCart', ecomm_totalvalue: 12.99, ecomm: { ecomm_prodid: 'v1|232972755554|0', ecomm_pagetype: 'AddToCart', ecomm_totalvalue: 12.99 } }); }); // Alert message design if scrolled $(window).scroll(function(){ var scrolled = $(window).scrollTop(); var heightOrangeMessage = parseInt($('.orange-message').css('height')); if ( scrolled >= heightOrangeMessage ) { $('.to-many-items-alert .alert.alert-danger.alert-dismissable').css('z-index', 9); } else { $('.to-many-items-alert .alert.alert-danger.alert-dismissable').css('z-index', ''); } });