").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});jQuery.fn.serializeFormJSON=function(){var o={};if(this[0].tagName.toLowerCase()=='div'){var a=this.find("select, textarea, input").serializeArray();}
else{var a=this.serializeArray();}
jQuery.each(a,function(){if(o[this.name]!==undefined){if(!o[this.name].push){o[this.name]=[o[this.name]];}
o[this.name].push(this.value||'');}else{o[this.name]=this.value||'';}});return o;};jQuery.fn.scrollToMe=function(top_px){if(typeof top_px=='undefined')
top_px=100;jQuery('html,body').animate({scrollTop:jQuery(this).offset().top-top_px},'slow');};jQuery.fn.formCtrl=function(options){var settings=jQuery.extend({fieldEvents:'change keyup propertychange input',exclude:"submit,button",triggerChanges:true,fieldsMarked:{},save_button:false,discard_button:false},options);var formCtrl=this;var get_value=function($field)
{if($field.attr('data-form-ctrl-ignore')||$field.attr('name')===undefined)
return null;var val;if($field.get(0).tagName=='INPUT')
{switch($field.attr('type')){case'checkbox':case'radio':val=$field.is(':checked');break;default:val=$field.val();break;};}
else
{val=$field.val();}
return val;};var set_value=function($field,value)
{if($field.attr('data-form-ctrl-ignore')||$field.attr('name')===undefined)
return null;var val;if($field.get(0).tagName=='INPUT')
{switch($field.attr('type')){case'checkbox':case'radio':if(value==true)
$field.prop('checked',true);else
$field.prop('checked',false);break;default:$field.val(value);break;};}
else
{$field.val(value);}
return;};var store_original=function($field)
{$field.attr('data-form-ctrl-orig',get_value($field));};var restore_original=function($field)
{set_value($field,$field.attr('data-form-ctrl-orig'));};var get_fields=function($form)
{var fields=[];var fieldsExcluded=(settings.exclude).split(',');if(jQuery.inArray('selector',fieldsExcluded)==-1)
{if($form.find('selector').length>0)
{$form.find('selector').each(function(){fields.push($(this));});}}
if($form.find('input').length>0)
{$form.find('input').each(function(){if(jQuery.inArray(jQuery(this).attr('type'),fieldsExcluded)==-1)
fields.push(jQuery(this));});}
if(jQuery.inArray('textarea',fieldsExcluded)==-1)
{if($form.find('textarea').length>0)
{$form.find('textarea').each(function(){fields.push(jQuery(this));});}}
return fields;};var is_field_dirty=function($field)
{if($field.attr('data-form-ctrl-orig')!=undefined)
return(get_value($field)!=$field.attr('data-form-ctrl-orig'));else
return false;};var mark_field=function($field)
{settings.fieldsMarked[$field.attr('name')]=true;$field.toggleClass('form-ctrl-field-mark',true);};var dismark_field=function($field)
{if(settings.fieldsMarked[$field.attr('name')]!=undefined)
delete settings.fieldsMarked[$field.attr('name')];$field.toggleClass('form-ctrl-field-mark',false);};var mark_form=function($form)
{$form.toggleClass('form-ctrl-mark',true);if(settings.triggerChanges)
$form.trigger('form-ctrl-changes');if(settings.save_button)
$form.find(settings.save_button).removeAttr('disabled');};var dismark_form=function($form)
{$form.toggleClass('form-ctrl-mark',false);if(settings.triggerChanges)
$form.trigger('form-ctrl-no-changes');if(settings.save_button)
$form.find(settings.save_button).prop('disabled',true);};var checkForm=function(evt)
{var $form=jQuery(evt.data.form);if(is_field_dirty(jQuery(evt.target)))
{mark_field(jQuery(evt.target));mark_form($form);return;}
else
{dismark_field(jQuery(evt.target));}
var fields=get_fields($form);for(var i=0;i
0)
url+="&";url+=key+"="+options.data[key];total_params++;}}
return jQuery.ajax({url:params.domain+url,type:'POST',async:(typeof options.async=='undefined'?true:options.async),dataType:'json',success:function(response){if(response.status=='OK')
{callbacks.onSuccess(response);}
else
{callbacks.onError(response);}},complete:function(){callbacks.onComplete();}});}
function ajaxPost(url,data,options)
{var options=options||{};var callbacks=getAjaxCallbacksOptions(options);return jQuery.ajax({url:params.domain+url,type:'POST',async:(typeof options.async=='undefined'?true:options.async),dataType:'json',data:data,success:function(response){if(response.status=='OK')
{callbacks.onSuccess(response);}
else
{callbacks.onError(response);}},complete:function(){callbacks.onComplete();}});}
function getAjaxCallbacksOptions(options){return{onSuccess:(options&&options.onSuccess!==undefined?options.onSuccess:function(){}),onError:(options&&options.onError!==undefined?options.onError:function(){}),onComplete:(options&&options.onComplete!==undefined?options.onComplete:function(){})};};app.ajaxGet=function(url,options){return ajaxGet(url,options);};app.ajaxPost=function(url,data,options){return ajaxPost(url,data,options);};app.carts={};app.carts.get=function(data,options){return ajaxPost('ajax/carts/get',data,options);};app.carts.addItem=function(product_id,quantity,options){var data={product_id:product_id,quantity:(quantity!=undefined?quantity:1)};if(typeof options.extra_data!='undefined'&&options.extra_data)
data.extra_data=options.extra_data;if(typeof options.cart_attributes!='undefined'&&options.cart_attributes)
data.cart_attributes=options.cart_attributes;return ajaxPost('ajax/carts/add_item',data,options);};app.carts.updateItem=function(item_id,quantity,options){var data={item_id:item_id,quantity:quantity};return ajaxPost('ajax/carts/update_item',data,options);};app.carts.removeItem=function(item_id,options){var data={item_id:item_id};return ajaxPost('ajax/carts/remove_item',data,options);};app.carts.update=function(data,options){return ajaxPost('ajax/carts/update',data,options);};app.carts.clear=function(options){return ajaxPost('ajax/carts/clear',{},options);};app.contacts={};app.contacts.send=function(data,options){return ajaxPost('ajax/contacts/save',data,options);};app.contacts.update=function(contact_id,data,options){data=jQuery.extend({id:contact_id},data);return ajaxPost('ajax/contacts/save',data,options);};app.customers={};app.customers.login=function(email,password,options){var data={email:email,password:password};return ajaxPost('ajax/customers/login',data,options);};app.customers.newsletterSuscribe=function(email,options){var data={email:email};return ajaxPost('ajax/customers/process_newsletter_subscription',data,options);};app.customers.recoverPassword=function(email,options){var data={email:email};return ajaxPost('ajax/customers/password_recovery',data,options);};app.customers.passwordReset=function(customer_id,password,password_confirmation,options){var data={customer_id:customer_id,password:password,password_confirmation:password_confirmation};return ajaxPost('ajax/customers/save_password_reset',data,options);};app.customers.create=function(data,options){return ajaxPost('ajax/customers/save',data,options);};app.customers.update=function(customer_id,data,options){data=jQuery.extend({id:customer_id},data);return ajaxPost('ajax/customers/save',data,options);};app.customers.get_by_email=function(email,options){var data={email:email};return ajaxPost('ajax/customers/get_by_email',data,options);};app.customers.registration=function(data,options){return ajaxPost('ajax/customers/registration',data,options);};app.products={};app.products.get=function(product_id,options){return ajaxGet('ajax/products/get/'+product_id,options);};app.products.getPaymentOptions=function(product_id,options){return ajaxGet('ajax/products/get_payment_options/'+product_id,options);};app.locations={};app.locations.getStates=function(country_code,options){};app.vendors={};app.vendors.get=function(vendor_id,options){return ajaxGet('ajax/vendors/get/'+vendor_id,options);};app.vendors.getMoreProducts=function(vendor_id,options){return ajaxGet('ajax/vendors/get_more_products/'+vendor_id,options);};};function EventManager(){this.events={};}
EventManager.prototype.on=function(event,handler){(this.events[event]||(this.events[event]=[])).push(handler);return handler;};EventManager.prototype.unbind=function(event,handler){var handlers={};var i;if(!((handlers=this.events[event])&&(i=handlers.length)))
return;while(i--)
{if(handlers[i]===handler)
handlers.splice(i,1);}};EventManager.prototype.trigger=function(event){var handlers={};var length=0;var i=0;var slice=Array.prototype.slice;if(!((handlers=this.events[event])&&(length=handlers.length)))
return;while(i0)return false;if(obj.length===0)return true;for(var key in obj){if(hasOwnProperty.call(obj,key))return false;}
return true;};app.utils.get_url_params=function(qs){qs=typeof qs=='undefined'?document.location.search:qs;qs=qs.split('+').join(' ');var params={},tokens,re=/[?&]?([^=]+)=([^&]*)/g;while(tokens=re.exec(qs)){params[decodeURIComponent(tokens[1])]=decodeURIComponent(tokens[2]);}
return params;};app.utils.load_async_script=function(src,callback_name){jQuery.ajaxSetup({cache:true});return jQuery.getScript(src).done(function(){jQuery.ajaxSetup({cache:false});if(typeof callback_name!='undefined')
app.utils.execute_function(callback_name,window);});};app.utils.execute_function=function(functionName,context,args){var args=Array.prototype.slice.call(arguments).splice(2);var namespaces=functionName.split(".");var func=namespaces.pop();for(var i=0;i3){s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,thousands_sep);}
if((s[1]||'').length0)
{self.variant_picked=jQuery.grep(self.variants,function(e){return e.id==self.current_variant_id;});self.variant_picked=self.variant_picked[0];var variants_picked_options={'option_1':self.variant_picked.option_1,'option_2':self.variant_picked.option_2,'option_3':self.variant_picked.option_3};}
self.pickOption=function(relevance,option_id){variants_picked_options['option_'+relevance]=option_id;return self.setVariantPicked(self.getVariantByOptions());};self.getPickedOptions=function(){return variants_picked_options;};self.setVariantPicked=function(variant,args){var args=args||{};self.variant_picked={};self.current_variant_id=0;var trigger_events=(typeof args.triggerEvents=="undefined"?true:args.triggerEvents);if(self.variants.length>0)
{self.variant_picked=variant;self.current_variant_id=self.variant_picked.id;}
if(trigger_events)
{ST.eventManager.trigger('st-variant-picked',self.variant_picked);}
return self.variant_picked;};self.getVariantPicked=function(){if(self.current_variant_id==0)
return false;else
return self.variant_picked;};self.isAvailable=function(){var product=(self.current_variant_id!=0?self.variant_picked:self);if(product.stock_management&&!product.stock_overselling)
{var cart_product=ST.cart.getItemByProduct(product.id);if(cart_product&&(product.stock_available-cart_product.quantity<=0)||!cart_product&&product.stock_available<=0)
return false;}
return true;};self.getGatewayPrice=function(gateway_id){if(self.gateway_pricing){for(var i=0;i "purchase" with this data: ');console.log(order_data);}
else if(has_analytics)
{gtag('event','purchase',order_data);}}
else
{if(has_analytics)
ga('set','currencyCode',order.currency);for(var i=0;i "purchase" with this data: ');console.log(order_data);}
else if(has_analytics)
{ga('ec:setAction','purchase',order_data);}}}
self.page_list=function(){if(ST_params.environment!='production')
{console.log('SDK Tracking: Analytics tracking event fired: ec:addImpression for all products in this list');}
else if(has_analytics&&analytics_version=='universal')
{var products=JSON.parse(ST_params.products_json);for(var i=0;i