{"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","ajax","errors","always","fetchAvailableTimes","daySelector","arrayId","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","append","html_time_selector","title","submitButtonFormGroup","validateCheckoutForm","getAlertHtml","insertBefore","placeOrderButton","prop","appendRow","formGroup","ajaxPathSetTipInShoppingCart","html_day_selector","max","disablePlussButtonIfMaxRowCountIsReached","amountOfTimeSelectors","activateDatepicker","removeCheckoutConfirmOrder","removeAttr","inputName","remove","validation","value","maxDate","pickadate","maxDays","Date","getTime","formatSubmit","close","container","selectYears","selectMonths","min","onSet","selectElement","dateNow","get","parentRow","setMinutes","setSeconds","setMilliseconds","timeNow","days","context","select","change","getDeliveryTimeAndSetDayInDatepicker","startOfDay","date","getUTCMonth","getUTCFullYear","getUTCDate","validateSelectedDeliveryTimeAgainstProductsInShoppingCart","set","customTipAmountInput","selectedDay","selectedTime","ajaxLocked","deliveryMethod","ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime","selected_day","delivery_method","selected_time","recentSelected","paymentMethodContainer","timeRow","employeeId","amountOfTimeSelectorsBefore","fetchAvailableDays","amountOfTimeSelectorsAfter","lastTimePointRow","last","clickedElement","setTip","formData","buttonClickedElement","customTipAmount","parseFloat","ajaxPathGetShoppingCartIconHtmlForNavbarMenu","processData","contentType","session_value","totalPriceOnShoppingCartHtml","ajaxPathGetRestaurantTables","checkRestaurantTableName","textElement","textLength","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","message","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-ada3548e62.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 }).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 onStart: function() {\n // set selected day when production order is changing\n getDeliveryTimeAndSetDayInDatepicker();\n },\n });\n }\n }\n activateDatepicker();\n\n function getDeliveryTimeAndSetDayInDatepicker() {\n if (!$('#changing_production_order').length || $('#changing_production_order').attr('data-delivery-time') <= 0) {\n return;\n }\n\n const deliveryTime = $('#changing_production_order').attr('data-delivery-time');\n const date = new Date(deliveryTime * 1000);\n const startOfDay = new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n 0, 0, 0\n );\n if (startOfDay > new Date()) {\n $('.datepicker-input').pickadate('picker').set('select', startOfDay);\n }\n }\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