{"version":3,"sources":["shop.js","checkout.js","shopping.cart.js","product.js","product.category.js","utils.js","frontline.store.overview.js","customer.settings.js","shop.category.menu.js","intlTelInput.min.js"],"names":["refreshShoppingCart","$","document","ready","navbarElement","originalShoppingCartTopPos","ajaxPath","modalParentElementInDOM","modalTitle","modalMessage","modalButtonText","modalAlertType","isNaN","action","element","amountInput","val","parent","amount","trim","newAmount","hidePurchaseOptions","css","span","switchFromMinusToPlus","productArticle","addClass","removeClass","length","show","hide","find","hidePurchaseOptionsMobile","switchFromMinusToArrow","parents","isInteger","n","type","productId","parentWrapper","mobileView","data","product_id","success","isSmallScreenSize","window","matchMedia","matches","printAddedToShoppingCartBar","setTimeout","modal","displayInfoMessageModal","error_title","parseJSON","responseText","error_message","setShoppingCartPlacement","shoppingCartHeight","shoppingCartWidth","shoppingCart","windowHeight","outerWidth","height","animate","search","searchText","search_text","url","done","response","undefined","status","toUpperCase","refresh_shopping_cart","html","info_message","alert","addReadMoreLinkOnProductDescriptions","descriptionText","descriptionElement","visibleDescriptionHeight","attr","readMoreLink","innerHeight","prop","after","closeOpenProduct","SUB_DOMAIN","productArticleDivParent","event","this","on","switchFromArrowToMinus","extraProductAutoPopup","hasClass","productInfoWrapper","prev","specialProduct","click","input","parentFormGroup","width","addToShoppingCart","children","location","pathname","sumAndDeleteWrapper","productContainer","closest","editAmountWrapper","withoutPrompt","confirm","href","updateInputWithAmountOfProduct","updateInputWithAmountBeforeAddingToShoppingCart","replace","reload","keyup","e","key","which","searchInput","jQuery","newHref","scrollToCompensateForHeader","y","scrollTop","actionBeforeRefresh","remove","replaceWith","product_count","is","lastProduct","offset","top","productsHeight","scroll","products","consumingLocation","shoppingCartSmall","getProductsFromShoppingCart","ajax","dataType","consuming_location","errors","ajaxLocked","ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime","ajaxPathGetRestaurantTables","formatSubmit","close","selectYears","each","selectMonths","value","min","validation","dateNow","maxDays","selectElement","setMilliseconds","pickadate","max","context","select","days","Date","maxDate","format","activateDatepicker","validateSelectedDeliveryTimeAgainstProductsInShoppingCart","onSet","deliveryMethod","get","frontlineStoreId","parentRow","setHours","setMinutes","timeNow","getTime","round","change","selectedDay","selectedTime","frontline_store_id","selected_day","selected_time","error","always","markSelectedPaymentMethod","recentSelected","paymentMethodContainer","delivery_method","clickedElement","mobileInputFields","querySelectorAll","i","len","initialCountry","formatOnDisplay","separateDialCode","hiddenInput","phoneNumberOnlyNumbers","submit","querySelector","iti","intlTelInputGlobals","getInstance","isValidNumber","preventDefault","whenContactPersonPickerChanges","option","text","timeRow","employeeId","amountOfTimeSelectorsBefore","amountOfTimeSelectorsAfter","lastTimePointRow","last","index","session_value","sessionValue","totalPriceOnShoppingCartHtml","updateTimeOfTextBox","a","daysFromNow","textbox_array_id","isAdmin","storeSyncCode","getGetParameterByName","newZipCodePostValue","originalZipCode","newZipCode","days_from_now","sync_code","new_zip_code","array_id","next","printLocationClosedIfPanelsWithOpeningHoursAreHidden","textLength","submitButtonFormGroup","textElement","insertBefore","placeOrderButton","title","arrayId","appendHtml","arguments","amountOfTimeSelectors","onChange_delivery_days_from_now","name","RegExp","exec","results","decodeURIComponent","fetchAvailableDaysAndTimesWhenSelectingAStore","checkRestaurantTableName","wrap","getRestaurantTableSelector","timeSelect","empty","append","validateCheckoutForm","noteTextarea","displaySelectConsumingLocationModal","content","ajaxPathEditConsumingLocation","ajaxPathGetSearchResult","ajaxLockActive","searchString","flineCategoryProducts","search_result","ajaxPathGetProductCategorySelectListAndRemoveButtonHtml","searchResult","liElements","elementSelected","displayAccordionContent","panel","productItem","selectedItemHtml","ajaxPathGetProductModal","formData","FormData","message","prependToAlert","contentType","prependBeforeId","productSearch","saveProduct","keyCode","eq","scrollListKeyDown","setSelectedProduct","hiddenProductId","newSearch","printSearchWrapper","inputField","target","has","processData","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","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","delay","ajaxPathGetFrontlineStoreInfo","refreshFrontlineStoreListItems","ajaxPathDisplaySearchResult","search_string","getFrontlineStoreInfo","currentStoreStatus","ajaxPathSetFrontlineStoreAvailability","current_frontline_store_status","changeAvailability","ajaxPathSaveLayoutSettings","ajaxPathSaveGeneralSettings","ajaxPathSaveColorsToFile","ajaxPathSetPreviewSession","ajaxPathUnsetPreviewSession","ajaxPathDeleteColors","ajaxPathSaveFonts","ajaxPathDeleteFonts","ajaxPathCloseShop","ajaxPathSaveClosedShopCustomText","ajaxPathSaveText","toggleAmountSortExtraProductsFormGroup","amountFormGroup","checkboxFormGroup","saveCustomerSettingsInput","ajaxLock","inputValue","settingType","saveLayoutSettings","saveGeneralSettings","font","customerSettingsId","deleteFonts","setPreviewSession","win","open","unsetPreviewSession","deleteColors","unset_preview_session","closeOrOpenShop","spectrum","closedShop","closedShopCustomText","alertMessage","closeShopButton","alertTitle","saveClosedShopCustomText","closed_shop_custom_text","popover","showInitial","showInput","locale","fontselect","saveFonts","color","saveColors","selectedProductLayout","files","confirmMessage","closeShopValue","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","module","_typeof","exports","intlTelInput","c","b","d","enumerable","configurable","writable","Object","defineProperty","f","g","iso2","dialCode","priority","areaCodes","h","getAttribute","instances","j","allowDropdown","autoHideDialCode","autoPlaceholder","customContainer","customPlaceholder","dropdownContainer","excludeCountries","geoIpLookup","localizedCountries","nationalMode","onlyCountries","placeholderNumberType","preferredCountries","utilsScript","k","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","hasOwnProperty","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","focus","_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","clearTimeout","_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","className","async","src","startedLoadingUtilsScript","defaults","version","_init"],"mappings":"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","file":"../main-79e607dcf6.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\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\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_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_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});","let ajaxPath = '/includes/shop/ajax/ajax.php';\nlet ajaxLocked = false;\nconst ajaxPathCheckCheckoutIfDeliveryTimeMatchesProductionTime = '/action/shopping-cart/check-checkout-if-delivery-time-matches-production-time';\nconst ajaxPathGetRestaurantTables = '/action/checkout/get-restaurant-tables';\nlet modalParentElementInDOM = $('div#main-container');\nlet modalTitle = '';\nlet modalMessage = '';\nlet modalButtonText = 'Lukk';\nlet modalAlertType = '';\n\n$(document).ready(function () {\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 // 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 $(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 //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 fetchAvailableDaysAndTimesWhenSelectingAStore(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\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 // Fetch available times for a another day\n //$(document).on('change', 'select[name=\"pick_up_days_from_now\"]', function () {\n $(document).on('change', '.pick_up_days_from_now', function () {\n var daysFromNow = $(this).val();\n updateTimeOfTextBox(daysFromNow, $(this).attr('array_id'));\n });\n var a= true;\n /**\n * If textbox_array_id == -2 it sets for the last one. If textbox_array_id == -1, it sets for all textboxes\n * @param daysFromNow\n * @param textbox_array_id\n */\n function updateTimeOfTextBox(daysFromNow, textbox_array_id) {\n var frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\n\n if (isNaN(daysFromNow)) {\n alert('Ugyldig dag valgt');\n return;\n }\n if (isAdmin && !a)\n return;\n a = false;\n\n var delivery = getGetParameterByName(\"delivery\") === \"1\";\n\n var storeSyncCode = '';\n var action = 'get_available_pick_up_times';\n if (delivery)\n {\n action = 'get_available_delivery_times';\n if ($('select[name=\"target_sync_code_override\"]').length) {\n storeSyncCode = $('select[name=\"target_sync_code_override\"]').val();\n } else {\n storeSyncCode = $('input[name=\"frontline_store_sync_code_that_covers_zip\"]').val();\n }\n\n // If zip code have changed\n var newZipCodePostValue = '';\n var newZipCode = $.trim($('input[name=\"zip\"]').val());\n var originalZipCode = $.trim($('input[name=\"original_zip\"]').val());\n\n if (newZipCode !== originalZipCode) {\n newZipCodePostValue = newZipCode;\n }\n\n if (isNaN(daysFromNow)) {\n alert('Ugyldig dag valgt');\n return;\n }\n }\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: action,\n array_id: textbox_array_id,\n frontline_store_id: frontlineStoreId,\n days_from_now: daysFromNow,\n\n sync_code: storeSyncCode,\n new_zip_code: newZipCodePostValue\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 //$('select[name=\"pick_up_time\"]').replaceWith(response.html);\n if (textbox_array_id === -2) {\n $('.timebox').last().next('input').remove();\n $('.timebox').last().replaceWith(response.html);\n }\n else if (textbox_array_id === -1) {\n $('.timebox').next('input').remove();\n $('.timebox').replaceWith(response.html);\n }\n else {\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').next('input').remove();\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').replaceWith(response.html);\n }\n\n if($('option', $('.timebox[array_id=\"' + textbox_array_id + '\"]')).length == 0){\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').html('');\n }\n\n printLocationClosedIfPanelsWithOpeningHoursAreHidden();\n\n } else {\n alert(response.error_message);\n }\n }, 'json');\n }\n\n // Fetch available days and times when selecting a store\n $(\"input[name=frontline_store_id]:radio\").change(function () {\n fetchAvailableDaysAndTimesWhenSelectingAStore('', 0);\n getRestaurantTableSelector();\n $('#remove_time_points').attr('disabled', true);\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 fetchAvailableDaysAndTimesWhenSelectingAStore(appendHtml, arrayId = -1) {\n if (!appendHtml)\n {\n appendHtml = false;\n }\n var frontlineStoreId = $('input[name=frontline_store_id]:checked:first').val();\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;//$('[name*=\"time_point_arr\"]').length/2;\n }\n var delivery = getGetParameterByName(\"delivery\") === \"1\";\n var action = 'get_available_pick_up_times';\n\n var storeSyncCode = '';\n if (delivery)\n {\n action = 'get_available_delivery_times';\n if ($('select[name=\"target_sync_code_override\"]').length) {\n storeSyncCode = $('select[name=\"target_sync_code_override\"]').val();\n } else {\n storeSyncCode = $('input[name=\"frontline_store_sync_code_that_covers_zip\"]').val();\n }\n\n // If zip code have changed\n var newZipCodePostValue = '';\n var newZipCode = $.trim($('input[name=\"zip\"]').val());\n var originalZipCode = $.trim($('input[name=\"original_zip\"]').val());\n\n if (newZipCode !== originalZipCode) {\n newZipCodePostValue = newZipCode;\n }\n /*\n //var daysFromNow = $('select[name=\"delivery_days_from_now\"]').val();\n var daysFromNow = 0;//$('.delivery_days_from_now').val();\n\n if (isNaN(daysFromNow)) {\n alert('Ugyldig dag valgt');\n return;\n }*/\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: action,\n frontline_store_id: frontlineStoreId,\n array_id: arrayId,\n\n sync_code: storeSyncCode,\n //days_from_now: daysFromNow,\n new_zip_code: newZipCodePostValue\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 (appendHtml)\n {\n $('div#delivery_time_form_group').append('
' + response.html);\n\n //Disable PLUSS button if maximum rows of time selectors is reached\n if ($('div#add_new_delivery_time_form_group').length) {\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 else {\n $('div#delivery_time_form_group').html(response.html);\n }\n\n let daysFromNow = $('.pick_up_days_from_now').find(\"option:first-child\").val();\n\n updateTimeOfTextBox(daysFromNow, arrayId);\n appendHtml = true;\n\n activateDatepicker();\n } else {\n alert(response.error_message);\n }\n }, 'json');\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 // Fetch available times for a another day in the delivery form\n function onChange_delivery_days_from_now(textbox_array_id, daysFromNow) {\n if (!textbox_array_id){\n textbox_array_id = 0;\n }\n if (!daysFromNow){\n daysFromNow = 0;\n }\n var storeSyncCode = '';\n if ($('select[name=\"target_sync_code_override\"]').length) {\n storeSyncCode = $('select[name=\"target_sync_code_override\"]').val();\n } else {\n storeSyncCode = $('input[name=\"frontline_store_sync_code_that_covers_zip\"]').val();\n }\n\n // If zip code have changed\n var newZipCodePostValue = '';\n var newZipCode = $.trim($('input[name=\"zip\"]').val());\n var originalZipCode = $.trim($('input[name=\"original_zip\"]').val());\n\n if (newZipCode !== originalZipCode) {\n newZipCodePostValue = newZipCode;\n }\n\n if (isNaN(daysFromNow)) {\n alert('Ugyldig dag valgt');\n return;\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'get_available_delivery_times',\n array_id: textbox_array_id,\n sync_code: storeSyncCode,\n days_from_now: daysFromNow,\n new_zip_code: newZipCodePostValue\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 //$('select[name=\"delivery_time\"]').replaceWith(response.html);\n if (textbox_array_id === -2) {\n $('.timebox').last().next('input').remove();\n $('.timebox').last().replaceWith(response.html);\n }\n else if (textbox_array_id === -1) {\n $('.timebox').next('input').remove();\n $('.timebox').replaceWith(response.html);\n }\n else {\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').next('input').remove();\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').replaceWith(response.html);\n }\n if($('option', $('.timebox[array_id=\"' + textbox_array_id + '\"]')).length == 0){\n $('.timebox[array_id=\"' + textbox_array_id + '\"]').html('');\n }\n } else {\n alert(response.error_message);\n }\n }, 'json');\n }\n\n //$(document).on('change', 'select[name=\"delivery_days_from_now\"]', function () {\n $(document).on('change', '.delivery_days_from_now', function () {\n var daysFromNow = $(this).val();\n onChange_delivery_days_from_now($(this).attr('array_id'), daysFromNow);\n /*\n var storeSyncCode = '';\n if ($('select[name=\"target_sync_code_override\"]').length) {\n storeSyncCode = $('select[name=\"target_sync_code_override\"]').val();\n } else {\n storeSyncCode = $('input[name=\"frontline_store_sync_code_that_covers_zip\"]').val();\n }\n\n // If zip code have changed\n var newZipCodePostValue = '';\n var newZipCode = $.trim($('input[name=\"zip\"]').val());\n var originalZipCode = $.trim($('input[name=\"original_zip\"]').val());\n\n if (newZipCode !== originalZipCode) {\n newZipCodePostValue = newZipCode;\n }\n var daysFromNow = $(this).val();\n\n if (isNaN(daysFromNow)) {\n alert('Ugyldig dag valgt');\n return;\n }\n\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'get_available_delivery_times',\n sync_code: storeSyncCode,\n days_from_now: daysFromNow,\n new_zip_code: newZipCodePostValue\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 $('select[name=\"delivery_time\"]').replaceWith(response.html);\n } else {\n alert(response.error_message);\n }\n }, 'json');\n */\n });\n //if ($('select[name=\"delivery_days_from_now\"]').length) {\n if ($('.delivery_days_from_now').length) {\n onChange_delivery_days_from_now();\n }\n\n\n // Fetch available days and times when admin is selecting a store in the delivery form\n $('select[name=\"target_sync_code_override\"]').change(function () {\n var storeSyncCode = $('select[name=\"target_sync_code_override\"]').val();\n\n onChange_delivery_days_from_now();\n return;\n\n $.ajax({\n type: 'POST',\n url: ajaxPath,\n data: {\n action: 'get_available_delivery_times',\n sync_code: storeSyncCode,\n days_from_now: 0\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 $('select[name=\"delivery_time\"]').replaceWith(response.html);\n //$('div#delivery_time_form_group_delivery_form').html(response.html);\n } else {\n alert(response.error_message);\n }\n }, 'json');\n });\n\n // When changing pick up day, set options in time select. \n // If \"today\" another select list is required than if its another day\n // If its another day theres possible to select all times from when the store opens\n /*$('select[name=\"pick_up_days_from_now\"]').change(function(){\n var select = $('select[name=\"pick_up_days_from_now\"]');\n var timeSelect = $('select[name=\"pick_up_time\"]');\n if (select.val() === '0') {\n // \"Today\"\n timeSelect.empty().append($('div#pick_up_time_options_today').html());\n } else {\n // Another day in the future\n timeSelect.empty().append($('div#pick_up_time_options_other_days').html());\n }\n });*/\n\n // When changing delivery day, set options in time select. \n // If \"today\" another select list is required than if its another day\n // If its another day theres possible to select all times from when the store opens\n //$('select[name=\"delivery_days_from_now\"]').change(function () {\n $('.delivery_days_from_now').change(function () {\n //var select = $('select[name=\"delivery_days_from_now\"]');\n var select = $('.delivery_days_from_now');\n //var timeSelect = $('select[name=\"delivery_time\"]');\n var timeSelect = $('select[name=\"delivery_time\"]');\n if (select.val() === '0') {\n // \"Today\"\n timeSelect.empty().append($('div#delivery_time_options_today').html());\n } else {\n // Another day in the future\n timeSelect.empty().append($('div#delivery_time_options_other_days').html());\n }\n });\n\n function getGetParameterByName(name, url) {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n\n var isAdmin = getGetParameterByName('admin') != null;\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 //$(this).replaceWith('');\n /*var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if (isFirefox){\n $(\"#checkout_pick_up_form\").clone().hide().appendTo(\"body\").submit();\n }\n else{*/\n //$('form:first').submit();\n\n //}\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\n\nfunction 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\nfunction activateDatepicker() {\n if ($('input.datepicker-input').length > 0 && jQuery().pickadate) {\n var max = undefined;\n if ($('input.datepicker-input:first').attr('max_days') > 0) {\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}\nactivateDatepicker();\n\nfunction 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 selectedDay = $('div.timepoint_row select[name^=\"time_point_arr\"]').children(\"option:selected\").val();\n //let selectedTime = $('div.timepoint_row .timebox').children(\"option:selected\").val();\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\nfunction markSelectedPaymentMethod(clickedElement) {\n let recentSelected = $('div.payment-panel').find('.selected-payment-method');\n recentSelected.removeClass('selected-payment-method');\n //$('div.payment-panel').removeClass('selected-payment-method');\n let paymentMethodContainer = clickedElement.closest('.payment-method-container');\n paymentMethodContainer.addClass('selected-payment-method');\n}\n","$(document).ready(function () {\n\n var ajaxPathEditConsumingLocation = '/action/shopping-cart/edit-consuming-location';\n var modalParentElementInDOM = $('div#main-container');\n var modalTitle = '';\n var modalMessage = '';\n var modalButtonText = 'Lukk';\n var 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\nfunction 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$(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 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}","$(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});","const ajaxPathSaveLayoutSettings = '/action/customer-settings/save-layout-settings';\nconst ajaxPathSaveGeneralSettings = '/action/customer-settings/save-general-settings';\nconst ajaxPathSaveColorsToFile = '/action/customer-settings/save-colors-to-file';\nconst ajaxPathSetPreviewSession = '/action/customer-settings/set-preview-session';\nconst ajaxPathUnsetPreviewSession = '/action/customer-settings/unset-preview-session';\nconst ajaxPathDeleteColors = '/action/customer-settings/delete-colors';\nconst ajaxPathSaveFonts = '/action/customer-settings/save-fonts';\nconst ajaxPathDeleteFonts = '/action/customer-settings/delete-fonts';\nconst ajaxPathCloseShop = '/action/customer-settings/close-shop';\nconst ajaxPathSaveClosedShopCustomText = '/action/customer-settings/save-closed-shop-custom-text';\nconst ajaxPathSaveText = '/action/customer-settings/save-text';\nlet modalParentElementInDOM = $('div#main-container');\nlet modalTitle = '';\nlet modalMessage = '';\nlet modalButtonText = 'Lukk';\nlet modalAlertType = '';\nlet ajaxLock = false;\n\n//Color picker documentation: https://seballot.github.io/spectrum/#toc0\n\n$(document).ready(\n\n function () {\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 }\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 formData = new FormData();\n let selectedProductLayout = $(\"div#product_layout_form_group input[type='radio']:checked\").val();\n\n formData.append('product_layout', selectedProductLayout);\n\n $('div#layout_settings_wrapper input:checkbox').each(function() {\n if (!(formData.has($(this).attr('id')))) {\n if($(this).is(':checked')) {\n formData.append($(this).attr('id'), '1');\n } else {\n formData.append($(this).attr('id'), '0');\n }\n }\n });\n\n saveLayoutSettings(formData);\n});\n\n$(document).on('click', 'div#general_settings_wrapper button#save_general_settings', function () {\n let formData = new FormData();\n\n $('div#general_settings_wrapper input:checkbox').each(function() {\n $('div#general_settings_wrapper input:checkbox').each(function() {\n if (!(formData.has($(this).attr('id')))) {\n if($(this).is(':checked')) {\n formData.append($(this).attr('id'), '1');\n } else {\n formData.append($(this).attr('id'), '0');\n }\n }\n });\n });\n\n //Amount - How many extra products does a product need to have before the categorized view will show\n if ($('div#general_settings_wrapper input#amount_of_extra_products_to_show_categorized_list').val())\n {\n formData.append('amount_of_extra_products_to_show_categorized_list', $('input#amount_of_extra_products_to_show_categorized_list').val());\n }\n\n saveGeneralSettings(formData);\n});\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 if ($('#background_image').get(0).files.length === 0) {\n alert(\"Vennligst velg et bilde før du åpner forhåndsvisning\");\n return;\n }\n\n let formData = new FormData();\n\n //append file to formData\n let fileData = $('#background_image').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//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\nfunction 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\nfunction 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\nfunction saveLayoutSettings(formData) {\n if (ajaxLock) {\n return;\n }\n ajaxLock = true;\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveLayoutSettings,\n data: formData,\n processData: false,\n contentType: false,\n }).success(function (data) {\n prependToAlert('div#layout_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\nfunction saveGeneralSettings(formData) {\n if (ajaxLock) {\n return;\n }\n\n ajaxLock = true;\n\n\n $.ajax({\n type: 'POST',\n url: ajaxPathSaveGeneralSettings,\n data: formData,\n processData: false,\n contentType: false,\n }).success(function (data) {\n prependToAlert('div#general_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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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\nfunction 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$(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