function asl_init_map(){};
var asl_wc={stores_list: []};
var format_count=function(value){
var limit=1e6;
if(value < limit&&value > 1000){
value=(1000 * value / limit);
value=Math.round(value * 10) / 10;
return (value + 'K');
}
return value.toFixed(2);
};
(function($){
"use strict";
var tab_loading={show: function(){jQuery('.asl-cont-wc > .loading').removeClass('hide');},hide: function(){jQuery('.asl-cont-wc > .loading').addClass('hide');}};
var ServerCall=function (_url, _data, _callback, _option){_data=_data==null ? {}: _data; _data['action']='asl_wc_ajax_public'; if(window['ASL_WC_CONFIG']&&ASL_WC_CONFIG.nounce){ _data['aslwc-nounce']=ASL_WC_CONFIG.nounce;}  _option=_option==null ? {}: _option; var i=_option.dataType ? _option.dataType:"json";if(_option.submit){_option.submit.button('loading');}tab_loading.show();var s={type:_option.type ? _option.type:"POST",url:_url,data:_data,dataType:i,success:function (_d){tab_loading.hide();_callback(_d);}};var o=jQuery.ajax(s);};
asl_wc.global_type=false;
window['asl_wc_notify']=function(_message, _status){
var $noti_cont=$('<div class="asl-toast-cont top-right"></div>');
var $noti_item=$('<div class="asl-toast asl-toast-primary default" style="touch-action: pan-y; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); opacity: 1; transform: translateY(-35px);"></div>');
$noti_item.html(_message);
$noti_item.addClass(_status ? 'success':'error');
$noti_cont.append($noti_item);
$noti_cont.appendTo('body');
window.setTimeout(function(){
$noti_cont.remove();
}, 5000);
};
asl_wc.all_bind_events=function(){
if(ASL_WC_CONFIG.is_checkout==true){
if(typeof woocommerce_params==='undefined'){
return false;
}
const containers=[
'#billing_store_name_field',
'#billing_store_address_field',
'#asl-wc-calender-container'
];
function toggleLocalPickupFields(){
const chosenMethod=$('input[name^="shipping_method"]:checked').val();
containers.forEach((container)=> {
if(chosenMethod&&chosenMethod.indexOf('local_pickup')===-1){
$(container).addClass('asl-wc-hide');
}else{
$(container).removeClass('asl-wc-hide');
}});
}
toggleLocalPickupFields();
$(document).on('change', '#shipping_method input[type="radio"]', function(){
var shipping_method=this.value.split(':');
toggleLocalPickupFields();
$('.billing-dynamic_pickup').toggleClass('hide_pickup', shipping_method[0]=='local_pickup');
$('.shipping-dynamic_pickup').toggleClass('hide_pickup', shipping_method[0]=='local_pickup');
$('.billing-show_pickup').toggleClass('hide_pickup', shipping_method[0]!='local_pickup');
});
$(document).on('updated_checkout', function(){
var selected_method="";
var selected=$("#shipping_method input[name='shipping_method[0]']:checked");
if(selected.length > 0){
}else{
selected=$("#shipping_method input[name='shipping_method[0]']");
}
selected_method=selected.val();
if(selected_method!=''&&selected_method!=undefined){
var Smethod=selected_method.split(':'),
Smethod=Smethod[0];
if(Smethod=='local_pickup'){
var store_id=$('.select-store-name.asl-wc-localpickup-store').attr('asl-wc-store_id');
if(ASL_WC_ALL_SETTINGS.enable_localpickup==1&&ASL_WC_ALL_SETTINGS.lp_dt_select==1&&store_id!=''){
asl_wc.calender_ajax(store_id, '');
}}
}});
}
if(ASL_WC_CONFIG.is_checkout==true||ASL_WC_CONFIG.is_cart==true){
$(document).on('click','.asl-wc-widget-btn',function(){
var modal_id='#asl-store-modal';
asl_wc.global_type=false;
if($(this).attr('data-type')=='global-btn'){
asl_wc.global_type=true;
}
var method_array=['local_pickup','asl_wc_store_shipping','asl_wc_shipping_distance'];
var shipping_method=jQuery(this).parents('li').find('input[name="shipping_method[0]"]').val();
shipping_method=shipping_method.split(':');
if(jQuery.inArray(shipping_method[0], method_array)!==-1){
var param={};
if(ASL_WC_CONFIG.enable_shipping==1){
param={'asl_meta_key': "shipping_id_"+shipping_method[1], "asl_meta_val": shipping_method[1]};}
if(window['asl_view']&&asl_view.reloadLocator){
asl_view.reloadLocator(param, function(){
asl_view.fitBound();
});
}
else if(window['asl_configuration']){
asl_configuration['reload_params']=param;
}}
$(modal_id).toggleClass('show');
$(modal_id).css('display','block');
$('.asl-wc-btn-container .asl-wc-widget-btn').parents('body').toggleClass('popout-modal');
});
$(document).on('click','.woocommerce-shipping-methods .asl-wc-refresh-shipping-rate-btn',function(){
var $btn=$(this);
$btn.bootButton('loading');
ServerCall(ASL_WC_CONFIG.URL + "?aslwc-action=shipping_ajax_request_handler", {session_name: 'update_total' ,session_value: '',btn_ajax: 1}, function(_response){
if(_response.success==true||_response.success==false){
if(_response.success==false){
asl_wc_notify(_response.error,false);
}
if(jQuery("[name='update_cart']")[0]){
jQuery("[name='update_cart']").removeAttr("disabled");
jQuery("[name='update_cart']").attr("aria-disabled","false");
jQuery("[name='update_cart']").click();
}
else if(jQuery(document.body).trigger("update_checkout")[0]){
jQuery('#billing_store_name').val(store_title);
jQuery('#asl-wc_store_name').val(store_title);
jQuery('#asl-wc_store_id').val(store_id).change();
jQuery(document.body).trigger("update_checkout");
}}
if(_response.alert){
asl_wc_notify(_response.alert, false);
}
$btn.bootButton('reset');
}, 'json');
});
$(document).on('keydown', function (e){
if($('.a-modal-main').hasClass('show')){
if(e.keyCode===27){
var modal_id='.a-modal-main';
$(modal_id).removeClass('show');
$(modal_id).css('display','none');
$('.asl-wc-btn-container .asl-wc-widget-btn').parents('body').removeClass('popout-modal');
};}});
$(document).on('click','.a-modal button[data-dismiss="modal"]',function(){
var modal_id='.a-modal-main';
$(modal_id).removeClass('show');
$(modal_id).css('display','none');
$('.asl-wc-btn-container .asl-wc-widget-btn').parents('body').removeClass('popout-modal');
});
$(document).on('change', '#shipping_method input[type="radio"]', function(){
var shipping_method=this.value.split(':');
if(shipping_method[0]=='local_pickup'){
var store_id=$('.select-store-name.asl-wc-localpickup-store').attr('asl-wc-store_id');
if(ASL_WC_ALL_SETTINGS.enable_localpickup==1&&ASL_WC_ALL_SETTINGS.lp_dt_select==1&&store_id!=''){
asl_wc.calender_ajax('');
}}else{
$('#asl-wc-calender-container').addClass('asl-wc-hide');
}});
var $calendar_cont=jQuery('#asl-wc-calender-container');
$(document).on('change','.asl-wc-calender-container #asl-wc-time-slot',function(){
var time=jQuery(this).val(),
date=$calendar_cont.find('#asl-wc-datetimepicker').val();
var formattedDate=moment(date, ASL_WC_CONFIG.locale.format).format('YYYY-MM-DD');
ServerCall(ASL_WC_CONFIG.URL + "?aslwc-action=save_selected_datetime", { date: formattedDate , time: time}, function(_response){}, 'json');
});
if(ASL_WC_CONFIG.is_cart==true&&jQuery('#shipping_method input[type="radio"]')[0]){
var $shippingMethod=jQuery('#shipping_method input[type="radio"]:checked').val();
$shippingMethod=$shippingMethod.split(':');
if($shippingMethod[0]=='local_pickup'){
var store_id=$('.select-store-name.asl-wc-localpickup-store').attr('asl-wc-store_id');
if(ASL_WC_ALL_SETTINGS.enable_localpickup==1&&ASL_WC_ALL_SETTINGS.lp_dt_select==1&&store_id!=''){
asl_wc.calender_ajax('');
}}
}}
};
asl_wc.makeList=function(_stores, _control_type){
this.stores_list=[];
for (var s in _stores){
if(!_stores.hasOwnProperty(s)) continue;
var a_store=_stores[s],
disabled_control='';
if(a_store.disabled){
if(_control_type=='select'){
disabled_control=a_store.disabled;
}else{
if(a_store.disabled==true){
disabled_control='disabled';
}}
}
this.stores_list.push(new asl_wc.Store(a_store.id, a_store.text,a_store.price ,disabled_control,a_store.stock, [a_store.lat, a_store.lng]));
}};
asl_wc.Store=function(_id, _title,_price ,_disabled,_stock, _location){
this.id=_id;
this.text=_title;
this.price=_price;
this.disabled=_disabled;
this.stock=_stock;
this.location_={ lat: _location[0], lng: _location[1] };
this.distance=null;
};
asl_wc.measureDistances=function(_dest){
var stores=this.stores_list;
for (var s in stores){
if(!stores.hasOwnProperty(s)) continue;
var a_store=stores[s];
a_store.distanceTo(_dest);
}};
asl_wc.sortDistance=function(latLng, stores){
stores=stores.sort(function(a, b){
return a.distanceTo(latLng) - b.distanceTo(latLng);
});
};
asl_wc.Store.prototype.distanceTo=function(point){
var R=6371;
var location=this.location_;
var lat1=asl_wc.toRad_(location.lat);
var lon1=asl_wc.toRad_(location.lng);
var lat2=asl_wc.toRad_(point.lat);
var lon2=asl_wc.toRad_(point.lng);
var dLat=lat2 - lat1;
var dLon=lon2 - lon1;
var a=Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1) * Math.cos(lat2) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c=2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var _val=R * c;
var distance_unit=ASL_WC_CONFIG.asl_distance;
this.distance=(distance_unit=='Miles') ? _val * 0.621371:_val;
return this.distance;
};
asl_wc.toRad_=function(degrees){
return degrees * Math.PI / 180;
};
asl_wc.toArray=function(){
var array_list=[],
control_type=ASL_WC_CONFIG.widget_type;
for (var s in this.stores_list){
if(!this.stores_list.hasOwnProperty(s)) continue;
var store=this.stores_list[s];
var disabled_control='';
if(store.disabled){
if(control_type=='select'){
disabled_control=store.disabled;
}else{
if(store.disabled==true){
disabled_control='disabled';
}}
}
array_list.push({ id: store.id, disabled_control ,stock:store.stock,text: store.text,price: store.price, distance: (store.distance)? (format_count(store.distance) + ' ' + ASL_WC_CONFIG.asl_distance): null });
}
return array_list;
};
asl_wc.geolocate_=function(_call_back, _options){
var that=this;
var onError=_options&&typeof _options.onError==='function' ? _options.onError:null;
if(window.navigator&&navigator.geolocation){
function geo_error(error){
if(!onError){
return;
}
var error_message=null;
switch (error.code){
case 'http':
error_message="Error! site is loading without HTTPS connection";
break;
case error.PERMISSION_DENIED:
error_message=(error.message)||"User denied the request for Geolocation.";
break;
case error.POSITION_UNAVAILABLE:
error_message="Location information is unavailable.";
break;
case error.TIMEOUT:
error_message="The request to get user location timed out.";
break;
case error.UNKNOWN_ERROR:
error_message="An unknown error occurred.";
break;
default:
error_message=error.message;
}
onError.call(this, error_message, error);
};
if(window.location.protocol=="http:"){
geo_error({ code: 'http' });
return;
}
navigator.geolocation.getCurrentPosition(function(pos){
_call_back.call(this, { lat: pos.coords.latitude, lng: pos.coords.longitude });
},
geo_error, ({
maximumAge: 60 * 1000,
timeout: 10 * 1000
})
);
}};
asl_wc.asl_wc_loader=function(_loading_state){
if(_loading_state=='start')
$('body').prepend('<div class="asl-wc-loader-sec"><span class="ptl-spinner-glow mr-5"></span></div>');
else if(_loading_state=='end')
$('.asl-wc-loader-sec').remove();
};
asl_wc.calender_ajax=function(store_id, event=''){
var $calendar_cont=jQuery('#asl-wc-calender-container');
$calendar_cont.find('#asl-wc-datetimepicker').empty();
var $date_container=$calendar_cont.find('#asl-wc-time-slot-container');
$date_container.addClass('asl-wc-hide');
$date_container.find('select').empty();
if(store_id){
ServerCall(ASL_WC_CONFIG.URL + "?aslwc-action=setup_store_date", { store_id: store_id}, function(_response){
var date=_response.date;
var selectedDate=_response.selectedDate;
var server_date_format='YYYY-M-D';
var localeSettings=ASL_WC_CONFIG.locale||{};
var displayFormat=localeSettings.format||server_date_format;
var moment_start_date=moment(date, server_date_format);
if(!moment_start_date.isValid()){
console.log(`Invalid Date:`, moment_start_date, displayFormat);
}
$date_container.removeClass('asl-wc-hide');
var timestamp=moment_start_date.unix();
var minDateDateObject=new Date(timestamp * 1000);
$calendar_cont.find('#asl-wc-datetimepicker').daterangepicker({
"singleDatePicker": true,
"showDropdowns": true,
"autoApply": true,
"alwaysShowCalendars": true,
"opens": "center",
"drops": "auto",
"minDate": minDateDateObject,
"autoUpdateInput": true,
locale: ASL_WC_CONFIG.locale||{},
isInvalidDate: function(date){
var off_days={
'sun': 0,
'mon': 1,
'tue': 2,
'wed': 3,
'thu': 4,
'fri': 5,
'sat': 6,
};
for (var key in off_days){
if(jQuery.inArray(key, _response.off)!==-1){
if(date.day()==off_days[key]){
return true;
}}
}
return false;
}})
.on('apply.daterangepicker', function (e, picker){
var momentObj=moment(picker.endDate._d);
var calender_date=momentObj.format('YYYY-MM-DD');
var day=momentObj.day();
asl_wc.create_time_slots(day,calender_date, store_id);
});
if(event!='click'&&selectedDate!=''){
$calendar_cont.find('#asl-wc-time-slot-container').removeClass('asl-wc-hide');
$calendar_cont.find('#asl-wc-datetimepicker').val(selectedDate);
}
var selectedDateMoment=moment(selectedDate, server_date_format);
if(!selectedDateMoment.isValid()){
$calendar_cont.find('#asl-wc-datetimepicker').val('');
return;
}
var calender_date=selectedDateMoment.toDate();
var day=calender_date.getDay();
$calendar_cont.find('#asl-wc-time-slot-container').removeClass('asl-wc-hide');
$calendar_cont.find('#asl-wc-datetimepicker').val(selectedDateMoment.format(displayFormat));
calender_date=selectedDateMoment.format("YYYY-MM-DD");
asl_wc.create_time_slots(day, calender_date, store_id);
}, 'json');
}};
asl_wc.create_time_slots=function(day,calender_date,store_id){
var $calendar_cont=jQuery('#asl-wc-calender-container');
ServerCall(ASL_WC_CONFIG.URL + "?aslwc-action=get_time_slot", { day: day,calender_date:calender_date,store_id: store_id}, function(_response){
if(_response.success){
var $select=$calendar_cont.find('#asl-wc-time-slot-container select');
$select.empty();
$select.append(_response['options']);
}});
};
jQuery.fn.bootButton=function(_state){
var loader_svg='<svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"width="40px" height="40px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve"><path opacity="0.2" fill="#fff" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"/><path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0C22.32,8.481,24.301,9.057,26.013,10.047z"><animateTransform attributeType="xml"attributeName="transform"type="rotate"from="0 20 20"to="360 20 20"dur="0.9s"repeatCount="indefinite"/></path></svg>';
if(!this[0]) return;
if(_state=='loading')
this.attr('data-reset-text', this.html());
if(_state=='loading'){
if(!this[0].dataset.resetText){
this[0].dataset.resetText=this.html();
}
this.addClass('disabled').attr('disabled', 'disabled').html(loader_svg + this[0].dataset.loadingText);
}
else if(_state=='reset')
this.removeClass('disabled').removeAttr('disabled').html(this[0].dataset.resetText);
else if(_state=='update')
this.removeClass('disabled').removeAttr('disabled').html(this[0].dataset.updateText);
else
this.addClass('disabled').attr('disabled', 'disabled').html(this[0].dataset[_state + 'Text']);
};
asl_wc.initialize_events=function(){
asl_wc.all_bind_events();
};
asl_wc.initialize_events();
window['asl_wc']=asl_wc;
})(jQuery);