{"version":3,"sources":["shop.js","checkout.js","shopping.cart.js","product.js","product.category.js","utils.js","frontline.store.overview.js","frontline.store.pick.up.time.js","customer.settings.js","shop.category.menu.js","intlTelInput.min.js"],"names":["refreshShoppingCart","$","document","ready","navbarElement","originalShoppingCartTopPos","ajaxPath","modalParentElementInDOM","modalTitle","modalMessage","modalButtonText","modalAlertType","amountInput","element","amount","trim","parent","isNaN","val","action","newAmount","hidePurchaseOptions","productArticle","span","css","removeClass","addClass","length","show","hide","find","hidePurchaseOptionsMobile","parents","isInteger","n","addToShoppingCart","productId","parentWrapper","mobileView","type","url","data","product_id","success","isSmallScreenSize","window","matchMedia","matches","printAddedToShoppingCartBar","hasClass","setTimeout","parseJSON","responseText","hasOwnProperty","error_title","error_message","displayInfoMessageModal","shoppingCart","windowHeight","shoppingCartWidth","height","outerWidth","shoppingCartHeight","stop","animate","margin-top","search","searchText","search_text","response","done","status","toUpperCase","undefined","refresh_shopping_cart","info_message","html","alert","addReadMoreLinkOnProductDescriptions","descriptionText","visibleDescriptionHeight","descriptionElement","this","attr","innerHeight","after","readMoreLink","closeOpenProduct","width","SUB_DOMAIN","on","event","productArticleDivParent","specialProduct","extraProductAutoPopup","productInfoWrapper","prev","click","input","children","location","reload","sumAndDeleteWrapper","closest","productContainer","editAmountWrapper","withoutPrompt","confirm","href","updateInputWithAmountOfProduct","updateInputWithAmountBeforeAddingToShoppingCart","productWrapper","replace","pathname","keyup","e","searchInput","jQuery","each","newHref","addAnchorsToMenuIfSmallScreen","y","index","hash","header","scrollTop","scrollToCompensateForHeader","actionBeforeRefresh","replaceWith","sum","product_count","is","lastProduct","setShoppingCartPlacement","offset","top","scroll","products","getProductsFromShoppingCart","consumingLocation","shoppingCartSmall","consuming_location","dataType","error","ajaxPathGetPickUpDays","ajaxPathGetDeliveryDays","ajaxPathGetDeliveryTimes","shopCheckoutFromWrapper","ajaxPathGetShoppingCartIconHtmlForNavbarMenu","shoppingCartIcon","errors","always","fetchAvailableTimes","arrayId","daySelector","selectedDaysFromNow","printTimeSelectorIfDeliveryFormIsLoaded","onSubmitRegisterUserForm","token","mobileInputFields","querySelectorAll","len","i","updateFullNumber","fullNumber","iti","getNumber","hiddenInput","intlTelInput","initialCountry","formatOnDisplay","separateDialCode","addEventListener","_loop","phoneNumberOnlyNumbers","querySelector","intlTelInputGlobals","getInstance","isValidNumber","whenContactPersonPickerChanges","sessionValue","option","text","daysFromNow","arguments","delivery","frontlineStoreId","ajaxPathUrl","ajaxPathGetPickUpTimes","frontline_store_id","array_id","days_from_now","printLocationClosedIfPanelsWithOpeningHoursAreHidden","wrapperId","row","timeSelectorWrapper","remove","append","html_time_selector","message","submitButtonFormGroup","validateCheckoutForm","getAlertHtml","title","insertBefore","placeOrderButton","appendRow","formGroup","ajaxPathSetTipInShoppingCart","ajax","html_day_selector","max","amountOfTimeSelectors","removeCheckoutConfirmOrder","removeAttr","inputName","validation","value","activateDatepicker","maxDate","format","pickadate","maxDays","Date","close","container","selectYears","selectMonths","min","onSet","parentRow","dateNow","get","setSeconds","setMilliseconds","timeNow","days","round","selectElement","getTime","Math","change","customTipAmountInput","prop","selectedDay","selectedTime","ajaxLocked","deliveryMethod","selected_day","selected_time","delivery_method","validateSelectedDeliveryTimeAgainstProductsInShoppingCart","timeRow","employeeId","amountOfTimeSelectorsBefore","fetchAvailableDays","amountOfTimeSelectorsAfter","lastTimePointRow","last","paymentMethodContainer","clickedElement","setTip","buttonClickedElement","formData","customTipAmount","parseFloat","processData","contentType","session_value","totalPriceOnShoppingCartHtml","ajaxPathGetRestaurantTables","ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime","checkRestaurantTableName","textLength","textElement","wrap","getRestaurantTableSelector","noteTextarea","ajaxPathEditConsumingLocation","content","displaySelectConsumingLocationModal","modal","FormData","ajaxPathGetSearchResult","ajaxLockActive","searchString","flineCategoryProducts","search_result","ajaxPathGetProductCategorySelectListAndRemoveButtonHtml","searchResult","liElements","elementSelected","displayAccordionContent","panel","productItem","next","selectedItemHtml","empty","ajaxPathGetProductModal","prependToAlert","prependBeforeId","productSearch","saveProduct","keyCode","eq","scrollListKeyDown","preventDefault","setSelectedProduct","hiddenProductId","newSearch","printSearchWrapper","inputField","target","has","itemName","displayDeactivated","product_category_type","display_deactivated","ajaxPathUpdateProductCategoryList","displayAlertMessage","headerText","removeInputs","prepend","HTMLMessage","toggle","arrow","refreshProductCategoryListSearch","productCategoryType","productCategoryName","productCategoryDescription","productCategoryListOrder","productCategoryId","refreshProductCategoryList","product_category_id","post","key","which","titleHtml","getAlertTable","prependTo","appendAfterId","appendTo","insertAfter","insertAfterId","parentElementInDOM","buttonText","alertType","modalClass","glyphicon","sortTable","table","columnToSort","sortMethod","switching","shouldSwitch","switchcount","subtractFromRowsLength","xValue","yValue","rows","dateParts","x","getElementsByTagName","dir","toLowerCase","split","parentNode","push","addedToShoppingCartBarElement","shoppingCartElement","clearTimeout","args","timer","delay","ms","fn","inputNotify","position","_len","Array","_key","className","bind","notify","getScript","ajaxPathGetFrontlineStoreInfo","refreshFrontlineStoreListItems","ajaxPathDisplaySearchResult","search_string","getFrontlineStoreInfo","currentStoreStatus","ajaxPathSetFrontlineStoreAvailability","current_frontline_store_status","changeAvailability","clickedInputElement","maximumTimeWrapper","label","unitOfTimeAddon","renameInputGroupAddonAndChangePlaceholder","toggleMaximumInput","unitOfTime","minimumTimeInputElement","dayValue","console","addDaysToMaximumInput","ajaxPathSaveClosedShopCustomText","ajaxPathSaveText","ajaxPathSaveLoginSettings","toggleAmountSortExtraProductsFormGroup","amountFormGroup","checkboxFormGroup","toggleTipOptions","tipSettingsFormGroup","checkbox","saveCustomerSettingsInput","ajaxLock","win","open","focus","unsetPreviewSession","saveCustomerSettings","formWrapperId","settingType","customerSettings","customerSetting","name","saveProductionOrderCustomerSettings","columns","popover","spectrum","showInitial","fontselect","font","ajaxPathUnsetPreviewSession","saveFonts","delete_font","customer_settings_id","customerSettingsId","deleteColors","ajaxPathSetPreviewSession","delete_colors","closeOrOpenShop","closedShop","color","setPreviewSession","saveColors","setting_type","JSON","stringify","customer_settings","countCheckedColumns","countColumns","inputValue","fileInput","files","fileData","log","closeShopValue","confirmMessage","alertTitle","closeShopButton","alertMessage","closedShopCustomText","saveClosedShopCustomText","clicked","updateScrollPos","navbarHeight","scrollWindow","subScrollWindow","arrowInButton","left","menuWrapper","scrollToActive","scrollElement","scrollToElement","scrollContent","right","scrollWidth","scrollLeft","offsetLeft","shopProductsColFrame","categoryMenu","hideScrollButtons","direction","cursorType","sub","buttonElement","showScrollWithInternetExplorer","ua","navigator","userAgent","browserIsInternetExplorer","showScrollButtons","isIE","clickX","pageX","subMenu","menuOffsetTop","adjustFixedWidth","headerHeight","headerElement","adjustFixedHeight","menuHeight","removeFixed","subScrollContent","scrollToId","parentElementId","pos","a","module","_typeof","exports","c","b","d","enumerable","configurable","writable","Object","defineProperty","f","g","iso2","dialCode","priority","areaCodes","h","getAttribute","instances","j","allowDropdown","autoHideDialCode","autoPlaceholder","customContainer","customPlaceholder","dropdownContainer","excludeCountries","geoIpLookup","localizedCountries","nationalMode","onlyCountries","placeholderNumberType","preferredCountries","utilsScript","k","windowLoaded","m","l","keys","test","body","classList","add","Promise","i0","i1","promise","all","s","_b","_f","_h","_i","_i3","_d","_d2","_e","_d0","p","sort","_d1","dialCodeMaxLen","q","map","filter","indexOf","localeCompare","_c","substr","_y","createElement","setAttribute","appendChild","hasAttribute","form","_e2","class","selectedFlag","role","aria-owns","concat","id","aria-expanded","t","u","_g","aria-disabled","dropdown","lastIndexOf","insertAdjacentHTML","_5","_w","_v","_z","_u","_j","_l","_i2","_i0","_a14","tagName","_a9","contains","_i1","_a10","disabled","readOnly","_n","_a11","stopPropagation","_2","intlTelInputUtils","loadUtils","_i4","autoCountry","handleAutoCountry","startedLoadingAutoCountry","_a12","_8","_a13","_a8","_l2","charAt","_m","createEvent","initEvent","dispatchEvent","_o","_x","_3","_p","_m2","getBoundingClientRect","pageYOffset","documentElement","offsetHeight","_n2","style","_a4","_a0","_o2","_a1","_1","_a2","_a3","_q","_r","_s","previousElementSibling","nextElementSibling","_t","numberFormat","NATIONAL","INTERNATIONAL","formatNumber","_7","Error","innerHTML","offsetWidth","_getHiddenSelectedFlagWidth","paddingLeft","_0","cloneNode","visibility","removeChild","numberType","getExampleNumber","_4","setSelectionRange","removeEventListener","parseInt","_j2","setCountry","removeAttribute","getExtension","_6","getNumberType","getValidationError","prototype","TypeError","Boolean","getCountryData","o","onload","onerror","async","src","startedLoadingUtilsScript","defaults","version","_init"],"mappings":"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","file":"../main-05e0801e52.min.js","sourcesContent":["var refreshShoppingCart = function (actionBeforeRefresh) {\n}\nvar closeOpenProduct = function (parentWrapper) {\n}\n\n$(document).ready(function () {\n\n var ajaxPath = '/includes/shoppingCart/ajax/ajax.php';\n var ajaxPathSetConsumingLocation = '/action/shop/set-consuming-location';\n var WIDTH_SM = 768;\n var modalParentElementInDOM = $('div#main-container');\n var modalTitle = '';\n var modalMessage = '';\n var modalButtonText = 'Lukk';\n var modalAlertType = '';\n\n\n //Add a \"read more\" link after product description if product layout 2 or 3 is active\n if ($('div.product_layout_2').length || $('div.product_layout_4').length) {\n addReadMoreLinkOnProductDescriptions();\n }\n\n closeOpenProduct = function (parentWrapper) {\n var mobileView = ($(window).width() <= 768 && SUB_DOMAIN == 'isushi');\n if (mobileView) {\n hidePurchaseOptionsMobile(parentWrapper);\n } else {\n hidePurchaseOptions(parentWrapper);\n }\n };\n\n // Display option to purchase product\n $(document).on('click', 'span.glyphicon-plus-sign', function (event) {\n //Fix gap/height issues on mobile when picture disappears:\n var productArticleDivParent = $(this).parents('div.product_article');\n productArticleDivParent.css(\"min-height\", productArticleDivParent.height());\n\n // Get parent wrapper (wraps both image and info for this product)\n var productArticle = $(this).parents('article');\n\n // Show description\n $('p.description span.hidden-normal', productArticle).removeClass('hidden');\n\n // Hide image and display purchase options\n $('img', productArticle).css('height', '0px');\n\n //If the class \"product_article_hide_picture\" is added, the config \"hide default pictures\" is active\n // -> Remove position: absolute from the info_wrapper to make space for other info about the product\n if ($('div#products_wrapper div.product_article_hide_picture'). length > 0) {\n $(this).parents('div.product_info_wrapper').css('position', '');\n }\n\n // Hide direct order button\n $(productArticle).find('button.add_product_simple').hide();\n //$('button.add_product_simple').hide();\n\n // Switch plus sign with minus sign\n switchFromPlusToMinus($(this));\n\n //Add style to article when purchase-options opens\n productArticle.removeClass('closed-purchase-options');\n productArticle.addClass('open-purchase-options');\n\n //If product_layout_1 is activated\n if ($('div.product_layout_1').length) {\n // Hide button \"Vis mer...\"\n $(productArticle).find('button.description-read-more').hide();\n }\n\n //If product_layout_2 is activated -> hide order button\n if ($('div.product_layout_2').length) {\n $(productArticle).find('div.order-button-form-group').hide();\n $(productArticle).find('div.product_image_wrapper').hide();\n }\n\n //If product_layout_3 is activated -> hide image wrapper\n if ($('div.product_layout_3').length) {\n $(productArticle).find('div.product_image_wrapper').hide();\n }\n\n // Display purchase option\n $('div.purchase_product_wrapper', productArticle).show();\n });\n\n // Display option to purchase product in mobile view\n $(document).on('click', 'div#products_wrapper div.product_article_mobile:not(.open)', function () {\n $(this).addClass('open');\n\n // Get parent wrapper (wraps both image and info for this product)\n var productArticle = $('article', this);\n\n // Show description\n $('p.description span.hidden-normal', productArticle).removeClass('hidden');\n\n // Display image and display purchase options\n $('img', productArticle).css('display', 'block');\n\n // Switch plus sign with minus sign\n switchFromArrowToMinus($('span.glyphicon-chevron-right', this));\n\n // Display description\n $('p.description', productArticle).show();\n\n // Display purchase option\n $('div.purchase_product_wrapper', productArticle).show();\n });\n\n // Hide option to purchase product and display image\n $(document).on('click', 'div#products_wrapper span.glyphicon-minus-sign', function () {\n\n // Get parent wrapper (wraps both image and info for this product)\n var productArticle = $(this).parents('article');\n\n //If the class \"product_article_hide_picture\" is added, the config \"hide default pictures\" is active\n // -> Add position: absolute to the info_wrapper to place it back again after removing it\n if ($('div#products_wrapper div.product_article_hide_picture'). length > 0) {\n $(this).parents('div.product_info_wrapper').css('position', 'absolute');\n }\n\n hidePurchaseOptions(productArticle);\n });\n\n // Hide option to purchase product and display image\n $(document).on('click', 'div.product_article_mobile span.glyphicon-minus-sign', function () {\n // Get parent wrapper (wraps both image and info for this product)\n var productArticle = $(this).parents('article');\n hidePurchaseOptionsMobile(productArticle);\n });\n\n // Add product to shopping cart\n $(document).on('click', 'button.add_product', function () {\n var parentWrapper = $(this).parents('article');\n var specialProduct = $(this).attr('special_product');\n var extraProductAutoPopup = $(this).hasClass('extra-products-popup');\n let productInfoWrapper = $(this).prev('.product_info_wrapper');\n if ((specialProduct !== undefined && specialProduct !== false && specialProduct != '') || extraProductAutoPopup) {\n $('button.extra-products-btn:first', parentWrapper).click();\n return false;\n } else {\n // Find the input field element\n var input = $('input', parentWrapper);\n var amount = $.trim(input.val()) * 1;\n\n // Validate amount\n if (!isInteger(amount)) {\n // Add red border on the amount input\n var parentFormGroup = input.parents('div.form-group');\n parentFormGroup.addClass('has-error');\n alert('Kontrollér antallet som er skrevet inn. Kun heltall er lov.')\n return;\n }\n\n var mobileView = ($(window).width() <= 768 && SUB_DOMAIN == 'isushi');\n // Add product\n addToShoppingCart(input.attr('product_id'), amount, parentWrapper, mobileView);\n\n //If the class \"product_article_hide_picture\" is added, the config \"hide default pictures\" is active\n // -> Add position: absolute to the info_wrapper to place it back again after removing it\n if ($('div#products_wrapper div.product_article_hide_picture'). length > 0) {\n parentWrapper.children('div.product_info_wrapper').css('position', 'absolute');\n }\n }\n });\n\n // Add 1 product to shopping cart\n $('.add_product_simple').click(function (event) {\n var parentWrapper = $(this).parents('article');\n var specialProduct = $(this).attr('special_product');\n var extraProductAutoPopup = $(this).hasClass('extra-products-popup');\n if ((specialProduct !== undefined && specialProduct !== false && specialProduct != '') || extraProductAutoPopup) {\n $('button.extra-products-btn:first', parentWrapper).click();\n return false;\n } else {\n // Find the input field element\n var input = $('input', parentWrapper);\n var amount = 1;\n var mobileView = ($(window).width() <= 768 && SUB_DOMAIN == 'isushi');\n // Add product\n addToShoppingCart(input.attr('product_id'), amount, parentWrapper, mobileView);\n }\n });\n\n // Add product from product search\n $(document).on('click', 'button.add_product_from_search', function (event) {\n var parentWrapper = $(this).parents('div.purchase_product_from_search_wrapper');\n var specialProduct = $(this).attr('special_product');\n var extraProductAutoPopup = $(this).hasClass('extra-products-popup');\n if ((specialProduct !== undefined && specialProduct !== false && specialProduct != '') || extraProductAutoPopup) {\n $('button.extra-products-btn:first', parentWrapper).click();\n return false;\n } else {\n // Find the input field element\n var input = $('input', parentWrapper);\n var amount = $.trim(input.val()) * 1;\n\n // Validate amount\n if (!isInteger(amount)) {\n // Alert\n alert('Ugyldig antall: ' + amount);\n return;\n }\n // Add product\n addToShoppingCart(input.attr('product_id'), amount, -1, false);\n }\n });\n\n // Add product to shopping cart\n $(document).on('click', 'span.delete_product', function (event) {\n //Post product id\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'remove_product',\n product_id: $(this).attr('product_id')\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // If user is in the checkout page, refresh entire page, no need to fetch with ajax\n if (window.location.pathname === '/shop/checkout') {\n window.location.reload();\n }\n // Update shopping cart\n refreshShoppingCart();\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n });\n\n // Edit product in shopping cart\n $(document).on('click', 'span.glyphicon-edit:not(.extra-products-btn)', function (event) {\n // Get parent product container\n var productContainer = $(this).closest('div.shopping_cart_product_container');\n var sumAndDeleteWrapper = $('p.price', productContainer);\n var editAmountWrapper = $('div.edit_amount_wrapper', productContainer);\n\n // Hide sum and display edit options\n sumAndDeleteWrapper.hide();\n editAmountWrapper.show();\n });\n\n //When clicking on the delivery tab in checkout, add delivery fee\n $('button[target=\"shop_delivery_form_wrapper\"]').click(function (event) {\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'add_delivery_product'\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n // Update shopping cart\n refreshShoppingCart('product_added');\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n });\n\n // Empty/unset shopping cart\n $(document).on('click', 'button#clear_shopping_cart',function() {\n if (typeof withoutPrompt === 'undefined') {\n if (!confirm('Vil du tømme handlekurv og starte på nytt?')) {\n return;\n }\n }\n\n //Post serialized form and save ProductCategory\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'unset_shopping_cart'\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Refresh page\n window.location.href = \"/shop\";\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n });\n\n /**\n * Updates the number in the amount input when editing amount of product in shopping cart\n *\n * @param String action minus or plus\n * @param Element element the element that was clicked\n * @returns\n */\n function updateInputWithAmountOfProduct(action, element) {\n var amountInput = $('input', element.parent());\n var amount = $.trim(amountInput.val());\n if (isNaN(amount)) {\n amountInput.val('0');\n return;\n }\n if (action === 'minus' && (amount * 1) <= 1) {\n return;\n }\n\n var newAmount = 0;\n if (action === 'minus') {\n newAmount = (amount * 1) - 1;\n } else {\n newAmount = (amount * 1) + 1;\n }\n\n if (!isInteger) {\n amountInput.addClass('has-error');\n amountInput.val('0');\n return;\n }\n amountInput.val(newAmount);\n }\n\n /**\n * Updates the number in the amount input when editing amount of product in shopping cart\n *\n * @param String action minus or plus\n * @param Element element the element that was clicked\n * @returns\n */\n function updateInputWithAmountBeforeAddingToShoppingCart(action, element) {\n var amountInput = $('input', element.parent());\n var amount = $.trim(amountInput.val());\n if (isNaN(amount)) {\n amountInput.val('0');\n return;\n }\n if (action === 'minus' && (amount * 1) <= 1) {\n return;\n }\n\n var newAmount = 0;\n if (action === 'minus') {\n newAmount = (amount * 1) - 1;\n } else {\n newAmount = (amount * 1) + 1;\n }\n\n if (!isInteger) {\n amountInput.addClass('has-error');\n amountInput.val('0');\n return;\n }\n amountInput.val(newAmount);\n }\n\n // Edit amount of a product by using the minus or plus signal (Editing amount in shopping cart)\n $(document).on('click', 'div.edit_amount_wrapper span.glyphicon-minus', function (event) {\n updateInputWithAmountOfProduct('minus', $(this));\n });\n $(document).on('click', 'div.edit_amount_wrapper span.glyphicon-plus', function (event) {\n updateInputWithAmountOfProduct('plus', $(this));\n });\n\n // Edit amount of a product by using the minus or plus signal (Before adding to shopping cart)\n $(document).on('click', 'div.purchase_product_wrapper span.glyphicon-minus', function (event) {\n updateInputWithAmountBeforeAddingToShoppingCart('minus', $(this));\n });\n $(document).on('click', 'div.purchase_product_wrapper span.glyphicon-plus', function (event) {\n updateInputWithAmountBeforeAddingToShoppingCart('plus', $(this));\n });\n $(document).on('click', 'div.purchase_product_wrapper button.product-minus', function (event) {\n updateInputWithAmountBeforeAddingToShoppingCart('minus', $(this));\n });\n $(document).on('click', 'div.purchase_product_wrapper button.product-plus', function (event) {\n updateInputWithAmountBeforeAddingToShoppingCart('plus', $(this));\n });\n\n // Update amount of product in shopping cart. \n $(document).on('click', 'button.edit_product_amount', function () {\n var productWrapper = $(this).closest('div.shopping_cart_product_container');\n var productId = productWrapper.attr('product_id');\n var amountInput = $('input', $(this).parent());\n var amount = $.trim(amountInput.val().replace(',', '.'));\n amountInput.removeClass('has-error');\n if (isNaN(amount)) {\n amountInput.addClass('has-error');\n amountInput.val('0');\n return;\n }\n if (!isInteger) {\n amountInput.addClass('has-error');\n amountInput.val('0');\n return;\n }\n\n updateShoppingCartProductCount(productId, amount);\n });\n\n // Search for product\n $('div.shop-products-col-frame button#product_search_button').click(function () {\n search();\n });\n\n /*\n * Search if enter key in the search field\n */\n $('div.shop-products-col-frame input#product_search_input').keyup(function (e) {\n var key = e.which;\n var searchInput = $('input#product_search_input');\n // Refresh list if enter was pressed or the search field is empty\n if (key === 13) {\n search();\n }\n\n if (searchInput.val() === '') {\n // Remove products if empty search field\n $('div#product_search_result_wrapper').html('');\n }\n });\n\n //When clicking on the delivery tab in checkout, add delivery fee\n $('button[target=\"shop_pick_up_form_wrapper\"]').click(function (event) {\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'remove_delivery_product'\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n // Update shopping cart\n refreshShoppingCart();\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n });\n\n // Display button to copy production order when hovering over tr\n jQuery('table#frontline_customer_production_orders tr').hover(function () {\n jQuery(this).find(\"a.copy_production_order \").removeClass('hidden');\n }, function () {\n jQuery(this).find(\"a.copy_production_order \").addClass('hidden');\n });\n\n // Add anchor to menu links if small screen\n addAnchorsToMenuIfSmallScreen();\n\n // Compensate for header height if anchor is set\n scrollToCompensateForHeader();\n\n /**\n * Hides product purchase options and displays image and product image\n *\n * @param Element productArticle\n * @return\n */\n function hidePurchaseOptions(productArticle) {\n\n // Hide image and display purchase options\n $('img', productArticle).css('height', '');\n\n // Switch plus sign with minus sign\n switchFromMinusToPlus($('span.glyphicon-minus-sign', productArticle));\n\n // Hide description\n $('p.description span.hidden-normal', productArticle).removeClass('hidden').addClass('hidden');\n $('p.description span.hidden-normal', productArticle).removeClass('hidden').addClass('hidden');\n\n if (!($('div.shop-products-col-frame div.product_layout_1').length)) {\n // Show direct order button if the product layout 1 is not activated\n $('button.add_product_simple').show();\n }\n\n productArticle.removeClass('open-purchase-options');\n productArticle.addClass('closed-purchase-options');\n\n // Display purchase option\n $('div.purchase_product_wrapper', productArticle).hide();\n\n //If product_layout_1 is activated\n if ($('div.product_layout_1').length) {\n // Show button \"Vis mer...\"\n $(productArticle).find('button.description-read-more').show();\n }\n\n //If product_layout_2 is activated -> show image wrapper\n if ($('div.product_layout_2').length) {\n $(productArticle).find('div.product_image_wrapper').show();\n }\n\n //If product_layout_3 is activated -> show image wrapper\n if ($('div.product_layout_3').length) {\n $(productArticle).find('div.product_image_wrapper').show();\n }\n }\n\n /**\n * Hides product purchase options and displays image and product image\n *\n * @param Element productArticle\n * @return\n */\n function hidePurchaseOptionsMobile(productArticle) {\n // Hide image and display purchase options\n $('img', productArticle).css('display', 'none');\n\n // Switch plus sign with arrow sign\n switchFromMinusToArrow($('span.glyphicon-minus-sign', productArticle));\n\n // Show direct order button\n $('button.add_product_simple').show();\n\n // Hide description\n $('p.description', productArticle).hide();\n\n // Hide purchase option\n $('div.purchase_product_wrapper', productArticle).hide();\n\n $(productArticle).parents('.product_article_mobile').removeClass('open');\n }\n\n /**\n * Switches from span class from plus symbol to minus symbol\n * Sets font color as red\n *\n * @param span\n * @return\n */\n function switchFromPlusToMinus(span) {\n // Switch plus sign with minus sign\n span.removeClass('glyphicon-plus-sign');\n span.addClass('glyphicon-minus-sign');\n }\n\n /**\n * Switches from span class from plus symbol to minus symbol\n * Sets font color as red\n *\n * @param element span\n * @return\n */\n function switchFromMinusToPlus(span) {\n // Switch plus sign with minus sign\n span.addClass('glyphicon-plus-sign');\n span.removeClass('glyphicon-minus-sign');\n }\n\n /**\n * Switches from span class from plus symbol to minus symbol\n * Sets font color as red\n *\n * @param span\n * @return\n */\n function switchFromArrowToMinus(span) {\n // Switch plus sign with minus sign\n span.removeClass('glyphicon-chevron-right');\n span.addClass('glyphicon-minus-sign');\n }\n\n /**\n * Switches from span class from plus symbol to minus symbol\n * Sets font color as red\n *\n * @param element span\n * @return\n */\n function switchFromMinusToArrow(span) {\n // Switch plus sign with minus sign\n span.addClass('glyphicon-chevron-right');\n span.removeClass('glyphicon-minus-sign');\n }\n\n /**\n * Returns true if n is integer\n *\n * @param {integer} n\n * @returns {Boolean}\n */\n function isInteger(n) {\n return n === +n && n === (n | 0);\n }\n\n /**\n * Fetches shopping cart html with ajax and replaces current shopping cart.\n *\n * @return\n */\n refreshShoppingCart = function (actionBeforeRefresh) {\n var actionBeforeRefresh = typeof actionBeforeRefresh !== 'undefined' ? actionBeforeRefresh : 'not set';\n\n // Type is the active shop type page\n // E.g /shop/1: type = 1\n if ($('#breadcrumbs_row #crumbs a.active').length > 0) {\n var type = $('#breadcrumbs_row #crumbs a.active').data('type');\n } else {\n var type = $('nav#menu').attr('type');\n }\n if (window.location.pathname === '/shop/checkout') {\n type = 'checkout';\n } else if (window.location.pathname === '/shop/shoppingcart') {\n type = 'shopping_cart_full';\n }\n\n // Update shopping cart in mobile view or normal view\n //if ($('div#shopping_cart_header').is(':visible')) {\n // Mobile\n var action = '';\n if (window.location.pathname === '/shop/shoppingcart') {\n // Full view\n action = 'get_shopping_cart_sum_and_full';\n } else {\n // Mobile view with only the shopping cart sum in the header\n action = 'get_shopping_cart_sum';\n }\n\n //Post serialized form and save ProductCategory\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: action,\n type: type\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n // Replace html\n if (type === 'shopping_cart_full') {\n $('div#clear_shopping_cart_full').remove();\n $('div#shopping_cart_full').replaceWith(response.html);\n }\n\n $('span#shopping_cart_header_sum').html(response.sum);\n\n if (response.product_count > 0) {\n $('span#shopping_cart_product_count').html(response.product_count + 'x');\n }\n\n if ($('span#shopping_cart_product_count_badge').length) {\n if (response.product_count > 0) {\n $('span#shopping_cart_product_count_badge').html(response.product_count);\n if ($('span#shopping_cart_product_count_badge').hasClass('animate_badge')) {\n $('span#shopping_cart_product_count_badge').removeClass('animate_badge');\n }\n setTimeout(function () {\n $('span#shopping_cart_product_count_badge').addClass('animate_badge')\n }, 50);\n }\n }\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n if ($('div#shopping_cart_small').is(':visible')) {\n // Normal\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'get_shopping_cart',\n type: type\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n // Replace html\n $('.button-below-shopping-cart').remove();\n $('div#shopping_cart_small').replaceWith(response.html);\n\n if (actionBeforeRefresh === 'product_added') {\n var lastProduct = $('div#shopping_cart_small div.shopping_cart_product_container:last');\n if (lastProduct.length) {\n // Animate last row of shopping cart to the right\n if (lastProduct.hasClass('animate_last_product_added_to_shopping_cart')) {\n lastProduct.removeClass('animate_last_product_added_to_shopping_cart');\n }\n setTimeout(function () {\n lastProduct.addClass('animate_last_product_added_to_shopping_cart')\n }, 50);\n }\n }\n\n setShoppingCartPlacement();\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n }\n }\n\n if ($('div#shopping_cart_small').length) {\n var navbarElement = $('header.navbar-fixed-top');\n // Keep shopping cart in fixed position\n var originalShoppingCartTopPos = $('div#shopping_cart_small').offset().top;\n // Add header hight to margin-top so the table will appear under the menu\n var headerHeight = navbarElement.css('position') === 'relative' ? 0 : navbarElement.height();\n\n if ($('div#products_wrapper').length) {\n var productsHeight = $('div#products_wrapper').offset().top;\n }\n }\n\n /**\n * Adds product in given amount to shopping cart\n *\n * @param int productId\n * @param int amount\n * @param Element parentWrapper (-1 if not adding product from normal user webshop)\n * @param {boolean} mobileView\n * @returns {undefined}\n */\n function addToShoppingCart(productId, amount, parentWrapper, mobileView) {\n //Post serialized form and save ProductCategory\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'add_product',\n product_id: productId,\n amount: amount\n }\n }).success(function (data) {\n let isSmallScreenSize = window.matchMedia(\"only screen and (max-width: 767px)\").matches;\n\n // Update shopping cart\n refreshShoppingCart('product_added');\n\n if (isSmallScreenSize) {\n printAddedToShoppingCartBar();\n }\n\n\n // Hide purchase options and display product image\n if (parentWrapper !== -1) {\n if (mobileView) {\n hidePurchaseOptionsMobile(parentWrapper);\n } else {\n if ($('div.product_layout_4').length < 0) {\n hidePurchaseOptions(parentWrapper);\n }\n }\n\n // Flash \"Bestill\" button\n if ($('button.add_product_simple', parentWrapper).length) {\n if ($('button.add_product_simple', parentWrapper).hasClass('animate_add_to_cart_button')) {\n $('button.add_product_simple', parentWrapper).removeClass('animate_add_to_cart_button');\n }\n setTimeout(function () {\n $('button.add_product_simple', parentWrapper).addClass('animate_add_to_cart_button')\n }, 50);\n }\n }\n }).error(function (data) {\n $('.modal').modal('hide');\n modalTitle = $.parseJSON(data.responseText).hasOwnProperty('error_title') ? $.parseJSON(data.responseText).error_title : 'Det oppstod en feil';\n modalMessage = $.parseJSON(data.responseText).error_message;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n /**\n * Updates product count to given amount in shopping cart\n *\n * @param int productId\n * @param int amount\n * @returns {undefined}\n */\n function updateShoppingCartProductCount(productId, amount) {\n //Post serialized form and save ProductCategory\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'update_product_amount',\n product_id: productId,\n amount: amount\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // If user is in the checkout page, refresh entire page, no need to fetch with ajax\n if (window.location.pathname === '/shop/checkout') {\n window.location.reload();\n }\n\n // Success\n // Update shopping cart\n refreshShoppingCart();\n } else {\n alert(response.error_message);\n }\n }, 'json');\n }\n\n /**\n * Keeps shopping cart in a fixed position by setting margin top\n *\n * @returns\n */\n function setShoppingCartPlacement() {\n let shoppingCart = $('div#shopping_cart_small');\n if (!shoppingCart.length) {\n // Shopping cart does not exist on page\n return;\n }\n if (shoppingCart) {\n let shoppingCartHeight = shoppingCart.height();\n let shoppingCartWidth = shoppingCart.outerWidth();\n let windowHeight = $(window).height();\n\n if (shoppingCartHeight > (windowHeight - originalShoppingCartTopPos)) {\n //Should be possible to scroll to bottom of shopping cart when its higher than the window height\n shoppingCart.css('position', 'relative');\n shoppingCart.stop().animate({'margin-top': 0}, 2000);\n } else {\n //Set fixed position on shopping cart to make it stick to one screen position when we scroll\n shoppingCart.css('position', 'fixed');\n shoppingCart.css('width', shoppingCartWidth);\n }\n }\n }\n\n //Set fixed/relative position on shopping cart on scroll\n $(window).scroll(function () {\n setShoppingCartPlacement();\n });\n\n /**\n * Adds anchors to all product category menu options if screen is small.\n *\n * @returns\n */\n function addAnchorsToMenuIfSmallScreen() {\n if ($(window).width() >= 768) {\n return;\n }\n\n $('nav#menu a').each(function () {\n if ($(this).parent().find('ul').length) {\n // Menus with child menu\n var newHref = $(this).attr('href') + \"#breadcrumbs_row\";\n $(this).attr('href', newHref);\n } else {\n // Menus with no children\n var newHref = $(this).attr('href') + \"#products_wrapper\";\n $(this).attr('href', newHref);\n }\n });\n }\n\n /**\n * Since the header is fixed at the top, anchors will not work correctly.\n * Scroll up to compensate for the header height.\n *\n * @returns\n */\n function scrollToCompensateForHeader() {\n var url = window.location.hash;\n var index = url.indexOf(\"#\");\n if (index != -1) {\n var header = $('header.navbar');\n var y = $(window).scrollTop(); //your current y position on the page\n $(window).scrollTop(y);\n }\n }\n\n function search() {\n var searchText = $.trim($('input#product_search_input').val());\n // Do nothing if empty search word\n if (searchText === '') {\n return;\n }\n\n //Post search text\n $.ajax({\n type: 'POST',\n url: '/includes/shop/ajax/ajax.php',\n data: {\n action: 'product_search',\n search_text: searchText\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n\n // Check if product was added automatically to shopping cart (only one product matchced searh\n if (response.refresh_shopping_cart !== undefined && response.refresh_shopping_cart === '1') {\n // Display success message\n $('div#product_search_result_wrapper').html(response.info_message);\n\n // refresh shopping cart\n refreshShoppingCart('product_added');\n\n // Remove text in search field\n $('input#product_search_input').val('');\n } else {\n // Update search result table\n $('div#product_search_result_wrapper').html(response.html);\n }\n\n } else {\n alert(response.error_message);\n }\n //ajaxLockActive = false;\n }, 'json');\n }\n\n $(document).on('click', 'div#select_consuming_location_wrapper button#select_eat_in_button, div#select_consuming_location_wrapper button#select_take_away_button', function () {\n let consumingLocation = $(this).val();\n let shoppingCartSmall = $('div#shopping_cart_small div.shopping_cart_product_container');\n let products = getProductsFromShoppingCart(shoppingCartSmall);\n\n if(products.length > 0) {\n if (!confirm('Dersom du endrer denne nå, kan det påvirke varene du har lagt i handlekurven.')) {\n return;\n }\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSetConsumingLocation,\n data: {\n consuming_location: consumingLocation\n },\n dataType: 'json'\n }).success(function (data) {\n location.reload();\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n });\n\n function addReadMoreLinkOnProductDescriptions() {\n $('p.description').each(function() {\n let descriptionElement = $(this);\n let productId = descriptionElement.attr('product_id');\n let descriptionText = descriptionElement.find('.hidden-normal').text();\n\n if (descriptionText.length) {\n let visibleDescriptionHeight = descriptionElement.innerHeight();\n\n if (descriptionElement.prop('scrollHeight') > visibleDescriptionHeight) {\n //this element is overflowing on the y axis\n let readMoreLink = '';\n descriptionElement.after(readMoreLink);\n descriptionElement.css('margin-bottom', 0);\n }\n }\n });\n }\n});","\n$(document).ready(function () {\n let modalParentElementInDOM = $('div#main-container');\n let modalTitle = '';\n let modalMessage = '';\n let modalButtonText = 'Lukk';\n let modalAlertType = '';\n\n let ajaxPath = '/includes/shop/ajax/ajax.php';\n let ajaxLocked = false;\n const ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime = '/action/shopping-cart/check-checkout-if-delivery-time-matches-production-time';\n const ajaxPathGetRestaurantTables = '/action/checkout/get-restaurant-tables';\n let ajaxPathGetShoppingCartIconHtmlForNavbarMenu = '/action/shopping-cart/get-shopping-cart-icon-for-navbar-menu';\n let ajaxPathSetTipInShoppingCart = '/action/shopping-cart/set-tip';\n let ajaxPathGetPickUpDays = '/action/frontline-store/pick-up-days';\n let ajaxPathGetPickUpTimes = '/action/frontline-store/pick-up-times';\n let ajaxPathGetDeliveryDays = '/action/frontline-store/delivery-days';\n let ajaxPathGetDeliveryTimes = '/action/frontline-store/delivery-times';\n let shoppingCartHeader = $('header div#shopping_cart_header');\n\n let shopCheckoutFromWrapper = $('div#wrap div.shop-checkout-form-wrapper');\n if (shoppingCartHeader.length && shopCheckoutFromWrapper.length) {\n printShoppingCartIconInNavbarHeader();\n }\n\n // If delivery form is loaded -> Print available delivery times\n printTimeSelectorIfDeliveryFormIsLoaded();\n\n window.onSubmitRegisterUserForm = function (token) {\n $(\"#registerUserForm\").submit();\n }\n\n // Activate support for international mobile numbers\n if ($('.international_mobile_number').length) {\n let mobileInputFields = document.querySelectorAll('.international_mobile_number');\n for (let i = 0, len = mobileInputFields.length; i < len; i++) {\n const iti = window.intlTelInput(mobileInputFields[i], {\n initialCountry: \"no\",\n formatOnDisplay: false,\n separateDialCode: true,\n hiddenInput: \"full_international_number\",\n utilsScript: \"/htdocs/js/intlTelInputUtils.js\",\n autoPlaceholder: false,\n });\n\n // Function to update the hidden field with the full international number\n const updateFullNumber = () => {\n const fullNumber = iti.getNumber();\n const hiddenInput = document.querySelector('input[name=\"full_international_number\"]');\n if (hiddenInput) {\n hiddenInput.value = fullNumber;\n }\n };\n\n // Listen for changes in the country code\n mobileInputFields[i].addEventListener('countrychange', updateFullNumber);\n\n // Listen for input changes in the phone number\n mobileInputFields[i].addEventListener('input', updateFullNumber);\n }\n\n // Only allow numbers as phone number input\n $(document).on('keyup', '.international_mobile_number', function () {\n let phoneNumberOnlyNumbers = $(this).val().replace(/\\D/g,'');\n $(this).val(phoneNumberOnlyNumbers);\n });\n\n\n\n // Disable form submit and display error message if invalid mobile number\n $(\"form#registerUserForm\").submit(function(e){\n var input = document.querySelector('form#registerUserForm #phone');\n var iti = window.intlTelInputGlobals.getInstance(input);\n iti.isValidNumber(); // etc\n\n if (!iti.isValidNumber()) {\n e.preventDefault(e);\n\n modalTitle = 'Ugyldig mobilnummer!';\n modalMessage = 'Ugyldig mobilnummer / Invalid mobile number';\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n\n return false;\n }\n });\n }\n\n // Disable input in tip modal when modal is hidden\n $(document).on('hide.bs.modal','div#custom_tip_modal', function () {\n let customTipAmountInput = $('div#custom_tip_modal input#custom_tip_amount');\n if (customTipAmountInput.length) {\n customTipAmountInput.prop('disabled', true);\n }\n });\n\n // Enable input in tip modal when modal is opened\n $(document).on('show.bs.modal','div#custom_tip_modal', function () {\n let customTipAmountInput = $('div#custom_tip_modal input#custom_tip_amount');\n if (customTipAmountInput.length) {\n customTipAmountInput.prop('disabled', false);\n }\n });\n\n\n $(document).on('click', 'div.shop-checkout-form-wrapper button#add_discount_code', function () {\n if ($('div.shop-checkout-form-wrapper input[name=\"discount_code\"]').val() !== '') {\n removeCheckoutConfirmOrder();\n }\n });\n\n\n $(document).on('change', 'div.timepoint_row .timebox', function () {\n //let selectedDay = $('div.timepoint_row select[name^=\"time_point_arr\"]').children(\"option:selected\").val();\n let timeRow = $(this).closest('div.timepoint_row');\n let selectedDay = $('select:eq(0)', timeRow).val();\n let selectedTime = $('select:eq(1)', timeRow).val();\n validateSelectedDeliveryTimeAgainstProductsInShoppingCart(selectedDay, selectedTime);\n });\n\n // Switch between delivery and pickup\n $('div.shop-checkout-form-wrapper .btn-group button').click(function () {\n // If the button is already active, do nothing\n if ($(this).hasClass('active')) {\n return;\n }\n\n if ($(this).attr('target') === 'shop_delivery_form_wrapper') {\n // Display delivery form\n $('div#shop_delivery_form_wrapper').show();\n $('div#shop_pick_up_form_wrapper').hide();\n\n // Switch active class\n // First remove active\n $('div.shop-checkout-form-wrapper .btn-group button').each(function () {\n $(this).removeClass('active');\n });\n $(this).addClass('active');\n } else if ($(this).attr('target') === 'shop_pick_up_form_wrapper') {\n // Display pick up form\n $('div#shop_delivery_form_wrapper').hide();\n $('div#shop_pick_up_form_wrapper').show();\n\n // Switch active class\n // First remove active\n $('div.shop-checkout-form-wrapper .btn-group button').each(function () {\n $(this).removeClass('active');\n });\n $(this).addClass('active');\n }\n\n\n });\n\n //Selects the contact person in the other textbox based on the id written on #employee_id text box\n $('#employee_id').on('input', function () {\n let employeeId = $('#employee_id').val();\n $('#contact_person_picker option[employee_id=\"'+employeeId+'\"]').prop('selected', true);\n whenContactPersonPickerChanges();\n });\n\n $(document).on('click', '#add_time_points', function () {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectorsBefore = $('.timepoint_row').length;\n if (amountOfTimeSelectorsBefore < max) {\n fetchAvailableDays(amountOfTimeSelectorsBefore,true);\n }\n\n let amountOfTimeSelectorsAfter = $('.timepoint_row').length;\n if (amountOfTimeSelectorsAfter <= 1) {\n $('#remove_time_points').attr('disabled', true);\n }\n\n });\n\n $(document).on('click', '#remove_time_points', function () {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectorsBefore = $('.timepoint_row').length;\n if (amountOfTimeSelectorsBefore < 2 ){\n return;\n }\n\n let lastTimePointRow = $('.timepoint_row');\n lastTimePointRow.prev('div.clearfix').last().remove();\n lastTimePointRow.last().remove();\n\n let amountOfTimeSelectorsAfter = $('.timepoint_row').length;\n if (amountOfTimeSelectorsAfter < max) {\n $('button#add_time_points').attr('disabled', false);\n }\n\n if (amountOfTimeSelectorsAfter === 1) {\n $('button#remove_time_points').attr('disabled', true);\n }\n });\n\n\n $(document).on('change', 'input[name=\"payment_method\"]', function () {\n markSelectedPaymentMethod($(this));\n });\n\n $(document).on('click', \"div.shop-checkout-form-wrapper div.tip-panel button:not('.optional-tip-button'), div.shop-checkout-form-wrapper div#custom_tip_modal button#add_custom_tip\", function () {\n removeCheckoutConfirmOrder();\n setTip($(this));\n });\n\n\n $('input[name=\"payment_method\"]').click(function () {\n if ($(this).val() === 'frontline_invoice')\n {\n $('div#add_new_delivery_time_form_group').show();\n $('button#add_time_points').show();\n $('button#remove_time_points').show();\n $('.timepoint_row').each(function( index ) {\n if (index !== 0)\n $(this).show();\n });\n }\n else {\n $('div#add_new_delivery_time_form_group').hide();\n $('.timepoint_row').each(function( index ) {\n if (index !== 0) {\n $(this).hide();\n }\n });\n }\n });\n\n $('select[name=\"contact_person_picker\"]').change(function () {\n whenContactPersonPickerChanges();\n });\n\n // Change in select list with registered delivery addresses\n // Change values in address input fields\n function whenContactPersonPickerChanges() {\n // The new values are stored as html key value pairs in the option\n var option = $('option:selected', $('select[name=\"contact_person_picker\"]'));\n\n $('input#employee_name').val(option.text());\n }\n\n $('.change_use_alternative_vat').click(function () {\n var sessionValue = $(this).attr('value');\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'set_session_use_alternative_vat',\n session_value: sessionValue\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n //alert(\"Success\");\n let totalPriceOnShoppingCartHtml = $('#totalPriceOnShoppingCart').html();\n if (totalPriceOnShoppingCartHtml !== undefined && totalPriceOnShoppingCartHtml.trim() !== \"0,00 Kr\") {\n location.reload();\n }\n } else {\n alert(\"Error: \" + response.error_message);\n }\n }, 'json');\n });\n\n // Change in select list with registered delivery addresses\n // Change values in address input fields\n $('select[name=\"delivery_address_picker\"]').change(function () {\n // The new values are stored as html key value pairs in the option\n var option = $('option:selected', this);\n\n $('input#address').val(option.attr('address'));\n $('input#zip').val(option.attr('zip'));\n $('input#city').val(option.attr('city'));\n $('input#entrance').val(option.attr('entrance'));\n $('input#floor').val(option.attr('floor'));\n $('textarea#extra_adress_info').val(option.attr('extra_info'));\n });\n\n // Pick up day is changed\n $(document).on('change', '.pick_up_days_from_now', function () {\n let daysFromNow = $(this).val();\n let arrayId = $(this).attr('array_id');\n fetchAvailableTimes(daysFromNow, arrayId);\n });\n\n // Delivery day is changed\n $(document).on('change', '.delivery_days_from_now', function () {\n let daysFromNow = $(this).val();\n let arrayId = $(this).attr('array_id');\n fetchAvailableTimes(daysFromNow, arrayId, true)\n });\n\n // Fetch available days and times when selecting a store\n // Also fetch restaurant tables\n $(document).on('change', 'form#checkout_pick_up_form input[name=frontline_store_id]:radio',function () {\n //Testing\n fetchAvailableDays(0);\n getRestaurantTableSelector();\n $('#remove_time_points').attr('disabled', true);\n });\n\n // Fetch available times when selecting a day\n $(document).on('change', 'form#checkout_pick_up_form select.pick_up_time',function () {\n let daysFromNow = $(this).val();\n fetchAvailableTimes(daysFromNow, 0);\n });\n\n function getRestaurantTableSelector() {\n if($('div#restaurant_table_panel').length) {\n\n if(ajaxLocked) {\n return;\n }\n let frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n\n ajaxLocked = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetRestaurantTables,\n data: {\n frontline_store_id: frontlineStoreId\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#restaurant_table_form_group').html(data.html);\n\n checkRestaurantTableName();\n\n if ($('div#frontline_store_id_radio').attr('posted_frontline_store_id') === frontlineStoreId) {\n\n $(\"div#restaurant_table_panel select#select_restaurant_table\").val($('div#restaurant_table_panel').attr('posted_restaurant_table')).change();\n }\n\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLocked = false;\n });\n }\n }\n\n function fetchAvailableTimes(daysFromNow = 0, arrayId = -1, delivery = false) {\n //ArrayId is set to 0 when frontlineStore is changed. Else use arrayId as the length of timepoint_row (added/subtracted when clicking on +/- buttons)\n if (arrayId === -1) {\n arrayId = $('.timepoint_row').length;//$('[name*=\"time_point_arr\"]').length/2;\n }\n\n let frontlineStoreId;\n let ajaxPathUrl;\n if (delivery) {\n ajaxPathUrl = ajaxPathGetDeliveryTimes;\n frontlineStoreId = $('input[name=frontline_store_id]').val();\n } else {\n ajaxPathUrl = ajaxPathGetPickUpTimes;\n frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n }\n\n $.ajax({\n type: 'GET',\n url: ajaxPathUrl,\n data: {\n frontline_store_id: frontlineStoreId,\n array_id: arrayId,\n days_from_now: daysFromNow\n },\n dataType: 'json'\n }).success(function (data) {\n appendTimeSelectorToRow(data.html_time_selector, arrayId, delivery);\n printLocationClosedIfPanelsWithOpeningHoursAreHidden();\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function fetchAvailableDays(arrayId = -1, appendRow = false, delivery = false) {\n let formGroup = $('div#shop_pick_up_form_wrapper div.pickup-food-panel div#delivery_time_form_group');\n\n //ArrayId is set to 0 when frontlineStore is changed. Else use arrayId as the length of timepoint_row (added/subtracted when clicking on +/- buttons)\n if (arrayId === -1) {\n arrayId = $('.timepoint_row').length;\n }\n\n let frontlineStoreId;\n let ajaxPathUrl;\n if (delivery) {\n ajaxPathUrl = ajaxPathGetDeliveryDays;\n frontlineStoreId = $('input[name=frontline_store_id]').val();\n }\n // Pick up\n else {\n ajaxPathUrl = ajaxPathGetPickUpDays;\n frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n }\n\n $.ajax({\n type: 'GET',\n url: ajaxPathUrl,\n data: {\n frontline_store_id: frontlineStoreId,\n array_id: arrayId,\n },\n dataType: 'json'\n }).success(function (data) {\n if (appendRow) {\n formGroup.append(data.html_day_selector);\n\n //Disable PLUSS button if maximum rows of time selectors is reached\n if ($('div#add_new_delivery_time_form_group').length) {\n disablePlussButtonIfMaxRowCountIsReached();\n }\n } else {\n formGroup.html(data.html_day_selector);\n }\n\n let daySelector = formGroup.find('div#rowId' + arrayId + ' div.day-selector-wrapper select');\n let selectedDaysFromNow = daySelector.find('option:selected').val();\n fetchAvailableTimes(selectedDaysFromNow, arrayId, delivery);\n activateDatepicker();\n\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function appendTimeSelectorToRow(html, arrayId, delivery) {\n let wrapperId;\n if (delivery) {\n wrapperId = 'shop_delivery_form_wrapper';\n } else {\n wrapperId = 'shop_pick_up_form_wrapper';\n }\n\n let row = $('div#' + wrapperId + ' div.pickup-food-panel div#delivery_time_form_group div#rowId' + arrayId);\n let timeSelectorWrapper = row.find('div.time-selector-wrapper');\n\n if (timeSelectorWrapper.length) {\n timeSelectorWrapper.remove();\n }\n\n row.append(html);\n }\n\n if ($('form#checkout_pick_up_form').is(':visible')) {\n if ($(\"input[name='frontline_store_id']:checked\").val()) {\n $(\"input[name='frontline_store_id']:checked\").change();\n }\n }\n\n function disablePlussButtonIfMaxRowCountIsReached() {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectors = $('.timepoint_row').length;\n\n if (amountOfTimeSelectors === max) {\n $('button#add_time_points').attr('disabled', true);\n }\n\n if(amountOfTimeSelectors > 1) {\n $('#remove_time_points').attr('disabled', false);\n }\n }\n\n // Prevent double submission\n //$('form#checkout_delivery_form').preventDoubleSubmission();\n //$('form#checkout_pick_up_form').preventDoubleSubmission();\n\n $('button#register-button').click(function (e) {\n if (ajaxLocked === true) {\n return;\n }\n\n ajaxLocked = true;\n\n if ($('#contact_person_picker').length > 0) {\n if ($('#contact_person_picker').val() == null || $('#contact_person_picker').val() == '') {\n alert('Du må velge kontaktperson');\n ajaxLocked = false;\n return;\n }\n }\n\n if ($('#tosCheckbox').length > 0) {\n if (!$('#tosCheckbox').is(':checked')) {\n alert('Du må akseptere våre kjøpsvilkår for å bestille');\n ajaxLocked = false;\n return;\n }\n }\n\n let noteTextarea = $('textarea[name=\"note\"]');\n if(noteTextarea.prop('required') && $.trim(noteTextarea.val()) === \"\"){\n return;\n }\n\n if(!validateCheckoutForm()) {\n //If panel is hidden -> Customer setting is activated and user can therefore not see if it is possible to order at this time\n if ($('form#checkout_pick_up_form div.pickup-food-panel').is(\":hidden\")) {\n alert('Vi tar dessverre ikke imot bestillinger akkurat nå fordi vi har stengt, men du er velkommen tilbake senere :) ')\n } else {\n alert('Det er dessverre ikke mulig å bestille til valgt tidspunkt.');\n }\n ajaxLocked = false;\n return;\n }\n\n $('img#checkout_submit_loadig').removeClass('hidden');\n $(this).addClass('hidden');\n });\n\n if ($('input[name=\"payment_method\"]').val() === 'frontline_invoice') {\n $('div#add_new_delivery_time_form_group').show();\n $('#add_time_points').show();\n $('#remove_time_points').show();\n }\n else {\n $('div#add_new_delivery_time_form_group').hide();\n }\n\n $(document).on('submit', 'form#checkout_delivery_form', function(){\n return validateCheckoutForm();\n });\n $(document).on('submit', 'form#checkout_pick_up_form', function(){\n return validateCheckoutForm();\n });\n\n function printLocationClosedIfPanelsWithOpeningHoursAreHidden() {\n if ($('div#shop_pick_up_form_wrapper').is(\":visible\") && $('div#shop_pick_up_form_wrapper div.pickup-food-panel').is(\":hidden\")) {\n if (!validateCheckoutForm()) {\n let title = 'Serveringsstedet er stengt';\n let message = 'Vi tar dessverre ikke imot bestillinger akkurat nå, men du er velkommen tilbake senere.';\n let type = 'danger';\n $(getAlertHtml(message, type, title)).insertBefore($('div#shop_pick_up_form_wrapper'));\n\n let placeOrderButton = $('button#register-button');\n placeOrderButton.prop('disabled',true);\n placeOrderButton.css('cursor', 'not-allowed');\n placeOrderButton.css('pointer-events', 'auto');\n\n let submitButtonFormGroup = $('button#register-button').closest('div.form-group');\n $('
' + title + '
').insertBefore(submitButtonFormGroup);\n }\n }\n }\n\n function checkRestaurantTableName() {\n if (!$('div#restaurant_table_form_group span#restaurant_table_name').length) {\n return;\n }\n\n let textElement = $('div#restaurant_table_form_group span#restaurant_table_name');\n let textLength = textElement.html().trim().length\n\n // If amount of characters is more than 4 -> make a square around the text instead for circle\n if (textElement.length && textLength > 4) {\n\n if (window.matchMedia(\"only screen and (max-width: 768px)\").matches) {\n textElement.wrap(\"
\");\n } else {\n textElement.wrap(\"
\");\n }\n\n textElement.removeClass('circle-around-text');\n\n if (textLength > 60) {\n $('div#square_around_table_name').css(\"align-items\", \"normal\");\n }\n }\n }\n\n function printShoppingCartIconInNavbarHeader() {\n $.ajax({\n type: 'GET',\n url: ajaxPathGetShoppingCartIconHtmlForNavbarMenu,\n data: {},\n dataType: 'json'\n }).success(function (data) {\n if (data.html !== '') {\n let shoppingCartIcon = $('header div#shopping_cart_header');\n shoppingCartIcon.replaceWith(data.html);\n }\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n });\n }\n\n function setTip(buttonClickedElement) {\n let formData = new FormData;\n if (buttonClickedElement.attr('id') === 'add_custom_tip') {\n let customTipAmount = $('div#custom_tip_modal input#custom_tip_amount').val();\n formData.append('tip_amount', parseFloat(customTipAmount.replace(',','.').replace(' ','')));\n } else {\n formData.append('tip_percent', buttonClickedElement.val());\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSetTipInShoppingCart,\n data: formData,\n processData: false,\n contentType: false,\n dataType: 'json'\n }).success(function (data) {\n location.reload();\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function removeCheckoutConfirmOrder() {\n // Remove the TOS required attribute, so that we can submit the form.\n $('div.shop-checkout-form-wrapper input#tosCheckbox').removeAttr('required');\n\n // Remove the input field that confirms the order\n let inputName = '';\n if ($('form#checkout_pick_up_form').length) {\n inputName = 'confirm_pick_up';\n } else {\n inputName = 'confirm_delivery';\n }\n\n $('div.shop-checkout-form-wrapper input[name=\"' + inputName + '\"]').remove();\n }\n\n function validateCheckoutForm(){\n var validation = true;\n\n $('.timepoint_row select.timebox').each(function(){\n if(!($('option', this).length > 0) || this.value == ''){\n validation = false;\n } else {\n }\n });\n\n return validation;\n }\n\n function activateDatepicker() {\n if ($('input.datepicker-input').length > 0 && jQuery().pickadate) {\n var max = undefined;\n if ($('input.datepicker-input:first').attr('max_days') > -1) {\n var maxDays = $('input.datepicker-input:first').attr('max_days');\n var maxDate = new Date();\n maxDate = new Date(maxDate.getTime() + maxDays * 86400000);\n max = maxDate;\n }\n $('.datepicker-input').pickadate({\n format: 'dd.mm.yyyy',\n formatSubmit: 'dd.mm.yyyy',\n close: 'Lukk',\n container: 'body',\n selectYears: 5,\n selectMonths: true,\n min: new Date(),\n max: max,\n onSet: function (context) {\n var parentRow = $('input#' + this.get('id')).closest('.row');\n var selectElement = $('select#order_day_select', parentRow);\n var dateNow = new Date();\n dateNow.setHours(0);\n dateNow.setMinutes(0);\n dateNow.setSeconds(0);\n dateNow.setMilliseconds(0);\n var timeNow = dateNow.getTime();\n var days = Math.round((context.select - timeNow) / (86400000));\n if(!isNaN(days)) {\n selectElement.html('');\n $('option:first', selectElement).attr('selected', true);\n selectElement.change();\n }\n }\n });\n }\n }\n activateDatepicker();\n\n function validateSelectedDeliveryTimeAgainstProductsInShoppingCart(selectedDay, selectedTime) {\n if(ajaxLocked) {\n return;\n }\n let deliveryMethod = '';\n let frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n let validation = false;\n let shoppingCartSmall = $('div#shopping_cart_small div.shopping_cart_product_container');\n let products = [];\n\n if(shoppingCartSmall.length) {\n products = getProductsFromShoppingCart(shoppingCartSmall)\n }\n if($('div.shop-checkout-form-wrapper form#checkout_delivery_form').length) {\n deliveryMethod = 1\n }\n if($('div.shop-checkout-form-wrapper form#checkout_pick_up_form').length) {\n deliveryMethod = 2;\n }\n\n ajaxLocked = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime,\n data: {\n frontline_store_id: frontlineStoreId,\n selected_day: selectedDay,\n selected_time: selectedTime,\n products: products,\n delivery_method: deliveryMethod\n },\n dataType: 'json'\n }).success(function (data) {\n validation = true;\n\n }).error(function (data) {\n modalTitle = 'Vær oppmerksom';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'info';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLocked = false;\n });\n return validation;\n }\n\n function markSelectedPaymentMethod(clickedElement) {\n let recentSelected = $('div.payment-panel').find('.selected-payment-method');\n recentSelected.removeClass('selected-payment-method');\n let paymentMethodContainer = clickedElement.closest('.payment-method-container');\n paymentMethodContainer.addClass('selected-payment-method');\n }\n\n function printTimeSelectorIfDeliveryFormIsLoaded() {\n let deliveryForm = $('form#checkout_delivery_form');\n if (deliveryForm.length) {\n let formGroup = $('div#shop_delivery_form_wrapper div.pickup-food-panel div#delivery_time_form_group');\n let daySelector = formGroup.find('div#rowId0 div.day-selector-wrapper select');\n let arrayId = $(daySelector).attr('array_id');\n let selectedDaysFromNow = daySelector.find('option:selected').val();\n\n fetchAvailableTimes(selectedDaysFromNow, arrayId, true);\n }\n }\n\n});\n\n\n","$(document).ready(function () {\n\n let ajaxPathEditConsumingLocation = '/action/shopping-cart/edit-consuming-location';\n let ajaxPathSetTipInShoppingCart = '/action/shopping-cart/set-tip';\n let modalParentElementInDOM = $('div#main-container');\n let modalTitle = '';\n let modalMessage = '';\n let modalButtonText = 'Lukk';\n let modalAlertType = '';\n\n $(document).on('click', 'div.shopping_cart_consuming_location span#edit_consuming_location', function () {\n\n let consumingLocation = $(this).attr('consuming_location');\n\n $.ajax({\n type: 'GET',\n url: ajaxPathEditConsumingLocation,\n data: {\n consuming_location: consumingLocation\n },\n dataType: 'json'\n }).success(function (data) {\n if ($('.shop-products-col-frame').length) {\n $('.shop-products-col-frame').replaceWith(data.html);\n } else if ($('div#shopping_cart_full').length) {\n displaySelectConsumingLocationModal(data.html);\n }\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n });\n\n $(document).on('click', \"div#shopping_cart_full div.shopping_cart_tip button:not('.optional-tip-button'), div#shopping_cart_full button#add_custom_tip\", function () {\n setTip($(this));\n });\n\n function displaySelectConsumingLocationModal(content) {\n if ($(\"div#select_consuming_location_modal_wrapper\").length > 0) {\n $(\"div#select_consuming_location_modal_wrapper\").remove();\n }\n\n $('body').append('
');\n\n $('div#select_consuming_location_modal_wrapper').append(\n '
\\n' +\n '
\\n' +\n '
\\n' +\n '
\\n' +\n ' \\n' +\n '

Takeaway eller spise her?

\\n' +\n '
\\n' +\n '
\\n' + content +\n '
\\n' +\n '
\\n' +\n ' \\n' +\n '
\\n' +\n '
\\n' +\n '
\\n' +\n '
');\n\n $(\"div#select_consuming_location_modal\").modal(\"toggle\");\n }\n\n function setTip(buttonClickedElement) {\n let formData = new FormData;\n if (buttonClickedElement.attr('id') === 'add_custom_tip') {\n let customTipAmount = $('div#shopping_cart_full div#custom_tip_modal input#custom_tip_amount').val();\n formData.append('tip_amount', parseFloat(customTipAmount.replace(',','.').replace(' ','')));\n } else {\n formData.append('tip_percent', buttonClickedElement.val());\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSetTipInShoppingCart,\n data: formData,\n processData: false,\n contentType: false,\n dataType: 'json'\n }).success(function (data) {\n location.reload();\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n});\n\n","\n$(document).ready(function() {\n const ajaxPathGetProductModal = '/action/product/get-product-modal';\n const ajaxPathSaveProductModalContent = '/action/product/save-product-modal-content';\n const ajaxPathGetProductCategorySelectListAndRemoveButtonHtml = '/action/product/get-product-category-select-list-html';\n const ajaxPathGetSearchResult = '/action/product/get-products-from-search-string';\n var ajaxLockActive = false;\n var modalParentElementInDOM = $('div#main-container');\n var modalTitle = '';\n var modalMessage = '';\n var modalButtonText = 'Lukk';\n var modalAlertType = '';\n let elementSelected = null;\n\n //Open products modal (not when click on td with class 'move-product')\n $(document).on('click', 'div#products_added_to_forder table#catering_products_wrapper tr.product_structure td:not(.move-product):not(button.bt-danger) ', function () {\n let productId = $(this).parent().attr('id');\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetProductModal,\n data: {\n product_id: productId\n },\n dataType: 'json'\n }).success(function (data) {\n if ($(\"div#products_modal_container\"), $(\"div#main-container\").length > 0) {\n $(\"div#products_modal_container\").remove();\n }\n $('div#main-container').append('
');\n $('div#products_modal_container').append(data.html);\n $(\"div#products_modal\").modal('toggle');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n });\n\n //Save products modal\n $(document).on('click', 'div#products_modal button#save_product_modal', function () {\n //Add loading gif to button\n $(this).html(' Lagrer');\n\n let productId = $('div#products_modal input#product_id').val();\n\n let formData = new FormData();\n formData.append('product_id', productId);\n\n if($('div#products_modal select[name=\"select_consuming_location\"]').val()) {\n let consumingLocation = $('div#products_modal select[name=\"select_consuming_location\"]').children(\"option:selected\").val();\n formData.append('consuming_location', consumingLocation);\n }\n\n //Checkbox - Choose if product should be visible in shop\n if ($('div#products_modal input#select_visibility').is(\":checked\"))\n {\n formData.append('product_visible', '1');\n } else {\n formData.append('product_visible', '0');\n }\n\n $('div#products_modal select[name^=\"product_category_select\"]').each(function () {\n if($(this).is(\":visible\")) {\n formData.append('product_category_select[]', $(this).children(\"option:selected\").val());\n }\n });\n\n $('div#products_modal input[name^=\"production_open_from\"]').each(function () {\n formData.append('production_open_from[]', $(this).val());\n });\n\n $('div#products_modal input[name^=\"production_open_to\"]').each(function () {\n formData.append('production_open_to[]', $(this).val());\n });\n\n if ($('div#form_group_sale_time_table').length) {\n $('div#products_modal input[name^=\"sale_open_from\"]').each(function () {\n formData.append('sale_open_from[]', $(this).val());\n });\n\n $('div#products_modal input[name^=\"sale_open_to\"]').each(function () {\n formData.append('sale_open_to[]', $(this).val());\n });\n }\n\n formData.append('description', $('div#products_modal textarea[name^=\"description\"]').val());\n\n saveProduct(formData);\n });\n\n //Remove a category\n $(document).on('click', 'div#products_modal .remove-category-button', function () {\n $(this).parent().parent().hide();\n });\n\n\n //Add a new category to a product\n $(document).on('click', 'div#products_modal button#add_new_category_product', function () {\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetProductCategorySelectListAndRemoveButtonHtml,\n data: {},\n dataType: 'json'\n }).success(function (data) {\n $('div#product_category_select_list_wrapper').append(data.html);\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n });\n\n // Product search on enter\n $(document).on('keyup', 'form#add_products_form input#product_search_input, ' +\n 'form#add_product_to_customer_group_form input#product_search_input', function (e) {\n let searchResult = $('div#product_search_result');\n if ($(this).val().length < 2) {\n searchResult.empty();\n return;\n }\n\n if (e.keyCode === 38) { //key UP\n scrollListKeyUp();\n }\n else if (e.keyCode === 40) { //key DOWN\n scrollListKeyDown()\n\n }\n else if (e.keyCode === 13) { //key ENTER\n e.preventDefault();\n if (elementSelected != null) {\n setSelectedProduct(elementSelected);\n }\n return false;\n }\n\n else {\n let searchString = $(this).val();\n productSearch(searchString)\n }\n\n\n return false;\n });\n\n\n // Product search on click\n $(document).on('click', 'form#add_products_form button#product_search_button, ' +\n 'form#add_product_to_customer_group_form button#product_search_button', function () {\n if ($(this).hasClass('no-result')) {\n return;\n }\n\n let searchString = $('form#add_products_form input#product_search_input').val();\n\n if (searchString.length > 1) {\n productSearch(searchString);\n }\n });\n\n\n $(document).on('click', 'form#add_products_form li.list-group-item:not(.selected-product), ' +\n 'form#add_product_to_customer_group_form li.list-group-item:not(.selected-product)', function () {\n let productItem = $(this);\n setSelectedProduct(productItem);\n });\n\n $(document).on('click', 'form#add_products_form li.list-group-item span.close,' +\n 'form#add_product_to_customer_group_form li.list-group-item span.close', function () {\n let hiddenProductId = '';\n if ($('form#add_products_form').length) {\n hiddenProductId = $('form#add_products_form input#product_id');\n }\n else if ($('form#add_product_to_customer_group_form').length) {\n hiddenProductId = $('form#add_product_to_customer_group_form input#product_id');\n }\n\n if (hiddenProductId !== '' && hiddenProductId.length) {\n hiddenProductId.remove();\n }\n let newSearch = printSearchWrapper();\n $('div#product_search_wrapper').html(newSearch);\n });\n\n $(document).on('mouseup', 'div#wrap', function (e) {\n let searchResult = $('div#product_search_result');\n let inputField = $('input#product_search_input');\n\n if(!searchResult.is(e.target) && !inputField.is(e.target) && searchResult.has(e.target).length === 0) {\n searchResult.empty();\n }\n });\n\n /*\n Display belonging panel\n */\n $(document).on('click', 'div#products_modal_container button.accordion', function() {\n displayAccordionContent($(this));\n });\n\n function saveProduct(formData) {\n if (ajaxLockActive === true) {\n return;\n }\n\n ajaxLockActive = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveProductModalContent,\n data: formData,\n processData: false,\n contentType: false,\n dataType: 'json'\n }).success(function (data) {\n //Remove loading gif\n $('button#save_product_modal').html('Lagre');\n\n\n let prependBeforeId = $('div#product_category_select_list_wrapper');\n let message = 'Varen ble lagret';\n let type = 'success';\n let parent = $('div#products_modal');\n prependToAlert(prependBeforeId, message, type, '', parent);\n\n $('div#products_modal').scrollTop(0);\n\n $(document).on('change', 'div#products_modal .modal-body', function () {\n if($('div#product_category_select_list_wrapper div#message').length) {\n $('div#product_category_select_list_wrapper div#message').remove();\n }\n });\n\n $(document).on('click', 'div#products_modal .remove-category-button, div#products_modal button#add_new_category_product', function () {\n if($('div#product_category_select_list_wrapper div#message').length) {\n $('div#product_category_select_list_wrapper div#message').remove();\n }\n });\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLockActive = false;\n });\n }\n\n function productSearch(searchString) {\n if (ajaxLockActive === true) {\n return;\n }\n //If 0 -> search in all products in frontline\n //If 1 -> search in products already added in fline\n let flineCategoryProducts = 0;\n\n if ($('form#add_product_to_customer_group_form').length) {\n flineCategoryProducts = 1;\n }\n\n ajaxLockActive = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetSearchResult,\n data: {\n search_string: searchString,\n fline_category_products: flineCategoryProducts\n },\n dataType: 'json'\n }).success(function (data) {\n let searchResult = data.search_result;\n\n if ($('form#add_products_form').length) {\n $('form#add_products_form div#product_search_result').html(searchResult);\n }\n else if ($('form#add_product_to_customer_group_form').length) {\n $('form#add_product_to_customer_group_form div#product_search_result').html(searchResult);\n }\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLockActive = false;\n });\n }\n\n function printSearchWrapper() {\n return '' +\n '' +\n '' +\n '' +\n '';\n }\n\n function scrollListKeyDown() {\n let liElements = $('div#product_search_result li.list-group-item');\n\n if(elementSelected && liElements.length) {\n elementSelected.removeClass('selected');\n let next = elementSelected.next();\n if(next.length > 0) {\n elementSelected = next.addClass('selected');\n } else {\n elementSelected = liElements.eq(0).addClass('selected');\n }\n } else {\n if (!(liElements.eq(0).hasClass('no-result'))) {\n elementSelected = liElements.eq(0).addClass('selected');\n }\n }\n }\n\n function scrollListKeyUp() {\n let liElements = $('div#product_search_result li.list-group-item');\n\n if(elementSelected && liElements.length) {\n elementSelected.removeClass('selected');\n let next = elementSelected.prev();\n if(next.length > 0) {\n elementSelected = next.addClass('selected');\n } else {\n elementSelected = liElements.last().addClass('selected');\n }\n } else {\n if (!(liElements.eq(0).hasClass('no-result'))) {\n elementSelected = liElements.last().addClass('selected');\n }\n }\n }\n\n function setSelectedProduct(productItem) {\n if (productItem.length && !productItem.hasClass('no-result')) {\n let selectedItemHtml = '
  • ' + productItem.html() + '×
  • ';\n let hiddenInput = '';\n\n if ($('form#add_products_form').length) {\n $('form#add_products_form').append(hiddenInput);\n }\n else if($('form#add_product_to_customer_group_form')) {\n $('form#add_product_to_customer_group_form').append(hiddenInput);\n }\n\n $('div#product_search_wrapper').html(selectedItemHtml);\n $('div#product_search_result').empty();\n elementSelected = null;\n }\n }\n\n /*\n Display belonging panel to accordion button\n */\n function displayAccordionContent(clickedElement) {\n clickedElement.addClass('active');\n let panel = clickedElement.next();\n\n if (panel.css('display') === 'block') {\n panel.hide();\n clickedElement.removeClass('active')\n } else {\n panel.show();\n }\n }\n\n});\n\n\n\n\n\n\n\n","$(document).ready(function() {\n\n // Item name\n var itemName = 'produktkategori';\n\n // Lock to make sure user doesnt save two instances of the same form\n var ajaxLockActive = false;\n\n // Ajax path\n var ajaxPath = '/includes/productCategory/ajax/ajax.php';\n var ajaxPathSaveProductCategoryContent = '/action/product-category/save-product-category-content';\n var ajaxPathUpdateProductCategoryList = '/action/product-category/update-product-category-list';\n\n /*\n * Display or hide filter options\n */\n $(document).on('click', 'div#product_category_list_wrapper span#filter_span_wrapper', function() {\n // Toggle the filters wrapper\n $('div#filter_options_wrapper').toggle();\n\n // Change class of the glyphicon (arrow right or down\n let arrow = $('span#filter_span_wrapper span.glyphicon');\n if ($(arrow).hasClass('glyphicon-chevron-right')) {\n // Switch to down arrow\n $(arrow).removeClass('glyphicon-chevron-right');\n $(arrow).addClass('glyphicon-chevron-down');\n } else {\n // Switch to down right\n $(arrow).removeClass('glyphicon-chevron-down');\n $(arrow).addClass('glyphicon-chevron-right');\n }\n });\n\n /*\n * Show deactivated product categories\n */\n $(document).on('click', 'div#product_category_list_wrapper input#display_deactivated', function() {\n refreshProductCategoryListSearch();\n });\n\n\n /*\n * Save a ProductCategory\n */\n\n $(document).on('click', 'form#product_category_form button#save_product_category', function() {\n if (ajaxLockActive) {\n return;\n }\n $(this).html(' Lagrer');\n\n let productCategoryType = $('form#product_category_form input[name=product_category_type]').val();\n let productCategoryName = $('form#product_category_form input#name').val();\n let productCategoryDescription = $('form#product_category_form textarea#description').val();\n let productCategoryListOrder = $('form#product_category_form input[name=product_category_list_order]').val();\n let productCategoryParentId = $('form#product_category_form input[name=product_category_parent_product_category_id]').val();\n\n let formData = new FormData();\n\n if($('form#product_category_form input#product_category_id').val()) {\n let productCategoryId = $('form#product_category_form input#product_category_id').val();\n formData.append('product_category_id', productCategoryId);\n }\n\n if($('form#product_category_form select[name=\"select_consuming_location\"]').val()) {\n let consumingLocation = $('form#product_category_form select[name=\"select_consuming_location\"]').children(\"option:selected\").val();\n formData.append('consuming_location', consumingLocation);\n }\n\n formData.append('product_category_type', productCategoryType);\n formData.append('product_category_name', productCategoryName);\n formData.append('product_category_description', productCategoryDescription);\n formData.append('product_category_list_order', productCategoryListOrder);\n formData.append('product_category_parent_product_category_id', productCategoryParentId);\n\n //Checkbox - Choose if product category should be visible in shop\n if ($('form#product_category_form input#select_visibility').is(\":checked\"))\n {\n formData.append('product_category_visible', '1');\n } else {\n formData.append('product_category_visible', '0');\n }\n\n $('form#product_category_form input[name^=\"production_open_from\"]').each(function () {\n formData.append('production_open_from[]', $(this).val());\n });\n\n $('form#product_category_form input[name^=\"production_open_to\"]').each(function () {\n formData.append('production_open_to[]', $(this).val());\n });\n\n if ($('div#form_group_sale_time_table').length) {\n $('form#product_category_form input[name^=\"sale_open_from\"]').each(function () {\n formData.append('sale_open_from[]', $(this).val());\n });\n\n $('form#product_category_form input[name^=\"sale_open_to\"]').each(function () {\n formData.append('sale_open_to[]', $(this).val());\n });\n }\n\n ajaxLockActive = true;\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveProductCategoryContent,\n data: formData,\n processData: false,\n contentType: false,\n dataType: 'json'\n }).success(function (data) {\n //remove loading-gif\n $('button#save_product_category').html('Lagre');\n\n // Update list of ProductCategories\n refreshProductCategoryList();\n\n let removeInputs = true;\n if ($('input[name=\"product_category_id\"]').val() * 1 > 0) {\n removeInputs = false;\n }\n\n // Insert success message\n displayAlertMessage('Lagret!', 'Trykk her for å lagre ny ' + itemName, 'success', removeInputs);\n $(window).scrollTop(0);\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function() {\n ajaxLockActive = false;\n });\n });\n\n \n /**\n * Deactivate or activate product category\n */\n $(document).on('click', 'form#product_category_form button#change_product_category_status', function() {\n if (ajaxLockActive) {\n return;\n }\n\n if ($(this).val() != 0 && $(this).val() != 1) {\n return;\n }\n\n if($(this).val() == 0) {\n if (!confirm('Vil du deaktivere denne kategorien? Den vil ikke lengre bli vist på forsiden til webshoppen.')) {\n return;\n }\n }\n\n let productCategoryId = $(this).attr('product_category_id');\n ajaxLockActive = true;\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'change_product_category_status',\n product_category_id: productCategoryId,\n status: $(this).val()\n }\n }).done(function(response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n // Success\n var removeInputs = true;\n\n // Insert success message\n displayAlertMessage('Lagret!', 'Trykk her for å lagre ny ' + itemName, 'success', removeInputs);\n\n // Update list of ProductCategories\n refreshProductCategoryList();\n } else {\n displayAlertMessage('Kunne ikke lagre!', response.error_message, 'danger', false);\n }\n ajaxLockActive = false;\n }, 'json');\n });\n\n /*\n * Fetch prefilled form to edit a ProductCategory\n */\n $(document).on('click', 'a.product_category_list_item', function(event) {\n //Verify that product_category_id is valid\n if (isNaN($(this).attr('product_category_id'))) {\n alert('Kunne ikke hente for endring, ugyldig ID');\n }\n\n //Fetch form with prefilled data for selected ProductCategory\n $.post(ajaxPath, {action: 'get_form', product_category_id: $(this).attr('product_category_id')}, function(response) {\n if (response.status.toUpperCase() === 'OK') {\n //Success, replace form\n $('form#product_category_form').replaceWith(response.html);\n } else {\n //Error, show error message\n displayAlertMessage('Kunne ikke lagre!', response.error_message, 'danger', false)\n }\n }, 'json');\n return false;\n });\n\n /*\n Display belonging panel\n */\n $(document).on('click', 'form#product_category_form button.accordion', function() {\n displayAccordionContent($(this));\n });\n\n /*\n * Search if enter key in the search field\n */\n $('input#product_category_search_input').keyup(function(e) {\n var key = e.which;\n var searchInput = $('input#product_category_search_input');\n\n // Refresh list if enter was pressed or the search field is empty\n if (key === 13 || searchInput.val() === '') {\n refreshProductCategoryListSearch();\n }\n });\n\n /*\n * Search if search button was clicked\n */\n $('button#product_category_search_button').click(function() {\n refreshProductCategoryListSearch();\n });\n\n /*\n * Refresh list of ProductCategorys after search\n */\n function refreshProductCategoryListSearch() {\n let displayDeactivated = false;\n if ($('div#product_category_list_wrapper input#display_deactivated').is(\":checked\"))\n {\n displayDeactivated = true;\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'get_product_category_list',\n product_category_type: $('input[name=\"product_category_type\"]').val(), \n search_text: $('input#product_category_search_input').val(),\n display_deactivated: displayDeactivated\n }\n }).done(function(response) {\n if (response.status.toUpperCase() === 'OK') {\n //Success, replace list with new list\n $('div#product_category_list_wrapper div.list-group').replaceWith(response.html);\n } else {\n alert(response.error_message);\n }\n }, 'json');\n }\n\n function refreshProductCategoryList() {\n let displayDeactivated = false;\n if ($('div#product_category_list_wrapper input#display_deactivated').is(\":checked\"))\n {\n displayDeactivated = true;\n }\n $.ajax({\n type: 'GET',\n url: ajaxPathUpdateProductCategoryList,\n data: {\n product_category_type: $('input[name=\"product_category_type\"]').val(),\n display_deactivated: displayDeactivated\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#product_category_list_wrapper div.list-group').replaceWith(data.html);\n\n if(data.html === '') {\n location.reload();\n }\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n\n\n /*\n * Display html message\n *\n * If legend exist in form, the message is appended after legend\n * If legend does not exist in form, the message is appended after fieldset\n * \n * @param String headerText\n * @param String message\n * @param String type\n * @param bool removeInputs If true all input fields will be removed from form\n */\n function displayAlertMessage(headerText, message, type, removeInputs) {\n // Remove any existing alert message\n removeAlertMessage();\n\n // Build html\n var HTMLMessage = '
    ' +\n '' +\n '

    ' + headerText + '

    ' +\n '

    ' + message + '

    ' +\n '
    ';\n\n // Add message below legend if it exist\n if ($('form#product_category_form legend').length) {\n $('form#product_category_form legend').after(HTMLMessage);\n } else {\n // Legend does not exist, add below fieldset\n $('form#product_category_form fieldset').prepend(HTMLMessage);\n }\n\n // Remove all input fields if saving new ProductCategory\n if (removeInputs) {\n $('form#product_category_form div.form-group').remove();\n }\n return;\n }\n\n /*\n * Remove bootstrap html message from form\n */\n function removeAlertMessage() {\n // Check if an alert message exist\n if ($('form#product_category_form div.alert').length) {\n // Remove alert div from form\n $('form#product_category_form div.alert').remove();\n }\n return;\n }\n\n /*\n Display belonging panel to accordion button\n */\n function displayAccordionContent(clickedElement) {\n clickedElement.addClass('active');\n let panel = clickedElement.next();\n\n if (panel.css('display') === 'block') {\n panel.hide();\n clickedElement.removeClass('active')\n } else {\n panel.show();\n }\n }\n\n});","/**\n *\n * @param string message\n * @param string type\n * @param string title\n * @returns {string}\n */\nfunction getAlertHtml(message, type, title) {\n\n var titleHtml = '';\n\n if (title != null && title !== '' && title !== undefined) {\n titleHtml = '' + title + '

    ';\n }\n if ((message === '' || message === undefined || message === null) && (title != null || title !== '' || title !== undefined)) {\n titleHtml = '' + title + '
    ';\n return '
    ×' + titleHtml + '
    ';\n }\n else if ((title === '' || title === undefined || title === null) && (message !== '' || message !== undefined || message !== null)) {\n return '
    ×' + message + '
    ';\n }\n\n return '
    ×' + titleHtml + message + '
    ';\n\n}\n\n/**\n *\n * @param string message\n * @param string type\n * @param string title\n * @returns {string}\n */\nfunction getAlertTable(message, type, title) {\n\n var titleHtml = '';\n\n if (title != null && title != '' && title !== undefined) {\n titleHtml = '' + title + '

    ';\n }\n\n return '
    ×' + titleHtml + message + '
    ';\n\n}\n\n/**\n *\n * @param string prependBeforeId\n * @param string message\n * @param string type\n * @param string title\n * @param string parent\n */\nfunction prependToAlert(prependBeforeId, message, type, title, parent) {\n\n if (parent != null && parent != '' && parent !== undefined && $(parent).length > 0) {\n $(\".alert\", $(parent)).remove();\n }\n\n $(getAlertHtml(message, type, title)).prependTo($(prependBeforeId));\n\n}\n\n/**\n *\n * @param string appendAfterId\n * @param string message\n * @param string type\n * @param string title\n * @param string parent\n */\nfunction appendToAlert(appendAfterId, message, type, title, parent) {\n\n if (parent != null && parent != '' && parent !== undefined && $(parent).length > 0) {\n $(\".alert\", $(parent)).remove();\n }\n\n $(getAlertHtml(message, type, title)).appendTo($(appendAfterId));\n}\n\n/**\n *\n * @param string insertAfterId\n * @param string message\n * @param string type\n * @param string title\n * @param string parent\n */\nfunction insertAfterAlertTr(insertAfterId, message, type, title, parent) {\n\n if (parent != null && parent != '' && parent !== undefined && $(parent).length > 0) {\n $(\".alert\", $(parent)).remove();\n }\n\n $(getAlertTable(message, type, title)).insertAfter($(insertAfterId));\n\n}\n\n/**\n *\n * @param parentElementInDOM element in which modal is appended\n * @param title\n * @param message\n * @param buttonText\n * @param alertType error, success, info\n */\nfunction displayInfoMessageModal(parentElementInDOM, title, message, buttonText, alertType) {\n if ($(\"div#info_message_modal_wrapper\", parentElementInDOM).length > 0) {\n $(\"div#info_message_modal_wrapper\").remove();\n }\n\n let modalClass = '';\n let glyphicon = '';\n switch (alertType) {\n case 'error':\n modalClass = 'error_modal';\n glyphicon = '';\n break;\n case 'success':\n modalClass = 'success_modal';\n glyphicon = '';\n break;\n case 'info':\n modalClass = 'info_modal';\n glyphicon = '';\n break;\n }\n\n parentElementInDOM.append(\n '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n '

    ' + glyphicon + ' ' + title + '

    \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    ' + message + '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n ' \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    \\n' +\n '
    ');\n\n /*\n let zIndexExtraProductsModal = $('div#extraProductsModal').css('z-index');\n let zIndex = Number(zIndexExtraProductsModal) + 1;\n $('div#info_message_modal').css('z-index', zIndex);\n\n setTimeout(function() {\n $('.modal-backdrop').not('.modal-stack').each(function() {\n $(this).css('z-index', zIndex - 2).addClass('modal-stack');\n zIndex++;\n });\n }, 0);*/\n\n $(\"div#info_message_modal\").modal(\"toggle\");\n\n}\n\n/**\n * @param {Element} table\n * @param {number} columnToSort\n * @param {string} sortMethod numeric, alphabetic, d/m/Y\n * @param excludeLastTr\n */\nfunction sortTable(table, columnToSort, sortMethod, excludeLastTr = false) {\n var rows,\n switching,\n i,\n x,\n y,\n shouldSwitch,\n dir,\n switchcount = 0;\n switching = true;\n //Set the sorting direction to ascending:\n dir = \"asc\";\n\n let subtractFromRowsLength = 1;\n if (excludeLastTr === true) {\n subtractFromRowsLength = 2;\n }\n /*Make a loop that will continue until\n no switching has been done:*/\n while (switching) {\n //start by saying: no switching is done:\n switching = false;\n rows = table.find('> tbody > tr');\n /*Loop through all table rows (except the\n first, which contains table headers):*/\n for (i = 0; i < rows.length - subtractFromRowsLength; i++) {\n //start by saying there should be no switching:\n shouldSwitch = false;\n /*Get the two elements you want to compare,\n one from current row and one from the next:*/\n x = rows[i].getElementsByTagName(\"TD\")[columnToSort];\n y = rows[i + 1].getElementsByTagName(\"TD\")[columnToSort];\n /*check if the two rows should switch place,\n based on the direction, asc or desc:*/\n\n /*check if column content is numeric to cast the value to a number\n */\n let xValue = x.innerHTML.toLowerCase();\n let yValue = y.innerHTML.toLowerCase();\n if (sortMethod === 'numeric') {\n xValue = xValue.replace(',', '.') * 1;\n yValue = yValue.replace(',', '.') * 1;\n } else if (sortMethod == 'd/m/Y') {\n // month is 0-based, that's why we need dataParts[1] - 1\n let dateParts = xValue.split(\"/\");\n xValue = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0])\n\n dateParts = yValue.split(\"/\");\n yValue = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0])\n }\n\n if (dir == \"asc\") {\n if (xValue > yValue) {\n //if so, mark as a switch and break the loop:\n shouldSwitch = true;\n break;\n }\n } else if (dir == \"desc\") {\n if (xValue < yValue) {\n //if so, mark as a switch and break the loop:\n shouldSwitch = true;\n break;\n }\n }\n }\n if (shouldSwitch) {\n /*If a switch has been marked, make the switch\n and mark that a switch has been done:*/\n rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);\n switching = true;\n //Each time a switch is done, increase this count by 1:\n switchcount++;\n } else {\n /*If no switching has been done AND the direction is \"asc\",\n set the direction to \"desc\" and run the while loop again.*/\n if (switchcount == 0 && dir == \"asc\") {\n dir = \"desc\";\n switching = true;\n }\n }\n }\n}\n\nfunction getProductsFromShoppingCart(shoppingCartElement) {\n let products = [];\n\n shoppingCartElement.each(function () {\n let productId = $(this).attr('product_id');\n products.push(productId);\n });\n\n return products;\n}\n\nfunction printAddedToShoppingCartBar() {\n let addedToShoppingCartBarElement = $('div#added_to_shopping_cart_bar');\n if (addedToShoppingCartBarElement.length) {\n addedToShoppingCartBarElement.show(\"fast\").delay(4000).hide(\"slow\");\n }\n}\n\n/**\n * The delay function will return a wrapped function that internally handles an individual timer,\n * in each execution the timer is restarted with the time delay provided,\n * if multiple executions occur before this time passes, the timer will just reset and start again.\n *\n * When the timer finally ends, the callback function is executed, passing the original context and arguments\n */\nfunction delay(fn, ms) {\n let timer = 0\n return function(...args) {\n clearTimeout(timer)\n timer = setTimeout(fn.bind(this, ...args), ms || 0)\n }\n}\n\n/**\n * Notify.js is a jQuery plugin to provide simple yet fully customisable notifications.\n */\n$.getScript(\"/htdocs/js/notify.min.js\", function(){ });\n\n/**\n * Notify when input is changed\n */\nfunction inputNotify(success, element, text, position = 'left') {\n const className = success ? 'success' : 'error';\n $(element).notify(text, {\n position: position,\n className: className\n });\n}","$(document).ready(function() {\n\n const ajaxPathDisplaySearchResult = '/action/frontline-store-overview/display-search-result';\n const ajaxPathGetFrontlineStoreInfo = '/action/frontline-store-overview/display-get-frontline-store-info';\n const ajaxPathSetFrontlineStoreAvailability = '/action/frontline-store-overview/change-frontline-store-availability';\n let ajaxLocked = false;\n\n /*\n * Display or hide filter options\n */\n $('div#frontline_store_right_side_menu_wrapper span#filter_span_wrapper').click(function () {\n // Toggle the filters wrapper\n $('div#filter_options_wrapper').toggle();\n\n // Change class of the glyphicon (arrow right or down\n let arrow = $('span#filter_span_wrapper span.glyphicon');\n if ($(arrow).hasClass('glyphicon-chevron-right')) {\n // Switch to down arrow\n $(arrow).removeClass('glyphicon-chevron-right');\n $(arrow).addClass('glyphicon-chevron-down');\n } else {\n // Switch to down right\n $(arrow).removeClass('glyphicon-chevron-down');\n $(arrow).addClass('glyphicon-chevron-right');\n }\n });\n\n /*\n\t * Search if search button was clicked\n\t */\n $('button#frontline_store_overview_search_button').click(function(){\n refreshFrontlineStoreListItems();\n });\n\n /*\n\t * Search if enter key in the search field\n\t */\n $('div#frontline_store_right_side_menu_wrapper input#frontline_store_overview_search_input').keyup(function(e) {\n let key = e.which;\n let searchInput = $('input#frontline_store_overview_search_input');\n\n // Refresh list if enter was pressed or the search field is empty\n if (key === 13 || searchInput.val() === '') {\n refreshFrontlineStoreListItems();\n }\n });\n\n /*\n * Show the frontlineStore that was clicked on\n */\n $(document).on('click', 'div#frontline_store_right_side_menu_wrapper .list-group-item', function() {\n if($(this).is('li')) {\n return;\n }\n let frontlineStoreId = $(this).attr('id');\n getFrontlineStoreInfo(frontlineStoreId);\n });\n\n /*\n * Refresh list if checkbox is changed\n */\n $(document).on('click', 'div#frontline_store_right_side_menu_wrapper input[name=\"display_deactivated\"]', function() {\n refreshFrontlineStoreListItems();\n });\n\n /*\n * Change status for the frontlineStore\n */\n $(document).on('click', 'div#frontline_store_info_wrapper button#btn_change_availability', function() {\n let frontlineStoreId = $('div#frontline_store_info_wrapper input#frontline_store_id').val();\n let currentStoreStatus = $('button#btn_change_availability').val();\n changeAvailability(frontlineStoreId, currentStoreStatus);\n refreshFrontlineStoreListItems();\n });\n\n function refreshFrontlineStoreListItems() {\n if (ajaxLocked === true) {\n return;\n }\n ajaxLocked = true;\n let displayDeactivated = 0;\n\n if ($('input[name=\"display_deactivated\"]').is(':checked')) {\n displayDeactivated = 1;\n }\n\n let searchInput = $('input#frontline_store_overview_search_input').val();\n\n $.ajax({\n type: 'GET',\n url: ajaxPathDisplaySearchResult,\n data: {\n display_deactivated: displayDeactivated,\n search_string: searchInput\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#frontline_store_list_wrapper').html(data.html);\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function() {\n ajaxLocked = false;\n });\n }\n\n function getFrontlineStoreInfo(frontlineStoreId) {\n if (ajaxLocked === true) {\n return;\n }\n ajaxLocked = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetFrontlineStoreInfo,\n data: {\n frontline_store_id: frontlineStoreId\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#frontline_store_info_wrapper').html(data.html);\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function() {\n ajaxLocked = false;\n });\n }\n\n function changeAvailability(frontlineStoreId, currentStoreStatus) {\n if (ajaxLocked === true) {\n return;\n }\n\n $.ajax({\n type: 'PUT',\n url: ajaxPathSetFrontlineStoreAvailability,\n data: {\n frontline_store_id: frontlineStoreId,\n current_frontline_store_status: currentStoreStatus\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#frontline_store_info_wrapper div#button_availability').html(data.html);\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n});","$(document).ready(function () {\n\n $(document).on('click', 'form#frontline_store_pick_up_time_form input.unit-of-time', function () {\n renameInputGroupAddonAndChangePlaceholder($(this));\n toggleMaximumInput($(this));\n });\n\n $(document).on('change', 'form#frontline_store_pick_up_time_form div.minimum-time-wrapper input.minimum-time', function () {\n let unitOfTime = $(this).closest('div.frontline-store-form-group').find('input.unit-of-time:checked').val();\n if (unitOfTime === 'days') {\n addDaysToMaximumInput($(this));\n }\n });\n\n function renameInputGroupAddonAndChangePlaceholder(clickedInputElement) {\n let unitOfTimeAddon = clickedInputElement.closest('div.frontline-store-form-group').find('span.unit-of-time-addon');\n let input = clickedInputElement.closest('div.frontline-store-form-group').find('input:not(.unit-of-time)');\n if (clickedInputElement.val() === 'minutes') {\n input.attr('placeholder', 'minutter');\n unitOfTimeAddon.html('minutter');\n } else if (clickedInputElement.val() === 'days') {\n input.attr('placeholder', 'dager');\n unitOfTimeAddon.html('dager');\n }\n }\n\n // Hide the maximum time input when days is chosen. Show it when minutes is chosen.\n function toggleMaximumInput(clickedInputElement) {\n let maximumTimeWrapper = clickedInputElement.closest('div.frontline-store-form-group').find('div.maximum-time-wrapper');\n let label = clickedInputElement.closest('div.frontline-store-form-group').find('label.from-to-label');\n let unitOfTime = clickedInputElement.val();\n if (unitOfTime === 'minutes') {\n maximumTimeWrapper.css('visibility', 'visible');\n label.css('visibility', 'visible');\n } else if (unitOfTime === 'days') {\n maximumTimeWrapper.css('visibility', 'hidden');\n label.css('visibility', 'hidden');\n }\n }\n\n // When the minimum time is changed, add the minimum time to the maximum time input if day is selected as unit of time.\n function addDaysToMaximumInput(minimumTimeInputElement) {\n let dayValue = minimumTimeInputElement.val();\n console.log(dayValue);\n let maximumTimeInput = minimumTimeInputElement.closest('div.frontline-store-form-group').find('input.maximum-time');\n maximumTimeInput.val(dayValue);\n }\n\n\n});","//Color picker documentation: https://seballot.github.io/spectrum/#toc0\n\n$(document).ready(function () {\n const ajaxPathSaveColorsToFile = '/action/customer-settings/save-colors-to-file';\n const ajaxPathSetPreviewSession = '/action/customer-settings/set-preview-session';\n const ajaxPathUnsetPreviewSession = '/action/customer-settings/unset-preview-session';\n const ajaxPathDeleteColors = '/action/customer-settings/delete-colors';\n const ajaxPathSaveFonts = '/action/customer-settings/save-fonts';\n const ajaxPathDeleteFonts = '/action/customer-settings/delete-fonts';\n const ajaxPathCloseShop = '/action/customer-settings/close-shop';\n const ajaxPathSaveClosedShopCustomText = '/action/customer-settings/save-closed-shop-custom-text';\n const ajaxPathSaveText = '/action/customer-settings/save-text';\n const ajaxPathSaveLoginSettings = '/action/customer-settings/save-customer-settings';\n let modalParentElementInDOM = $('div#main-container');\n let modalTitle = '';\n let modalMessage = '';\n let modalButtonText = 'Lukk';\n let modalAlertType = '';\n let ajaxLock = false;\n\n $('[data-toggle=\"popover\"]').popover({\n html: true,\n });\n\n if ($('div#color_settings_wrapper input.color-picker').length) {\n $(\".color-picker\").spectrum({\n type: \"text\",\n showInitial: true,\n showInput: true,\n locale: \"fr\"\n });\n }\n\n if ($('div#font_settings_wrapper input.font-picker').length) {\n $('div#font_settings_wrapper input.font-picker').fontselect();\n }\n\n toggleAmountSortExtraProductsFormGroup();\n toggleTipOptions();\n\n\n $(document).on('click', 'div#font_settings_wrapper button#save_fonts', function () {\n let font = $('div#font_settings_wrapper input.font-picker').val().replace(/\\+/g, ' ');\n\n saveFonts(font);\n });\n\n $(document).on('click', 'div#font_settings_wrapper button#delete_fonts', function () {\n if (confirm(\"Er du sikker på at du vil slette egendefinert skrifttype? Standard skrifttype vil gjelde for nettsiden.\")) {\n deleteFonts();\n }\n return false;\n });\n\n\n\n $(document).on('click', 'div#color_settings_wrapper button#delete_colors', function () {\n if (confirm(\"Er du sikker på at du vil slette dine egendefinerte farger? Standard farger vil gjelde for nettsiden.\")) {\n deleteColors();\n }\n return false;\n\n });\n\n $(document).on('click', 'div#color_settings_wrapper button#save_colors', function () {\n let formData = new FormData();\n\n //append each color picker to a formData with ID (config_name) as key and color as value\n $('div#color_settings_wrapper .color-picker').each(function() {\n let color = $(this).spectrum(\"get\");\n formData.append(($(this).attr('id')), color)\n });\n\n saveColors(formData);\n });\n\n $(document).on('click', 'div#layout_settings_wrapper button#save_layout_settings', function () {\n let formWrapperId = $(this).closest('div.form-horizontal').attr('id');\n saveCustomerSettings(formWrapperId);\n });\n\n $(document).on('click', 'div#general_settings_wrapper button#save_general_settings', function () {\n let formWrapperId = $(this).closest('div.form-horizontal').attr('id');\n saveCustomerSettings(formWrapperId);\n });\n\n $(document).on('click', 'div#login_settings_wrapper button#save_login_settings', function () {\n let formWrapperId = $(this).closest('div.form-horizontal').attr('id');\n saveCustomerSettings(formWrapperId);\n });\n\n $(document).on('click', 'div#production_order_columns button#save_production_order_settings', function () {\n saveProductionOrderCustomerSettings();\n });\n\n $(document).on('click', 'div#customer_settings_input_wrapper button#save_customer_settings_input_button', function () {\n saveCustomerSettingsInput();\n });\n\n $(document).on('click', 'div#color_settings_wrapper a#open_color_preview', function () {\n let formData = new FormData();\n\n //append each color picker to a formData with ID (config_name) as key and color as value\n $('div#color_settings_wrapper .color-picker').each(function() {\n let color = $(this).spectrum(\"get\");\n formData.append(($(this).attr('id')), color)\n });\n\n setPreviewSession(formData);\n });\n\n $(document).on('click', 'div#font_settings_wrapper a#open_font_preview', function () {\n let formData = new FormData();\n\n //append font to formData\n let font = $('div#font_settings_wrapper input.font-picker').val().replace(/\\+/g, ' ');\n formData.append('font', font);\n\n setPreviewSession(formData);\n });\n\n $(document).on('click', 'div#background_picture_wrapper a#open_background_image_preview', function () {\n let fileInput = $('input#background_image');\n if (fileInput[0].files.length === 0) {\n console.log('ingen fil');\n return;\n //alert(\"Vennligst velg et bilde før du åpner forhåndsvisning\");\n }\n\n let formData = new FormData();\n\n //append file to formData\n let fileData = fileInput.prop('files')[0];\n formData.append('file', fileData);\n\n setPreviewSession(formData);\n });\n\n $(document).on('click', 'div.container div.form-horizontal a.unset_preview_session', function () {\n unsetPreviewSession();\n });\n\n\n //Hide or show form group where user decides the amount of extra products that is needed on a products before they are being categorized by product groups\n $(document).on('change', 'div#general_settings_wrapper input#extra_products_sort_by_product_groups', function () {\n toggleAmountSortExtraProductsFormGroup();\n });\n\n //Hide or show form group where user decides the amount of extra products that is needed on a products before they are being categorized by product groups\n $(document).on('change', 'div#general_settings_wrapper input#tip_active', function () {\n toggleTipOptions();\n });\n\n //Close or open shop\n $(document).on('click', 'div#close_shop_wrapper button#close_shop_button', function () {\n let closeShopValue = $('div#close_shop_wrapper input#close_shop').val();\n let confirmMessage = '';\n\n if (closeShopValue === '1') {\n confirmMessage = 'Er du sikker på at du vil stenge nettbutikken? Kunder kan ikke legge varer i handlekurven eller legge inn nye bestillinger. Du kan når som helst åpne igjen.';\n }\n else if (closeShopValue === '0') {\n confirmMessage = 'Er du sikker på at du vil åpne nettbutikken? Kunder vil da kunne legge varer i handlekurven og legge inn nye bestillinger. Du kan når som helst stenge igjen.';\n }\n else {\n return;\n }\n\n if (confirm(confirmMessage)) {\n closeOrOpenShop();\n }\n });\n\n//Save custom text for closed shop\n $(document).on('click', 'div#close_shop_wrapper button#save_closed_shop_custom_text', function () {\n saveClosedShopCustomText();\n });\n\n function toggleAmountSortExtraProductsFormGroup() {\n let amountFormGroup = $('div#amount_sort_extra_products_form_group');\n let checkboxFormGroup = $('div#general_settings_wrapper input#extra_products_sort_by_product_groups');\n\n if (amountFormGroup.length) {\n if(checkboxFormGroup.is(':checked')) {\n amountFormGroup.show();\n } else {\n amountFormGroup.hide();\n }\n }\n }\n\n function toggleTipOptions() {\n let tipSettingsFormGroup = $('div#tip_settings_form_group');\n let checkbox = $('div#general_settings_wrapper input#tip_active');\n\n if (tipSettingsFormGroup.length) {\n if(checkbox.is(':checked')) {\n tipSettingsFormGroup.show();\n } else {\n tipSettingsFormGroup.hide();\n }\n }\n }\n\n function saveCustomerSettingsInput() {\n if (ajaxLock) {\n return;\n }\n let inputValue = $('div#customer_settings_input_wrapper input#customer_settings_input').val();\n let settingType = $('div#customer_settings_input_wrapper input#setting_type').val();\n\n ajaxLock = true;\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveText,\n data: {\n 'text': inputValue,\n 'setting_type': settingType\n },\n }).success(function (data) {\n prependToAlert('div#customer_settings_input_wrapper', null, 'success', ' Lagret!', 'div#main-container');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'info';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function saveFonts(font) {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveFonts,\n data: {\n font: font,\n },\n }).success(function (data) {\n prependToAlert('div#font_settings_wrapper', '', 'success', ' Skrifttype ble lagret!', 'div#main-container');\n $(window).scrollTop(0);\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function deleteFonts() {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n let customerSettingsId = $('div#font_settings_wrapper input#customer_settings_id').val();\n\n $.ajax({\n type: 'POST',\n url: ajaxPathDeleteFonts,\n data: {\n delete_font: true,\n customer_settings_id: customerSettingsId,\n },\n }).success(function (data) {\n prependToAlert('div#font_settings_wrapper', '', 'success', ' Skrifttype ble slettet!', 'div#main-container');\n $(window).scrollTop(0);\n\n $('div#font_settings_wrapper div#delete_font_wrapper').hide();\n $('div#font_settings_wrapper div#current_font_wrapper').hide();\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function saveColors(formData) {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveColorsToFile,\n data: formData,\n processData: false,\n contentType: false,\n }).success(function (data) {\n prependToAlert('div#color_settings_wrapper', '', 'success', ' Egendefinerte farger ble lagret!', 'div#main-container');\n $(window).scrollTop(0);\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function setPreviewSession(formData) {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathSetPreviewSession,\n data: formData,\n processData: false,\n contentType: false,\n }).success(function (data) {\n let win = window.open('/', '_blank');\n if (win) {\n //Browser has allowed it to be opened\n win.focus();\n } else {\n //Browser has blocked it\n alert('Please allow popups for this website');\n }\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function unsetPreviewSession() {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathUnsetPreviewSession,\n data: {\n 'unset_preview_session': true,\n },\n }).success(function (data) {\n location.reload();\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function deleteColors() {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathDeleteColors,\n data: {\n 'delete_colors': true,\n },\n }).success(function (data) {\n prependToAlert('div#color_settings_wrapper', '', 'success', ' Dine farger ble slettet!', 'div#main-container');\n $(window).scrollTop(0);\n\n $('div#color_settings_wrapper .color-picker').each(function() {\n $(this).spectrum(\"set\", \"\");\n\n });\n\n $('div#color_settings_wrapper div#delete_colors_wrapper').hide();\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function closeOrOpenShop() {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n\n let closedShop = $('div#close_shop_wrapper input#close_shop').val();\n\n $.ajax({\n type: 'POST',\n url: ajaxPathCloseShop,\n data: {\n 'closed_shop': closedShop\n },\n }).success(function (data) {\n let closedShopCustomText = $('div#close_shop_wrapper input#closed_shop_custom_text').val();\n let closeShopButton = $('div#close_shop_wrapper button#close_shop_button');\n let alertTitle = '';\n let alertMessage = '';\n\n if (closedShop === '1') {\n closeShopButton.removeClass('shop-is-currently-open');\n closeShopButton.addClass('shop-is-currently-closed');\n closeShopButton.html(' Åpne salg');\n $('div#close_shop_wrapper input#close_shop').val(0);\n alertTitle = 'Salget ble stengt!';\n alertMessage = 'Kunder i nettbutikken får IKKE lov til å legge varer i handlekurven eller legge inn nye bestillinger. OBS: Må åpnes manuelt.';\n\n } else {\n closeShopButton.removeClass('shop-is-currently-closed');\n closeShopButton.addClass('shop-is-currently-open');\n closeShopButton.html(' Steng salg');\n $('div#close_shop_wrapper input#close_shop').val(1);\n alertTitle = 'Salget ble åpnet!';\n alertMessage = 'Kunder i nettbutikken kan nå legge varer i handlekurv og legge inn nye bestillinger igjen.';\n }\n\n // Add success alert after shop sale status has changed\n prependToAlert('div#stop_sale', alertMessage, 'success', ' ' + alertTitle, 'div#customer_settings_wrapper div.tab-content');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function saveClosedShopCustomText() {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n\n let closedShopCustomText = $('div#close_shop_wrapper input#closed_shop_custom_text').val();\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveClosedShopCustomText,\n data: {\n 'closed_shop_custom_text': closedShopCustomText\n },\n }).success(function (data) {\n prependToAlert('div#close_shop_wrapper', '', 'success', ' Teksten ble lagret!', 'div#stop_sale');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function saveCustomerSettings(formWrapperId) {\n if (ajaxLock ) {\n return;\n }\n\n let settingType = $('div#' + formWrapperId + ' input#setting_type').val();\n let customerSettings = [];\n\n // Loop through all elements and create a customer setting object for each\n $('div#' + formWrapperId + ' input[name=\"customer_settings[]\"]').each(function() {\n let value = '';\n if ($(this).attr('type') === 'checkbox') {\n if ($(this).is(\":checked\")) {\n value = '1';\n } else {\n value = '0';\n }\n } else {\n value = $(this).val();\n }\n\n let customerSetting = {\n 'name' : $(this).attr('id'),\n 'value' : value,\n 'setting_type' : settingType\n };\n customerSettings.push(customerSetting);\n });\n\n // Add value from radio buttons to add product_layout\n if (formWrapperId === 'layout_settings_wrapper' && $('div#product_layout_form_group').length) {\n let value = $(\"div#product_layout_form_group input[type='radio']:checked\").val();\n customerSettings.push({\n 'name' : 'product_layout',\n 'value' : value,\n 'setting_type' : settingType\n });\n }\n // Add value from radio buttons to add product_layout\n if (formWrapperId === 'layout_settings_wrapper' && $('div#restaurant_table_alternative_name_form_group').length) {\n let value = $(\"div#restaurant_table_alternative_name_form_group input[type='radio']:checked\").val();\n customerSettings.push({\n 'name' : 'restaurant_table_alternative_name',\n 'value' : value,\n 'setting_type' : settingType\n });\n }\n\n ajaxLock = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveLoginSettings,\n data: {\n 'customer_settings': customerSettings\n },\n }).success(function (data) {\n prependToAlert('div#' + formWrapperId , null, 'success', ' Lagret!', 'div#main-container');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n function saveProductionOrderCustomerSettings() {\n if (ajaxLock ) {\n return;\n }\n\n let settingType = $('div#production_order_settings_wrapper input[name=\"setting-type\"]').val();\n const columns = [];\n const customerSettings = [];\n\n $('div#production_order_columns_settings_wrapper input.production_order_columns_input').each(function() {\n if ($(this).is(\":checked\")) {\n columns.push($(this).attr('name'));\n }\n });\n\n if(!columns.length) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = 'Du kan ikke ha en tabell uten kolonner';\n\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n return;\n }\n\n $('div#production_order_settings_wrapper input[name=\"production_order_customer_settings[]\"]').each(function() {\n let value = '';\n if ($(this).attr('type') === 'checkbox') {\n if ($(this).is(\":checked\")) {\n value = '1';\n } else {\n value = '0';\n }\n } else {\n value = $(this).val();\n }\n\n const customerSetting = {\n 'name' : $(this).attr('id'),\n 'value' : value,\n 'setting_type' : settingType\n };\n customerSettings.push(customerSetting);\n });\n\n customerSettings.push({\n 'name' : 'production_order_columns',\n 'value' : JSON.stringify(columns),\n 'setting_type' : settingType\n });\n\n ajaxLock = true;\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveLoginSettings,\n data: {\n 'customer_settings': customerSettings\n },\n }).success(function (data) {\n prependToAlert('div#production_order_settings_wrapper' , null, 'success', ' Lagret!', 'div#main-container');\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLock = false;\n });\n }\n\n $(document).on('change', 'div#production_order_columns_settings_wrapper #production_order_columns_select_all', function () {\n const value = $(this).is(\":checked\");\n $('div#production_order_columns_settings_wrapper input.production_order_columns_input').prop('checked', value);\n\n return false;\n });\n\n $(document).on('change', 'div#production_order_columns_settings_wrapper .production_order_columns_input', function () {\n const countCheckedColumns = $('div#production_order_columns_settings_wrapper .production_order_columns_input:checked').length;\n const countColumns = $('div#production_order_columns_settings_wrapper #production_order_columns_select_all').data('count-columns');\n\n const value = countCheckedColumns == countColumns;\n $('div#production_order_columns_settings_wrapper #production_order_columns_select_all').prop('checked', value);\n\n return false;\n });\n});\n\n","\n$(document).ready(function () {\n let ajaxLocked = false;\n\n let modalParentElementInDOM = $('div#main-container');\n let modalTitle = '';\n let modalMessage = '';\n let modalButtonText = 'Lukk';\n let modalAlertType = '';\n let menuWrapper = $('div#category_menu_list_wrapper');\n let menuHeight = menuWrapper.height();\n\n //Check if new menu exists\n if ($('nav.category-menu-list').length) {\n\n let menuOffsetTop = menuWrapper.offset().top;\n let navbarElement = $('header.navbar-fixed-top');\n //let navbarHeight = navbarElement.height;\n let navbarHeight = navbarElement.css('position') === 'relative' ? 0 : navbarElement.height();\n let scrollWindow = $('div#crumbs_holder');\n let scrollContent = $('div#crumbs_holder ul');\n let subScrollWindow = $('div#sub_crumbs_holder');\n let subScrollContent = $('div#sub_crumbs_holder ul');\n\n //Stick menu to the top of site if user scrolls below it\n $(window).scroll(function () {\n if ($(window).scrollTop() > menuOffsetTop - navbarHeight) {\n toggleFixed();\n }\n\n if ($(window).scrollTop() < menuOffsetTop - navbarHeight) {\n removeFixed();\n }\n });\n\n\n //Adjust width of menu if window is resized\n $(window).resize(function () {\n adjustFixedWidth();\n\n //Hide buttons and arrows if window is bigger than the inner (scrolling) div\n if (scrollContent.width() <= scrollWindow.outerWidth()) {\n scrollWindow.removeClass('grab');\n hideScrollButtons();\n }\n\n //Show buttons and arrows if window is bigger than the inner (scrolling) div\n if (scrollContent.width() > scrollWindow.outerWidth()) {\n scrollWindow.addClass('grab');\n showScrollButtons();\n\n //Scroll is not all left\n if (scrollWindow.scrollLeft() > 0) {\n arrowInButton('left', 'pointer', false);\n }\n\n //Scroll is not all to the right\n if (scrollWindow.scrollLeft() < scrollContent.get(0).scrollWidth - scrollWindow.outerWidth()) {\n arrowInButton('right', 'pointer', false);\n }\n }\n\n //(Sub menu) Hide arrows if window is bigger than the inner (scrolling) div\n if (subScrollContent.width() <= subScrollWindow.outerWidth()) {\n subScrollWindow.removeClass('grab');\n hideScrollButtons(true);\n }\n\n //(Sub menu) Show buttons and arrows if window is bigger than the inner (scrolling) div\n if (subScrollContent.width() > subScrollWindow.outerWidth()) {\n subScrollWindow.addClass('grab');\n showScrollButtons(true);\n\n //Scroll is not all left\n if (subScrollWindow.scrollLeft() > 0) {\n arrowInButton('left', 'pointer', false, true);\n }\n\n //Scroll is not all to the right\n if (subScrollWindow.scrollLeft() < subScrollContent.get(0).scrollWidth - subScrollWindow.outerWidth()) {\n arrowInButton('right', 'pointer', false, true);\n }\n }\n\n showScrollWithInternetExplorer();\n });\n\n\n // Main menu ---------------------\n\n //Scroll to active category\n if ($('div#crumbs_holder li.active').length) {\n let scrollToElement = $('div#crumbs_holder li.active');\n scrollToActive(scrollWindow, scrollToElement, scrollContent);\n }\n\n //Show add cursor:grab if window is bigger than the inner (scrolling) div\n if (scrollContent.width() > scrollWindow.outerWidth()) {\n scrollWindow.addClass('grab');\n }\n\n //Hide the two scrolling buttons if window is bigger than the inner (scrolling) div\n if (scrollContent.width() <= scrollWindow.outerWidth()) {\n scrollWindow.removeClass('grab');\n hideScrollButtons();\n }\n\n //Scroll is all to left\n if (scrollWindow.scrollLeft() === 0) {\n arrowInButton('left', 'default', true);\n }\n\n //Scroll is all to right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (scrollWindow.scrollLeft() > scrollContent.get(0).scrollWidth - scrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'default', true);\n }\n\n //Scroll on main categories is activated\n $(\"div#crumbs_holder\").on('scroll', function () {\n\n //Scroll is all to the left\n if (scrollWindow.scrollLeft() === 0) {\n arrowInButton('left', 'default', true);\n }\n\n //Scroll is not all left\n if (scrollWindow.scrollLeft() > 0) {\n arrowInButton('left', 'pointer', false);\n }\n\n //Scroll is all to the right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (scrollWindow.scrollLeft() > scrollContent.get(0).scrollWidth - scrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'default', true);\n }\n\n //Scroll is not all to the right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (scrollWindow.scrollLeft() < scrollContent.get(0).scrollWidth - scrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'pointer', false);\n }\n });\n\n //Sub category menu --------------\n //Check if sub menu exists\n if ($('nav.sub-category-menu-list').length) {\n\n //Show buttons and arrows if window is bigger than the inner (scrolling) div\n if (subScrollContent.width() > subScrollWindow.outerWidth()) {\n subScrollWindow.addClass('grab');\n }\n\n //Hide arrows if window is bigger than the inner (scrolling) div\n if (subScrollContent.width() <= subScrollWindow.outerWidth()) {\n subScrollWindow.removeClass('grab');\n hideScrollButtons(true)\n }\n\n //Scroll is all to left\n if (subScrollWindow.scrollLeft() === 0) {\n arrowInButton('left', 'default', true, true);\n }\n\n //Scroll is all to right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (subScrollWindow.scrollLeft() > subScrollContent.get(0).scrollWidth - subScrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'default', true, true);\n }\n\n\n if ($('div#sub_crumbs_holder li.active').length) {\n let scrollToId = $('div#sub_crumbs_holder li.active');\n let parentElementId = $('div#sub_crumbs_holder');\n scrollToActive(parentElementId, scrollToId, subScrollContent);\n }\n\n //Scroll on sub-categories is activated\n $(\"div#sub_crumbs_holder\").on('scroll', function () {\n\n //Scroll is all to left\n if (subScrollWindow.scrollLeft() === 0) {\n arrowInButton('left', 'default', true, true)\n }\n\n //Scroll is not all to the left\n if (subScrollWindow.scrollLeft() > 0) {\n arrowInButton('left', 'pointer', false, true);\n }\n\n //Scroll is all to the right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (subScrollWindow.scrollLeft() > subScrollContent.get(0).scrollWidth - subScrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'default', true, true);\n }\n\n //Scroll is not all to the right (15px is added because you cant get all to the right when you scroll with finger on mobile)\n if (subScrollWindow.scrollLeft() < subScrollContent.get(0).scrollWidth - subScrollWindow.outerWidth() - 15) {\n arrowInButton('right', 'pointer', false, true);\n }\n });\n }\n\n showScrollWithInternetExplorer();\n\n //Scroll left if left scroll button is clicked\n $(document).on('click', 'div#crumbs_control_holder div#slide_left', function () {\n let pos = $('div#crumbs_holder').scrollLeft();\n $(\"div#crumbs_holder\").animate({scrollLeft: pos - 150}, 400);\n });\n\n //Scroll right if right scroll button is clicked\n $(document).on('click', 'div#crumbs_control_holder div#slide_right', function () {\n let pos = $('div#crumbs_holder').scrollLeft();\n $(\"div#crumbs_holder\").animate({scrollLeft: pos + 150}, 400);\n });\n\n //Scroll left if left scroll button is clicked in sub-menu\n $(document).on('click', 'div#sub_crumbs_control_holder div#sub_slide_left', function () {\n let pos = $('div#sub_crumbs_holder').scrollLeft();\n $(\"div#sub_crumbs_holder\").animate({scrollLeft: pos - 150}, 400);\n });\n\n //Scroll right if right scroll button is clicked in sub-menu\n $(document).on('click', 'div#sub_crumbs_control_holder div#sub_slide_right', function () {\n let pos = $('div#sub_crumbs_holder').scrollLeft();\n $(\"div#sub_crumbs_holder\").animate({scrollLeft: pos + 150}, 400);\n });\n\n\n //Draggable scroll -----------\n\n let clicked = false;\n let clickX = 0;\n let left = 0;\n\n //------Main menu\n\n $(document).on('mousedown', 'div#category_menu_list_wrapper div#crumbs_holder', function (e) {\n if (scrollContent.width() > scrollWindow.outerWidth()) {\n scrollWindow.addClass('grabbing');\n clicked = true;\n clickX = e.pageX;\n left = $(this).scrollLeft();\n }\n });\n\n $(document).on('mousemove', 'div#category_menu_list_wrapper div#crumbs_holder', function (e) {\n if (clicked === true) {\n updateScrollPos(e);\n }\n });\n\n $(document).on('mouseleave', 'div#category_menu_list_wrapper div#crumbs_holder', function () {\n clicked = false;\n scrollWindow.removeClass('grabbing');\n //scrollWindow.css('cursor', 'grab');\n });\n\n $(document).on('mouseup', 'div#category_menu_list_wrapper div#crumbs_holder', function () {\n clicked = false;\n scrollWindow.removeClass('grabbing');\n clickX = 0;\n left = 0;\n });\n\n\n //-----Sub menu\n\n $(document).on('mousedown', 'div#category_menu_list_wrapper div#sub_crumbs_holder', function (e) {\n if (subScrollContent.width() > subScrollWindow.outerWidth()) {\n subScrollWindow.addClass('grabbing');\n clicked = true;\n clickX = e.pageX;\n left = $(this).scrollLeft();\n }\n });\n\n $(document).on('mousemove', 'div#category_menu_list_wrapper div#sub_crumbs_holder', function (e) {\n updateScrollPos(e, true);\n });\n\n $(document).on('mouseleave', 'div#category_menu_list_wrapper div#sub_crumbs_holder', function () {\n clicked = false;\n });\n\n $(document).on('mouseup', 'div#category_menu_list_wrapper div#sub_crumbs_holder', function () {\n clicked = false;\n subScrollWindow.removeClass('grabbing');\n //scrollWindow.css('cursor', 'grab');\n clickX = 0;\n left = 0;\n });\n\n function updateScrollPos (e, subMenu = false) {\n if (clicked === true) {\n if (!subMenu) {\n scrollWindow.scrollLeft(left + (clickX - e.pageX));\n } else {\n subScrollWindow.scrollLeft(left + (clickX - e.pageX));\n }\n }\n }\n }\n\n\n //Scroll to the category that is active\n function scrollToActive(scrollElement, scrollToElement, scrollContent) {\n let right = scrollContent.get(0).scrollWidth - scrollElement.outerWidth();\n scrollElement.scrollLeft(right);\n scrollElement.animate({scrollLeft: scrollToElement.get(0).offsetLeft - (scrollElement.outerWidth() / 3)}, 'fast');\n //let leftOffset = scrollToElement.get(0).offsetLeft - (scrollElement.outerWidth() / 3);\n //scrollElement.scrollLeft(leftOffset);\n }\n\n function toggleFixed() {\n adjustFixedWidth();\n adjustFixedHeight();\n $('div#main-container').css('padding-top', menuHeight);\n $(\"div#category_menu_list_wrapper\").css('position', 'fixed');\n }\n\n function adjustFixedHeight() {\n let headerElement = $('header.navbar');\n let headerHeight = headerElement.height();\n\n if (headerElement.css('position') === 'relative') {\n headerHeight = 0;\n }\n\n $(\"div#category_menu_list_wrapper\").css('top', headerHeight);\n }\n\n function adjustFixedWidth() {\n let categoryMenu = $('div#category_menu_list_wrapper');\n let shopProductsColFrame = $(\".shop-products-col-frame\");\n\n if (shopProductsColFrame.length) {\n categoryMenu.css('width', shopProductsColFrame.outerWidth());\n } else {\n categoryMenu.css('width', categoryMenu.outerWidth());\n }\n }\n\n function removeFixed() {\n let categoryMenu = $('div#category_menu_list_wrapper');\n $('div#main-container').css('padding-top', '');\n categoryMenu.css('top', '');\n categoryMenu.css('width', '');\n categoryMenu.css('position', 'sticky');\n }\n\n function showScrollButtons(sub = false) {\n if (sub === false) {\n $('div#slide_right').show();\n $('div#slide_left').show();\n } else {\n $('div#sub_slide_right').show();\n $('div#sub_slide_left').show();\n }\n }\n\n function hideScrollButtons(sub = false) {\n if (sub === false) {\n $('div#slide_right').hide();\n $('div#slide_left').hide();\n } else {\n $('div#sub_slide_right').hide();\n $('div#sub_slide_left').hide();\n }\n }\n\n function arrowInButton(direction, cursorType, hide, sub = false) {\n let buttonElement = 'div#slide_' + direction;\n let glyphicon = 'span.glyphicon-chevron-' + direction;\n\n if (sub === true) {\n buttonElement = 'div#sub_slide_' + direction;\n glyphicon = 'span.glyphicon-chevron-' + direction;\n }\n\n if (hide === true) {\n $(buttonElement + ' ' + glyphicon).hide();\n } else {\n $(buttonElement + ' ' + glyphicon).show();\n }\n\n $(buttonElement).css('cursor', cursorType);\n }\n\n function showScrollWithInternetExplorer() {\n let isIE = browserIsInternetExplorer();\n\n if (isIE) {\n showScrollButtons();\n showScrollButtons(true);\n arrowInButton('left', 'pointer', false);\n arrowInButton('left', 'pointer', false);\n arrowInButton('left', 'pointer', false, true);\n arrowInButton('right', 'pointer', false, true);\n }\n }\n\n //Return true or false if browser is internet explorer or not\n function browserIsInternetExplorer() {\n let ua = window.navigator.userAgent;\n return /MSIE|Trident/.test(ua);\n }\n\n});","/*\n * International Telephone Input v17.0.0\n * https://github.com/jackocnr/intl-tel-input.git\n * Licensed under the MIT license\n */\n\n!function(a){\"object\"==typeof module&&module.exports?module.exports=a():window.intlTelInput=a()}(function(a){\"use strict\";return function(){function b(a,b){if(!(a instanceof b))throw new TypeError(\"Cannot call a class as a function\")}function c(a,b){for(var c=0;cthis.dialCodeMaxLen&&(this.dialCodeMaxLen=c.length),this.q.hasOwnProperty(c)||(this.q[c]=[]);for(var e=0;e-1})}else if(this.d.excludeCountries.length){var b=this.d.excludeCountries.map(function(a){return a.toLowerCase()});this.p=e.filter(function(a){return-1===b.indexOf(a.iso2)})}else this.p=e}},{key:\"_d0\",value:function(){for(var a=0;a\"),d+=\"
    \"),d+=\"\".concat(f.name,\"\"),d+=\"+\".concat(f.dialCode,\"\"),d+=\"\"}this.m.insertAdjacentHTML(\"beforeend\",d)}},{key:\"_h\",value:function(){var a=this.a.value,b=this._5(a),c=this._w(a),d=this.d,e=d.initialCountry,f=d.nationalMode,g=d.autoHideDialCode,h=d.separateDialCode;b&&!c?this._v(a):\"auto\"!==e&&(e?this._z(e.toLowerCase()):b&&c?this._z(\"us\"):(this.j=this.preferredCountries.length?this.preferredCountries[0].iso2:this.p[0].iso2,a||this._z(this.j)),a||f||g||h||(this.a.value=\"+\".concat(this.s.dialCode))),a&&this._u(a)}},{key:\"_i\",value:function(){this._j(),this.d.autoHideDialCode&&this._l(),this.d.allowDropdown&&this._i2(),this.hiddenInput&&this._i0()}},{key:\"_i0\",value:function(){var a=this;this._a14=function(){a.hiddenInput.value=a.getNumber()},this.a.form&&this.a.form.addEventListener(\"submit\",this._a14)}},{key:\"_i1\",value:function(){for(var a=this.a;a&&\"LABEL\"!==a.tagName;)a=a.parentNode;return a}},{key:\"_i2\",value:function(){var a=this;this._a9=function(b){a.m.classList.contains(\"iti__hide\")?a.a.focus():b.preventDefault()};var b=this._i1();b&&b.addEventListener(\"click\",this._a9),this._a10=function(){!a.m.classList.contains(\"iti__hide\")||a.a.disabled||a.a.readOnly||a._n()},this.selectedFlag.addEventListener(\"click\",this._a10),this._a11=function(b){a.m.classList.contains(\"iti__hide\")&&-1!==[\"ArrowUp\",\"Up\",\"ArrowDown\",\"Down\",\" \",\"Enter\"].indexOf(b.key)&&(b.preventDefault(),b.stopPropagation(),a._n()),\"Tab\"===b.key&&a._2()},this.k.addEventListener(\"keydown\",this._a11)}},{key:\"_i3\",value:function(){var a=this;this.d.utilsScript&&!window.intlTelInputUtils?window.intlTelInputGlobals.windowLoaded?window.intlTelInputGlobals.loadUtils(this.d.utilsScript):window.addEventListener(\"load\",function(){window.intlTelInputGlobals.loadUtils(a.d.utilsScript)}):this.i0(),\"auto\"===this.d.initialCountry?this._i4():this.h()}},{key:\"_i4\",value:function(){window.intlTelInputGlobals.autoCountry?this.handleAutoCountry():window.intlTelInputGlobals.startedLoadingAutoCountry||(window.intlTelInputGlobals.startedLoadingAutoCountry=!0,\"function\"==typeof this.d.geoIpLookup&&this.d.geoIpLookup(function(a){window.intlTelInputGlobals.autoCountry=a.toLowerCase(),setTimeout(function(){return m(\"handleAutoCountry\")})},function(){return m(\"rejectAutoCountryPromise\")}))}},{key:\"_j\",value:function(){var a=this;this._a12=function(){a._v(a.a.value)&&a._8()},this.a.addEventListener(\"keyup\",this._a12),this._a13=function(){setTimeout(a._a12)},this.a.addEventListener(\"cut\",this._a13),this.a.addEventListener(\"paste\",this._a13)}},{key:\"_j2\",value:function(a){var b=this.a.getAttribute(\"maxlength\");return b&&a.length>b?a.substr(0,b):a}},{key:\"_l\",value:function(){var a=this;this._a8=function(){a._l2()},this.a.form&&this.a.form.addEventListener(\"submit\",this._a8),this.a.addEventListener(\"blur\",this._a8)}},{key:\"_l2\",value:function(){if(\"+\"===this.a.value.charAt(0)){var a=this._m(this.a.value);a&&this.s.dialCode!==a||(this.a.value=\"\")}}},{key:\"_m\",value:function(a){return a.replace(/\\D/g,\"\")}},{key:\"_m2\",value:function(a){var b=document.createEvent(\"Event\");b.initEvent(a,!0,!0),this.a.dispatchEvent(b)}},{key:\"_n\",value:function(){this.m.classList.remove(\"iti__hide\"),this.selectedFlag.setAttribute(\"aria-expanded\",\"true\"),this._o(),this.b&&(this._x(this.b,!1),this._3(this.b,!0)),this._p(),this.u.classList.add(\"iti__arrow--up\"),this._m2(\"open:countrydropdown\")}},{key:\"_n2\",value:function(a,b,c){c&&!a.classList.contains(b)?a.classList.add(b):!c&&a.classList.contains(b)&&a.classList.remove(b)}},{key:\"_o\",value:function(){var a=this;if(this.d.dropdownContainer&&this.d.dropdownContainer.appendChild(this.dropdown),!this.g){var b=this.a.getBoundingClientRect(),c=window.pageYOffset||document.documentElement.scrollTop,d=b.top+c,e=this.m.offsetHeight,f=d+this.a.offsetHeight+ec;if(this._n2(this.m,\"iti__country-list--dropup\",!f&&g),this.d.dropdownContainer){var h=!f&&g?0:this.a.offsetHeight;this.dropdown.style.top=\"\".concat(d+h,\"px\"),this.dropdown.style.left=\"\".concat(b.left+document.body.scrollLeft,\"px\"),this._a4=function(){return a._2()},window.addEventListener(\"scroll\",this._a4)}}}},{key:\"_o2\",value:function(a){for(var b=a;b&&b!==this.m&&!b.classList.contains(\"iti__country\");)b=b.parentNode;return b===this.m?null:b}},{key:\"_p\",value:function(){var a=this;this._a0=function(b){var c=a._o2(b.target);c&&a._x(c,!1)},this.m.addEventListener(\"mouseover\",this._a0),this._a1=function(b){var c=a._o2(b.target);c&&a._1(c)},this.m.addEventListener(\"click\",this._a1);var b=!0;this._a2=function(){b||a._2(),b=!1},document.documentElement.addEventListener(\"click\",this._a2);var c=\"\",d=null;this._a3=function(b){b.preventDefault(),\"ArrowUp\"===b.key||\"Up\"===b.key||\"ArrowDown\"===b.key||\"Down\"===b.key?a._q(b.key):\"Enter\"===b.key?a._r():\"Escape\"===b.key?a._2():/^[a-zA-ZÀ-ÿа-яА-Я ]$/.test(b.key)&&(d&&clearTimeout(d),c+=b.key.toLowerCase(),a._s(c),d=setTimeout(function(){c=\"\"},1e3))},document.addEventListener(\"keydown\",this._a3)}},{key:\"_q\",value:function(a){var b=\"ArrowUp\"===a||\"Up\"===a?this.c.previousElementSibling:this.c.nextElementSibling;b&&(b.classList.contains(\"iti__divider\")&&(b=\"ArrowUp\"===a||\"Up\"===a?b.previousElementSibling:b.nextElementSibling),this._x(b,!0))}},{key:\"_r\",value:function(){this.c&&this._1(this.c)}},{key:\"_s\",value:function(a){for(var b=0;bg){b&&(k+=l);var m=e-h;c.scrollTop=k-m}}},{key:\"_4\",value:function(a,b){var c,d=this.a.value,e=\"+\".concat(a);if(\"+\"===d.charAt(0)){var f=this._5(d);c=f?d.replace(f,e):e}else{if(this.d.nationalMode||this.d.separateDialCode)return;if(d)c=e+d;else{if(!b&&this.d.autoHideDialCode)return;c=e}}this.a.value=c}},{key:\"_5\",value:function(a){var b=\"\";if(\"+\"===a.charAt(0))for(var c=\"\",d=0;d