function clearAddressFields() { $('#address-components').hide(); $('#street-number').val(''); $('#street-number').prop('disabled', true); $('#route').val(''); $('#locality').val(''); $('#postal-code').val(''); } function getAddressFiedlValue(addressComponents, $field) { let field = addressComponents.find(obj => obj.types.indexOf($field) > -1); return field != undefined ? field.long_name : ''; } let input = document.querySelector("#ctelefon"); let iti = null; if (input != undefined) { iti = window.intlTelInput(input, { initialCountry: "de", preferredCountries: ["de"], geoIpLookup: function (callback) { $.get('https://ipinfo.io', function () { }, "jsonp").always(function (resp) { let countryCode = (resp && resp.country) ? resp.country : "us"; callback(countryCode); }); }, utilsScript: $("meta[name='url-base']").attr('content') + "/template/assets/libs/intl-tel-input/js/utils.min.js", }); } function updateProducts() { $('#list-products').html(''); if (objProducts.length > 0) { getInfoFromSelectedProduct().done(function (response, status) { response.contents.forEach(function (product) { let objProduct = getProductInfo(product); let elementProduct = createProductElement(objProduct); $('#list-products').append(elementProduct); }); if (totalPrice > 0) { $('#total-checkout-price').text(numberToEuroFormat(totalPrice)); } else { $('#form-section').hide(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-checkout-price').parent().parent().parent().hide(); $('#no-products-in-checkout').hide(); $('#cart-error-in-checkout').show(); } }).fail(function (response) { $('#form-section').hide(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-checkout-price').parent().parent().parent().hide(); $('#no-products-in-checkout').hide(); $('#cart-error-in-checkout').show(); }); $('#form-section').show(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').show(); $('#total-checkout-price').parent().parent().parent().show(); $('#no-products-in-checkout').hide(); $('#cart-error-in-checkout').hide(); } else { $('#form-section').hide(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-checkout-price').parent().parent().parent().hide(); $('#no-products-in-checkout').show(); $('#cart-error-in-checkout').hide(); } } $(function () { updateProducts(); $("#successful-submitting-form").delay(4000).slideUp(200, function () { $(this).alert('close'); }); $('#anfrage').submit(function (event) { event.preventDefault(); let form = $(this); getInfoFromSelectedProduct().done(function (response, status) { let products = response.contents.map(product => { product = getProductInfo(product); product = calculatePrice(product); return product.quantity + 'x ' + product.title + ' (' + numberToEuroFormat(product.calc_preis) + ')'; }); let cart = products.join(" - ") + " - Gesammt: " + numberToEuroFormat(totalPrice); $('#ccart').val(cart); $('#ctelefon').val(iti.getNumber()); objProducts = []; localStorage.setItem("products", JSON.stringify(objProducts)); form.unbind('submit').submit(); }); }); $(document).on('click', '.btn-remove-product', function () { if (objProducts.length > 0) { $('#form-section').show(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').show(); $('#total-checkout-price').parent().parent().parent().show(); $('#no-products-in-checkout').hide(); } else { $('#form-section').hide(); $('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-checkout-price').parent().parent().parent().hide(); $('#no-products-in-checkout').show(); } }); $(document).on('input', '.select-quantity', function () { getInfoFromSelectedProduct().done(function (response, status) { totalPrice = 0; response.contents.forEach(function (product) { let objProduct = getProductInfo(product); objProduct = calculatePrice(objProduct); totalPrice += objProduct.calc_preis * objProduct.quantity; }); $('#total-checkout-price').text(numberToEuroFormat(totalPrice)); }); }); }); $(window).on('load', google.maps.event, function () { let input = document.getElementById('field_location'); let options = { types: ['address'], componentRestrictions: { country: "de" } }; var autocomplete = new google.maps.places.Autocomplete(input, options); autocomplete.addListener("place_changed", () => { clearAddressFields(); const place = autocomplete.getPlace(); if (!place.geometry) return; var componentMap = { country: 'country', locality: 'locality', administrative_area_level_1: 'administrative_area_level_1', administrative_area_level_2: 'administrative_area_level_2', postal_code: 'postal_code', route: 'route', street_number: 'street_number', }; $('#address-components').show(); let addressComponents = autocomplete.getPlace().address_components; let streetNumber = getAddressFiedlValue(addressComponents, 'street_number'); if (streetNumber == '') { $('#street-number').prop('disabled', false); $('#street-number').focus(); } else { $('#street-number').prop('disabled', true); $('#street-number').val(streetNumber); } let country = getAddressFiedlValue(addressComponents, 'country'); let route = getAddressFiedlValue(addressComponents, 'route'); $('#route').val(route); let locality = getAddressFiedlValue(addressComponents, 'locality'); $('#locality').val(locality); let postalCode = getAddressFiedlValue(addressComponents, 'postal_code'); $('#postal-code').val(postalCode); $('#street-number').blur(function () { if ($('#street-number').val() == '') $('#street-number').focus(); else { $('#street-number').prop('disabled', true); $('#field_location').val(route + ' ' + $('#street-number').val() + ', ' + locality + ', ' + country); } }); }); });