﻿// source --> https://mfrash.com/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-ecommerce-generic.js?ver=1.22.3 
"use strict";function gtm4wp_make_sure_is_float(e){return"string"==typeof e?(e=parseFloat(e),isNaN(e)&&(e=0)):"number"!=typeof e&&(e=0),e=e.toFixed(2)}function gtm4wp_push_ecommerce(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]&&arguments[3],a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2e3,r=r||{},t=(r.items=t,gtm4wp_clear_ecommerce&&window[gtm4wp_datalayer_name].push({ecommerce:null}),{event:e,ecommerce:r});n&&(t.eventCallback=n,t.eventTimeout=a),window[gtm4wp_datalayer_name].push(t)}function gtm4wp_read_from_json(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:["productlink","internal_id"];try{var r=JSON.parse(e);if(r){if(r.price&&(r.price=gtm4wp_make_sure_is_float(r.price)),t&&0<t.length)for(var n=0;n<t.length;n++)delete r[t[n]];return r}}catch(e){console&&console.error&&console.error(e.message)}return!1}function gtm4wp_read_json_from_node(e,t){return!!(e&&e.dataset&&e.dataset[t])&&gtm4wp_read_from_json(e.dataset[t],2<arguments.length&&void 0!==arguments[2]?arguments[2]:["productlink","internal_id"])}function gtm4wp_update_json_in_node(e,t,r,n){if(e&&e.dataset&&e.dataset[t])try{var a=JSON.parse(e.dataset[t]);if(a)return a.price&&(a.price=gtm4wp_make_sure_is_float(a.price)),a[r]=n,e.dataset[t]=JSON.stringify(a),!0}catch(e){console&&console.error&&console.error(e.message)}return!1};
// source --> https://mfrash.com/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-woocommerce.js?ver=1.22.3 
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var gtm4wp_last_selected_product_variation;function gtm4wp_woocommerce_console_log(e){var t;"undefined"!=typeof console&&console.log&&("object"===_typeof(e)&&(e=JSON.stringify(e)),e=(t=new Date).getHours()+":"+t.getMinutes()+":"+t.getSeconds()+"."+t.getMilliseconds()+" - "+e,console.log("[GTM4WP debug]: "+e))}function gtm4wp_woocommerce_handle_cart_qty_change(){document.querySelectorAll(".product-quantity input.qty").forEach(function(e){var t=e.defaultValue,o=parseInt(e.value);if(t!=(o=isNaN(o)?t:o)){var e=e.closest(".cart_item"),e=e&&e.querySelector(".remove");if(e)return!(e=gtm4wp_read_json_from_node(e,"gtm4wp_product_data"))||void(t<o?(e.quantity=o-t,e.price=e.price,gtm4wp_push_ecommerce("add_to_cart",[e],{currency:gtm4wp_currency,value:e.price*e.quantity})):(e.quantity=t-o,e.price=e.price,gtm4wp_push_ecommerce("remove_from_cart",[e],{currency:gtm4wp_currency,value:e.price*e.quantity})))}})}function gtm4wp_woocommerce_handle_payment_method_change(){var e,t;-1<gtm4wp_checkout_step_fired.indexOf("payment_method")||"complete"==document.readyState&&(e="(payment type not found)",(t=(t=document.querySelector(".payment_methods input:checked"))||document.querySelector("input[name^=payment_method]"))&&(e=t.value),gtm4wp_push_ecommerce("add_payment_info",window.gtm4wp_checkout_products,{currency:gtm4wp_currency,payment_type:e,value:window.gtm4wp_checkout_value}),gtm4wp_checkout_step_fired.push("payment_method"))}function gtm4wp_woocommerce_handle_shipping_method_change(){var e,t;-1<gtm4wp_checkout_step_fired.indexOf("shipping_method")||"complete"==document.readyState&&(e="(shipping tier not found)",(t=(t=document.querySelector("input[name^=shipping_method]:checked"))||document.querySelector("input[name^=shipping_method]"))&&(e=t.value),gtm4wp_push_ecommerce("add_shipping_info",window.gtm4wp_checkout_products,{currency:gtm4wp_currency,shipping_tier:e,value:window.gtm4wp_checkout_value}),gtm4wp_checkout_step_fired.push("shipping_method"))}function gtm4wp_woocommerce_process_pages(){var n={"wp-block-handpicked-products":{displayname:"Handpicked Products",counter:1},"wp-block-product-best-sellers":{displayname:"Best Selling Products",counter:1},"wp-block-product-category":{displayname:"Product Category List",counter:1},"wp-block-product-new":{displayname:"New Products",counter:1},"wp-block-product-on-sale":{displayname:"Sale Products",counter:1},"wp-block-products-by-attribute":{displayname:"Products By Attribute",counter:1},"wp-block-product-tag":{displayname:"Products By Tag",counter:1},"wp-block-product-top-rated":{displayname:"Top Rated Products",counter:1}};if(document.querySelectorAll(".wc-block-grid .wc-block-grid__product").forEach(function(e){var t=e.closest(".wc-block-grid"),o=e.querySelector(".gtm4wp_productdata");if(t&&o){var r=t.classList;if(r)for(var c in n)r.contains(c)&&(gtm4wp_update_json_in_node(o,"gtm4wp_product_data","item_list_name",n[c].displayname),gtm4wp_update_json_in_node(o,"gtm4wp_product_data","index",n[c].counter),n[c].counter++)}}),0<document.querySelectorAll(".gtm4wp_productdata,.widget-product-item").length){var e,t=[];if(document.querySelectorAll(".gtm4wp_productdata,.widget-product-item").forEach(function(e){e=gtm4wp_read_json_from_node(e,"gtm4wp_product_data");if(!e)return!0;t.push(e)}),0<gtm4wp_product_per_impression)for(;t.length;)e=t.splice(0,gtm4wp_product_per_impression),gtm4wp_push_ecommerce("view_item_list",e,{currency:gtm4wp_currency});else gtm4wp_push_ecommerce("view_item_list",t,{currency:gtm4wp_currency})}document.addEventListener("click",function(e){var t=e.target;if(!t)return!0;if(t.closest(".add_to_cart_button:not(.product_type_variable, .product_type_grouped, .single_add_to_cart_button)")){var o=t.closest(".product,.wc-block-grid__product"),o=o&&o.querySelector(".gtm4wp_productdata");if(!o)return!0;o=gtm4wp_read_json_from_node(o,"gtm4wp_product_data");if(!o)return!0;if("variable"===o.product_type||"grouped"===o.product_type)return!0;o.productlink&&delete o.productlink,delete o.product_type,o.quantity=1,gtm4wp_push_ecommerce("add_to_cart",[o],{currency:gtm4wp_currency,value:o.price})}o=t.closest(".single_add_to_cart_button");if(o){if(o.classList.contains("disabled")||o.disabled)return!0;o=t.closest("form.cart");if(!o)return!0;var r=o.querySelectorAll("[name=variation_id]"),c=o.classList&&o.classList.contains("grouped_form");if(0<r.length)gtm4wp_last_selected_product_variation&&(r=o.querySelector("[name=quantity]"),gtm4wp_last_selected_product_variation.quantity=r&&r.value||1,gtm4wp_push_ecommerce("add_to_cart",[gtm4wp_last_selected_product_variation],{currency:gtm4wp_currency,value:(gtm4wp_last_selected_product_variation.price*gtm4wp_last_selected_product_variation.quantity).toFixed(2)}));else if(c){var r=document.querySelectorAll(".grouped_form .gtm4wp_productdata"),n=[],a=0;if(r.forEach(function(e){var t,o,e=gtm4wp_read_json_from_node(e,"gtm4wp_product_data",["productlink"]);return!(e&&(t=0)<(o=document.querySelectorAll("input[name=quantity\\["+e.internal_id+"\\]]")).length&&0!=(t=o[0]&&o[0].value||1))||(e.quantity=t,delete e.internal_id,n.push(e),void(a+=e.price*e.quantity))}),0==n.length)return!0;gtm4wp_push_ecommerce("add_to_cart",n,{currency:gtm4wp_currency,value:a.toFixed(2)})}else{c=o.querySelector("[name=gtm4wp_product_data]");if(!c)return!0;r=gtm4wp_read_from_json(c.value);r.quantity=o.querySelector("[name=quantity]")&&o.querySelector("[name=quantity]").value,isNaN(r.quantity)&&(r.quantity=1),gtm4wp_push_ecommerce("add_to_cart",[r],{currency:gtm4wp_currency,value:r.price*r.quantity})}}if(t.closest(".mini_cart_item a.remove,.product-remove a.remove")){c=t&&t.closest(".mini_cart_item a.remove,.product-remove a.remove");if(!c)return!0;o=gtm4wp_read_json_from_node(c,"gtm4wp_product_data");if(!o)return!0;var r=0,_=c.closest(".cart_item"),_=_&&_.querySelectorAll(".product-quantity input.qty");if(_&&0!==_.length?r=_[0].value:(_=(c=c.closest(".mini_cart_item"))&&c.querySelectorAll(".quantity"))&&0<_.length&&(r=parseInt(_[0].textContent),Number.isNaN(r))&&(r=0),0===r)return!0;o.quantity=r,gtm4wp_push_ecommerce("remove_from_cart",[o],{currency:gtm4wp_currency,value:o.price*o.quantity})}c=t.closest(".products li:not(.product-category) a:not(.add_to_cart_button):not(.quick-view-button),.wc-block-grid__products li:not(.product-category) a:not(.add_to_cart_button):not(.quick-view-button),.products>div:not(.product-category) a:not(.add_to_cart_button):not(.quick-view-button),.widget-product-item,.woocommerce-grouped-product-list-item__label a");if(c){if("undefined"==typeof google_tag_manager)return!0;var i,_=e.target,r=_.closest(".product,.wc-block-grid__product"),o=(r=(r=r||((r=_.closest(".products li"))||_.closest(".products>div")))||_.closest(".woocommerce-grouped-product-list-item__label"))?r.querySelector(".gtm4wp_productdata"):_,t=gtm4wp_read_json_from_node(o,"gtm4wp_product_data",["internal_id"]);if(!t)return!0;if(t.productlink!=c.getAttribute("href"))return!0;for(i in window.google_tag_manager)if("gtm-"==i.substring(0,4).toLowerCase()){window.gtm4wp_first_container_id=i;break}if(""===window.gtm4wp_first_container_id)return!0;var u,d,p,m,r=2e3;0<(r="undefined"!=typeof gtm4wp_datalayer_max_timeout?gtm4wp_datalayer_max_timeout:r)?(u=e.ctrlKey||e.metaKey,d="_blank"===c.target,(p=e.defaultPrevented)||e.preventDefault(),(u||d)&&(window.productpage_window=window.open("about:blank","_blank")),m=t.productlink,delete t.productlink,gtm4wp_push_ecommerce("select_item",[t],{currency:gtm4wp_currency},function(e){if(void 0!==e&&window.gtm4wp_first_container_id!=e)return!0;p||((d||u)&&productpage_window?productpage_window.location.href=m:document.location.href=m)},r)):(delete t.productlink,gtm4wp_push_ecommerce("select_item",[t],{currency:gtm4wp_currency}))}},{capture:!0}),jQuery(document).on("found_variation",function(e,t){if(void 0!==t&&("interactive"!==document.readyState||!gtm4wp_view_item_fired_during_pageload)){e=e.target;if(!e)return!0;var o,e=e.querySelector("[name=gtm4wp_product_data]");if(!e)return!0;try{o=JSON.parse(e.value)}catch(e){return console&&console.error&&console.error(e.message),!0}o.price=gtm4wp_make_sure_is_float(o.price),o.item_group_id=o.id,o.id=t.variation_id,o.item_id=t.variation_id,o.sku=t.sku,gtm4wp_use_sku_instead&&t.sku&&""!==t.sku&&(o.id=t.sku,o.item_id=t.sku),o.price=gtm4wp_make_sure_is_float(t.display_price);var r,c=[];for(r in t.attributes)c.push(t.attributes[r]);o.item_variant=c.join(","),delete(gtm4wp_last_selected_product_variation=o).internal_id,gtm4wp_push_ecommerce("view_item",[o],{currency:gtm4wp_currency,value:o.price}),"interactive"===document.readyState&&(gtm4wp_view_item_fired_during_pageload=!0)}}),jQuery(".variations select").trigger("change"),jQuery(document).ajaxSuccess(function(e,t,o){void 0!==o&&-1<o.url.indexOf("wc-api=WC_Quick_View")&&setTimeout(function(){var e=document.querySelector("#gtm4wp_quickview_data");if(e&&e.dataset&&e.dataset.gtm4wp_datalayer)try{var t=JSON.parse(e.dataset.gtm4wp_datalayer);t&&window.dataLayer&&window.dataLayer.push(t)}catch(e){console&&console.error&&console.error(e.message)}},500)});var o=!1,r=!1,c=document.querySelector("body");c&&(o=c.classList&&c.classList.contains("woocommerce-cart"),r=c.classList&&c.classList.contains("woocommerce-checkout")),o&&(document.addEventListener("click",function(e){e=e.target;return!e||!e.closest("[name=update_cart]")||void gtm4wp_woocommerce_handle_cart_qty_change()}),document.addEventListener("keypress",function(e){e=e.target;return!e||!e.closest(".woocommerce-cart-form input[type=number]")||void gtm4wp_woocommerce_handle_cart_qty_change()})),r&&(window.gtm4wp_checkout_value=window.gtm4wp_checkout_value||0,window.gtm4wp_checkout_products=window.gtm4wp_checkout_products||[],window.gtm4wp_checkout_products_ga4=window.gtm4wp_checkout_products_ga4||[],document.addEventListener("change",function(e){e=e.target;return!e||!e.closest("input[name^=shipping_method]")||void gtm4wp_woocommerce_handle_shipping_method_change()}),document.addEventListener("change",function(e){e=e.target;return!e||!e.closest("input[name=payment_method]")||void gtm4wp_woocommerce_handle_payment_method_change()}),jQuery("form.checkout").on("checkout_place_order",function(){-1==gtm4wp_checkout_step_fired.indexOf("shipping_method")&&gtm4wp_woocommerce_handle_shipping_method_change(),-1==gtm4wp_checkout_step_fired.indexOf("payment_method")&&gtm4wp_woocommerce_handle_payment_method_change()}))}function gtm4wp_woocommerce_page_loading_completed(){document.removeEventListener("DOMContentLoaded",gtm4wp_woocommerce_page_loading_completed),window.removeEventListener("load",gtm4wp_woocommerce_page_loading_completed),gtm4wp_woocommerce_process_pages()}window.gtm4wp_view_item_fired_during_pageload=!1,window.gtm4wp_checkout_step_fired=[],window.gtm4wp_first_container_id="","loading"!==document.readyState?window.setTimeout(gtm4wp_woocommerce_process_pages):(document.addEventListener("DOMContentLoaded",gtm4wp_woocommerce_page_loading_completed),window.addEventListener("load",gtm4wp_woocommerce_page_loading_completed));
// source --> https://mfrash.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart-variation.min.js?ver=10.8.1 
!function(t,a,i,e){var r=function(t){var a=this;a.$form=t,a.$attributeFields=t.find(".variations select"),a.$singleVariation=t.find(".single_variation"),a.$singleVariationWrap=t.find(".single_variation_wrap"),a.$resetVariations=t.find(".reset_variations"),a.$resetAlert=t.find(".reset_variations_alert"),a.$product=t.closest(".product"),a.variationData=t.data("product_variations"),a.useAjax=!1===a.variationData,a.xhr=!1,a.loading=!0,a.$singleVariationWrap.show(),a.$form.off(".wc-variation-form"),a.getChosenAttributes=a.getChosenAttributes.bind(a),a.findMatchingVariations=a.findMatchingVariations.bind(a),a.isMatch=a.isMatch.bind(a),a.toggleResetLink=a.toggleResetLink.bind(a),a.showNoMatchingVariationsMsg=a.showNoMatchingVariationsMsg.bind(a),t.on("click.wc-variation-form",".reset_variations",{variationForm:a},a.onReset),t.on("reload_product_variations",{variationForm:a},a.onReload),t.on("hide_variation",{variationForm:a},a.onHide),t.on("show_variation",{variationForm:a},a.onShow),t.on("click",".single_add_to_cart_button",{variationForm:a},a.onAddToCart),t.on("reset_data",{variationForm:a},a.onResetDisplayedVariation),t.on("reset_focus",{variationForm:a},a.onResetVariationFocus),t.on("announce_reset",{variationForm:a},a.onAnnounceReset),t.on("clear_reset_announcement",{variationForm:a},a.onClearResetAnnouncement),t.on("reset_image",{variationForm:a},a.onResetImage),t.on("change.wc-variation-form",".variations select",{variationForm:a},a.onChange),t.on("found_variation.wc-variation-form",{variationForm:a},a.onFoundVariation),t.on("check_variations.wc-variation-form",{variationForm:a},a.onFindVariation),t.on("update_variation_values.wc-variation-form",{variationForm:a},a.onUpdateAttributes),t.on("keydown.wc-variation-form",".reset_variations",{variationForm:a},a.onResetKeyDown),setTimeout(function(){t.trigger("check_variations"),t.trigger("wc_variation_form",a),a.loading=!1},100)};r.prototype.onReset=function(t){t.preventDefault(),t.data.variationForm.$attributeFields.val("").trigger("change"),t.data.variationForm.$form.trigger("announce_reset"),t.data.variationForm.$form.trigger("reset_data"),t.data.variationForm.$form.trigger("reset_focus")},r.prototype.onReload=function(t){var a=t.data.variationForm;a.variationData=a.$form.data("product_variations"),a.useAjax=!1===a.variationData,a.$form.trigger("check_variations")},r.prototype.onHide=function(t){t.preventDefault(),t.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("wc-variation-is-unavailable").addClass("disabled wc-variation-selection-needed"),t.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled")},r.prototype.onShow=function(a,i,e){a.preventDefault(),e?(a.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("disabled wc-variation-selection-needed wc-variation-is-unavailable"),a.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-disabled").addClass("woocommerce-variation-add-to-cart-enabled")):(a.data.variationForm.$form.find(".single_add_to_cart_button").removeClass("wc-variation-selection-needed").addClass("disabled wc-variation-is-unavailable"),a.data.variationForm.$form.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled")),wp.mediaelement&&a.data.variationForm.$form.find(".wp-audio-shortcode, .wp-video-shortcode").not(".mejs-container").filter(function(){return!t(this).parent().hasClass("mejs-mediaelement")}).mediaelementplayer(wp.mediaelement.settings)},r.prototype.onAddToCart=function(i){t(this).is(".disabled")&&(i.preventDefault(),t(this).is(".wc-variation-is-unavailable")?a.alert(wc_add_to_cart_variation_params.i18n_unavailable_text):t(this).is(".wc-variation-selection-needed")&&a.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text))},r.prototype.onResetDisplayedVariation=function(t){var a=t.data.variationForm;a.$product.find(".product_meta").find(".sku").wc_reset_content(),a.$product.find(".product_weight, .woocommerce-product-attributes-item--weight .woocommerce-product-attributes-item__value").wc_reset_content(),a.$product.find(".product_dimensions, .woocommerce-product-attributes-item--dimensions .woocommerce-product-attributes-item__value").wc_reset_content(),a.$form.trigger("reset_image"),a.$singleVariation.slideUp(200).trigger("hide_variation")},r.prototype.onAnnounceReset=function(t){t.data.variationForm.$resetAlert.text(wc_add_to_cart_variation_params.i18n_reset_alert_text)},r.prototype.onResetVariationFocus=function(t){t.data.variationForm.$attributeFields[0].focus()},r.prototype.onClearResetAnnouncement=function(t){t.data.variationForm.$resetAlert.text("")},r.prototype.onResetImage=function(t){t.data.variationForm.$form.wc_variations_image_update(!1)},r.prototype.onFindVariation=function(a,i){var e=a.data.variationForm,r=void 0!==i?i:e.getChosenAttributes(),o=r.data;if(r.count&&r.count===r.chosenCount)if(e.useAjax)e.xhr&&e.xhr.abort(),e.$form.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),o.product_id=parseInt(e.$form.data("product_id"),10),o.custom_data=e.$form.data("custom_data"),e.xhr=t.ajax({url:wc_add_to_cart_variation_params.wc_ajax_url.toString().replace("%%endpoint%%","get_variation"),type:"POST",data:o,success:function(t){t?e.$form.trigger("found_variation",[t]):(e.$form.trigger("reset_data"),r.chosenCount=0,e.loading||e.showNoMatchingVariationsMsg())},complete:function(){e.$form.unblock()}});else{e.$form.trigger("update_variation_values");var n=e.findMatchingVariations(e.variationData,o).shift();n?e.$form.trigger("found_variation",[n]):(e.$form.trigger("reset_data"),r.chosenCount=0,e.loading||e.showNoMatchingVariationsMsg())}else e.$form.trigger("update_variation_values"),e.$form.trigger("reset_data");e.toggleResetLink(r.chosenCount>0)},r.prototype.onFoundVariation=function(a,i){var e=a.data.variationForm,r=e.$product.find(".product_meta").find(".sku"),n=e.$product.find(".product_weight, .woocommerce-product-attributes-item--weight .woocommerce-product-attributes-item__value"),s=e.$product.find(".product_dimensions, .woocommerce-product-attributes-item--dimensions .woocommerce-product-attributes-item__value"),c=e.$singleVariationWrap.find('.quantity input.qty[name="quantity"]'),_=c.closest(".quantity"),d=!0,m=!1,v="";if(i.sku?r.wc_set_content(i.sku):r.wc_reset_content(),i.weight?n.wc_set_content(i.weight_html):n.wc_reset_content(),i.dimensions?s.wc_set_content(t.parseHTML(i.dimensions_html)[0].data):s.wc_reset_content(),e.$form.wc_variations_image_update(i),i.variation_is_visible?(m=o("variation-template"),i.variation_id):m=o("unavailable-variation-template"),v=(v=(v=m({variation:i})).replace("/*<![CDATA[*/","")).replace("/*]]>*/",""),e.$form.find('input[name="variation_id"], input.variation_id').val(i.variation_id).trigger("change"),"yes"===i.is_sold_individually)c.val("1").attr("min","1").attr("max","").trigger("change"),_.hide();else{var l=parseFloat(c.val());l=isNaN(l)?i.min_qty:(l=l>parseFloat(i.max_qty)?i.max_qty:l)<parseFloat(i.min_qty)?i.min_qty:l,c.attr("min",i.min_qty).attr("max",i.max_qty).val(l).trigger("change"),_.show()}i.is_purchasable&&i.is_in_stock&&i.variation_is_visible||(d=!1),setTimeout(function(){e.$singleVariation.html(v),e.$singleVariation.text().trim()?e.$singleVariation.slideDown(200).trigger("show_variation",[i,d]):e.$singleVariation.show().trigger("show_variation",[i,d])},300)},r.prototype.onChange=function(t){var a=t.data.variationForm;a.$form.find('input[name="variation_id"], input.variation_id').val("").trigger("change"),a.$form.trigger("clear_reset_announcement"),a.$form.find(".wc-no-matching-variations").parent().remove(),a.useAjax?a.$form.trigger("check_variations"):(a.$form.trigger("woocommerce_variation_select_change"),a.$form.trigger("check_variations")),a.$form.trigger("woocommerce_variation_has_changed")},r.prototype.addSlashes=function(t){return t=(t=t.replace(/'/g,"\\'")).replace(/"/g,'\\"')},r.prototype.onUpdateAttributes=function(a){var i=a.data.variationForm,e=i.getChosenAttributes().data;i.useAjax||(i.$attributeFields.each(function(a,r){var o,n=t(r),s=n.data("attribute_name")||n.attr("name"),c=t(r).data("show_option_none"),_=":gt(0)",d=t("<select/>"),m=n.val()||"",v=!0;if(!n.data("attribute_html")){var l=n.clone();l.find("option").removeAttr("attached").prop("disabled",!1).prop("selected",!1),n.data("attribute_options",l.find("option"+_).get()),n.data("attribute_html",l.html())}d.html(n.data("attribute_html"));var g=t.extend(!0,{},e);g[s]="";var u=i.findMatchingVariations(i.variationData,g);for(var f in u)if("undefined"!=typeof u[f]){var h=u[f].attributes;for(var p in h)if(h.hasOwnProperty(p)){var w=h[p],b="";if(p===s)if(u[f].variation_is_active&&(b="enabled"),w){w=t("<div/>").html(w).text();var $=d.find("option");if($.length)for(var y=0,F=$.length;y<F;y++){var x=t($[y]);if(w===x.val()){x.addClass("attached "+b);break}}}else d.find("option:gt(0)").addClass("attached "+b)}}o=d.find("option.attached").length,m&&(v=!1,0!==o&&d.find("option.attached.enabled").each(function(){var a=t(this).val();if(m===a)return v=!0,!1})),o>0&&m&&v&&"no"===c&&(d.find("option:first").remove(),_=""),d.find("option"+_+":not(.attached)").remove(),n.html(d.html()),n.find("option"+_+":not(.enabled)").prop("disabled",!0),m?v?n.val(m):n.val("").trigger("change"):n.val("")}),i.$form.trigger("woocommerce_update_variation_values"))},r.prototype.getChosenAttributes=function(){var a={},i=0,e=0;return this.$attributeFields.each(function(){var r=t(this).data("attribute_name")||t(this).attr("name"),o=t(this).val()||"";o.length>0&&e++,i++,a[r]=o}),{count:i,chosenCount:e,data:a}},r.prototype.findMatchingVariations=function(t,a){for(var i=[],e=0;e<t.length;e++){var r=t[e];this.isMatch(r.attributes,a)&&i.push(r)}return i},r.prototype.isMatch=function(t,a){var i=!0;for(var e in t)if(t.hasOwnProperty(e)){var r=t[e],o=a[e];void 0!==r&&void 0!==o&&0!==r.length&&0!==o.length&&r!==o&&(i=!1)}return i},r.prototype.toggleResetLink=function(t){t?"hidden"===this.$resetVariations.css("visibility")&&this.$resetVariations.css("visibility","visible").hide().fadeIn():this.$resetVariations.css("visibility","hidden")},r.prototype.showNoMatchingVariationsMsg=function(){this.$form.find(".single_variation").after('<div role="alert"><p class="wc-no-matching-variations woocommerce-info">'+wc_add_to_cart_variation_params.i18n_no_matching_variations_text+"</p></div>").next("div").find(".wc-no-matching-variations").slideDown(200)},r.prototype.onResetKeyDown=function(t){"Enter"!==t.code&&"Space"!==t.code||(t.preventDefault(),t.data.variationForm.onReset(t))},t.fn.wc_variation_form=function(){return new r(this),this},t.fn.wc_set_content=function(t){void 0===this.attr("data-o_content")&&this.attr("data-o_content",this.text()),this.text(t)},t.fn.wc_reset_content=function(){void 0!==this.attr("data-o_content")&&this.text(this.attr("data-o_content"))},t.fn.wc_set_variation_attr=function(t,a){void 0===this.attr("data-o_"+t)&&this.attr("data-o_"+t,this.attr(t)?this.attr(t):""),!1===a?this.removeAttr(t):this.attr(t,a)},t.fn.wc_reset_variation_attr=function(t){void 0!==this.attr("data-o_"+t)&&this.attr(t,this.attr("data-o_"+t))},t.fn.wc_maybe_trigger_slide_position_reset=function(a){var i=t(this),e=i.closest(".product").find(".images"),r=!1,o=a&&a.image_id?a.image_id:"";i.attr("current-image")!==o&&(r=!0),i.attr("current-image",o),r&&e.trigger("woocommerce_gallery_reset_slide_position")},t.fn.wc_variations_image_update=function(i){var e=this,r=e.closest(".product"),o=r.find(".images"),n=r.find(".flex-control-nav"),s=n.find("li:eq(0) img"),c=o.find(".woocommerce-product-gallery__image, .woocommerce-product-gallery__image--placeholder").eq(0),_=c.find(".wp-post-image"),d=c.find("a").eq(0);if(i&&i.image&&i.image.src&&i.image.src.length>1){n.find('li img[data-o_src="'+i.image.gallery_thumbnail_src+'"]').length>0&&e.wc_variations_image_reset();var m=n.find('li img[src="'+i.image.gallery_thumbnail_src+'"]');if(m.length>0)return m.trigger("flexslider-click"),e.attr("current-image",i.image_id),void a.setTimeout(function(){t(a).trigger("resize"),o.trigger("woocommerce_gallery_init_zoom")},20);_.wc_set_variation_attr("src",i.image.src),_.wc_set_variation_attr("height",i.image.src_h),_.wc_set_variation_attr("width",i.image.src_w),_.wc_set_variation_attr("srcset",i.image.srcset),_.wc_set_variation_attr("sizes",i.image.sizes),_.wc_set_variation_attr("title",i.image.title),_.wc_set_variation_attr("data-caption",i.image.caption),_.wc_set_variation_attr("alt",i.image.alt),_.wc_set_variation_attr("data-src",i.image.full_src),_.wc_set_variation_attr("data-large_image",i.image.full_src),_.wc_set_variation_attr("data-large_image_width",i.image.full_src_w),_.wc_set_variation_attr("data-large_image_height",i.image.full_src_h),c.wc_set_variation_attr("data-thumb",i.image.src),s.wc_set_variation_attr("src",i.image.gallery_thumbnail_src),d.wc_set_variation_attr("href",i.image.full_src)}else e.wc_variations_image_reset();a.setTimeout(function(){t(a).trigger("resize"),e.wc_maybe_trigger_slide_position_reset(i),o.trigger("woocommerce_gallery_init_zoom")},20)},t.fn.wc_variations_image_reset=function(){var t=this.closest(".product"),a=t.find(".images"),i=t.find(".flex-control-nav").find("li:eq(0) img"),e=a.find(".woocommerce-product-gallery__image, .woocommerce-product-gallery__image--placeholder").eq(0),r=e.find(".wp-post-image"),o=e.find("a").eq(0);r.wc_reset_variation_attr("src"),r.wc_reset_variation_attr("width"),r.wc_reset_variation_attr("height"),r.wc_reset_variation_attr("srcset"),r.wc_reset_variation_attr("sizes"),r.wc_reset_variation_attr("title"),r.wc_reset_variation_attr("data-caption"),r.wc_reset_variation_attr("alt"),r.wc_reset_variation_attr("data-src"),r.wc_reset_variation_attr("data-large_image"),r.wc_reset_variation_attr("data-large_image_width"),r.wc_reset_variation_attr("data-large_image_height"),e.wc_reset_variation_attr("data-thumb"),i.wc_reset_variation_attr("src"),o.wc_reset_variation_attr("href")},t(function(){"undefined"!=typeof wc_add_to_cart_variation_params&&t(".variations_form").each(function(){t(this).wc_variation_form()})});var o=function(t){var e=i.getElementById("tmpl-"+t).textContent,r=!1;return(r=(r=(r=r||/<#\s?data\./.test(e))||/{{{?\s?data\.(?!variation\.).+}}}?/.test(e))||/{{{?\s?data\.variation\.[\w-]*[^\s}]/.test(e))?wp.template(t):function(t){var i=t.variation||{};return e.replace(/({{{?)\s?data\.variation\.([\w-]*)\s?(}}}?)/g,function(t,e,r,o){if(e.length!==o.length)return"";var n=i[r]||"";return 2===e.length?a.escape(n):n})}}}(jQuery,window,document);
// source --> https://mfrash.com/wp-content/plugins/vartion-bundle-products/assets/frontend.js?ver=2.0.55 
( function( $ ) {
	'use strict';

	var priceRequestId = 0;
	var priceRequestTimer = null;
	var activePriceRequest = null;
	var priceHtmlCache = {};
	var lastRenderedPriceKey = '';
	var pendingPriceKey = '';

	function getVariationData( $variationForm ) {
		var data = $variationForm.data( 'product_variations' );

		if ( typeof data === 'string' ) {
			try {
				data = JSON.parse( data );
			} catch ( error ) {
				data = [];
			}
		}

		return $.isArray( data ) ? data : [];
	}

	function collectAttributes( $variationForm ) {
		var attributes = {};

		$variationForm.find( 'select[name^="attribute_"]' ).each( function() {
			var $select = $( this );
			var name = $select.data( 'attribute_name' ) || $select.attr( 'name' );

			if ( name ) {
				attributes[ name ] = $select.val() || '';
			}
		} );

		$variationForm.find( '.visw-hidden-attribute' ).each( function() {
			var $input = $( this );
			var name = $input.data( 'attribute_name' );

			if ( name && $input.val() ) {
				attributes[ name ] = $input.val();
			}
		} );

		return attributes;
	}

	function variationMatches( variation, chosen ) {
		var attributes = variation.attributes || {};

		for ( var name in attributes ) {
			if ( ! Object.prototype.hasOwnProperty.call( attributes, name ) ) {
				continue;
			}

			if ( ! chosen[ name ] ) {
				return false;
			}

			if ( attributes[ name ] && String( attributes[ name ] ) !== String( chosen[ name ] || '' ) ) {
				return false;
			}
		}

		return true;
	}

	function hasCompleteAttributes( $variationForm, chosen ) {
		var complete = true;

		$variationForm.find( '.vibp-selected-attribute' ).each( function() {
			var name = $( this ).data( 'attribute_name' );

			if ( name && ! chosen[ name ] ) {
				complete = false;
				return false;
			}

			return true;
		} );

		return complete;
	}

	function findMatchingVariationId( $variationForm, chosen ) {
		var variation = findMatchingVariation( $variationForm, chosen );

		return variation ? variation.variation_id || 0 : 0;
	}

	function findMatchingVariation( $variationForm, chosen ) {
		var variations = getVariationData( $variationForm );

		for ( var i = 0; i < variations.length; i++ ) {
			if ( variationMatches( variations[ i ], chosen ) ) {
				return variations[ i ];
			}
		}

		return null;
	}

	function getItemPreviewOwner( $item ) {
		var $form = $item.closest( '.vibp-bundle-cart' );
		var formProductId = $form.find( 'input[name="add-to-cart"]' ).first().val() || $form.data( 'product_id' ) || 'bundle';
		var itemIndex = $item.data( 'bundle-index' );

		return String( formProductId ) + ':' + String( itemIndex );
	}

	function getMainProductImage() {
		var $gallery = $( '.woocommerce-product-gallery' ).first();
		var $image = $gallery.find( '.woocommerce-product-gallery__image:first img' ).first();

		if ( ! $image.length ) {
			$image = $gallery.find( 'img.wp-post-image' ).first();
		}

		if ( ! $image.length ) {
			$image = $( '.single-product img.wp-post-image' ).first();
		}

		return $image;
	}

	function cacheMainProductImage( $image ) {
		var attrs = {};
		var $link;
		var $wrapper;

		if ( ! $image.length || $image.data( 'vibpOriginalImage' ) ) {
			return;
		}

		$.each( [ 'src', 'srcset', 'sizes', 'alt', 'title', 'data-src', 'data-large_image', 'data-large_image_width', 'data-large_image_height' ], function( index, attr ) {
			attrs[ attr ] = $image.attr( attr );
		} );

		$image.data( 'vibpOriginalImage', attrs );
		$wrapper = $image.closest( '.woocommerce-product-gallery__image' );
		if ( $wrapper.length ) {
			$wrapper.data( 'vibpOriginalThumb', $wrapper.attr( 'data-thumb' ) );
		}

		$link = $image.closest( 'a' );

		if ( $link.length ) {
			$link.data( 'vibpOriginalHref', $link.attr( 'href' ) );
		}
	}

	function getImageSource( image ) {
		image = image || {};

		return image.src || image.full_src || image.thumb_src || image.gallery_thumbnail_src || '';
	}

	function updateMainProductImage( image, owner ) {
		var src = getImageSource( image );
		var fullSrc;
		var $image;
		var $link;
		var $wrapper;

		if ( ! src ) {
			return false;
		}

		$image = getMainProductImage();

		if ( ! $image.length ) {
			return false;
		}

		cacheMainProductImage( $image );
		fullSrc = image.full_src || image.src || src;
		$image.attr( 'src', src );
		$image.attr( 'data-src', src );
		$image.attr( 'data-large_image', fullSrc );

		if ( image.srcset ) {
			$image.attr( 'srcset', image.srcset );
			$image.attr( 'data-srcset', image.srcset );
		} else {
			$image.removeAttr( 'srcset' );
			$image.removeAttr( 'data-srcset' );
		}

		if ( image.sizes ) {
			$image.attr( 'sizes', image.sizes );
		} else {
			$image.removeAttr( 'sizes' );
		}

		if ( image.alt !== undefined ) {
			$image.attr( 'alt', image.alt || '' );
		}

		if ( image.title !== undefined ) {
			$image.attr( 'title', image.title || '' );
		}

		if ( image.full_src_w ) {
			$image.attr( 'data-large_image_width', image.full_src_w );
		}

		if ( image.full_src_h ) {
			$image.attr( 'data-large_image_height', image.full_src_h );
		}

		$wrapper = $image.closest( '.woocommerce-product-gallery__image' );
		if ( $wrapper.length ) {
			$wrapper.attr( 'data-thumb', image.thumb_src || image.gallery_thumbnail_src || src );
		}

		$link = $image.closest( 'a' );
		if ( $link.length ) {
			$link.attr( 'href', fullSrc );
		}

		if ( owner ) {
			$image.data( 'vibpPreviewOwner', owner );
		}

		$( '.woocommerce-product-gallery' ).first().trigger( 'woocommerce_gallery_reset_slide_position' );
		return true;
	}

	function restoreMainProductImage( owner ) {
		var $image = getMainProductImage();
		var attrs;
		var $link;
		var $wrapper;
		var originalThumb;

		if ( ! $image.length ) {
			return;
		}

		if ( owner && $image.data( 'vibpPreviewOwner' ) && owner !== $image.data( 'vibpPreviewOwner' ) ) {
			return;
		}

		attrs = $image.data( 'vibpOriginalImage' );
		if ( ! attrs ) {
			return;
		}

		$.each( attrs, function( attr, value ) {
			if ( value === undefined || value === null || value === '' ) {
				$image.removeAttr( attr );
			} else {
				$image.attr( attr, value );
			}
		} );

		$link = $image.closest( 'a' );
		if ( $link.length && $link.data( 'vibpOriginalHref' ) !== undefined ) {
			$link.attr( 'href', $link.data( 'vibpOriginalHref' ) );
		}

		$wrapper = $image.closest( '.woocommerce-product-gallery__image' );
		if ( $wrapper.length ) {
			originalThumb = $wrapper.data( 'vibpOriginalThumb' );
			if ( originalThumb === undefined || originalThumb === null || originalThumb === '' ) {
				$wrapper.removeAttr( 'data-thumb' );
			} else {
				$wrapper.attr( 'data-thumb', originalThumb );
			}
		}

		$image.removeData( 'vibpPreviewOwner' );
		$( '.woocommerce-product-gallery' ).first().trigger( 'woocommerce_gallery_reset_slide_position' );
	}

	function getMultiVariationOptionImage( $option ) {
		var $input = $option.find( '.vibp-multi-variation-input' ).first();
		var $image = $option.find( '.vibp-multi-variation-media img' ).first();

		return {
			src: $input.attr( 'data-image_src' ) || $input.attr( 'data-image_full_src' ) || $image.attr( 'src' ) || '',
			full_src: $input.attr( 'data-image_full_src' ) || $input.attr( 'data-image_src' ) || $image.attr( 'src' ) || '',
			thumb_src: $input.attr( 'data-image_thumb_src' ) || $image.attr( 'src' ) || '',
			gallery_thumbnail_src: $input.attr( 'data-image_gallery_thumb_src' ) || $image.attr( 'src' ) || '',
			srcset: $input.attr( 'data-image_srcset' ) || $image.attr( 'srcset' ) || '',
			sizes: $input.attr( 'data-image_sizes' ) || $image.attr( 'sizes' ) || '',
			alt: $input.attr( 'data-image_alt' ) || $image.attr( 'alt' ) || '',
			title: $input.attr( 'data-image_title' ) || $image.attr( 'title' ) || ''
		};
	}

	function syncBundleItem( $variationForm, options ) {
		var chosen = collectAttributes( $variationForm );
		var variationId = parseInt( $variationForm.find( 'input.variation_id' ).val() || '0', 10 );
		var completeAttributes = hasCompleteAttributes( $variationForm, chosen );
		var variation = completeAttributes ? findMatchingVariation( $variationForm, chosen ) : null;
		var $item = $variationForm.closest( '.vibp-bundle-item' );
		var previewOwner = getItemPreviewOwner( $item );

		if ( ! completeAttributes ) {
			variationId = 0;
			$variationForm.find( 'input.variation_id' ).val( 0 );
		}

		if ( variation && variation.variation_id && parseInt( variation.variation_id, 10 ) !== variationId ) {
			variationId = variation.variation_id || 0;
			$variationForm.find( 'input.variation_id' ).val( variationId );
		}

		if ( ! variationId ) {
			variationId = variation ? variation.variation_id || 0 : 0;
			if ( variationId ) {
				$variationForm.find( 'input.variation_id' ).val( variationId );
			}
		}

		if ( variation && variation.display_price !== undefined ) {
			var qty = parseInt( $item.find( 'input[name$="[quantity]"]' ).val() || '1', 10 ) || 1;

			if ( '1' !== $item.attr( 'data-custom_price' ) ) {
				$item.attr( 'data-item_price', ( parseFloat( variation.display_price ) || 0 ) * qty );
			}

			if ( variation.display_regular_price !== undefined ) {
				$item.attr( 'data-item_regular_price', ( parseFloat( variation.display_regular_price ) || parseFloat( variation.display_price ) || 0 ) * qty );
			}
		}

		$variationForm.find( '.vibp-selected-variation' ).val( variationId || 0 );
		$variationForm.find( '.vibp-selected-attribute' ).each( function() {
			var $input = $( this );
			var name = $input.data( 'attribute_name' );
			$input.val( name && chosen[ name ] ? chosen[ name ] : '' );
		} );

		if ( ! variationId ) {
			$variationForm.find( '.vibp-attributes-confirmed' ).val( '' );
			restoreMainProductImage( previewOwner );
		} else if ( variation && variation.image ) {
			updateMainProductImage( variation.image, previewOwner );
		}

		if ( ! options || false !== options.updatePrice ) {
			notifyBundlePriceChanged( $variationForm.closest( '.vibp-bundle-cart' ), options || {} );
		}
	}

	function markAttributesConfirmed( $variationForm ) {
		$variationForm.find( '.vibp-attributes-confirmed' ).val( '1' );
	}

	function syncMultiVariationItem( $multi, options ) {
		var $item = $multi.closest( '.vibp-bundle-item' );
		var qty = parseInt( $multi.attr( 'data-quantity' ) || $item.find( 'input[name$="[quantity]"]' ).val() || '1', 10 ) || 1;
		var maxChoices = parseInt( $multi.attr( 'data-max_choices' ) || qty || '1', 10 ) || 1;
		var isCustom = '1' === String( $multi.attr( 'data-custom_price' ) || $item.attr( 'data-custom_price' ) || '' );
		var basePrice = parseFloat( $multi.attr( 'data-base_price' ) || $item.attr( 'data-base_item_price' ) || '0' ) || 0;
		var baseRegularPrice = parseFloat( $multi.attr( 'data-base_regular_price' ) || $item.attr( 'data-base_item_regular_price' ) || basePrice || '0' ) || 0;
		var basePricePerChoice = maxChoices > 0 ? basePrice / maxChoices : basePrice;
		var baseRegularPricePerChoice = maxChoices > 0 ? baseRegularPrice / maxChoices : baseRegularPrice;
		var selected = [];
		var selectedUnits = 0;
		var price = 0;
		var regularPrice = 0;
		var previewOption = null;
		var preferredPreviewVariationId = options && options.previewVariationId ? String( options.previewVariationId ) : String( $multi.data( 'vibpPreviewVariationId' ) || '' );
		var previewOwner = getItemPreviewOwner( $item );
		var atLimit;
		var isIncluded;

		$multi.find( '.vibp-multi-variation-input' ).each( function() {
			var $input = $( this );
			var $option = $input.closest( '.vibp-multi-variation-option' );
			var $qtyInput = $option.find( '.vibp-multi-variation-qty-input' ).first();
			var selectedQty = parseInt( $qtyInput.val() || '0', 10 ) || 0;
			var inputPrice;
			var inputRegularPrice;

			if ( $input.is( ':checked' ) && selectedQty < 1 ) {
				selectedQty = 1;
			}

			selectedQty = Math.max( 0, Math.min( selectedQty, maxChoices ) );

			if ( selectedUnits + selectedQty > maxChoices ) {
				selectedQty = Math.max( 0, maxChoices - selectedUnits );
			}

			$qtyInput.val( selectedQty );
			$input.prop( 'checked', selectedQty > 0 );
			$option.toggleClass( 'is-selected', selectedQty > 0 );

			if ( selectedQty < 1 ) {
				return;
			}

			selected.push( $input.val() );
			selectedUnits += selectedQty;
			if ( ! previewOption || ( preferredPreviewVariationId && String( $input.val() ) === preferredPreviewVariationId ) ) {
				previewOption = $option;
			}

			if ( isCustom ) {
				price += basePricePerChoice * selectedQty;
				regularPrice += baseRegularPricePerChoice * selectedQty;
				return;
			}

			inputPrice = parseFloat( $input.attr( 'data-price' ) || '0' ) || 0;
			inputRegularPrice = parseFloat( $input.attr( 'data-regular_price' ) || inputPrice || '0' ) || inputPrice;
			price += inputPrice * selectedQty;
			regularPrice += inputRegularPrice * selectedQty;
		} );

		if ( ! selectedUnits ) {
			price = basePrice;
			regularPrice = baseRegularPrice;
		}

		atLimit = selectedUnits >= maxChoices;
		isIncluded = isOptionalItemIncluded( $multi );
		$multi.find( '.vibp-multi-variation-input' ).each( function() {
			var $input = $( this );
			var $option = $input.closest( '.vibp-multi-variation-option' );
			var $qtyInput = $option.find( '.vibp-multi-variation-qty-input' ).first();
			var selectedQty = parseInt( $qtyInput.val() || '0', 10 ) || 0;
			var disabled = ! isIncluded || ( atLimit && selectedQty < 1 );

			$input.prop( 'disabled', disabled );
			$qtyInput.prop( 'disabled', disabled );
			$option.find( '.vibp-multi-variation-qty-button[data-vibp-delta="-1"]' ).prop( 'disabled', ! isIncluded || selectedQty < 1 );
			$option.find( '.vibp-multi-variation-qty-button[data-vibp-delta="1"]' ).prop( 'disabled', ! isIncluded || atLimit );
			$option.toggleClass( 'is-disabled', disabled );
		} );

		$item.attr( 'data-item_price', price );
		$item.attr( 'data-item_regular_price', regularPrice );
		$multi.find( '.vibp-selected-variation' ).val( selected.length ? selected[0] : 0 );
		$multi.find( '.vibp-attributes-confirmed' ).val( selectedUnits === maxChoices ? '1' : '' );
		$multi.find( '.vibp-multi-variation-limit' )
			.text( selectedUnits ? 'تم اختيار ' + selectedUnits + ' من ' + maxChoices : 'اختر ' + maxChoices + ' من الصور' )
			.toggleClass( 'is-complete', selectedUnits === maxChoices );
		$multi.toggleClass( 'has-selection', selectedUnits > 0 );
		$multi.toggleClass( 'is-at-limit', atLimit );
		if ( previewOption && selectedUnits > 0 ) {
			$multi.data( 'vibpPreviewVariationId', previewOption.find( '.vibp-multi-variation-input' ).first().val() || '' );
			updateMainProductImage( getMultiVariationOptionImage( previewOption ), previewOwner );
		} else {
			$multi.removeData( 'vibpPreviewVariationId' );
			restoreMainProductImage( previewOwner );
		}

		if ( ! options || false !== options.updatePrice ) {
			notifyBundlePriceChanged( $multi.closest( '.vibp-bundle-cart' ), options || {} );
		}
	}

	function getMultiVariationSelectedQty( $multi ) {
		var total = 0;

		$multi.find( '.vibp-multi-variation-qty-input' ).each( function() {
			total += Math.max( 0, parseInt( $( this ).val() || '0', 10 ) || 0 );
		} );

		return total;
	}

	function collectBundlePriceData( $form ) {
		var price = 0;
		var regularPrice = 0;
		var choiceGroups = {};

		$form.find( '.vibp-bundle-item' ).each( function() {
			var $item = $( this );
			var itemPrice = parseFloat( $item.attr( 'data-item_price' ) || '0' ) || 0;
			var itemRegularPrice = parseFloat( $item.attr( 'data-item_regular_price' ) || '0' ) || 0;
			var choiceName;

			if ( $item.hasClass( 'vibp-bundle-item--choice' ) ) {
				choiceName = $item.find( '.vibp-choice-toggle input[type="radio"]' ).attr( 'name' ) || 'default';

				if ( ! choiceGroups[ choiceName ] ) {
					choiceGroups[ choiceName ] = {
						max: null,
						selected: null
					};
				}

				if ( null === choiceGroups[ choiceName ].max || itemPrice > choiceGroups[ choiceName ].max.price ) {
					choiceGroups[ choiceName ].max = {
						price: itemPrice,
						regular_price: itemRegularPrice
					};
				}

				if ( $item.hasClass( 'is-included' ) ) {
					choiceGroups[ choiceName ].selected = {
						price: itemPrice,
						regular_price: itemRegularPrice
					};
				}

				return;
			}

			if ( $item.hasClass( 'vibp-bundle-item--optional' ) && ! $item.hasClass( 'is-included' ) ) {
				return;
			}

			price += itemPrice;
			regularPrice += itemRegularPrice;
		} );

		$.each( choiceGroups, function( name, group ) {
			var chosen = group.selected || group.max;

			if ( chosen ) {
				price += chosen.price;
				regularPrice += chosen.regular_price;
			}
		} );

		return {
			price: price,
			regular_price: regularPrice,
			sale_price: regularPrice > price ? price : '',
			has_discount: regularPrice > price
		};
	}

	function notifyBundlePriceChanged( $form, options ) {
		if ( ! $form.length ) {
			return;
		}

		options = options || {};

		var data = collectBundlePriceData( $form );

		$form
			.attr( 'data-vibp-price', data.price )
			.attr( 'data-vibp-regular-price', data.regular_price )
			.attr( 'data-vibp-sale-price', data.sale_price );

		$form.find( '.vibp-calculated-price' ).val( data.price );
		$form.find( '.vibp-calculated-regular-price' ).val( data.regular_price );
		$form.find( '.vibp-calculated-sale-price' ).val( data.sale_price );

		$form.trigger( 'vibp_bundle_price_changed', [ data ] );
		$( document.body ).trigger( 'vibp_bundle_price_changed', [ $form, data ] );

		if ( $form[0] && window.CustomEvent ) {
			$form[0].dispatchEvent( new CustomEvent( 'vibp:bundle-price-changed', {
				bubbles: true,
				detail: data
			} ) );
		}

		if ( false !== options.renderPrice ) {
			updateMfrashPriceBox( data, options );
		}
	}

	function normalizePriceValue( value ) {
		var number = parseFloat( value || 0 );

		if ( ! isFinite( number ) ) {
			number = 0;
		}

		return number.toFixed( 2 );
	}

	function updateMfrashPriceBox( data, options ) {
		var settings = window.vibpBundle || {};
		var $box = $( '#mfrash-price-wrap' );
		var regularPrice;
		var salePrice;
		var cacheKey;
		var requestId;
		var delay;

		if ( ! $box.length || ! settings.mfrashPrice || ! settings.ajaxUrl ) {
			return;
		}

		options = options || {};
		regularPrice = data.regular_price || data.price || 0;
		salePrice = data.has_discount ? data.price : 0;
		cacheKey = normalizePriceValue( regularPrice ) + '|' + normalizePriceValue( salePrice );

		if ( cacheKey === lastRenderedPriceKey || cacheKey === pendingPriceKey ) {
			return;
		}

		if ( priceHtmlCache[ cacheKey ] ) {
			clearTimeout( priceRequestTimer );
			pendingPriceKey = '';
			if ( activePriceRequest && activePriceRequest.readyState !== 4 ) {
				activePriceRequest.abort();
			}
			$box.html( priceHtmlCache[ cacheKey ] );
			lastRenderedPriceKey = cacheKey;
			return;
		}

		clearTimeout( priceRequestTimer );
		pendingPriceKey = cacheKey;
		delay = options.immediate ? 0 : parseInt( settings.priceDebounceMs || 120, 10 );

		priceRequestTimer = window.setTimeout( function() {
			requestId = ++priceRequestId;

			if ( activePriceRequest && activePriceRequest.readyState !== 4 ) {
				activePriceRequest.abort();
			}

			activePriceRequest = $.post( settings.ajaxUrl, {
				action: 'vibp_render_mfrash_price',
				nonce: settings.priceNonce || '',
				regular_price: regularPrice,
				sale_price: salePrice
			} ).done( function( response ) {
				if ( requestId !== priceRequestId || pendingPriceKey !== cacheKey ) {
					return;
				}

				if ( response && response.success && response.data && response.data.html ) {
					priceHtmlCache[ cacheKey ] = response.data.html;
					$box.html( response.data.html );
					lastRenderedPriceKey = cacheKey;
				}
			} ).always( function() {
				if ( pendingPriceKey === cacheKey ) {
					pendingPriceKey = '';
				}
				if ( activePriceRequest && activePriceRequest.readyState === 4 ) {
					activePriceRequest = null;
				}
			} );
		}, Math.max( delay, 0 ) );
	}

	function escapeHtml( value ) {
		return String( value || '' ).replace( /[&<>"']/g, function( character ) {
			return {
				'&': '&amp;',
				'<': '&lt;',
				'>': '&gt;',
				'"': '&quot;',
				"'": '&#039;'
			}[ character ];
		} );
	}

	function getNoticesWrapper( $form ) {
		var $wrapper = $( '.woocommerce-notices-wrapper' ).first();

		if ( ! $wrapper.length ) {
			$wrapper = $( '<div class="woocommerce-notices-wrapper"></div>' );
			$form.before( $wrapper );
		}

		return $wrapper;
	}

	function showBundleNotice( $form, notices, message, type ) {
		var $wrapper = getNoticesWrapper( $form );
		var html = notices && $.trim( notices ) ? notices : '';
		var settings = window.vibpBundle || {};
		var detail = '';

		if ( ! html ) {
			if ( 'error' === type ) {
				if ( message === settings.missingVariation ) {
					detail = settings.missingVariationHelp || '';
				} else if ( message === settings.missingChoice ) {
					detail = settings.missingChoiceHelp || '';
				}
				html = '<div class="woocommerce-error vibp-bundle-notice vibp-bundle-notice--error" role="alert"><span class="vibp-bundle-notice__icon" aria-hidden="true">!</span><span class="vibp-bundle-notice__copy"><strong>' + escapeHtml( message ) + '</strong>' + ( detail ? '<small>' + escapeHtml( detail ) + '</small>' : '' ) + '</span></div>';
			} else {
				html = '<div class="woocommerce-message" role="alert">' + escapeHtml( message ) + '</div>';
			}
		}

		$wrapper.html( html );

		if ( $wrapper[0] && $wrapper[0].scrollIntoView ) {
			$wrapper[0].scrollIntoView( {
				block: 'nearest',
				behavior: 'smooth'
			} );
		}
	}

	function parseAjaxFailureData( jqXHR ) {
		var text;
		var match;

		if ( jqXHR && jqXHR.responseJSON && jqXHR.responseJSON.data ) {
			return jqXHR.responseJSON.data;
		}

		text = jqXHR && jqXHR.responseText ? $.trim( jqXHR.responseText ) : '';
		if ( ! text ) {
			return {};
		}

		try {
			return JSON.parse( text ).data || {};
		} catch ( error ) {
			match = text.match( /\{"success"[\s\S]*\}$/ );
			if ( match && match[0] ) {
				try {
					return JSON.parse( match[0] ).data || {};
				} catch ( ignored ) {}
			}
		}

		return {};
	}

	function initVariationForm( $variationForm ) {
		if ( $.fn.wc_variation_form ) {
			$variationForm.wc_variation_form();
		}

		$variationForm.find( '.vibp-attributes-confirmed' ).val( '' );
		disableBundleSwatchNavigation( $variationForm );
		syncBundleItem( $variationForm );
	}

	function isOptionalItemIncluded( $variationForm ) {
		var $item = $variationForm.closest( '.vibp-bundle-item' );
		var $checkbox = $item.find( '.vibp-optional-toggle input[type="checkbox"]' ).first();
		var $choice = $item.find( '.vibp-choice-toggle input[type="radio"]' ).first();

		if ( $choice.length ) {
			return $choice.is( ':checked' );
		}

		return ! $checkbox.length || $checkbox.is( ':checked' );
	}

	function syncChoiceGroup( $radio ) {
		var groupName = $radio.attr( 'name' );
		var groupMatch;
		var groupKey;
		var $form;
		var $selected;

		if ( ! groupName ) {
			return;
		}

		$( 'input[name="' + groupName.replace( /"/g, '\\"' ) + '"]' ).each( function() {
			var $item = $( this ).closest( '.vibp-bundle-item' );
			var checked = $( this ).is( ':checked' );

			$item.toggleClass( 'is-included', checked );
			$item.find( '.vibp-choice-included' ).val( checked ? '1' : '' );
			$item.find( '.vibp-child-variations select, .vibp-child-variations .visw-option' ).prop( 'disabled', ! checked );
			$item.find( '.vibp-child-multi-variations input' ).prop( 'disabled', ! checked );
			$item.find( '.vibp-child-multi-variations' ).each( function() {
				syncMultiVariationItem( $( this ), { updatePrice: false } );
			} );
		} );

		groupMatch = groupName.match( /^vibp_choice_group\[(.+)\]$/ );
		groupKey = groupMatch ? groupMatch[1] : groupName;
		$form = $radio.closest( '.vibp-bundle-cart' );
		$selected = $( 'input[name="' + groupName.replace( /"/g, '\\"' ) + '"]:checked' );

		if ( $form.length && $selected.length ) {
			ensureHiddenInput( $form, 'vibp_selected_choice[' + groupKey + ']' ).val( $selected.val() );
			ensureHiddenInput( $form, 'vibp_selected_choice_product[' + groupKey + ']' ).val( $selected.data( 'product_id' ) || $selected.closest( '.vibp-bundle-item' ).data( 'product_id' ) || '' );
		}
	}

	function syncAllChoiceGroups( $form ) {
		var groups = {};

		$form.find( '.vibp-choice-toggle input[type="radio"]' ).each( function() {
			var name = $( this ).attr( 'name' );

			if ( name && ! groups[ name ] ) {
				groups[ name ] = true;
				syncChoiceGroup( $form.find( 'input[name="' + name.replace( /"/g, '\\"' ) + '"]:checked' ).first() );
			}
		} );
	}

	function ensureHiddenInput( $form, name ) {
		var $input = $form.find( 'input[type="hidden"][name="' + name.replace( /"/g, '\\"' ) + '"]' );

		if ( ! $input.length ) {
			$input = $( '<input type="hidden" />' ).attr( 'name', name ).appendTo( $form );
		}

		return $input;
	}

	function hasMissingChoiceGroup( $form ) {
		var groups = {};
		var missing = false;

		$form.find( '.vibp-choice-toggle input[type="radio"]' ).each( function() {
			var name = $( this ).attr( 'name' );

			if ( name ) {
				groups[ name ] = true;
			}
		} );

		$.each( groups, function( name ) {
			if ( ! $form.find( 'input[name="' + name.replace( /"/g, '\\"' ) + '"]:checked' ).length ) {
				missing = true;
				return false;
			}

			return true;
		} );

		return missing;
	}

	function disableBundleSwatchNavigation( $scope ) {
		$scope.find( '.visw-option' ).each( function() {
			$( this )
				.attr( 'href', '#' )
				.attr( 'data-variation_url', '' )
				.attr( 'data-add_to_cart_url', '' )
				.removeAttr( 'data-visw-add-to-cart-url' );
		} );
	}

	$( function() {
		$( '.vibp-child-variations' ).each( function() {
			initVariationForm( $( this ) );
		} );
		$( '.vibp-child-multi-variations' ).each( function() {
			syncMultiVariationItem( $( this ), { renderPrice: false } );
		} );
		$( '.vibp-optional-toggle input[type="checkbox"]' ).trigger( 'change' );
		$( '.vibp-choice-toggle input[type="radio"]:checked' ).each( function() {
			syncChoiceGroup( $( this ) );
		} );
		$( '.vibp-bundle-cart' ).each( function() {
			notifyBundlePriceChanged( $( this ), { renderPrice: false } );
		} );
	} );

	$( document ).on(
		'change found_variation hide_variation woocommerce_variation_has_changed wc_variation_form',
		'.vibp-child-variations',
		function( event ) {
			var $variationForm = $( this );
			if ( 'change' === event.type && event.originalEvent && $( event.target ).is( 'select[name^="attribute_"]' ) ) {
				markAttributesConfirmed( $variationForm );
			}
			disableBundleSwatchNavigation( $variationForm );
			syncBundleItem( $variationForm );
		}
	);

	$( document ).on( 'click', '.vibp-child-variations .visw-option', function( event ) {
		event.preventDefault();

		$( this )
			.attr( 'href', '#' )
			.attr( 'data-variation_url', '' )
			.attr( 'data-add_to_cart_url', '' );

		var $variationForm = $( this ).closest( '.vibp-child-variations' );
		markAttributesConfirmed( $variationForm );

		window.setTimeout( function() {
			disableBundleSwatchNavigation( $variationForm );
			syncBundleItem( $variationForm );
		}, 20 );
	} );

	$( document ).on( 'click', '.vibp-child-variations .visw-clear-selection', function() {
		var $variationForm = $( this ).closest( '.vibp-child-variations' );

		$variationForm.find( '.vibp-attributes-confirmed' ).val( '' );

		window.setTimeout( function() {
			syncBundleItem( $variationForm );
		}, 20 );
	} );

	$( document ).on( 'change', '.vibp-multi-variation-input', function() {
		var $multi = $( this ).closest( '.vibp-child-multi-variations' );
		var maxChoices = parseInt( $multi.attr( 'data-max_choices' ) || $multi.attr( 'data-quantity' ) || '1', 10 ) || 1;
		var $option = $( this ).closest( '.vibp-multi-variation-option' );
		var $qtyInput = $option.find( '.vibp-multi-variation-qty-input' ).first();

		if ( ! isOptionalItemIncluded( $multi ) ) {
			$( this ).prop( 'checked', false );
			$qtyInput.val( 0 );
			syncMultiVariationItem( $multi );
			return;
		}

		if ( $( this ).is( ':checked' ) && getMultiVariationSelectedQty( $multi ) >= maxChoices && parseInt( $qtyInput.val() || '0', 10 ) < 1 ) {
			$( this ).prop( 'checked', false );
		} else if ( $( this ).is( ':checked' ) && parseInt( $qtyInput.val() || '0', 10 ) < 1 ) {
			$qtyInput.val( 1 );
		} else if ( ! $( this ).is( ':checked' ) ) {
			$qtyInput.val( 0 );
		}

		if ( $( this ).is( ':checked' ) ) {
			$multi.data( 'vibpPreviewVariationId', $( this ).val() || '' );
		}

		syncMultiVariationItem( $multi, { previewVariationId: $( this ).val() || '' } );
	} );

	$( document ).on( 'click', '.vibp-multi-variation-option', function( event ) {
		var $target = $( event.target );
		var $option;
		var $multi;
		var $input;
		var $qtyInput;
		var maxChoices;

		if ( $target.closest( '.vibp-multi-variation-qty, .vibp-multi-variation-input' ).length ) {
			return;
		}

		$option = $( this );
		$multi = $option.closest( '.vibp-child-multi-variations' );
		$input = $option.find( '.vibp-multi-variation-input' ).first();
		$qtyInput = $option.find( '.vibp-multi-variation-qty-input' ).first();
		maxChoices = parseInt( $multi.attr( 'data-max_choices' ) || $multi.attr( 'data-quantity' ) || '1', 10 ) || 1;

		if ( ! isOptionalItemIncluded( $multi ) ) {
			return;
		}

		if ( $input.is( ':checked' ) ) {
			$input.prop( 'checked', false );
			$qtyInput.val( 0 );
		} else if ( getMultiVariationSelectedQty( $multi ) < maxChoices ) {
			$input.prop( 'checked', true );
			$qtyInput.val( 1 );
		}

		if ( $input.is( ':checked' ) ) {
			$multi.data( 'vibpPreviewVariationId', $input.val() || '' );
		}

		syncMultiVariationItem( $multi, { previewVariationId: $input.val() || '' } );
	} );

	$( document ).on( 'click', '.vibp-multi-variation-qty-button', function( event ) {
		var $button = $( this );
		var $option = $button.closest( '.vibp-multi-variation-option' );
		var $multi = $button.closest( '.vibp-child-multi-variations' );
		var $input = $option.find( '.vibp-multi-variation-input' ).first();
		var $qtyInput = $option.find( '.vibp-multi-variation-qty-input' ).first();
		var maxChoices = parseInt( $multi.attr( 'data-max_choices' ) || $multi.attr( 'data-quantity' ) || '1', 10 ) || 1;
		var current = Math.max( 0, parseInt( $qtyInput.val() || '0', 10 ) || 0 );
		var delta = parseInt( $button.attr( 'data-vibp-delta' ) || '0', 10 ) || 0;
		var totalWithoutCurrent = getMultiVariationSelectedQty( $multi ) - current;
		var next = current + delta;

		event.preventDefault();
		event.stopPropagation();

		next = Math.max( 0, Math.min( next, maxChoices - totalWithoutCurrent ) );
		$qtyInput.val( next );
		$input.prop( 'checked', next > 0 );
		if ( next > 0 ) {
			$multi.data( 'vibpPreviewVariationId', $input.val() || '' );
		}
		syncMultiVariationItem( $multi, { previewVariationId: $input.val() || '' } );
	} );

	$( document ).on( 'input change', '.vibp-multi-variation-qty-input', function( event ) {
		var $qtyInput = $( this );
		var $option = $qtyInput.closest( '.vibp-multi-variation-option' );
		var $multi = $qtyInput.closest( '.vibp-child-multi-variations' );
		var $input = $option.find( '.vibp-multi-variation-input' ).first();
		var maxChoices = parseInt( $multi.attr( 'data-max_choices' ) || $multi.attr( 'data-quantity' ) || '1', 10 ) || 1;
		var current = Math.max( 0, parseInt( $qtyInput.val() || '0', 10 ) || 0 );
		var totalWithoutCurrent = getMultiVariationSelectedQty( $multi ) - current;
		var next = Math.max( 0, Math.min( current, maxChoices - totalWithoutCurrent ) );

		event.stopPropagation();

		$qtyInput.val( next );
		$input.prop( 'checked', next > 0 );
		if ( next > 0 ) {
			$multi.data( 'vibpPreviewVariationId', $input.val() || '' );
		}
		syncMultiVariationItem( $multi, { previewVariationId: $input.val() || '' } );
	} );

	$( document ).on( 'change', '.vibp-optional-toggle input[type="checkbox"]', function() {
		var $item = $( this ).closest( '.vibp-bundle-item' );

		$item.toggleClass( 'is-included', $( this ).is( ':checked' ) );
		$item.find( '.vibp-child-variations select, .vibp-child-variations .visw-option' ).prop( 'disabled', ! $( this ).is( ':checked' ) );
		$item.find( '.vibp-child-multi-variations input' ).prop( 'disabled', ! $( this ).is( ':checked' ) );
		$item.find( '.vibp-child-multi-variations' ).each( function() {
			syncMultiVariationItem( $( this ), { updatePrice: false } );
		} );
		notifyBundlePriceChanged( $( this ).closest( '.vibp-bundle-cart' ) );
	} );

	$( document ).on( 'change', '.vibp-choice-toggle input[type="radio"]', function() {
		syncChoiceGroup( $( this ) );
		notifyBundlePriceChanged( $( this ).closest( '.vibp-bundle-cart' ) );
	} );

	$( document ).on( 'click', '.vibp-bundle-item--choice', function( event ) {
		if ( $( event.target ).closest( '.vibp-child-variations, .vibp-child-multi-variations, a, button, input, select, label' ).length ) {
			return;
		}

		var $radio = $( this ).find( '.vibp-choice-toggle input[type="radio"]' ).first();
		if ( $radio.length && ! $radio.is( ':checked' ) ) {
			$radio.prop( 'checked', true ).trigger( 'change' );
		}
	} );

	$( document ).on( 'submit.vibpAjaxAdd', '.vibp-bundle-cart', function( event ) {
		var valid = true;
		var $form = $( this );
		var settings = window.vibpBundle || {};
		var $button;
		var originalText;
		var formData;
		var productId;
		var lastResponse = null;

		if ( ! settings.ajaxAddToCart || ! settings.ajaxUrl || ! window.FormData ) {
			return;
		}

		event.preventDefault();
		event.stopImmediatePropagation();

		if ( $form.data( 'vibpAjaxSubmitting' ) ) {
			return;
		}

		syncAllChoiceGroups( $form );
		notifyBundlePriceChanged( $form, { renderPrice: false } );

		if ( hasMissingChoiceGroup( $form ) ) {
			showBundleNotice( $form, '', settings.missingChoice || 'فضلاً اختر أحد الخيارات', 'error' );
			$form.trigger( 'vibp_bundle_ajax_error' );
			return;
		}

		$form.find( '.vibp-child-variations' ).each( function() {
			if ( ! isOptionalItemIncluded( $( this ) ) ) {
				return;
			}

			syncBundleItem( $( this ), { updatePrice: false } );

			if ( ! parseInt( $( this ).find( '.vibp-selected-variation' ).val() || '0', 10 ) ) {
				valid = false;
			}
		} );

		$form.find( '.vibp-child-multi-variations' ).each( function() {
			var maxChoices = parseInt( $( this ).attr( 'data-max_choices' ) || $( this ).attr( 'data-quantity' ) || '1', 10 ) || 1;

			if ( ! isOptionalItemIncluded( $( this ) ) ) {
				return;
			}

			syncMultiVariationItem( $( this ), { updatePrice: false } );

			if ( getMultiVariationSelectedQty( $( this ) ) !== maxChoices ) {
				valid = false;
			}
		} );

		if ( ! valid ) {
			showBundleNotice( $form, '', settings.missingVariation || 'فضلاً اختر لون المفرش', 'error' );
			$form.trigger( 'vibp_bundle_ajax_error' );
			return;
		}

		$button = $form.find( '.single_add_to_cart_button' ).first();
		originalText = $button.text();
		formData = new FormData( $form[0] );
		productId = $button.attr( 'value' ) || $button.val() || $form.find( '[name="product_id"]' ).val() || '';

		if ( formData.set ) {
			formData.set( 'action', 'vibp_add_bundle_to_cart' );
			formData.set( 'nonce', settings.ajaxAddNonce || $form.find( '[name="nonce"]' ).val() || '' );
		} else {
			formData.append( 'action', 'vibp_add_bundle_to_cart' );
			formData.append( 'nonce', settings.ajaxAddNonce || $form.find( '[name="nonce"]' ).val() || '' );
		}

		if ( productId && ! formData.get( 'add-to-cart' ) ) {
			formData.append( 'add-to-cart', productId );
		}

		$form.data( 'vibpAjaxSubmitting', true );
		$button.prop( 'disabled', true ).addClass( 'loading' ).text( settings.addingText || originalText );

		$.ajax( {
			url: settings.ajaxUrl,
			type: 'POST',
			data: formData,
			processData: false,
			contentType: false
		} ).done( function( response ) {
			var data = response && response.data ? response.data : {};
			lastResponse = response;

			if ( response && response.success ) {
				showBundleNotice( $form, data.notices || '', data.message || 'Bundle added to cart.', 'success' );
				$( document.body ).trigger( 'added_to_cart', [ data.fragments || {}, data.cart_hash || '', $button ] );
				$( document.body ).trigger( 'wc_fragment_refresh' );
				$form.trigger( 'vibp_bundle_ajax_added', [ response ] );
				return;
			}

			showBundleNotice( $form, data.notices || '', data.message || settings.errorText || 'Could not add bundle to cart.', 'error' );
			$form.trigger( 'vibp_bundle_ajax_error', [ response ] );
		} ).fail( function( jqXHR ) {
			var data = parseAjaxFailureData( jqXHR );
			showBundleNotice( $form, data.notices || '', data.message || settings.errorText || 'Could not add bundle to cart.', 'error' );
			$form.trigger( 'vibp_bundle_ajax_error', [ data ] );
		} ).always( function() {
			$form.removeData( 'vibpAjaxSubmitting' );
			$button.prop( 'disabled', false ).removeClass( 'loading' ).text( originalText );
			$form.trigger( 'vibp_bundle_ajax_complete', [ lastResponse ] );
		} );
	} );

	$( document ).on( 'submit', '.vibp-bundle-cart', function( event ) {
		var valid = true;
		var $form = $( this );
		var settings = window.vibpBundle || {};

		syncAllChoiceGroups( $form );
		notifyBundlePriceChanged( $form, { renderPrice: false } );

		if ( hasMissingChoiceGroup( $form ) ) {
			event.preventDefault();
			showBundleNotice( $form, '', settings.missingChoice || 'فضلاً اختر أحد الخيارات', 'error' );
			return;
		}

		$form.find( '.vibp-child-variations' ).each( function() {
			if ( ! isOptionalItemIncluded( $( this ) ) ) {
				return;
			}

			syncBundleItem( $( this ), { updatePrice: false } );

			if ( ! parseInt( $( this ).find( '.vibp-selected-variation' ).val() || '0', 10 ) ) {
				valid = false;
			}
		} );

		$form.find( '.vibp-child-multi-variations' ).each( function() {
			var maxChoices = parseInt( $( this ).attr( 'data-max_choices' ) || $( this ).attr( 'data-quantity' ) || '1', 10 ) || 1;

			if ( ! isOptionalItemIncluded( $( this ) ) ) {
				return;
			}

			syncMultiVariationItem( $( this ), { updatePrice: false } );

			if ( getMultiVariationSelectedQty( $( this ) ) !== maxChoices ) {
				valid = false;
			}
		} );

		if ( ! valid ) {
			event.preventDefault();
			showBundleNotice( $form, '', settings.missingVariation || 'فضلاً اختر لون المفرش', 'error' );
		}
		if ( ! valid ) {
			return;
		}

		if ( ! settings.ajaxAddToCart || ! settings.ajaxUrl || ! window.FormData ) {
			return;
		}

		event.preventDefault();

		var $button = $form.find( '.single_add_to_cart_button' ).first();
		var originalText = $button.text();
		var formData = new FormData( $form[0] );
		var productId = $button.attr( 'value' ) || $button.val() || $form.find( '[name="add-to-cart"]' ).val() || '';

		if ( formData.set ) {
			formData.set( 'action', 'vibp_add_bundle_to_cart' );
			formData.set( 'nonce', settings.ajaxAddNonce || '' );
		} else {
			formData.append( 'action', 'vibp_add_bundle_to_cart' );
			formData.append( 'nonce', settings.ajaxAddNonce || '' );
		}

		if ( productId && ! formData.get( 'add-to-cart' ) ) {
			formData.append( 'add-to-cart', productId );
		}

		$button.prop( 'disabled', true ).addClass( 'loading' ).text( settings.addingText || originalText );

		$.ajax( {
			url: settings.ajaxUrl,
			type: 'POST',
			data: formData,
			processData: false,
			contentType: false
		} ).done( function( response ) {
			if ( response && response.success ) {
				window.location.href = response.data && response.data.cart_url ? response.data.cart_url : ( settings.cartUrl || window.location.href );
				return;
			}

			if ( response && response.data && response.data.message ) {
				window.alert( response.data.message );
			} else {
				window.alert( settings.errorText || 'تعذر إضافة التجميعة إلى السلة.' );
			}
		} ).fail( function( jqXHR ) {
			var data = parseAjaxFailureData( jqXHR );
			window.alert( data.message || settings.errorText || 'تعذر إضافة التجميعة إلى السلة.' );
		} ).always( function() {
			$button.prop( 'disabled', false ).removeClass( 'loading' ).text( originalText );
		} );
	} );
}( jQuery ) );
// source --> https://mfrash.com/wp-content/plugins/vartion-image-swatches/assets/frontend.js?ver=1.1.10 
( function( $ ) {
	'use strict';

	function settingEnabled( key ) {
		if ( typeof window.viswSettings === 'undefined' || window.viswSettings[ key ] === undefined ) {
			return true;
		}

		return !! window.viswSettings[ key ];
	}

	function findSelect( $field ) {
		var $select = $field.prevAll( '.visw-native-select' ).first().find( 'select' ).first();

		if ( $select.length ) {
			return $select;
		}

		return $field.closest( 'td, .value' ).find( 'select' ).first();
	}

	function findHidden( $field ) {
		return $field.prevAll( '.visw-hidden-attribute' ).first();
	}

	function setSelectValue( $select, value ) {
		if ( ! $select.length ) {
			return;
		}

		if ( value === '' && ! $select.find( 'option[value=""]' ).length ) {
			$select.prepend( '<option value=""></option>' );
		}

		$select.find( 'option' ).prop( 'selected', false );
		$select.find( 'option' ).filter( function() {
			return String( this.value ) === value;
		} ).prop( 'selected', true );

		$select.val( value );
	}

	function ensurePreviewModal() {
		var $modal = $( '.visw-preview-modal' );

		if ( $modal.length ) {
			return $modal;
		}

		$modal = $(
			'<div class="visw-preview-modal" aria-hidden="true">' +
				'<button type="button" class="visw-preview-close" aria-label="Close">×</button>' +
				'<div class="visw-preview-frame">' +
					'<img class="visw-preview-image" src="" alt="" />' +
				'</div>' +
			'</div>'
		);

		$( 'body' ).append( $modal );
		return $modal;
	}

	function openPreviewModal( $button ) {
		var imageUrl = $button.attr( 'data-main_image' ) || $button.find( 'img' ).attr( 'src' ) || '';

		if ( ! imageUrl ) {
			return;
		}

		var label = $button.attr( 'title' ) || $button.find( 'img' ).attr( 'alt' ) || '';
		var $modal = ensurePreviewModal();

		$modal.find( '.visw-preview-image' ).attr( {
			src: imageUrl,
			alt: label
		} );
		$modal.addClass( 'is-open' ).attr( 'aria-hidden', 'false' );
		$( 'body' ).addClass( 'visw-preview-open' );
	}

	function closePreviewModal() {
		$( '.visw-preview-modal' ).removeClass( 'is-open' ).attr( 'aria-hidden', 'true' );
		$( 'body' ).removeClass( 'visw-preview-open' );
	}

	function updateAddToCartButton( $form, variationId, addToCartUrl ) {
		var $button = $form.find( '.single_add_to_cart_button' ).first();

		if ( ! $button.length ) {
			return;
		}

		if ( ! $button.attr( 'data-visw-original-href' ) ) {
			$button.attr( 'data-visw-original-href', $button.attr( 'href' ) || '' );
		}

		if ( variationId ) {
			$form.find( 'input[name="variation_id"]' ).val( variationId ).trigger( 'change' );
			$button.attr( 'data-variation_id', variationId );
			$button.removeClass( 'disabled wc-variation-selection-needed wc-variation-is-unavailable' );
			$button.prop( 'disabled', false );
		}

		if ( addToCartUrl ) {
			$button.attr( 'href', addToCartUrl );
			$button.attr( 'data-visw-add-to-cart-url', addToCartUrl );
		}
	}

	function updateStockMessage( $form, availabilityHtml ) {
		var $messages = $form.find( '.visw-stock-message' );

		if ( ! $messages.length ) {
			return;
		}

		if ( availabilityHtml ) {
			$messages.html( availabilityHtml ).show();
		} else {
			$messages.empty().hide();
		}
	}

	function rememberOriginalBrowserUrl( $form ) {
		if ( $form.attr( 'data-visw-original-url' ) !== undefined ) {
			return;
		}

		$form.attr( 'data-visw-original-url', window.location.href );
	}

	function updateBrowserUrl( $form, variationUrl ) {
		if ( ! settingEnabled( 'updateUrl' ) ) {
			return;
		}

		if ( ! variationUrl || ! window.history || ! window.history.pushState ) {
			return;
		}

		rememberOriginalBrowserUrl( $form );
		window.history.pushState( { viswVariation: true }, document.title, variationUrl );
	}

	function restoreBrowserUrl( $form ) {
		if ( ! settingEnabled( 'updateUrl' ) ) {
			return;
		}

		var originalUrl = $form.attr( 'data-visw-original-url' );

		if ( ! originalUrl || ! window.history || ! window.history.pushState ) {
			return;
		}

		window.history.pushState( { viswVariation: false }, document.title, originalUrl );
	}

	function resetAddToCartButton( $form ) {
		var $button = $form.find( '.single_add_to_cart_button' ).first();

		$form.find( 'input[name="variation_id"]' ).val( '' ).trigger( 'change' );

		if ( ! $button.length ) {
			return;
		}

		if ( $button.attr( 'data-visw-original-href' ) !== undefined ) {
			$button.attr( 'href', $button.attr( 'data-visw-original-href' ) );
		}

		$button
			.removeAttr( 'data-variation_id data-visw-add-to-cart-url' )
			.addClass( 'disabled wc-variation-selection-needed' )
			.prop( 'disabled', false );
	}

	function getProductScope( $form ) {
		var $scope = $form.closest( '.product' );

		if ( $scope.length ) {
			return $scope;
		}

		return $( document );
	}

	function getProductGallery( $form ) {
		return getProductScope( $form ).find( '.woocommerce-product-gallery' ).first();
	}

	function focusMainGallerySlide( $form ) {
		var $gallery = getProductGallery( $form );
		var $scope = getProductScope( $form );
		var flexslider = $gallery.data( 'flexslider' );

		if ( flexslider && typeof flexslider.flexAnimate === 'function' ) {
			flexslider.flexAnimate( 0, true );
		}

		if ( typeof $gallery.flexslider === 'function' ) {
			try {
				$gallery.flexslider( 0 );
			} catch ( error ) {
				// Some themes expose FlexSlider differently; the manual fallback below still updates the visible image.
			}
		}

		$scope.find( '.flexslider, .woocommerce-product-gallery, .woocommerce-product-gallery__wrapper' ).each( function() {
			var slider = $( this ).data( 'flexslider' );
			if ( slider && typeof slider.flexAnimate === 'function' ) {
				slider.flexAnimate( 0, true );
			}
		} );

		$gallery.trigger( 'woocommerce_gallery_reset_slide_position' );
		$gallery.find( '.woocommerce-product-gallery__image' ).removeClass( 'flex-active-slide' ).first().addClass( 'flex-active-slide' );
		$gallery.find( '.woocommerce-product-gallery__wrapper, .slides' ).css( {
			transform: 'translate3d(0px, 0px, 0px)',
			'transition-duration': '0s'
		} );
	}

	function getVisibleGalleryImage( $form ) {
		var gallery = getProductGallery( $form ).get( 0 );

		if ( ! gallery || ! document.elementFromPoint ) {
			return $();
		}

		var rect = gallery.getBoundingClientRect();
		var points = [
			[ rect.left + rect.width / 2, rect.top + rect.height / 2 ],
			[ rect.left + rect.width / 2, rect.top + Math.min( rect.height - 10, 40 ) ],
			[ rect.left + Math.min( rect.width - 10, 40 ), rect.top + rect.height / 2 ]
		];

		for ( var i = 0; i < points.length; i++ ) {
			var element = document.elementFromPoint( points[ i ][ 0 ], points[ i ][ 1 ] );
			var $element = $( element );
			var $image = $element.filter( 'img' );

			if ( ! $image.length ) {
				$image = $element.closest( '.woocommerce-product-gallery__image' ).find( 'img' ).first();
			}

			if ( $image.length && $image.closest( '.woocommerce-product-gallery' ).get( 0 ) === gallery ) {
				return $image;
			}
		}

		return $();
	}

	function getMainGalleryImages( $form ) {
		var $scope = getProductScope( $form );
		var $gallery = getProductGallery( $form );
		var $images = $();

		$images = $images.add( $gallery.find( '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first img' ) );
		$images = $images.add( $gallery.find( '.flex-viewport .woocommerce-product-gallery__image.flex-active-slide img' ) );
		$images = $images.add( $gallery.find( '.flex-viewport .woocommerce-product-gallery__image[aria-hidden="false"] img' ) );
		$images = $images.add( $gallery.find( '.flex-viewport .swiper-slide-active img, .flex-viewport .slick-current img' ) );
		$images = $images.add( $gallery.find( '.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image img.wp-post-image' ) );
		$images = $images.add( $scope.find( 'img.wp-post-image' ).first() );
		$images = $images.add( getVisibleGalleryImage( $form ) );

		return $images.length ? $images.filter( function() {
			return ! $( this ).closest( '.flex-control-nav, .woocommerce-product-gallery__thumbnails, .gallery-thumbnails, .thumbs, .thumbnails' ).length;
		} ) : $();
	}

	function getVariationById( $form, variationId ) {
		var variations = $form.data( 'product_variations' ) || [];
		var numericId = parseInt( variationId, 10 );

		if ( ! numericId ) {
			return null;
		}

		for ( var i = 0; i < variations.length; i++ ) {
			if ( parseInt( variations[ i ].variation_id, 10 ) === numericId ) {
				return variations[ i ];
			}
		}

		return null;
	}

	function rememberOriginalImage( $image ) {
		if ( $image.attr( 'data-visw-original-src' ) !== undefined ) {
			return;
		}

		$image.attr( {
			'data-visw-original-src': $image.attr( 'src' ) || '',
			'data-visw-original-srcset': $image.attr( 'srcset' ) || '',
			'data-visw-original-sizes': $image.attr( 'sizes' ) || '',
			'data-visw-original-alt': $image.attr( 'alt' ) || '',
			'data-visw-original-title': $image.attr( 'title' ) || ''
		} );

		var $link = $image.closest( 'a' );
		if ( $link.length && $link.attr( 'data-visw-original-href' ) === undefined ) {
			$link.attr( 'data-visw-original-href', $link.attr( 'href' ) || '' );
		}
	}

	function setOptionalImageAttr( $image, attrName, value ) {
		if ( value ) {
			$image.attr( attrName, value );
		} else {
			$image.removeAttr( attrName );
		}
	}

	function updateMainProductImage( $form, imageUrl, imageSrcset, imageSizes, imageAlt, imageTitle ) {
		if ( ! settingEnabled( 'changeMainImage' ) ) {
			return;
		}

		if ( ! imageUrl ) {
			return;
		}

		focusMainGallerySlide( $form );

		var variation = getVariationById( $form, $form.find( 'input[name="variation_id"]' ).val() );
		if ( variation && typeof $form.wc_variations_image_update === 'function' ) {
			$form.wc_variations_image_update( variation );
		}

		getMainGalleryImages( $form ).each( function() {
			var $image = $( this );
			var $link = $image.closest( 'a' );

			rememberOriginalImage( $image );

			$image.attr( 'src', imageUrl );
			$image.attr( 'data-src', imageUrl );
			$image.attr( 'data-large_image', imageUrl );
			setOptionalImageAttr( $image, 'srcset', imageSrcset );
			setOptionalImageAttr( $image, 'sizes', imageSizes );

			if ( imageAlt ) {
				$image.attr( 'alt', imageAlt );
			}

			if ( imageTitle ) {
				$image.attr( 'title', imageTitle );
			}

			if ( $link.length ) {
				$link.attr( 'href', imageUrl );
			}
		} );

		setTimeout( function() {
			focusMainGallerySlide( $form );
			getMainGalleryImages( $form ).each( function() {
				var $image = $( this );
				var $link = $image.closest( 'a' );
				$image.attr( 'src', imageUrl );
				$image.attr( 'data-src', imageUrl );
				$image.attr( 'data-large_image', imageUrl );
				setOptionalImageAttr( $image, 'srcset', imageSrcset );
				setOptionalImageAttr( $image, 'sizes', imageSizes );
				if ( $link.length ) {
					$link.attr( 'href', imageUrl );
				}
			} );
		}, 80 );
	}

	function restoreMainProductImage( $form ) {
		if ( ! settingEnabled( 'changeMainImage' ) ) {
			return;
		}

		focusMainGallerySlide( $form );

		getMainGalleryImages( $form ).each( function() {
			var $image = $( this );
			var originalSrc = $image.attr( 'data-visw-original-src' );

			if ( originalSrc === undefined ) {
				return;
			}

			$image.attr( 'src', originalSrc );
			$image.attr( 'data-src', originalSrc );
			$image.attr( 'data-large_image', originalSrc );
			setOptionalImageAttr( $image, 'srcset', $image.attr( 'data-visw-original-srcset' ) || '' );
			setOptionalImageAttr( $image, 'sizes', $image.attr( 'data-visw-original-sizes' ) || '' );
			$image.attr( 'alt', $image.attr( 'data-visw-original-alt' ) || '' );
			$image.attr( 'title', $image.attr( 'data-visw-original-title' ) || '' );

			var $link = $image.closest( 'a' );
			if ( $link.length && $link.attr( 'data-visw-original-href' ) !== undefined ) {
				$link.attr( 'href', $link.attr( 'data-visw-original-href' ) );
			}
		} );
	}

	function syncField( $field ) {
		var $select = findSelect( $field );
		var value = $select.val() || '';
		var $hidden = findHidden( $field );

		if ( $hidden.length ) {
			$hidden.val( value );
		}

		$field.find( '.visw-option' ).each( function() {
			var $button = $( this );
			var buttonValue = String( $button.attr( 'data-value' ) );
			var $option = $select.find( 'option' ).filter( function() {
				return String( this.value ) === buttonValue;
			} );
			var disabled = ! $option.length || $option.prop( 'disabled' );
			var selected = value && buttonValue === String( value );

			$button
				.toggleClass( 'is-selected', selected )
				.toggleClass( 'is-disabled', disabled )
				.prop( 'disabled', disabled )
				.attr( 'aria-disabled', disabled ? 'true' : 'false' )
				.attr( 'aria-checked', selected ? 'true' : 'false' );
		} );
	}

	function syncSelectedSwatches( $form ) {
		$form.find( '.visw-field' ).each( function() {
			var $field = $( this );
			var $selected = $field.find( '.visw-option.is-selected' ).first();

			if ( ! $selected.length ) {
				return;
			}

			var value = String( $selected.attr( 'data-value' ) );
			var $select = findSelect( $field );
			var $hidden = findHidden( $field );
			var variationId = $selected.attr( 'data-variation_id' ) || '';
			var addToCartUrl = $selected.attr( 'data-add_to_cart_url' ) || '';
			var variationUrl = $selected.attr( 'data-variation_url' ) || '';
			var availabilityHtml = $selected.attr( 'data-availability_html' ) || '';
			var mainImage = $selected.attr( 'data-main_image' ) || '';
			var mainSrcset = $selected.attr( 'data-main_srcset' ) || '';
			var mainSizes = $selected.attr( 'data-main_sizes' ) || '';
			var mainAlt = $selected.attr( 'data-main_alt' ) || '';
			var mainTitle = $selected.attr( 'data-main_title' ) || '';

			setSelectValue( $select, value );

			if ( $hidden.length ) {
				$hidden.val( value );
			}

			updateAddToCartButton( $form, variationId, addToCartUrl );
			updateStockMessage( $form, availabilityHtml );
			updateMainProductImage( $form, mainImage, mainSrcset, mainSizes, mainAlt, mainTitle );
			$field.attr( 'data-current_variation_url', variationUrl );
		} );
	}

	function getChosenAttributes( $form ) {
		var chosen = {};

		$form.find( '.visw-native-select select, select[name^="attribute_"]' ).each( function() {
			var $select = $( this );
			var name = $select.data( 'attribute_name' ) || $select.attr( 'name' );

			if ( name ) {
				chosen[ name ] = $select.val() || '';
			}
		} );

		$form.find( '.visw-hidden-attribute' ).each( function() {
			var $input = $( this );
			var name = $input.data( 'attribute_name' );

			if ( name && $input.val() ) {
				chosen[ name ] = $input.val();
			}
		} );

		return chosen;
	}

	function hasCompleteChoice( chosen ) {
		var hasChoice = false;

		for ( var name in chosen ) {
			if ( ! Object.prototype.hasOwnProperty.call( chosen, name ) ) {
				continue;
			}

			if ( ! chosen[ name ] ) {
				return false;
			}

			hasChoice = true;
		}

		return hasChoice;
	}

	function matchVariation( variation, chosen ) {
		var attributes = variation.attributes || {};

		for ( var name in attributes ) {
			if ( ! Object.prototype.hasOwnProperty.call( attributes, name ) ) {
				continue;
			}

			if ( attributes[ name ] && String( attributes[ name ] ) !== String( chosen[ name ] || '' ) ) {
				return false;
			}
		}

		return true;
	}

	function setVariationId( $form ) {
		var $variationId = $form.find( 'input[name="variation_id"]' );

		if ( ! $variationId.length ) {
			return;
		}

		var variations = $form.data( 'product_variations' ) || [];
		var chosen = getChosenAttributes( $form );

		if ( ! hasCompleteChoice( chosen ) ) {
			resetAddToCartButton( $form );
			return;
		}

		for ( var i = 0; i < variations.length; i++ ) {
			if ( matchVariation( variations[ i ], chosen ) ) {
				$variationId.val( variations[ i ].variation_id ).trigger( 'change' );
				updateAddToCartButton( $form, variations[ i ].variation_id, '' );
				updateStockMessage( $form, variations[ i ].availability_html || '' );
				return;
			}
		}
	}

	function findVariationById( $form, variationId ) {
		var variations = $form.data( 'product_variations' ) || [];
		var numericId = parseInt( variationId, 10 );

		if ( ! numericId ) {
			return null;
		}

		for ( var i = 0; i < variations.length; i++ ) {
			if ( parseInt( variations[ i ].variation_id, 10 ) === numericId ) {
				return variations[ i ];
			}
		}

		return null;
	}

	function applyUrlSelection( $form ) {
		if ( ! settingEnabled( 'readUrlOnLoad' ) || ! window.URLSearchParams ) {
			return;
		}

		var params = new URLSearchParams( window.location.search );
		var variation = findVariationById( $form, params.get( 'variation_id' ) );
		var changed = false;

		$form.find( 'select[name^="attribute_"]' ).each( function() {
			var $select = $( this );
			var attributeName = $select.data( 'attribute_name' ) || $select.attr( 'name' );
			var value = attributeName ? params.get( attributeName ) : '';

			if ( ! value && variation && variation.attributes && variation.attributes[ attributeName ] ) {
				value = variation.attributes[ attributeName ];
			}

			if ( value ) {
				setSelectValue( $select, value );
				changed = true;
			}
		} );

		$form.find( '.visw-field' ).each( function() {
			var $field = $( this );
			var $select = findSelect( $field );
			var $hidden = findHidden( $field );
			var attributeName = $select.data( 'attribute_name' ) || $select.attr( 'name' );
			var value = attributeName ? params.get( attributeName ) : '';

			if ( ! value && variation && variation.attributes && variation.attributes[ attributeName ] ) {
				value = variation.attributes[ attributeName ];
			}

			if ( ! value ) {
				return;
			}

			setSelectValue( $select, value );

			if ( $hidden.length ) {
				$hidden.val( value );
			}

			$field.find( '.visw-option' ).removeClass( 'is-selected' ).attr( 'aria-checked', 'false' );
			$field.find( '.visw-option' ).filter( function() {
				return String( $( this ).attr( 'data-value' ) ) === String( value );
			} ).addClass( 'is-selected' ).attr( 'aria-checked', 'true' );

			changed = true;
		} );

		if ( changed ) {
			$form.find( 'select[name^="attribute_"]' ).trigger( 'change' );
			$form.trigger( 'woocommerce_variation_select_change' );
			syncSelectedSwatches( $form );
			setVariationId( $form );
		}
	}

	function clearField( $field ) {
		var $select = findSelect( $field );
		var $hidden = findHidden( $field );
		var $form = $field.closest( '.variations_form' );

		setSelectValue( $select, '' );

		if ( $hidden.length ) {
			$hidden.val( '' );
		}

		$field.find( '.visw-option' )
			.removeClass( 'is-selected' )
			.attr( 'aria-checked', 'false' );

		resetAddToCartButton( $form );
		updateStockMessage( $form, '' );
		restoreMainProductImage( $form );
		restoreBrowserUrl( $form );
		$select.trigger( 'change' );
		$form.trigger( 'woocommerce_variation_select_change' );
		syncField( $field );
	}

	function syncForm( $form ) {
		$form.find( '.visw-field' ).each( function() {
			syncField( $( this ) );
		} );
	}

	$( document ).on( 'click', '.visw-option', function( event ) {
		event.preventDefault();

		var $button = $( this );
		var wasSelected = $button.hasClass( 'is-selected' );

		if ( $button.hasClass( 'is-disabled' ) ) {
			return;
		}

		var $field = $button.closest( '.visw-field' );
		var $select = findSelect( $field );
		var $hidden = findHidden( $field );
		var value = String( $button.attr( 'data-value' ) );
		var variationId = $button.attr( 'data-variation_id' ) || '';
		var addToCartUrl = $button.attr( 'data-add_to_cart_url' ) || '';
		var variationUrl = $button.attr( 'data-variation_url' ) || '';
		var availabilityHtml = $button.attr( 'data-availability_html' ) || '';
		var mainImage = $button.attr( 'data-main_image' ) || '';
		var mainSrcset = $button.attr( 'data-main_srcset' ) || '';
		var mainSizes = $button.attr( 'data-main_sizes' ) || '';
		var mainAlt = $button.attr( 'data-main_alt' ) || '';
		var mainTitle = $button.attr( 'data-main_title' ) || '';

		if ( ! $select.length ) {
			return;
		}

		if ( wasSelected && $button.hasClass( 'visw-option--image' ) ) {
			updateMainProductImage( $select.closest( '.variations_form' ), mainImage, mainSrcset, mainSizes, mainAlt, mainTitle );
			openPreviewModal( $button );
			return;
		}

		setSelectValue( $select, value );

		if ( $hidden.length ) {
			$hidden.val( value );
		}

		$select.trigger( 'change' );
		$select.closest( '.variations_form' ).trigger( 'woocommerce_variation_select_change' );
		syncField( $field );
		updateAddToCartButton( $select.closest( '.variations_form' ), variationId, addToCartUrl );
		updateStockMessage( $select.closest( '.variations_form' ), availabilityHtml );
		updateMainProductImage( $select.closest( '.variations_form' ), mainImage, mainSrcset, mainSizes, mainAlt, mainTitle );
		updateBrowserUrl( $select.closest( '.variations_form' ), variationUrl );
		setVariationId( $select.closest( '.variations_form' ) );
	} );

	$( document ).on( 'click', '.visw-preview-close, .visw-preview-modal', function( event ) {
		if ( event.target !== this ) {
			return;
		}

		event.preventDefault();
		closePreviewModal();
	} );

	$( document ).on( 'keyup', function( event ) {
		if ( event.key === 'Escape' ) {
			closePreviewModal();
		}
	} );

	$( document ).on( 'click', '.visw-clear-selection', function( event ) {
		event.preventDefault();
		clearField( $( this ).closest( '.visw-field' ) );
	} );

	$( document ).on( 'change', '.variations_form select', function() {
		syncForm( $( this ).closest( '.variations_form' ) );
	} );

	$( document ).on( 'found_variation', '.variations_form', function( event, variation ) {
		updateStockMessage( $( this ), variation && variation.availability_html ? variation.availability_html : '' );
	} );

	$( document ).on( 'hide_variation reset_data', '.variations_form', function() {
		updateStockMessage( $( this ), '' );
	} );

	$( document ).on( 'click', '.single_add_to_cart_button', function() {
		var $form = $( this ).closest( 'form.variations_form' );

		if ( ! $form.length ) {
			return;
		}

		syncSelectedSwatches( $form );
		setVariationId( $form );
	} );

	$( document ).on( 'submit', 'form.variations_form', function() {
		var $form = $( this );

		syncSelectedSwatches( $form );
		setVariationId( $form );
	} );

	$( document ).on(
		'wc_variation_form woocommerce_update_variation_values woocommerce_variation_has_changed reset_data',
		'.variations_form',
		function() {
			syncForm( $( this ) );
		}
	);

	$( function() {
		$( '.variations_form' ).each( function() {
			var $form = $( this );
			if ( typeof window.viswSettings !== 'undefined' ) {
				if ( window.viswSettings.clearLabel ) {
					$form.find( '.visw-clear-selection' ).text( window.viswSettings.clearLabel );
				}
				if ( ! window.viswSettings.showClear ) {
					$form.find( '.visw-actions' ).hide();
				}
			}
			applyUrlSelection( $form );
			syncForm( $form );
			syncSelectedSwatches( $form );
			setVariationId( $form );
		} );
	} );
}( jQuery ) );
// source --> https://mfrash.com/wp-content/plugins/wc-customer-photo-reviews/assets/wcpr.js?ver=2.4.32 
(function () {
	'use strict';

	function qs(selector, root) {
		return (root || document).querySelector(selector);
	}

	function qsa(selector, root) {
		return Array.prototype.slice.call((root || document).querySelectorAll(selector));
	}

	function postForm(formData) {
		return fetch(wcprConfig.ajaxUrl, {
			method: 'POST',
			credentials: 'same-origin',
			body: formData
		}).then(function (response) {
			return response.json();
		});
	}

	function getFormNonce(form) {
		var field = qs('input[name="nonce"]', form);
		return field && field.value ? field.value : wcprConfig.nonce;
	}

	function setMessage(element, message, type) {
		if (!element) {
			return;
		}
		element.textContent = message || '';
		element.classList.remove('is-error', 'is-success');
		if (type) {
			element.classList.add('is-' + type);
		}
	}

	function handlePreview(input) {
		var container = input.closest('.wcpr-form') || input.closest('.wcpr-order-product-review') || input.closest('.wcpr-upload');
		var preview = container ? qs('.wcpr-preview', container) : null;
		if (!preview) {
			return;
		}

		preview.innerHTML = '';
		Array.prototype.slice.call(input.files || []).forEach(function (file) {
			if (!file.type || file.type.indexOf('image/') !== 0) {
				return;
			}

			var img = document.createElement('img');
			img.alt = file.name;
			img.src = URL.createObjectURL(file);
			img.onload = function () {
				URL.revokeObjectURL(img.src);
			};
			preview.appendChild(img);
		});
	}

	function refreshReviews(section, html) {
		var wrap = qs('.wcpr-reviews-wrap', section);
		if (wrap && html) {
			wrap.innerHTML = html;
		}
	}

	function openModal(modal) {
		if (!modal) {
			return;
		}
		modal.hidden = false;
		document.documentElement.classList.add('wcpr-modal-open');
		var firstField = qs('input[name="rating"]', modal) || qs('textarea, input, button', modal);
		if (firstField) {
			setTimeout(function () {
				firstField.focus({ preventScroll: true });
			}, 30);
		}
	}

	function closeModal(modal) {
		if (!modal) {
			return;
		}
		modal.hidden = true;
		document.documentElement.classList.remove('wcpr-modal-open');
	}

	function shouldScrollToReviews() {
		if (window.location.hash === '#wcpr-reviews') {
			return true;
		}

		try {
			return new URLSearchParams(window.location.search).get('wcpr_after_login') === '1';
		} catch (error) {
			return window.location.search.indexOf('wcpr_after_login=1') !== -1;
		}
	}

	function scrollToReviewsAfterLogin() {
		if (!shouldScrollToReviews()) {
			return;
		}

		var section = document.getElementById('wcpr-reviews') || qs('.wcpr[data-product-id]');
		if (!section) {
			return;
		}

		setTimeout(function () {
			section.scrollIntoView({ behavior: 'smooth', block: 'start' });

			if (!window.history || !window.history.replaceState || window.location.search.indexOf('wcpr_after_login=1') === -1) {
				return;
			}

			try {
				var url = new URL(window.location.href);
				url.searchParams.delete('wcpr_after_login');
				url.hash = 'wcpr-reviews';
				window.history.replaceState(null, '', url.pathname + url.search + url.hash);
			} catch (error) {
				// Keep the original URL when older browsers cannot parse it.
			}
		}, 250);
	}

	function refreshReviewFormsForCache() {
		qsa('.wcpr-form-card[data-product-id]').forEach(function (card) {
			var productId = card.getAttribute('data-product-id');
			if (!productId || card.getAttribute('data-wcpr-refreshing') === '1') {
				return;
			}

			var formData = new FormData();
			formData.append('action', 'wcpr_refresh_form');
			formData.append('product_id', productId);
			card.setAttribute('data-wcpr-refreshing', '1');

			postForm(formData).then(function (json) {
				if (!json || !json.success || !json.data || !json.data.html) {
					return;
				}

				if (json.data.nonce) {
					wcprConfig.nonce = json.data.nonce;
				}

				var wrapper = document.createElement('div');
				wrapper.innerHTML = json.data.html;
				var freshCard = qs('.wcpr-form-card', wrapper);
				if (freshCard) {
					card.replaceWith(freshCard);
				}
			}).finally(function () {
				card.removeAttribute('data-wcpr-refreshing');
			});
		});
	}

	function handleSubmit(form) {
		var section = form.closest('.wcpr');
		var message = qs('.wcpr-message', form);
		var button = qs('.wcpr-submit', form);
		var rating = qs('input[name="rating"]:checked', form);

		if (!rating) {
			setMessage(message, wcprConfig.i18n.choose_rating, 'error');
			return;
		}

		var formData = new FormData(form);
		formData.set('nonce', getFormNonce(form));
		button.disabled = true;
		button.textContent = wcprConfig.i18n.sending;
		setMessage(message, '', null);

		postForm(formData).then(function (json) {
			if (json && json.success) {
				var modal = form.closest('.wcpr-modal');
				form.reset();
				var preview = qs('.wcpr-preview', form);
				if (preview) {
					preview.innerHTML = '';
				}
				setMessage(message, json.data.message, 'success');
				refreshReviews(section, json.data.html);
				if (modal) {
					setTimeout(function () {
						closeModal(modal);
						setMessage(message, '', null);
					}, 900);
				}
			} else {
				setMessage(message, json && json.data ? json.data.message : 'حدث خطأ', 'error');
			}
		}).catch(function () {
			setMessage(message, 'حدث خطأ', 'error');
		}).finally(function () {
			button.disabled = false;
			button.textContent = wcprConfig.i18n.submit;
		});
	}

	function handleHelpful(button) {
		if (!button || button.disabled || button.getAttribute('data-wcpr-busy') === '1') {
			return;
		}

		var formData = new FormData();
		var count = qs('.wcpr-helpful-count', button);

		formData.append('action', 'wcpr_helpful');
		formData.append('nonce', wcprConfig.nonce);
		formData.append('comment_id', button.getAttribute('data-comment-id'));
		button.setAttribute('data-wcpr-busy', '1');
		button.disabled = true;

		postForm(formData).then(function (json) {
			if (json && json.success && count) {
				count.textContent = json.data.count;
				button.classList.add('is-voted');
				button.setAttribute('aria-label', json.data.message || button.textContent);
				button.setAttribute('title', json.data.message || button.textContent);
			} else if (json && json.data && json.data.message) {
				button.classList.add('is-voted');
				button.setAttribute('aria-label', json.data.message);
				button.setAttribute('title', json.data.message);
			}
		}).finally(function () {
			button.disabled = false;
			button.removeAttribute('data-wcpr-busy');
		});
	}

	function handleHelpfulTap(event) {
		var helpful = event.target.closest('.wcpr-helpful');
		if (!helpful) {
			return false;
		}

		event.preventDefault();

		if (event.type === 'click' && helpful.getAttribute('data-wcpr-touch-handled') === '1') {
			return true;
		}

		if (event.type === 'touchend') {
			helpful.setAttribute('data-wcpr-touch-handled', '1');
			window.setTimeout(function () {
				helpful.removeAttribute('data-wcpr-touch-handled');
			}, 700);
		}

		handleHelpful(helpful);
		return true;
	}

	function handleLoadMore(button) {
		var section = button.closest('.wcpr');
		var list = qs('.wcpr-list', section);
		var formData = new FormData();
		var isAllReviews = button.getAttribute('data-scope') === 'all';

		formData.append('action', isAllReviews ? 'wcpr_load_all_reviews' : 'wcpr_load_reviews');
		formData.append('nonce', wcprConfig.nonce);
		formData.append('page', button.getAttribute('data-next-page'));
		if (isAllReviews) {
			formData.append('per_page', button.getAttribute('data-per-page') || '20');
			formData.append('limit', button.getAttribute('data-limit') || '0');
			formData.append('rating', button.getAttribute('data-rating') || '0');
			formData.append('photos', button.getAttribute('data-photos') || '0');
			formData.append('comments', button.getAttribute('data-comments') || '0');
			formData.append('review_order', button.getAttribute('data-review-order') || 'latest');
		} else {
			formData.append('product_id', section.getAttribute('data-product-id'));
			formData.append('rating', button.getAttribute('data-rating') || '0');
			formData.append('photos', button.getAttribute('data-photos') || '0');
			formData.append('comments', button.getAttribute('data-comments') || '0');
			formData.append('review_order', button.getAttribute('data-review-order') || 'rating_high');
		}
		button.disabled = true;
		button.textContent = wcprConfig.i18n.loading;

		postForm(formData).then(function (json) {
			if (!json || !json.success || !list) {
				return;
			}

			var holder = document.createElement('div');
			holder.innerHTML = json.data.html;
			var nextList = qs('.wcpr-list', holder);
			if (nextList) {
				qsa('.wcpr-review', nextList).forEach(function (review) {
					list.appendChild(review);
				});
			}

			var nextButton = qs('.wcpr-load-more', holder);
			if (nextButton) {
				button.setAttribute('data-next-page', nextButton.getAttribute('data-next-page'));
				if (nextButton.getAttribute('data-per-page')) {
					button.setAttribute('data-per-page', nextButton.getAttribute('data-per-page'));
				}
				if (nextButton.getAttribute('data-limit')) {
					button.setAttribute('data-limit', nextButton.getAttribute('data-limit'));
				}
				button.setAttribute('data-rating', nextButton.getAttribute('data-rating') || '0');
				button.setAttribute('data-photos', nextButton.getAttribute('data-photos') || '0');
				button.setAttribute('data-comments', nextButton.getAttribute('data-comments') || '0');
				button.setAttribute('data-review-order', nextButton.getAttribute('data-review-order') || (isAllReviews ? 'latest' : 'rating_high'));
				button.disabled = false;
				button.textContent = nextButton.textContent;
			} else {
				button.remove();
			}
		}).catch(function () {
			button.disabled = false;
		});
	}

	function handleAllReviewsFilter(form) {
		var section = form.closest('.wcpr-all-reviews');
		var wrap = qs('.wcpr-reviews-wrap', section);
		var formData = new FormData();
		var button = qs('.wcpr-load-more', wrap);

		formData.append('action', 'wcpr_load_all_reviews');
		formData.append('nonce', wcprConfig.nonce);
		formData.append('page', '1');
		formData.append('per_page', button ? button.getAttribute('data-per-page') || '20' : form.getAttribute('data-per-page') || '20');
		formData.append('limit', button ? button.getAttribute('data-limit') || '0' : form.getAttribute('data-limit') || '0');
		formData.append('rating', qs('[name="rating"]', form).value || '0');
		formData.append('photos', qs('[name="photos"]', form).value || '0');
		formData.append('comments', qs('[name="comments"]', form) ? qs('[name="comments"]', form).value || '0' : '0');
		formData.append('review_order', qs('[name="order"]', form).value || 'latest');

		form.setAttribute('data-loading', '1');
		postForm(formData).then(function (json) {
			if (json && json.success && wrap) {
				wrap.innerHTML = json.data.html;
			}
		}).finally(function () {
			form.removeAttribute('data-loading');
		});
	}

	function handleProductReviewsFilter(form) {
		var section = form.closest('.wcpr');
		var wrap = qs('.wcpr-reviews-wrap', section);
		var formData = new FormData();

		if (!section || !wrap) {
			return;
		}

		formData.append('action', 'wcpr_load_reviews');
		formData.append('nonce', wcprConfig.nonce);
		formData.append('page', '1');
		formData.append('product_id', section.getAttribute('data-product-id'));
		formData.append('rating', qs('[name="rating"]', form).value || '0');
		var orderValue = qs('[name="order"]', form).value || 'rating_high';
		var photosField = qs('[name="photos"]', form);
		var commentsField = qs('[name="comments"]', form);
		formData.append('photos', orderValue === 'photos' ? '1' : (photosField ? photosField.value || '0' : '0'));
		formData.append('comments', orderValue === 'comments' ? '1' : (commentsField ? commentsField.value || '0' : '0'));
		formData.append('review_order', orderValue);

		form.setAttribute('data-loading', '1');
		postForm(formData).then(function (json) {
			if (json && json.success) {
				wrap.innerHTML = json.data.html;
			}
		}).finally(function () {
			form.removeAttribute('data-loading');
		});
	}

	function handlePhotoSliderNav(button) {
		var slider = button.closest('.wcpr-photo-slider');
		var track = slider ? qs('.wcpr-photo-slider-track', slider) : null;
		if (!track) {
			return;
		}

		var amount = Math.max(180, Math.round(track.clientWidth * 0.75));
		var direction = button.getAttribute('data-direction') === 'prev' ? -1 : 1;
		track.scrollBy({ left: amount * direction, behavior: 'smooth' });
	}

	function ensureLightbox() {
		var box = qs('.wcpr-lightbox');
		if (box) {
			return box;
		}

		box = document.createElement('div');
		box.className = 'wcpr-lightbox';
		box.hidden = true;
		box.innerHTML = '<button type="button" aria-label="إغلاق">×</button><img alt="">';
		document.body.appendChild(box);
		box.addEventListener('click', function (event) {
			if (event.target === box || event.target.tagName === 'BUTTON') {
				box.hidden = true;
			}
		});
		document.addEventListener('keydown', function (event) {
			if (event.key === 'Escape') {
				box.hidden = true;
				qsa('.wcpr-modal:not([hidden])').forEach(closeModal);
			}
		});
		return box;
	}

	function initReviewSliders() {
		var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
		if (reduceMotion) {
			return;
		}

		qsa('.wcpr-slider-track').forEach(function (track) {
			if (track.getAttribute('data-wcpr-ready') === '1') {
				return;
			}

			var originalCount = parseInt(track.getAttribute('data-wcpr-count'), 10) || 0;
			var cards = qsa('.wcpr-slider-card', track);
			var viewport = track.closest('.wcpr-slider-viewport');
			var index = 0;
			var timer = null;
			var step = 0;

			if (!viewport || originalCount < 2 || cards.length < 2) {
				return;
			}

			track.setAttribute('data-wcpr-ready', '1');

			function getInterval() {
				var isMobile = window.matchMedia && window.matchMedia('(max-width: 720px)').matches;
				var totalSeconds = parseInt(track.getAttribute(isMobile ? 'data-wcpr-mobile-speed' : 'data-wcpr-speed'), 10) || (isMobile ? 70 : 42);
				return Math.max(isMobile ? 4200 : 3200, Math.round((totalSeconds * 1000) / originalCount));
			}

			function measureStep() {
				var first = cards[0];
				var styles = window.getComputedStyle(track);
				var gap = parseFloat(styles.columnGap || styles.gap || '0') || 0;
				step = first.getBoundingClientRect().width + gap;
			}

			function applyPosition(animate) {
				track.style.transition = animate ? 'transform 0.62s ease' : 'none';
				track.style.transform = 'translateX(' + (index * step) + 'px)';
			}

			function moveNext() {
				measureStep();
				index += 1;
				applyPosition(true);

				if (index >= originalCount) {
					window.setTimeout(function () {
						index = 0;
						applyPosition(false);
					}, 680);
				}
			}

			function stop() {
				if (timer) {
					window.clearInterval(timer);
					timer = null;
				}
			}

			function start() {
				stop();
				timer = window.setInterval(moveNext, getInterval());
			}

			measureStep();
			applyPosition(false);
			start();

			viewport.addEventListener('mouseenter', stop);
			viewport.addEventListener('mouseleave', start);
			viewport.addEventListener('focusin', stop);
			viewport.addEventListener('focusout', start);
			window.addEventListener('resize', function () {
				measureStep();
				applyPosition(false);
				start();
			});
			document.addEventListener('visibilitychange', function () {
				if (document.hidden) {
					stop();
				} else {
					start();
				}
			});
		});
	}

	function initOrderReviewForm() {
		var ratingLabels = {
			1: 'ضعيف',
			2: 'مقبول',
			3: 'جيد',
			4: 'جيد جدًا',
			5: 'ممتاز'
		};

		qsa('.wcpr-order-comment textarea').forEach(function (textarea) {
			var counter = qs('.wcpr-order-count', textarea.closest('.wcpr-order-comment'));
			var max = parseInt(textarea.getAttribute('maxlength'), 10) || 500;

			function updateCounter() {
				if (counter) {
					counter.textContent = textarea.value.length + '/' + max;
				}
			}

			textarea.addEventListener('input', updateCounter);
			updateCounter();
		});

		qsa('.wcpr-order-rating-row input[type="radio"]').forEach(function (input) {
			input.addEventListener('change', function () {
				var row = input.closest('.wcpr-order-rating-row');
				var text = qs('.wcpr-order-rating-text', row);
				if (text) {
					text.textContent = ratingLabels[input.value] || '';
				}
			});
		});
	}

	function copyCouponCode(button) {
		var text = button.getAttribute('data-wcpr-copy') || '';
		var copiedLabel = button.getAttribute('data-copied') || 'تم النسخ';
		var originalLabel = button.getAttribute('data-label') || button.textContent;

		function markCopied() {
			button.textContent = copiedLabel;
			button.classList.add('is-copied');
			window.setTimeout(function () {
				button.textContent = originalLabel;
				button.classList.remove('is-copied');
			}, 1800);
		}

		if (navigator.clipboard && navigator.clipboard.writeText) {
			navigator.clipboard.writeText(text).then(markCopied).catch(function () {
				copyCouponCodeFallback(text, markCopied);
			});
			return;
		}

		copyCouponCodeFallback(text, markCopied);
	}

	function copyCouponCodeFallback(text, done) {
		var textarea = document.createElement('textarea');
		textarea.value = text;
		textarea.setAttribute('readonly', 'readonly');
		textarea.style.position = 'fixed';
		textarea.style.top = '-1000px';
		document.body.appendChild(textarea);
		textarea.select();

		try {
			document.execCommand('copy');
			done();
		} catch (error) {
			// Keep the code visible if browser copy permissions are blocked.
		}

		document.body.removeChild(textarea);
	}

	function applyAutomatedDiscountDisplay() {
		var discount = wcprConfig && wcprConfig.automatedDiscount ? wcprConfig.automatedDiscount : null;
		if (!discount || !discount.priceHtml) {
			return;
		}

		var applyCount = 0;
		var customPriceWrap = document.getElementById('mfrash-price-wrap');
		var isCurrentDiscount = isAutomatedDiscountCurrentSelection(discount);
		var selectors = [
			'.summary .price',
			'.entry-summary .price',
			'.product .summary p.price',
			'.single-product .price',
			'.woocommerce-variation-price .price',
			'[class*="price"]',
			'[class*="Price"]'
		];
		var nodes = [];

		selectors.forEach(function (selector) {
			qsa(selector).forEach(function (node) {
				if (nodes.indexOf(node) === -1) {
					nodes.push(node);
				}
			});
		});

		if (!customPriceWrap) {
			nodes.forEach(function (node) {
				if (node.closest('.wcpr') || node.closest('del') || node.closest('.woocommerce-mini-cart')) {
					return;
				}
				if (node.innerHTML !== discount.priceHtml) {
					node.innerHTML = discount.priceHtml;
				}
				node.setAttribute('data-mfrash-gad-applied', '1');
				applyCount += 1;
			});
		}

		if (!customPriceWrap && !applyCount) {
			qsa('.summary, .entry-summary, form.cart, .product').some(function (scope) {
				var amounts = qsa('.amount, bdi', scope);
				if (!amounts.length) {
					return false;
				}

				if (amounts[0].textContent !== (discount.priceText || '')) {
					amounts[0].textContent = discount.priceText || '';
				}
				amounts[0].setAttribute('data-mfrash-gad-applied', '1');
				return true;
			});
		}

		applyAutomatedDiscountNotice(discount);

		if (document.body.getAttribute('data-mfrash-gad-listener') !== '1') {
			document.body.setAttribute('data-mfrash-gad-listener', '1');
			document.body.addEventListener('found_variation', function (event) {
				if (!event.detail || !event.detail.variation_id || parseInt(event.detail.variation_id, 10) !== parseInt(discount.productId, 10)) {
					return;
				}

				window.setTimeout(applyAutomatedDiscountDisplay, 20);
				window.setTimeout(applyAutomatedDiscountDisplay, 250);
				window.setTimeout(function () {
					applyAutomatedDiscountInlineNote(document.getElementById('mfrash-price-wrap'), isAutomatedDiscountCurrentSelection(discount));
				}, 450);
			});
		}

		if (!document.body.getAttribute('data-mfrash-gad-observer')) {
			document.body.setAttribute('data-mfrash-gad-observer', '1');
			var target = customPriceWrap ? (qs('form.variations_form') || qs('.summary') || qs('.entry-summary')) : (qs('.summary') || qs('.entry-summary') || qs('form.cart'));
			if (target && window.MutationObserver) {
				var observer = new MutationObserver(function () {
					window.clearTimeout(target._mfrashGadTimer);
					target._mfrashGadTimer = window.setTimeout(applyAutomatedDiscountDisplay, 80);
				});
				observer.observe(target, { childList: true, subtree: true, characterData: true });
			}
		}

		if (window.jQuery && document.body.getAttribute('data-mfrash-gad-jquery') !== '1') {
			document.body.setAttribute('data-mfrash-gad-jquery', '1');
			window.jQuery(document.body).on('found_variation show_variation reset_data hide_variation', function () {
				var refreshInlineNote = function () {
					applyAutomatedDiscountInlineNote(document.getElementById('mfrash-price-wrap'), isAutomatedDiscountCurrentSelection(discount));
				};

				refreshInlineNote();
				window.setTimeout(refreshInlineNote, 60);
				window.setTimeout(refreshInlineNote, 220);
			});
		}
	}

	function applyAutomatedDiscountNotice(discount) {
		var customPriceWrap = document.getElementById('mfrash-price-wrap');
		if (customPriceWrap) {
			applyAutomatedDiscountInlineNote(customPriceWrap, isAutomatedDiscountCurrentSelection(discount));
		}
	}

	function isAutomatedDiscountCurrentSelection(discount) {
		if (!discount || !discount.parentId || !discount.productId) {
			return true;
		}

		var visiblePrice = qs('#mfrash-price-wrap #mfrash-final-price');
		var visibleAmount = visiblePrice ? parseLocalizedNumber(visiblePrice.getAttribute('data-price') || visiblePrice.textContent) : 0;
		if (visibleAmount > 0 && Math.abs(visibleAmount - parseFloat(discount.price || 0)) < 0.02) {
			return true;
		}

		var variationInput = qs('form.variations_form input.variation_id');
		var variationId = variationInput && variationInput.value ? parseInt(variationInput.value, 10) : 0;
		return variationId > 0 && variationId === parseInt(discount.productId, 10);
	}

	function parseLocalizedNumber(value) {
		value = String(value || '').replace(/[^\d.,]/g, '');
		if (!value) {
			return 0;
		}

		if (value.indexOf(',') !== -1 && value.indexOf('.') !== -1) {
			value = value.replace(/,/g, '');
		} else if (value.indexOf(',') !== -1) {
			value = value.replace(',', '.');
		}

		var number = parseFloat(value);
		return Number.isFinite(number) ? number : 0;
	}

	function applyAutomatedDiscountInlineNote(priceWrap, isActive) {
		if (!priceWrap) {
			return;
		}

		var existing = qs('.mfrash-gad-inline-note-wrap', priceWrap);
		var text = getAutomatedDiscountBadgeText();
		if (existing) {
			existing.remove();
		}

		if (!isActive || !text) {
			priceWrap.classList.remove('mfrash-gad-active-wrap');
			priceWrap.style.removeProperty('--mfrash-gad-badge-text');
			return;
		}

		priceWrap.style.setProperty('--mfrash-gad-badge-text', JSON.stringify(text));
		priceWrap.classList.add('mfrash-gad-active-wrap');
	}

	function getAutomatedDiscountBadgeText() {
		if (wcprConfig && typeof wcprConfig.automatedDiscountBadgeText === 'string') {
			return wcprConfig.automatedDiscountBadgeText.trim();
		}

		var discountText = wcprConfig && wcprConfig.automatedDiscount && typeof wcprConfig.automatedDiscount.badgeText === 'string' ? wcprConfig.automatedDiscount.badgeText.trim() : '';
		var fallbackText = wcprConfig && wcprConfig.i18n && typeof wcprConfig.i18n.discount_badge === 'string' ? wcprConfig.i18n.discount_badge.trim() : '';
		return discountText || fallbackText || 'عرض خاص لفترة محدودة';
	}

	document.addEventListener('keydown', function (event) {
		if (event.key === 'Escape') {
			qsa('.wcpr-modal:not([hidden])').forEach(closeModal);
		}
	});

	if (document.readyState === 'loading') {
		document.addEventListener('DOMContentLoaded', function () {
			scrollToReviewsAfterLogin();
			refreshReviewFormsForCache();
			applyAutomatedDiscountDisplay();
			initReviewSliders();
			initOrderReviewForm();
		});
	} else {
		scrollToReviewsAfterLogin();
		refreshReviewFormsForCache();
		applyAutomatedDiscountDisplay();
		initReviewSliders();
		initOrderReviewForm();
	}

	document.addEventListener('change', function (event) {
		if (event.target.matches('.wcpr-upload input[type="file"]')) {
			handlePreview(event.target);
		}

		if (event.target.closest('[data-wcpr-all-filters]')) {
			handleAllReviewsFilter(event.target.closest('[data-wcpr-all-filters]'));
		}

		if (event.target.closest('[data-wcpr-product-filters]')) {
			handleProductReviewsFilter(event.target.closest('[data-wcpr-product-filters]'));
		}
	});

	document.addEventListener('submit', function (event) {
		if (event.target.matches('.wcpr-form')) {
			event.preventDefault();
			handleSubmit(event.target);
		}

		if (event.target.matches('[data-wcpr-product-filters], [data-wcpr-all-filters]')) {
			event.preventDefault();
		}
	});

	document.addEventListener('click', function (event) {
		var loadMore = event.target.closest('.wcpr-load-more');
		var imageButton = event.target.closest('.wcpr-image-button');
		var openButton = event.target.closest('.wcpr-open-modal');
		var closeButton = event.target.closest('[data-wcpr-close]');
		var copyButton = event.target.closest('.wcpr-copy-coupon');
		var photoNav = event.target.closest('.wcpr-photo-nav');

		if (handleHelpfulTap(event)) {
			return;
		}

		if (loadMore) {
			handleLoadMore(loadMore);
		}

		if (photoNav) {
			handlePhotoSliderNav(photoNav);
		}

		if (imageButton) {
			var box = ensureLightbox();
			var img = qs('img', box);
			img.src = imageButton.getAttribute('data-full');
			box.hidden = false;
		}

		if (openButton) {
			openModal(qs('.wcpr-modal', openButton.closest('.wcpr-form-card')));
		}

		if (closeButton) {
			closeModal(closeButton.closest('.wcpr-modal'));
		}

		if (copyButton) {
			event.preventDefault();
			copyCouponCode(copyButton);
		}
	});

	document.addEventListener('touchend', function (event) {
		handleHelpfulTap(event);
	}, { passive: false });
}());
// source --> https://mfrash.com/wp-content/plugins/wc-otp-msegat/assets/popup.js?ver=1.1.29 
/* WC OTP Msegat - Popup JS */
(function ($) {
    'use strict';

    var phone     = '';
    var countdown = null;

    /* -------------------------------------------------------
       Open / Close
    ------------------------------------------------------- */
    function openPopup() {
        $('#wc-otp-overlay').fadeIn(200);
        $('body').addClass('wc-otp-open');
        setTimeout(function () { $('#wc-otp-phone-input').focus(); }, 250);
    }

    function closePopup() {
        $('#wc-otp-overlay').fadeOut(200);
        $('body').removeClass('wc-otp-open');
    }

    // Expose globally
    window.wcOtpPopupOpen = openPopup;

    // Auto-open if PHP flagged it before JS loaded
    if (window._wcOtpAutoOpen) {
        $(function () { openPopup(); });
    }

    $(document).ready(function () {

        /* ---- Close handlers — always go back to previous page ---- */
        $('#wc-otp-overlay').on('click', function (e) {
            if ($(e.target).is('#wc-otp-overlay')) { window.history.back(); }
        });
        $('#wc-otp-close-btn').on('click', function () {
            window.history.back();
        });
        $(document).on('keydown', function (e) {
            if (e.key === 'Escape') { window.history.back(); }
        });

        /* ---- Login triggers on page ---- */
        $(document).on('click', '.woocommerce-form-login__submit, .login-trigger, [data-otp-trigger]', function (e) {
            e.preventDefault();
            openPopup();
        });

        /* ---- Back ---- */
        $('#wc-otp-back-btn').on('click', function () { showStep('phone'); });

        /* ====================================================
           STEP 1 — Phone
        ==================================================== */
        $('#wc-otp-phone-input').on('keypress', function (e) {
            if (e.which === 13) { e.preventDefault(); $('#wc-otp-send-btn').trigger('click'); }
        });

        // Only allow digits
        $('#wc-otp-phone-input').on('input', function () {
            var v = $(this).val().replace(/\D/g, '');
            $(this).val(v);
        });

        $('#wc-otp-send-btn').on('click', function () {
            var raw = $('#wc-otp-phone-input').val().replace(/\D/g, '');
            if (!raw || raw.length < 9) {
                setMsg('phone', 'يرجى إدخال رقم جوال صحيح (9 أرقام على الأقل).', 'error');
                return;
            }

            $(this).prop('disabled', true).text(wcOtpPopup.sendingText);
            setMsg('phone', '', '');

            $.ajax({
                url:  wcOtpPopup.ajaxUrl,
                type: 'POST',
                data: { action: 'wc_otp_send_login', nonce: wcOtpPopup.nonce, phone: raw },
                success: function (res) {
                    if (res.success) {
                        phone = res.data.phone;
                        $('#wc-otp-sent-to').text('تم إرسال رمز التحقق إلى: +' + phone);
                        showStep('verify');
                        resetDigits();
                        startCountdown(res.data.cooldown || 30);
                        $('.wc-otp-digit').first().focus();
                    } else {
                        setMsg('phone', res.data.message, 'error');
                    }
                    $('#wc-otp-send-btn').prop('disabled', false).text(wcOtpPopup.sendText);
                },
                error: function () {
                    setMsg('phone', 'حدث خطأ، يرجى المحاولة مرة أخرى.', 'error');
                    $('#wc-otp-send-btn').prop('disabled', false).text(wcOtpPopup.sendText);
                }
            });
        });

        /* ====================================================
           STEP 2 — OTP digit inputs
           Supports: typing, backspace, paste, SMS auto-fill
        ==================================================== */

        // Mobile SMS auto-fill: when browser fills the first box with the full code
        $(document).on('input', '.wc-otp-digit', function () {
            var $this = $(this);
            var val   = $this.val().replace(/\D/g, '');

            // Handle auto-fill: if more than 1 digit pasted into one box
            if (val.length > 1) {
                distributeDigits(val);
                return;
            }

            $this.val(val.slice(0, 1));
            if (val) $this.next('.wc-otp-digit').focus();
            updateCombined();
        });

        $(document).on('keydown', '.wc-otp-digit', function (e) {
            if (e.key === 'Backspace' && !$(this).val()) {
                $(this).prev('.wc-otp-digit').focus();
            }
            // Allow: numbers, backspace, tab, arrows
            if (!/^\d$/.test(e.key) && !['Backspace','Tab','ArrowLeft','ArrowRight','Delete'].includes(e.key)) {
                e.preventDefault();
            }
        });

        // Paste support — works from any digit box
        $(document).on('paste', '.wc-otp-digit', function (e) {
            e.preventDefault();
            var pasted = (e.originalEvent.clipboardData || window.clipboardData).getData('text').replace(/\D/g, '');
            if (pasted) distributeDigits(pasted);
        });

        function distributeDigits(digits) {
            var $digits = $('.wc-otp-digit');
            $digits.each(function (i) { $(this).val(digits[i] || ''); });
            // Focus last filled or last box
            var lastIdx = Math.min(digits.length, 4) - 1;
            $digits.eq(lastIdx < 0 ? 0 : lastIdx).focus();
            updateCombined();
        }

        function updateCombined() {
            var code = '';
            $('.wc-otp-digit').each(function () { code += $(this).val(); });
            $('#wc-otp-combined').val(code);
            $('#wc-otp-verify-btn').prop('disabled', code.length < 4);
            // Auto-submit when all 4 filled
            if (code.length === 4) {
                setTimeout(function () { $('#wc-otp-verify-btn').trigger('click'); }, 300);
            }
        }

        function resetDigits() {
            $('.wc-otp-digit').val('');
            $('#wc-otp-combined').val('');
            $('#wc-otp-verify-btn').prop('disabled', true);
        }

        /* ====================================================
           STEP 2 — Verify
        ==================================================== */
        $('#wc-otp-verify-btn').on('click', function () {
            var code = $('#wc-otp-combined').val();
            if (code.length < 4) return;

            $(this).prop('disabled', true).text(wcOtpPopup.verifyingText);
            setMsg('verify', '', '');

            var isAccount = wcOtpPopup.isAccountArea === 'yes' || window.location.href.indexOf('my-account') !== -1 || window.location.href.indexOf('my-account-2') !== -1;

            $.ajax({
                url:  wcOtpPopup.ajaxUrl,
                type: 'POST',
                data: {
                    action:     'wc_otp_verify_login',
                    nonce:      wcOtpPopup.nonce,
                    phone:      phone,
                    otp_code:   code,
                    is_account: isAccount ? 1 : 0,
                    redirect_url: wcOtpPopup.redirectUrl || window.location.href
                },
                success: function (res) {
                    if (res.success) {
                        clearInterval(countdown);
                        showStep('success');
                        setTimeout(function () {
                            window.location.href = res.data.redirect_url || wcOtpPopup.redirectUrl || window.location.href;
                        }, 1200);
                    } else {
                        setMsg('verify', res.data.message, 'error');
                        resetDigits();
                        $('.wc-otp-digit').first().focus();
                        $('#wc-otp-verify-btn').prop('disabled', false).text(wcOtpPopup.verifyText);
                    }
                },
                error: function () {
                    setMsg('verify', 'حدث خطأ، يرجى المحاولة مرة أخرى.', 'error');
                    $('#wc-otp-verify-btn').prop('disabled', false).text(wcOtpPopup.verifyText);
                }
            });
        });

        /* ---- Resend ---- */
        $('#wc-otp-resend-btn').on('click', function () {
            $(this).hide();
            setMsg('verify', '', '');
            resetDigits();

            var raw = phone; // already normalized
            $.ajax({
                url:  wcOtpPopup.ajaxUrl,
                type: 'POST',
                data: { action: 'wc_otp_send_login', nonce: wcOtpPopup.nonce, phone: raw },
                success: function (res) {
                    if (res.success) {
                        setMsg('verify', res.data.message, 'success');
                        startCountdown(res.data.cooldown || 30);
                    } else {
                        setMsg('verify', res.data.message, 'error');
                        $('#wc-otp-resend-btn').show();
                    }
                },
                error: function () {
                    setMsg('verify', 'حدث خطأ.', 'error');
                    $('#wc-otp-resend-btn').show();
                }
            });
        });

        /* ====================================================
           Helpers
        ==================================================== */
        function showStep(step) {
            $('.wc-otp-step').hide().removeClass('active');
            $('#wc-otp-step-' + step).show().addClass('active');
        }

        function setMsg(area, msg, type) {
            var $el = area === 'phone' ? $('#wc-otp-phone-msg') : $('#wc-otp-verify-msg');
            $el.removeClass('success error').text(msg);
            if (type) $el.addClass(type);
        }

        function startCountdown(seconds) {
            clearInterval(countdown);
            var remaining = seconds;
            $('#wc-otp-resend-btn').hide();
            $('#wc-otp-countdown-text').text('إعادة الإرسال بعد ' + remaining + wcOtpPopup.seconds);
            countdown = setInterval(function () {
                remaining--;
                if (remaining <= 0) {
                    clearInterval(countdown);
                    $('#wc-otp-countdown-text').text('');
                    $('#wc-otp-resend-btn').show();
                } else {
                    $('#wc-otp-countdown-text').text('إعادة الإرسال بعد ' + remaining + wcOtpPopup.seconds);
                }
            }, 1000);
        }

        function isBlockedPage() {
            var href = window.location.href;
            var blocked = wcOtpPopup.blockGuest === 'yes';
            return blocked && (href.indexOf('checkout') !== -1 || href.indexOf('my-account') !== -1);
        }

    });

})(jQuery);
// source --> https://mfrash.com/wp-content/plugins/wpc-badge-management/assets/js/frontend.js?ver=3.1.7 
(function ($) {
    'use strict';

    $('.woocommerce-product-gallery').on('wc-product-gallery-after-init', function () {
        if ($('.wpcbm-wrapper-single-image .wpcbm-badges').length && !$('.woocommerce-product-gallery .wpcbm-wrapper-single-image').length) {
            $('.wpcbm-wrapper-single-image').appendTo('.woocommerce-product-gallery');
            $('.woocommerce-product-gallery > *:not(.wpcbm-wrapper-single-image)').appendTo('.wpcbm-wrapper-single-image');
        }
    });
})(jQuery);
// source --> https://mfrash.com/wp-content/themes/porto/inc/lib/live-search/live-search.min.js?ver=7.9.0 
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}((function(e){"use strict";function t(n,o){var s=this;s.element=n,s.el=e(n),s.suggestions=[],s.badQueries=[],s.selectedIndex=-1,s.currentValue=s.element.value,s.timeoutId=null,s.cachedResponse={},s.onChangeTimeout=null,s.onChange=null,s.isLocal=!1,s.suggestionsContainer=null,s.noSuggestionsContainer=null,s.options=e.extend(!0,{},t.defaults,o),s.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},s.hint=null,s.hintValue="",s.selection=null,s.initialize(),s.setOptions(o)}var n={escapeRegExChars:function(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(e){var t=document.createElement("div");return t.className=e,t.style.position="absolute",t.style.display="none",t}},o=27,s=9,i=13,a=38,r=39,l=40,u=e.noop;t.utils=n,e.Autocomplete=t,t.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:function(e,t){if(!t)return e.value;var o="("+n.escapeRegExChars(t)+")";return e.value.replace(new RegExp(o,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")},formatGroup:function(e,t){return'<div class="autocomplete-group">'+t+"</div>"},delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:u,onSearchComplete:u,onSearchError:u,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(e,t,n){return-1!==e.value.toLowerCase().indexOf(n)},paramName:"query",transformResult:function(e){return"string"==typeof e?JSON.parse(e):e},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},t.prototype={initialize:function(){var n,o=this,s="."+o.classes.suggestion,i=o.classes.selected,a=o.options;o.element.setAttribute("autocomplete","off"),o.noSuggestionsContainer=e('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),o.suggestionsContainer=t.utils.createNode(a.containerClass),(n=e(o.suggestionsContainer)).appendTo(a.appendTo||"body"),"auto"!==a.width&&n.css("width",a.width),n.on("mouseover.autocomplete",s,(function(){o.activate(e(this).data("index"))})),n.on("mouseout.autocomplete",(function(){o.selectedIndex=-1,n.children("."+i).removeClass(i)})),n.on("click.autocomplete",s,(function(){o.select(e(this).data("index"))})),n.on("click.autocomplete",(function(){clearTimeout(o.blurTimeoutId)})),o.fixPositionCapture=function(){o.visible&&o.fixPosition()},e(window).on("resize.autocomplete",o.fixPositionCapture),o.el.on("keydown.autocomplete",(function(e){o.onKeyPress(e)})),o.el.on("keyup.autocomplete",(function(e){o.onKeyUp(e)})),o.el.on("blur.autocomplete",(function(){o.onBlur()})),o.el.on("focus.autocomplete",(function(){o.onFocus()})),o.el.on("change.autocomplete",(function(e){o.onKeyUp(e)})),o.el.on("input.autocomplete",(function(e){o.onKeyUp(e)}))},onFocus:function(){var e=this;e.fixPosition(),e.el.val().length>=e.options.minChars&&e.onValueChange()},onBlur:function(){var e=this;e.blurTimeoutId=setTimeout((function(){e.hide()}),200)},abortAjax:function(){var e=this;e.currentRequest&&(e.currentRequest.abort(),e.currentRequest=null)},setOptions:function(t){var n=this,o=e.extend({},n.options,t);n.isLocal=Array.isArray(o.lookup),n.isLocal&&(o.lookup=n.verifySuggestionsFormat(o.lookup)),o.orientation=n.validateOrientation(o.orientation,"bottom"),e(n.suggestionsContainer).css({"max-height":o.maxHeight+"px",width:o.width+"px","z-index":o.zIndex}),this.options=o},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var e=this;e.disabled=!0,clearTimeout(e.onChangeTimeout),e.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var t=this,n=e(t.suggestionsContainer),o=n.parent().get(0);if(o===document.body||t.options.forceFixPosition){var s=t.options.orientation,i=n.outerHeight(),a=t.el.outerHeight(),r=t.el.offset(),l={top:r.top,left:r.left};if("auto"===s){var u=e(window).height(),c=e(window).scrollTop(),g=-c+r.top-i,p=c+u-(r.top+a+i);s=Math.max(g,p)===g?"top":"bottom"}if(l.top+="top"===s?-i:a,o!==document.body){var d,h=n.css("opacity");t.visible||n.css("opacity",0).show(),d=n.offsetParent().offset(),l.top-=d.top,l.top+=o.scrollTop,l.left-=d.left,t.visible||n.css("opacity",h).hide()}"auto"===t.options.width&&(l.width=t.el.outerWidth()+"px"),n.css(l)}},isCursorAtEnd:function(){var e,t=this.el.val().length,n=this.element.selectionStart;return"number"==typeof n?n===t:!document.selection||((e=document.selection.createRange()).moveStart("character",-t),t===e.text.length)},onKeyPress:function(e){var t=this;if(t.disabled||t.visible||e.which!==l||!t.currentValue){if(!t.disabled&&t.visible){switch(e.which){case o:t.el.val(t.currentValue),t.hide();break;case r:if(t.hint&&t.options.onHint&&t.isCursorAtEnd()){t.selectHint();break}return;case s:if(t.hint&&t.options.onHint)return void t.selectHint();if(-1===t.selectedIndex)return void t.hide();if(t.select(t.selectedIndex),!1===t.options.tabDisabled)return;break;case i:if(-1===t.selectedIndex)return void t.hide();t.select(t.selectedIndex);break;case a:t.moveUp();break;case l:t.moveDown();break;default:return}e.stopImmediatePropagation(),e.preventDefault()}}else t.suggest()},onKeyUp:function(e){var t=this;if(!t.disabled){switch(e.which){case a:case l:return}clearTimeout(t.onChangeTimeout),t.currentValue!==t.el.val()&&(t.findBestHint(),t.options.deferRequestBy>0?t.onChangeTimeout=setTimeout((function(){t.onValueChange()}),t.options.deferRequestBy):t.onValueChange())}},onValueChange:function(){if(!this.ignoreValueChange){var t=this,n=t.options,o=t.el.val(),s=t.getQuery(o);return t.selection&&t.currentValue!==s&&(t.selection=null,(n.onInvalidateSelection||e.noop).call(t.element)),clearTimeout(t.onChangeTimeout),t.currentValue=o,t.selectedIndex=-1,n.triggerSelectOnValidInput&&t.isExactMatch(s)?void t.select(0):void(s.length<n.minChars?t.hide():t.getSuggestions(s))}this.ignoreValueChange=!1},isExactMatch:function(e){var t=this.suggestions;return 1===t.length&&t[0].value.toLowerCase()===e.toLowerCase()},getQuery:function(e){var t,n=this.options.delimiter;return n?(t=e.split(n))[t.length-1].trim():e},getSuggestionsLocal:function(t){var n,o=this.options,s=t.toLowerCase(),i=o.lookupFilter,a=parseInt(o.lookupLimit,10);return n={suggestions:e.grep(o.lookup,(function(e){return i(e,t,s)}))},a&&n.suggestions.length>a&&(n.suggestions=n.suggestions.slice(0,a)),n},getSuggestions:function(t){var n,o,s,i,a=this,r=a.options,l=r.serviceUrl;if(r.params[r.paramName]=t,!1!==r.onSearchStart.call(a.element,r.params)){if(o=r.ignoreParams?null:r.params,"function"==typeof r.lookup)return void r.lookup(t,(function(e){a.suggestions=e.suggestions,a.suggest(),r.onSearchComplete.call(a.element,t,e.suggestions)}));a.isLocal?n=a.getSuggestionsLocal(t):("function"==typeof l&&(l=l.call(a.element,t)),s=l+"?"+e.param(o||{}),n=a.cachedResponse[s]),n&&Array.isArray(n.suggestions)?(a.suggestions=n.suggestions,a.suggest(),r.onSearchComplete.call(a.element,t,n.suggestions)):a.isBadQuery(t)?r.onSearchComplete.call(a.element,t,[]):(a.abortAjax(),i={url:l,data:o,type:r.type,dataType:r.dataType},e.extend(i,r.ajaxSettings),a.currentRequest=e.ajax(i).done((function(e){var n;a.currentRequest=null,n=r.transformResult(e,t),a.processResponse(n,t,s),r.onSearchComplete.call(a.element,t,n.suggestions)})).fail((function(e,n,o){r.onSearchError.call(a.element,t,e,n,o)})))}},isBadQuery:function(e){if(!this.options.preventBadQueries)return!1;for(var t=this.badQueries,n=t.length;n--;)if(0===e.indexOf(t[n]))return!0;return!1},hide:function(){var t=this,n=e(t.suggestionsContainer);"function"==typeof t.options.onHide&&t.visible&&t.options.onHide.call(t.element,n),t.visible=!1,t.selectedIndex=-1,clearTimeout(t.onChangeTimeout),e(t.suggestionsContainer).hide(),t.signalHint(null)},suggest:function(){if(this.suggestions.length){var t,n=this,o=n.options,s=o.groupBy,i=o.formatResult,a=n.getQuery(n.currentValue),r=n.classes.suggestion,l=n.classes.selected,u=e(n.suggestionsContainer),c=e(n.noSuggestionsContainer),g=o.beforeRender,p="",d=function(e,n){var i=e.data[s];return t===i?"":(t=i,o.formatGroup(e,t))};return o.triggerSelectOnValidInput&&n.isExactMatch(a)?void n.select(0):(e.each(n.suggestions,(function(e,t){s&&(p+=d(t,0)),p+='<div class="'+r+'" data-index="'+e+'">'+i(t,a,e)+"</div>"})),this.adjustContainerWidth(),c.detach(),u.html(p),"function"==typeof g&&g.call(n.element,u,n.suggestions),n.fixPosition(),u.show(),o.autoSelectFirst&&(n.selectedIndex=0,u.scrollTop(0),u.children("."+r).first().addClass(l)),n.visible=!0,void n.findBestHint())}this.options.showNoSuggestionNotice?this.noSuggestions():this.hide()},noSuggestions:function(){var t=this,n=t.options.beforeRender,o=e(t.suggestionsContainer),s=e(t.noSuggestionsContainer);this.adjustContainerWidth(),s.detach(),o.empty(),o.append(s),"function"==typeof n&&n.call(t.element,o,t.suggestions),t.fixPosition(),o.show(),t.visible=!0},adjustContainerWidth:function(){var t,n=this,o=n.options,s=e(n.suggestionsContainer);"auto"===o.width?(t=n.el.outerWidth(),s.css("width",t>0?t:300)):"flex"===o.width&&s.css("width","")},findBestHint:function(){var t=this,n=t.el.val().toLowerCase(),o=null;n&&(e.each(t.suggestions,(function(e,t){var s=0===t.value.toLowerCase().indexOf(n);return s&&(o=t),!s})),t.signalHint(o))},signalHint:function(t){var n="",o=this;t&&(n=o.currentValue+t.value.substr(o.currentValue.length)),o.hintValue!==n&&(o.hintValue=n,o.hint=t,(this.options.onHint||e.noop)(n))},verifySuggestionsFormat:function(t){return t.length&&"string"==typeof t[0]?e.map(t,(function(e){return{value:e,data:null}})):t},validateOrientation:function(t,n){return t=(t||"").trim().toLowerCase(),-1===e.inArray(t,["auto","bottom","top"])&&(t=n),t},processResponse:function(e,t,n){var o=this,s=o.options;e.suggestions=o.verifySuggestionsFormat(e.suggestions),s.noCache||(o.cachedResponse[n]=e,s.preventBadQueries&&!e.suggestions.length&&o.badQueries.push(t)),t===o.getQuery(o.currentValue)&&(o.suggestions=e.suggestions,o.suggest())},activate:function(t){var n,o=this,s=o.classes.selected,i=e(o.suggestionsContainer),a=i.find("."+o.classes.suggestion);return i.find("."+s).removeClass(s),o.selectedIndex=t,-1!==o.selectedIndex&&a.length>o.selectedIndex?(n=a.get(o.selectedIndex),e(n).addClass(s),n):null},selectHint:function(){var t=this,n=e.inArray(t.hint,t.suggestions);t.select(n)},select:function(e){this.hide(),this.onSelect(e)},moveUp:function(){var t=this;if(-1!==t.selectedIndex)return 0===t.selectedIndex?(e(t.suggestionsContainer).children("."+t.classes.suggestion).first().removeClass(t.classes.selected),t.selectedIndex=-1,t.ignoreValueChange=!1,t.el.val(t.currentValue),void t.findBestHint()):void t.adjustScroll(t.selectedIndex-1)},moveDown:function(){var e=this;e.selectedIndex!==e.suggestions.length-1&&e.adjustScroll(e.selectedIndex+1)},adjustScroll:function(t){var n=this,o=n.activate(t);if(o){var s,i,a,r=e(o).outerHeight();s=o.offsetTop,a=(i=e(n.suggestionsContainer).scrollTop())+n.options.maxHeight-r,s<i?e(n.suggestionsContainer).scrollTop(s):s>a&&e(n.suggestionsContainer).scrollTop(s-n.options.maxHeight+r),n.options.preserveInput||(n.ignoreValueChange=!0,n.el.val(n.getValue(n.suggestions[t].value))),n.signalHint(null)}},onSelect:function(e){var t=this,n=t.options.onSelect,o=t.suggestions[e];t.currentValue=t.getValue(o.value),t.currentValue===t.el.val()||t.options.preserveInput||t.el.val(t.currentValue),t.signalHint(null),t.suggestions=[],t.selection=o,"function"==typeof n&&n.call(t.element,o)},getValue:function(e){var t,n,o=this.options.delimiter;return o?1===(n=(t=this.currentValue).split(o)).length?e:t.substr(0,t.length-n[n.length-1].length)+e:e},dispose:function(){var t=this;t.el.off(".autocomplete").removeData("autocomplete"),e(window).off("resize.autocomplete",t.fixPositionCapture),e(t.suggestionsContainer).remove()}},e.fn.devbridgeAutocomplete=function(n,o){var s="autocomplete";return arguments.length?this.each((function(){var i=e(this),a=i.data(s);"string"==typeof n?a&&"function"==typeof a[n]&&a[n](o):(a&&a.dispose&&a.dispose(),a=new t(this,n),i.data(s,a))})):this.first().data(s)},e.fn.autocomplete||(e.fn.autocomplete=e.fn.devbridgeAutocomplete)})),jQuery(document).ready((function(e){"use strict";e(".searchform").each((function(){var t=e(this),n=t.find(".live-search-list"),o=t.find("#cat, #product_cat, #portfolio_cat"),s="undefined"!=typeof theme&&theme.ajax_url?theme.ajax_url:"undefined"!=typeof js_porto_vars&&js_porto_vars.ajax_url?js_porto_vars.ajax_url:ajaxurl,i=s+(-1===s.indexOf("?")?"?":"&")+"action=porto_ajax_search_posts&nonce="+porto_live_search.nonce,a="",r="";t.find('input[name="post_type"]').length&&t.find('input[name="post_type"]').val()&&(r="&post_type="+t.find('input[name="post_type"]').val(),i+=r),o.length&&(o.val()&&"0"!=o.val()&&(i+="&cat="+o.val()),o.on("change",(function(e){"object"==typeof a?(o.val()&&"0"!=o.val()?a.setOptions({serviceUrl:s+(-1===s.indexOf("?")?"?":"&")+"action=porto_ajax_search_posts&nonce="+porto_live_search.nonce+"&cat="+o.val()+r}):a.setOptions({serviceUrl:s+(-1===s.indexOf("?")?"?":"&")+"action=porto_ajax_search_posts&nonce="+porto_live_search.nonce+r}),a.hide(),a.onValueChange()):i=s+(-1===s.indexOf("?")?"?":"&")+"action=porto_ajax_search_posts&nonce="+porto_live_search.nonce+"&cat="+o.val()+r}))),t.find('input[type="text"]').on("focus keyup",(function(){var o=e(this);o.hasClass("porto-search-init")||o.closest("#side-nav-panel").length>0||(o.devbridgeAutocomplete({minChars:3,appendTo:n,triggerSelectOnValidInput:!1,serviceUrl:i,deferRequestBy:300,onSearchStart:function(){t.find("button").addClass("loading porto-ajax-loading").find(".porto-loading-icon").length||t.find("button").append('<span class="porto-loading-icon"></span>')},onSelect:function(e){-1!=e.id&&"undefined"!=typeof theme&&(window.location.href=e.url)},onHide:function(){n.removeClass("porto-opened")},onSearchComplete:function(){t.find("button").removeClass("loading").removeClass("porto-ajax-loading").find(".porto-loading-icon")},beforeRender:function(t){e(t).removeAttr("style")},formatResult:function(t,o){var s="("+e.Autocomplete.utils.escapeRegExChars(o)+")",i="";return t.img&&"undefined"!=typeof theme&&(i+='<img class="search-image" src="'+t.img+'">'),(t.sku||t.tag)&&(i+='<div class="search-info-wrap">'),i+='<div class="search-name">'+t.value.replace(new RegExp(s,"gi"),"<strong>$1</strong>")+"</div>",t.sku&&(i+='<div class="search-sku"><span>'+porto_live_search.sku+"</span>"+t.sku.replace(new RegExp(s,"gi"),"<strong>$1</strong>")+"</div>"),t.tag&&(i+='<div class="search-tag"><span>'+porto_live_search.product_tags+"</span>"+t.tag.replace(new RegExp(s,"gi"),"<strong>$1</strong>")+"</div>"),(t.sku||t.tag)&&(i+="</div>"),t.price&&"undefined"!=typeof theme&&(i+='<span class="search-price">'+t.price+"<span>"),n.addClass("porto-opened"),i}}),a=o.devbridgeAutocomplete(),o.addClass("porto-search-init"))}))}))}));