{"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","shoppingCartIcon","always","errors","formData","buttonClickedElement","fetchAvailableTimes","daySelector","arrayId","printTimeSelectorIfDeliveryFormIsLoaded","mobileInputFields","querySelectorAll","i","len","intlTelInput","initialCountry","formatOnDisplay","separateDialCode","hiddenInput","utilsScript","autoPlaceholder","phoneNumberOnlyNumbers","onSubmitRegisterUserForm","token","submit","querySelector","iti","intlTelInputGlobals","getInstance","isValidNumber","preventDefault","session_value","sessionValue","ajaxPathUrl","daysFromNow","arguments","delivery","frontlineStoreId","ajaxPathGetPickUpTimes","frontline_store_id","appendTimeSelectorToRow","printLocationClosedIfPanelsWithOpeningHoursAreHidden","array_id","wrapperId","timeSelectorWrapper","row","append","remove","placeOrderButton","submitButtonFormGroup","title","insertBefore","validateCheckoutForm","prop","checkRestaurantTableName","fetchAvailableDays","appendRow","ajaxPathSetTipInShoppingCart","formGroup","html_day_selector","amountOfTimeSelectors","max","activateDatepicker","removeAttr","inputName","validation","value","formatSubmit","container","selectYears","pickadate","format","close","Date","maxDate","getTime","maxDays","min","onSet","selectElement","dateNow","setHours","setMilliseconds","timeNow","get","days","round","parentRow","setMinutes","change","Math","context","select","customTipAmountInput","removeCheckoutConfirmOrder","timeRow","selectedTime","selectedDay","ajaxLocked","deliveryMethod","ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime","selected_day","delivery_method","selected_time","recentSelected","paymentMethodContainer","validateSelectedDeliveryTimeAgainstProductsInShoppingCart","employeeId","whenContactPersonPickerChanges","amountOfTimeSelectorsBefore","amountOfTimeSelectorsAfter","last","lastTimePointRow","markSelectedPaymentMethod","setTip","clickedElement","FormData","customTipAmount","parseFloat","ajaxPathGetShoppingCartIconHtmlForNavbarMenu","text","totalPriceOnShoppingCartHtml","option","getRestaurantTableSelector","textLength","textElement","printShoppingCartIconInNavbarHeader","disablePlussButtonIfMaxRowCountIsReached","noteTextarea","ajaxPathEditConsumingLocation","content","displaySelectConsumingLocationModal","modal","processData","contentType","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","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","getAlertHtml","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","customContainer","customPlaceholder","dropdownContainer","excludeCountries","geoIpLookup","localizedCountries","nationalMode","onlyCountries","placeholderNumberType","preferredCountries","k","addEventListener","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","getNumber","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-4123bd4d78.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\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 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\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 window.onSubmitRegisterUserForm = function (token) {\n $(\"#registerUserForm\").submit();\n }\n\n // Disable form submit and display error message if invalid mobile number\n $(\"form#registerUserForm\").submit(function(e){\n var input = document.querySelector('form#registerUserForm #phone');\n var iti = window.intlTelInputGlobals.getInstance(input);\n iti.isValidNumber(); // etc\n\n if (!iti.isValidNumber()) {\n e.preventDefault(e);\n\n modalTitle = 'Ugyldig mobilnummer!';\n modalMessage = 'Ugyldig mobilnummer / Invalid mobile number';\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n\n return false;\n }\n });\n }\n\n // Disable input in tip modal when modal is hidden\n $(document).on('hide.bs.modal','div#custom_tip_modal', function () {\n let customTipAmountInput = $('div#custom_tip_modal input#custom_tip_amount');\n if (customTipAmountInput.length) {\n customTipAmountInput.prop('disabled', true);\n }\n });\n\n // Enable input in tip modal when modal is opened\n $(document).on('show.bs.modal','div#custom_tip_modal', function () {\n let customTipAmountInput = $('div#custom_tip_modal input#custom_tip_amount');\n if (customTipAmountInput.length) {\n customTipAmountInput.prop('disabled', false);\n }\n });\n\n\n $(document).on('click', 'div.shop-checkout-form-wrapper button#add_discount_code', function () {\n if ($('div.shop-checkout-form-wrapper input[name=\"discount_code\"]').val() !== '') {\n removeCheckoutConfirmOrder();\n }\n });\n\n\n $(document).on('change', 'div.timepoint_row .timebox', function () {\n //let selectedDay = $('div.timepoint_row select[name^=\"time_point_arr\"]').children(\"option:selected\").val();\n let timeRow = $(this).closest('div.timepoint_row');\n let selectedDay = $('select:eq(0)', timeRow).val();\n let selectedTime = $('select:eq(1)', timeRow).val();\n validateSelectedDeliveryTimeAgainstProductsInShoppingCart(selectedDay, selectedTime);\n });\n\n // Switch between delivery and pickup\n $('div.shop-checkout-form-wrapper .btn-group button').click(function () {\n // If the button is already active, do nothing\n if ($(this).hasClass('active')) {\n return;\n }\n\n if ($(this).attr('target') === 'shop_delivery_form_wrapper') {\n // Display delivery form\n $('div#shop_delivery_form_wrapper').show();\n $('div#shop_pick_up_form_wrapper').hide();\n\n // Switch active class\n // First remove active\n $('div.shop-checkout-form-wrapper .btn-group button').each(function () {\n $(this).removeClass('active');\n });\n $(this).addClass('active');\n } else if ($(this).attr('target') === 'shop_pick_up_form_wrapper') {\n // Display pick up form\n $('div#shop_delivery_form_wrapper').hide();\n $('div#shop_pick_up_form_wrapper').show();\n\n // Switch active class\n // First remove active\n $('div.shop-checkout-form-wrapper .btn-group button').each(function () {\n $(this).removeClass('active');\n });\n $(this).addClass('active');\n }\n\n\n });\n\n //Selects the contact person in the other textbox based on the id written on #employee_id text box\n $('#employee_id').on('input', function () {\n let employeeId = $('#employee_id').val();\n $('#contact_person_picker option[employee_id=\"'+employeeId+'\"]').prop('selected', true);\n whenContactPersonPickerChanges();\n });\n\n $(document).on('click', '#add_time_points', function () {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectorsBefore = $('.timepoint_row').length;\n if (amountOfTimeSelectorsBefore < max) {\n fetchAvailableDays(amountOfTimeSelectorsBefore,true);\n }\n\n let amountOfTimeSelectorsAfter = $('.timepoint_row').length;\n if (amountOfTimeSelectorsAfter <= 1) {\n $('#remove_time_points').attr('disabled', true);\n }\n\n });\n\n $(document).on('click', '#remove_time_points', function () {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectorsBefore = $('.timepoint_row').length;\n if (amountOfTimeSelectorsBefore < 2 ){\n return;\n }\n\n let lastTimePointRow = $('.timepoint_row');\n lastTimePointRow.prev('div.clearfix').last().remove();\n lastTimePointRow.last().remove();\n\n let amountOfTimeSelectorsAfter = $('.timepoint_row').length;\n if (amountOfTimeSelectorsAfter < max) {\n $('button#add_time_points').attr('disabled', false);\n }\n\n if (amountOfTimeSelectorsAfter === 1) {\n $('button#remove_time_points').attr('disabled', true);\n }\n });\n\n\n $(document).on('change', 'input[name=\"payment_method\"]', function () {\n markSelectedPaymentMethod($(this));\n });\n\n $(document).on('click', \"div.shop-checkout-form-wrapper div.tip-panel button:not('.optional-tip-button'), div.shop-checkout-form-wrapper div#custom_tip_modal button#add_custom_tip\", function () {\n removeCheckoutConfirmOrder();\n setTip($(this));\n });\n\n\n $('input[name=\"payment_method\"]').click(function () {\n if ($(this).val() === 'frontline_invoice')\n {\n $('div#add_new_delivery_time_form_group').show();\n $('button#add_time_points').show();\n $('button#remove_time_points').show();\n $('.timepoint_row').each(function( index ) {\n if (index !== 0)\n $(this).show();\n });\n }\n else {\n $('div#add_new_delivery_time_form_group').hide();\n $('.timepoint_row').each(function( index ) {\n if (index !== 0) {\n $(this).hide();\n }\n });\n }\n });\n\n $('select[name=\"contact_person_picker\"]').change(function () {\n whenContactPersonPickerChanges();\n });\n\n // Change in select list with registered delivery addresses\n // Change values in address input fields\n function whenContactPersonPickerChanges() {\n // The new values are stored as html key value pairs in the option\n var option = $('option:selected', $('select[name=\"contact_person_picker\"]'));\n\n $('input#employee_name').val(option.text());\n }\n\n $('.change_use_alternative_vat').click(function () {\n var sessionValue = $(this).attr('value');\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'set_session_use_alternative_vat',\n session_value: sessionValue\n }\n }).done(function (response) {\n // Validate response\n var success = true;\n if (response.status === undefined) {\n success = false;\n } else if (response.status.toUpperCase() !== 'OK') {\n success = false;\n }\n\n if (success) {\n //alert(\"Success\");\n let totalPriceOnShoppingCartHtml = $('#totalPriceOnShoppingCart').html();\n if (totalPriceOnShoppingCartHtml !== undefined && totalPriceOnShoppingCartHtml.trim() !== \"0,00 Kr\") {\n location.reload();\n }\n } else {\n alert(\"Error: \" + response.error_message);\n }\n }, 'json');\n });\n\n // Change in select list with registered delivery addresses\n // Change values in address input fields\n $('select[name=\"delivery_address_picker\"]').change(function () {\n // The new values are stored as html key value pairs in the option\n var option = $('option:selected', this);\n\n $('input#address').val(option.attr('address'));\n $('input#zip').val(option.attr('zip'));\n $('input#city').val(option.attr('city'));\n $('input#entrance').val(option.attr('entrance'));\n $('input#floor').val(option.attr('floor'));\n $('textarea#extra_adress_info').val(option.attr('extra_info'));\n });\n\n // Pick up day is changed\n $(document).on('change', '.pick_up_days_from_now', function () {\n let daysFromNow = $(this).val();\n let arrayId = $(this).attr('array_id');\n fetchAvailableTimes(daysFromNow, arrayId);\n });\n\n // Delivery day is changed\n $(document).on('change', '.delivery_days_from_now', function () {\n let daysFromNow = $(this).val();\n let arrayId = $(this).attr('array_id');\n fetchAvailableTimes(daysFromNow, arrayId, true)\n });\n\n // Fetch available days and times when selecting a store\n // Also fetch restaurant tables\n $(document).on('change', 'form#checkout_pick_up_form input[name=frontline_store_id]:radio',function () {\n //Testing\n fetchAvailableDays(0);\n getRestaurantTableSelector();\n $('#remove_time_points').attr('disabled', true);\n });\n\n // Fetch available times when selecting a day\n $(document).on('change', 'form#checkout_pick_up_form select.pick_up_time',function () {\n let daysFromNow = $(this).val();\n fetchAvailableTimes(daysFromNow, 0);\n });\n\n function getRestaurantTableSelector() {\n if($('div#restaurant_table_panel').length) {\n\n if(ajaxLocked) {\n return;\n }\n let frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n\n ajaxLocked = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathGetRestaurantTables,\n data: {\n frontline_store_id: frontlineStoreId\n },\n dataType: 'json'\n }).success(function (data) {\n $('div#restaurant_table_form_group').html(data.html);\n\n checkRestaurantTableName();\n\n if ($('div#frontline_store_id_radio').attr('posted_frontline_store_id') === frontlineStoreId) {\n\n $(\"div#restaurant_table_panel select#select_restaurant_table\").val($('div#restaurant_table_panel').attr('posted_restaurant_table')).change();\n }\n\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLocked = false;\n });\n }\n }\n\n function fetchAvailableTimes(daysFromNow = 0, arrayId = -1, delivery = false) {\n //ArrayId is set to 0 when frontlineStore is changed. Else use arrayId as the length of timepoint_row (added/subtracted when clicking on +/- buttons)\n if (arrayId === -1) {\n arrayId = $('.timepoint_row').length;//$('[name*=\"time_point_arr\"]').length/2;\n }\n\n let frontlineStoreId;\n let ajaxPathUrl;\n if (delivery) {\n ajaxPathUrl = ajaxPathGetDeliveryTimes;\n frontlineStoreId = $('input[name=frontline_store_id]').val();\n } else {\n ajaxPathUrl = ajaxPathGetPickUpTimes;\n frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n }\n\n $.ajax({\n type: 'GET',\n url: ajaxPathUrl,\n data: {\n frontline_store_id: frontlineStoreId,\n array_id: arrayId,\n days_from_now: daysFromNow\n },\n dataType: 'json'\n }).success(function (data) {\n appendTimeSelectorToRow(data.html_time_selector, arrayId, delivery);\n printLocationClosedIfPanelsWithOpeningHoursAreHidden();\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function fetchAvailableDays(arrayId = -1, appendRow = false, delivery = false) {\n let formGroup = $('div#shop_pick_up_form_wrapper div.pickup-food-panel div#delivery_time_form_group');\n\n //ArrayId is set to 0 when frontlineStore is changed. Else use arrayId as the length of timepoint_row (added/subtracted when clicking on +/- buttons)\n if (arrayId === -1) {\n arrayId = $('.timepoint_row').length;\n }\n\n let frontlineStoreId;\n let ajaxPathUrl;\n if (delivery) {\n ajaxPathUrl = ajaxPathGetDeliveryDays;\n frontlineStoreId = $('input[name=frontline_store_id]').val();\n }\n // Pick up\n else {\n ajaxPathUrl = ajaxPathGetPickUpDays;\n frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n }\n\n $.ajax({\n type: 'GET',\n url: ajaxPathUrl,\n data: {\n frontline_store_id: frontlineStoreId,\n array_id: arrayId,\n },\n dataType: 'json'\n }).success(function (data) {\n if (appendRow) {\n formGroup.append(data.html_day_selector);\n\n //Disable PLUSS button if maximum rows of time selectors is reached\n if ($('div#add_new_delivery_time_form_group').length) {\n disablePlussButtonIfMaxRowCountIsReached();\n }\n } else {\n formGroup.html(data.html_day_selector);\n }\n\n let daySelector = formGroup.find('div#rowId' + arrayId + ' div.day-selector-wrapper select');\n let selectedDaysFromNow = daySelector.find('option:selected').val();\n fetchAvailableTimes(selectedDaysFromNow, arrayId, delivery);\n activateDatepicker();\n\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function appendTimeSelectorToRow(html, arrayId, delivery) {\n let wrapperId;\n if (delivery) {\n wrapperId = 'shop_delivery_form_wrapper';\n } else {\n wrapperId = 'shop_pick_up_form_wrapper';\n }\n\n let row = $('div#' + wrapperId + ' div.pickup-food-panel div#delivery_time_form_group div#rowId' + arrayId);\n let timeSelectorWrapper = row.find('div.time-selector-wrapper');\n\n if (timeSelectorWrapper.length) {\n timeSelectorWrapper.remove();\n }\n\n row.append(html);\n }\n\n if ($('form#checkout_pick_up_form').is(':visible')) {\n if ($(\"input[name='frontline_store_id']:checked\").val()) {\n $(\"input[name='frontline_store_id']:checked\").change();\n }\n }\n\n function disablePlussButtonIfMaxRowCountIsReached() {\n let max = $('#add_time_points').attr('max') * 1;\n let amountOfTimeSelectors = $('.timepoint_row').length;\n\n if (amountOfTimeSelectors === max) {\n $('button#add_time_points').attr('disabled', true);\n }\n\n if(amountOfTimeSelectors > 1) {\n $('#remove_time_points').attr('disabled', false);\n }\n }\n\n // Prevent double submission\n //$('form#checkout_delivery_form').preventDoubleSubmission();\n //$('form#checkout_pick_up_form').preventDoubleSubmission();\n\n $('button#register-button').click(function (e) {\n if (ajaxLocked === true) {\n return;\n }\n\n ajaxLocked = true;\n\n if ($('#contact_person_picker').length > 0) {\n if ($('#contact_person_picker').val() == null || $('#contact_person_picker').val() == '') {\n alert('Du må velge kontaktperson');\n ajaxLocked = false;\n return;\n }\n }\n\n if ($('#tosCheckbox').length > 0) {\n if (!$('#tosCheckbox').is(':checked')) {\n alert('Du må akseptere våre kjøpsvilkår for å bestille');\n ajaxLocked = false;\n return;\n }\n }\n\n let noteTextarea = $('textarea[name=\"note\"]');\n if(noteTextarea.prop('required') && $.trim(noteTextarea.val()) === \"\"){\n return;\n }\n\n if(!validateCheckoutForm()) {\n //If panel is hidden -> Customer setting is activated and user can therefore not see if it is possible to order at this time\n if ($('form#checkout_pick_up_form div.pickup-food-panel').is(\":hidden\")) {\n alert('Vi tar dessverre ikke imot bestillinger akkurat nå fordi vi har stengt, men du er velkommen tilbake senere :) ')\n } else {\n alert('Det er dessverre ikke mulig å bestille til valgt tidspunkt.');\n }\n ajaxLocked = false;\n return;\n }\n\n $('img#checkout_submit_loadig').removeClass('hidden');\n $(this).addClass('hidden');\n });\n\n if ($('input[name=\"payment_method\"]').val() === 'frontline_invoice') {\n $('div#add_new_delivery_time_form_group').show();\n $('#add_time_points').show();\n $('#remove_time_points').show();\n }\n else {\n $('div#add_new_delivery_time_form_group').hide();\n }\n\n $(document).on('submit', 'form#checkout_delivery_form', function(){\n return validateCheckoutForm();\n });\n $(document).on('submit', 'form#checkout_pick_up_form', function(){\n return validateCheckoutForm();\n });\n\n function printLocationClosedIfPanelsWithOpeningHoursAreHidden() {\n if ($('div#shop_pick_up_form_wrapper').is(\":visible\") && $('div#shop_pick_up_form_wrapper div.pickup-food-panel').is(\":hidden\")) {\n if (!validateCheckoutForm()) {\n let title = 'Serveringsstedet er stengt';\n let message = 'Vi tar dessverre ikke imot bestillinger akkurat nå, men du er velkommen tilbake senere.';\n let type = 'danger';\n $(getAlertHtml(message, type, title)).insertBefore($('div#shop_pick_up_form_wrapper'));\n\n let placeOrderButton = $('button#register-button');\n placeOrderButton.prop('disabled',true);\n placeOrderButton.css('cursor', 'not-allowed');\n placeOrderButton.css('pointer-events', 'auto');\n\n let submitButtonFormGroup = $('button#register-button').closest('div.form-group');\n $('
' + title + '
').insertBefore(submitButtonFormGroup);\n }\n }\n }\n\n function checkRestaurantTableName() {\n if (!$('div#restaurant_table_form_group span#restaurant_table_name').length) {\n return;\n }\n\n let textElement = $('div#restaurant_table_form_group span#restaurant_table_name');\n let textLength = textElement.html().trim().length\n\n // If amount of characters is more than 4 -> make a square around the text instead for circle\n if (textElement.length && textLength > 4) {\n\n if (window.matchMedia(\"only screen and (max-width: 768px)\").matches) {\n textElement.wrap(\"
\");\n } else {\n textElement.wrap(\"
\");\n }\n\n textElement.removeClass('circle-around-text');\n\n if (textLength > 60) {\n $('div#square_around_table_name').css(\"align-items\", \"normal\");\n }\n }\n }\n\n function printShoppingCartIconInNavbarHeader() {\n $.ajax({\n type: 'GET',\n url: ajaxPathGetShoppingCartIconHtmlForNavbarMenu,\n data: {},\n dataType: 'json'\n }).success(function (data) {\n if (data.html !== '') {\n let shoppingCartIcon = $('header div#shopping_cart_header');\n shoppingCartIcon.replaceWith(data.html);\n }\n }).error(function (data) {\n modalTitle = 'En feil oppstod';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n });\n }\n\n function setTip(buttonClickedElement) {\n let formData = new FormData;\n if (buttonClickedElement.attr('id') === 'add_custom_tip') {\n let customTipAmount = $('div#custom_tip_modal input#custom_tip_amount').val();\n formData.append('tip_amount', parseFloat(customTipAmount.replace(',','.').replace(' ','')));\n } else {\n formData.append('tip_percent', buttonClickedElement.val());\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSetTipInShoppingCart,\n data: formData,\n processData: false,\n contentType: false,\n dataType: 'json'\n }).success(function (data) {\n location.reload();\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n }\n\n function removeCheckoutConfirmOrder() {\n // Remove the TOS required attribute, so that we can submit the form.\n $('div.shop-checkout-form-wrapper input#tosCheckbox').removeAttr('required');\n\n // Remove the input field that confirms the order\n let inputName = '';\n if ($('form#checkout_pick_up_form').length) {\n inputName = 'confirm_pick_up';\n } else {\n inputName = 'confirm_delivery';\n }\n\n $('div.shop-checkout-form-wrapper input[name=\"' + inputName + '\"]').remove();\n }\n\n function validateCheckoutForm(){\n var validation = true;\n\n $('.timepoint_row select.timebox').each(function(){\n if(!($('option', this).length > 0) || this.value == ''){\n validation = false;\n } else {\n }\n });\n\n return validation;\n }\n\n function activateDatepicker() {\n if ($('input.datepicker-input').length > 0 && jQuery().pickadate) {\n var max = undefined;\n if ($('input.datepicker-input:first').attr('max_days') > -1) {\n var maxDays = $('input.datepicker-input:first').attr('max_days');\n var maxDate = new Date();\n maxDate = new Date(maxDate.getTime() + maxDays * 86400000);\n max = maxDate;\n }\n $('.datepicker-input').pickadate({\n format: 'dd.mm.yyyy',\n formatSubmit: 'dd.mm.yyyy',\n close: 'Lukk',\n container: 'body',\n selectYears: 5,\n selectMonths: true,\n min: new Date(),\n max: max,\n onSet: function (context) {\n var parentRow = $('input#' + this.get('id')).closest('.row');\n var selectElement = $('select#order_day_select', parentRow);\n var dateNow = new Date();\n dateNow.setHours(0);\n dateNow.setMinutes(0);\n dateNow.setSeconds(0);\n dateNow.setMilliseconds(0);\n var timeNow = dateNow.getTime();\n var days = Math.round((context.select - timeNow) / (86400000));\n if(!isNaN(days)) {\n selectElement.html('');\n $('option:first', selectElement).attr('selected', true);\n selectElement.change();\n }\n }\n });\n }\n }\n activateDatepicker();\n\n function validateSelectedDeliveryTimeAgainstProductsInShoppingCart(selectedDay, selectedTime) {\n if(ajaxLocked) {\n return;\n }\n let deliveryMethod = '';\n let frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n let validation = false;\n let shoppingCartSmall = $('div#shopping_cart_small div.shopping_cart_product_container');\n let products = [];\n\n if(shoppingCartSmall.length) {\n products = getProductsFromShoppingCart(shoppingCartSmall)\n }\n if($('div.shop-checkout-form-wrapper form#checkout_delivery_form').length) {\n deliveryMethod = 1\n }\n if($('div.shop-checkout-form-wrapper form#checkout_pick_up_form').length) {\n deliveryMethod = 2;\n }\n\n ajaxLocked = true;\n\n $.ajax({\n type: 'GET',\n url: ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime,\n data: {\n frontline_store_id: frontlineStoreId,\n selected_day: selectedDay,\n selected_time: selectedTime,\n products: products,\n delivery_method: deliveryMethod\n },\n dataType: 'json'\n }).success(function (data) {\n validation = true;\n\n }).error(function (data) {\n modalTitle = 'Vær oppmerksom';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'info';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n }).always(function () {\n ajaxLocked = false;\n });\n return validation;\n }\n\n function markSelectedPaymentMethod(clickedElement) {\n let recentSelected = $('div.payment-panel').find('.selected-payment-method');\n recentSelected.removeClass('selected-payment-method');\n let paymentMethodContainer = clickedElement.closest('.payment-method-container');\n paymentMethodContainer.addClass('selected-payment-method');\n }\n\n function printTimeSelectorIfDeliveryFormIsLoaded() {\n let deliveryForm = $('form#checkout_delivery_form');\n if (deliveryForm.length) {\n let formGroup = $('div#shop_delivery_form_wrapper div.pickup-food-panel div#delivery_time_form_group');\n let daySelector = formGroup.find('div#rowId0 div.day-selector-wrapper select');\n let arrayId = $(daySelector).attr('array_id');\n let selectedDaysFromNow = daySelector.find('option:selected').val();\n\n fetchAvailableTimes(selectedDaysFromNow, arrayId, true);\n }\n }\n\n});\n\n\n","$(document).ready(function () {\n\n let ajaxPathEditConsumingLocation = '/action/shopping-cart/edit-consuming-location';\n let ajaxPathSetTipInShoppingCart = '/action/shopping-cart/set-tip';\n let modalParentElementInDOM = $('div#main-container');\n let modalTitle = '';\n let modalMessage = '';\n let modalButtonText = 'Lukk';\n let modalAlertType = '';\n\n $(document).on('click', 'div.shopping_cart_consuming_location span#edit_consuming_location', function () {\n\n let consumingLocation = $(this).attr('consuming_location');\n\n $.ajax({\n type: 'GET',\n url: ajaxPathEditConsumingLocation,\n data: {\n consuming_location: consumingLocation\n },\n dataType: 'json'\n }).success(function (data) {\n if ($('.shop-products-col-frame').length) {\n $('.shop-products-col-frame').replaceWith(data.html);\n } else if ($('div#shopping_cart_full').length) {\n displaySelectConsumingLocationModal(data.html);\n }\n\n }).error(function (data) {\n modalTitle = 'Det oppstod en feil!';\n modalMessage = $.parseJSON(data.responseText).errors;\n modalAlertType = 'error';\n\n displayInfoMessageModal(modalParentElementInDOM, modalTitle, modalMessage, modalButtonText, modalAlertType);\n });\n });\n\n $(document).on('click', \"div#shopping_cart_full div.shopping_cart_tip button:not('.optional-tip-button'), div#shopping_cart_full button#add_custom_tip\", function () {\n setTip($(this));\n });\n\n function displaySelectConsumingLocationModal(content) {\n if ($(\"div#select_consuming_location_modal_wrapper\").length > 0) {\n $(\"div#select_consuming_location_modal_wrapper\").remove();\n }\n\n $('body').append('
');\n\n $('div#select_consuming_location_modal_wrapper').append(\n '
\\n' +\n '
\\n' +\n '
\\n' +\n '
\\n' +\n ' \\n' +\n '

Takeaway eller spise her?

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

    ' + headerText + '

    ' +\n '

    ' + message + '

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

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

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

    ' + glyphicon + ' ' + title + '

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