(function(){var A=this.InputMask=new Class({Implements:[Options,Events],options:{rules:{},mask:null},initialize:function(B,D){this.setOptions(D);this.rules=$merge(this.options.rules,A.lookupRules());this.keys=Hash.getKeys(this.rules);var C=this;this.fire=function(E){C.fireEvent(E.type)[E.type].apply(C,[E,this])};this.attach(B)},attach:function(B){$$(B).addEvents({keypress:this.fire});return this},detach:function(B){$$(B).removeEvents({keypress:this.fire});return this},keypress:function(E,C){var K=E.key.toLowerCase(),I=C.get("value");if(E.control||E.meta){return(E.key=="a"||E.key=="c")}var D=C.getSelectedRange();if($chk(D.start)&&D.start!=D.end){E.stop();C.set("value",I=I.substring(0,D.start)+I.substring(D.end,I.length))}else{if(K=="backspace"){E.stop();C.set("value",I.substring(0,I.length-1));this.previous(C)}}if((["right","up","down","left"].contains(K)&&E.shift)||K=="delete"){E.stop()}if(K.length>1){return true}var H=I;this.next(C);I=""+C.get("value");E.stop();var F=this.options.mask.charAt(I.length),J=this.getPrevious(I,K);for(var B in this.rules){var G=this.rules[B],L=($type(G)=="function"?G(K,{element:C,value:I,position:I.length,group:J}):K.test(G));if(F==B&&L){C.set("value",I+K);return true}}this.next(C);if(H==C.get("value")){this.fireEvent("error",[C,K])}},getPrevious:function(F,D){var E=F.length,B=this.options.mask;if(!F){return D}var H=[D],G=B.charAt(E);for(var C=E;C--;){if(B.charAt(C)==G){H.push(F.charAt(C))}else{break}}return H.reverse().join("")},previous:function(D){var F=D.get("value"),E=F.length-1,B=this.options.mask;if(!F){return this}for(var C=E;C--;){if(this.keys.contains(B.charAt(E))){break}else{D.set("value",F.substring(0,E))}}return this},next:function(D){var F=D.get("value"),E=F.length,B=this.options.mask;if(B.length<=E){return this}for(var C=E;C<=B.length;C++){var G=B.charAt(E);if(this.keys.contains(G)){break}else{D.set("value",F+G)}}return this}});A.extend({rules:{},defineRule:function(C,B){this.rules[C]=B;return this},defineRules:function(C){for(var B in C){this.defineRule(B,C[B])}return this},lookupRule:function(B){return rules[B]||null},lookupRules:function(C){if(!C){return this.rules}var B={};C.each(function(D){B[D]=this.rules[D]||null},this);return B},upTo:function(B){B=""+B;return function(D,C){if(!C.group.test(/^\d+$/)){return false}return C.group<=B.substr(0,C.group.length)}}}).defineRules((function(){var C={"0":/0/,a:/\w/};for(var B=1;B<=9;B++){C[B]=new RegExp("[0-"+B+"]")}return C})());A.Time=new Class({Extends:A,options:{rules:{h:A.upTo(23)},mask:"hh:59"}});A.Date=new Class({Extends:A,options:{rules:{m:A.upTo(12),d:A.upTo(31)},mask:"mm/dd/2999"}})})();Jx.Button.Poller=new Class({Family:"Jx.Button.Poller",Extends:Jx.Button,bStarted:false,oInterval:null,options:{delay:5000,url:null,data:null},render:function(){this.parent()},startPolling:function(){this.oInterval=setInterval(this.makeRequest.bind(this),this.options.delay);this.setEnabled(false);this.setBusy(true)},makeRequest:function(){if(this.options.url){new Request.JSON({url:this.options.url,data:this.options.data,onComplete:function(A){if(A.success){clearInterval(this.oInterval);this.setBusy(false);this.setEnabled(true);this.json=A}}.bind(this)}).send()}}});var miCart={checkoutHash:{},domObj:null,list:null,view:null,poller:{domObj:[]},checkout:null,promotion:null,edit:{},sidebars:{},pages:{},freeorder:false};var spinOpts={"class":"jxSpinner jxSpinnerSmall",img:{"class":"jxSpinnerImage"},content:{"class":"jxSpinnerContent"},messageContainer:{"class":"jxSpinnerMessage"},useIframeShim:true,iframeShimOptions:{className:"jxIframeShim"}};window.addEvent("load",function(){document.addEvent("cartupdated",cartupdated.bind(this));document.addEvent("carttotalupdated",carttotalupdated.bind(this));miCart.checkoutHash=new Hash({});miCart.domObj=$("mi_cart");miCart.edit.domObj=$("mi_edit_cart");miCart.edit.footer=$("mi_cart_footer");miCart.sidebars.orderSummary=$("mi_cart_sidebar_checkout_order_summary");miCart.sidebars.cartSummary=$("mi_cart_sidebar_cart_order_summary");miCart.poller.domObj=$$(".jx_button_mi_cart_poller");miCart.promotion=$("mi_cart_promotion");miCart.pages.cartWidget=($$(".mi_cart_page_cartwidget").length===1)?true:false;miCart.pages.checkout=($$(".mi_cart_page_checkout").length===1)?true:false;miCart.pages.orderSummary=($$(".mi_cart_page_order_summary").length===1)?true:false;mi_cart_render_promo();mi_cart_render_poller();mi_cart_render_sidebar();mi_cart_render_edit_cart();mi_cart_render_mini_cart();if($("mi_checkout_form")){var A=new InputMask("#billing_phone, #shipping_phone",{mask:"999 999 9999 x 99999",rules:{x:"x"}});MooTools.lang.set("en-US","Form.Validator",{minLength:"Please enter a valid phone number."});v=new FormValidator($("mi_checkout_form"),{stopOnFailure:false,evaluateFieldsOnBlur:true,serial:false,onFormValidate:function(D,C,B){if(D===true){miCart.validCheckout=true}else{miCart.validCheckout=false}},onElementValidate:function(D,B,C,E){},onElementFail:function(C,B){var D=[];B.each(function(F){var E=v.getValidator(F);D.push(E.getError())});if(D.length>0){mi_cart_throw_notification(C,D)}},onElementPass:function(B){mi_cart_clear_notification(B)}})}FormValidator.addAllThese([["validate-cc",{errorMsg:function(){return"The credit card number is incomplete or incorrect."},test:function(D){var C=D.value;if(!C.test(/^\d{16}$/)){console.log("failed length test");return false}var B=C.length;var F=B%2;var E=0;for(i=0;i<B;i++){var G=C.charAt(i);if(i%2==F){G=G*2;if(G>9){G=G-9}}E=E+parseInt(G)}if(E%10==0){return true}else{return false}}}],["validate-phone",{errorMsg:function(){return"The phone number is incomplete or incorrectly formatted"},test:function(C){var B=C.value;if(!B.test(/^\d{3} \d{3} \d{4}/)){return false}else{return true}}}],["validate-pc",{errorMsg:function(){return"The postal code format is incorrect"},test:function(C){var B=C.value;if(!B.test("^[0-9]{5}$")&&!B.test("^[0-9]{5}-[0-9]{4}")&&!B.test("[a-zA-Z][0-9][a-zA-Z]\040*[0-9][a-zA-Z][0-9]")){return false}else{return true}}}]]);if($("mi_cart_go")){$("mi_cart_go").addEvents({click:function(){mi_cart_process_payment()}})}if(miCart.sidebars.orderSummary){document.fireEvent("cartupdated")}});function mi_cart_render_promo(){if(miCart.promotion){var A=miCart.promotion.getElement(".mi_cart_jx_input_promo_current");var E=miCart.promotion.getElement(".mi_cart_jx_input_promo_input");var C=miCart.promotion.getElement(".mi_cart_jx_input_promo_apply_button");var D=miCart.promotion.getElement(".mi_cart_jx_input_promo_description");miCart.promotion.inputSpan=E;miCart.promotion.applySpan=C;miCart.promotion.descSpan=D;var B=A.innerHTML;if(B){A.innerHTML="Current Promotion Code: "+B}miCart.promotion.promoInput=new Jx.Field.Text({name:"promoCode",label:"Promotion code",value:"",keyup:function(){}}).addTo(miCart.promotion.inputSpan);miCart.promotion.promoInput.field.addEvent("keydown",function(F){if(!miCart.promotion.fetch){setTimeout(mi_cart_check_promotion_code.bind(this),1000);miCart.promotion.fetch=true}});miCart.promotion.promoButton=new Jx.Field.Button({buttonOptions:{id:"Apply",label:"Apply",disabled:true,onClick:function(){new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:{action:"apply-promotion-code",code:miCart.promotion.promoInput.getValue()},onComplete:function(F){if(F.success){A.innerHTML="Current Promotion Code: "+miCart.promotion.promoInput.getValue();miCart.promotion.descSpan.innerHTML="Promo Applied:"+F.description;document.fireEvent("cartupdated",this)}else{miCart.promotion.descSpan.innerHTML="Invalid promotion code.";document.fireEvent("cartupdated",this)}}}).send()}}}).addTo(miCart.promotion.applySpan)}}function mi_cart_check_promotion_code(){miCart.promotion.fetch=false;new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:{action:"check-promotion-code",code:miCart.promotion.promoInput.getValue()},onComplete:function(A){if(A.success){miCart.promotion.descSpan.innerHTML='Valid Promomotion: "'+A.description+'" click apply'}else{miCart.promotion.descSpan.innerHTML=""}}}).send()}function mi_cart_render_poller(){if(miCart.poller){for(var B=0;B<miCart.poller.domObj.length;B++){var A=miCart.poller.domObj[B].innerHTML;miCart.poller.domObj[B].innerHTML="";new Jx.Button.Poller({label:"Download PDF",url:window.MI_CART_URL+"/mi_cart_ajax.php",data:{action:"poll-pdf-generated",pdffileuid:A},onClick:function(){mi_cart_download_pdf(this.options.data.pdffileuid)}}).addTo(miCart.poller.domObj[B]).startPolling()}}}function mi_cart_download_pdf(A){var B=$(A);B.set("src",window.MI_CART_URL+"/mi_cart_ajax.php?action=download-pdf&pdffileuid="+A)}function mi_cart_toggle_div(B){var A=$(B);if(A){if(A.style.display=="none"){A.style.display="block"}else{A.style.display="none"}}}function mi_cart_set_location(B,A){if(A){A.action="update-location"}else{var A={};A.action="update-location";A.location=miCart.edit.changeLocationSelect.options[miCart.edit.changeLocationSelect.selectedIndex].value}if(A.spinner||A.spinner!==false){B.set("spinner",$merge(spinOpts,{message:"Updating Location."}));B.spin()}new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:A,onComplete:function(C){if(C.success){if(A.spinner||A.spinner!==false){B.unspin()}document.fireEvent("cartupdated",this)}else{}}}).send()}function mi_cart_update_location_checkout(B){var A={};A.location=B.options[B.selectedIndex].value;A.spinner=false;if($("shippingsameasbilling").checked===false&&B.id=="shipping_prov"){mi_cart_set_location(B,A)}if($("shippingsameasbilling").checked===true&&B.id=="billing_prov"){mi_cart_set_location(B,A)}}function mi_cart_process_payment(){var A=mi_cart_preflight();if(A===true){var F=$("mi_cart_cctype");var E=$("mi_cart_ccnumber");var B=$("mi_cart_month");var D=$("mi_cart_year");var C=$("mi_cart_ccv");$("mi_checkout_cctype").value=F.options[F.selectedIndex].value;$("mi_checkout_month").value=B.options[B.selectedIndex].value;$("mi_checkout_year").value=D.options[D.selectedIndex].value;$("mi_checkout_ccnumber").value=E.value;$("mi_checkout_ccv").value=C.value;document.mi_checkout_form.submit()}}function mi_cart_preflight(){if(miCart.freeorder!==true){v.validate();v.validateField($("mi_cart_ccnumber"));v.validateField($("mi_cart_ccv"));if($("shippingsameasbilling").checked===false){v.validateField($("shipping_firstname"));v.validateField($("shipping_lastname"));v.validateField($("shipping_email"));v.validateField($("shipping_address1"));v.validateField($("shipping_city"));v.validateField($("shipping_pc"));v.validateField($("shipping_phone"))}var A=$$(".mi_cart_notify_error_msg");if(A.length==0){return true}else{return false}}else{v.validateField($("billing_firstname"));v.validateField($("billing_lastname"));v.validateField($("billing_email"));var A=$$(".mi_cart_notify_error_msg");if(A.length==0){return true}else{return false}}}function mi_cart_clear_notification(B){if(typeof (B.notifySpan)!="undefined"){var A=B.notifySpan.dispose();A.destroy();B.removeClass("mi_cart_input_error")}mi_cart_throw_notification}function mi_cart_throw_notification(F,G){if(typeof (F)=="object"){var E=F.getParent();var A="<ul>";for(var B=0;B<G.length;B++){A=A+"<li>"+G[B]+"</li>"}var A=A+"</ul>";if(F.notifySpan){var D=F.notifySpan.dispose();D.erase()}var C=new Element("SPAN",{});C.innerHTML=A;C.style.display="block";C.addClass("mi_cart_notify_error_msg");F.notifySpan=C;E.insertBefore(C,F);F.addClass("mi_cart_input_error")}}function mi_cart_remove_item(B,A){uuid=(A.uuid)?A.uuid:null;A.action="remove-item";if(uuid!=null){new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:A,onComplete:function(C){if(C.success){var D=new Fx.Slide(B.id,{duration:"normal"});D.addEvent("complete",function(){var E=B.getParent().getParent();E.erase().dispose()});D.slideOut();document.fireEvent("cartupdated",this)}else{}}}).send()}}function mi_cart_modify_item(B,A){uuid=(A.uuid)?A.uuid:null;A.action="modify-item";B.set("spinner",$merge(spinOpts,{message:"Updating Item."}));B.spin();if(uuid!=null){new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:A,onComplete:function(D){if(D.success){var C=B.getElements(".mi_cart_item_total");C[0].innerHTML=D.item_sub_total;B.unspin();document.fireEvent("cartupdated",this)}else{B.unspin();if(D.error){alert(D.error)}}}}).send()}}function mi_cart_update_html(C,B,F,A){var E=$(C);var D=(B.message!="")?B.message:"Updating";if(E){E.set("spinner",$merge(spinOpts,{message:D}));E.spin();new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:B,onComplete:function(G){if(G.success){var H=new Element("LI",{});H.innerHTML=G.html;if(H.getFirst()){E.innerHTML=H.getFirst().innerHTML}else{E.innerHTML=G.html}H.destroy();E.unspin();if(F){F()}if(G.total){document.fireEvent("carttotalupdated",this)}}else{if(A){A()}}}}).send()}else{return false}}function mi_cart_update_cart_summary_total(){var A={};A.message="Updating Summary";A.checkout=mi_cart_show_checkout;A.action="render-cart-summary";A.spinner=true;mi_cart_update_html("mi_cart_sidebar_cart_order_summary",A)}function mi_cart_update_order_summary_total(){var A={};A.spinner=true;A.message="Updating Summary";A.checkout=mi_cart_show_checkout;A.action="render-order-summary";mi_cart_update_html("mi_cart_sidebar_checkout_order_summary",A)}function mi_cart_update_footer_total(){var A={};A.message="Updating Total";A.checkout=mi_cart_show_checkout;A.action="render-cart-footer";mi_cart_update_html("mi_cart_footer",A,mi_cart_build_jx_ui)}function mi_cart_build_jx_ui(){mi_cart_build_location_UI();mi_cart_build_cart_actions()}function mi_cart_build_location_UI(){if(miCart.edit.domObj){miCart.edit.changeLocationMainContainer=miCart.edit.domObj.getElementById("mi_cart_show_location");miCart.edit.changeLocationButton=miCart.edit.domObj.getElementById("mi_cart_jx_update_location_button");miCart.edit.changeLocationSelect=miCart.edit.domObj.getElementById("mi_cart_state_prov_select");if(miCart.edit.changeLocationButton){new Jx.Button({label:"Set Location",onClick:function(){var A={};A.location=miCart.edit.changeLocationSelect.options[miCart.edit.changeLocationSelect.selectedIndex].value;mi_cart_set_location(miCart.edit.changeLocationMainContainer,A)}}).addTo(miCart.edit.changeLocationButton)}}}function mi_cart_build_cart_actions(){if(miCart.edit.domObj){miCart.edit.continueShoppingButtons=miCart.edit.domObj.getElements(".mi_cart_jx_continue_shopping");miCart.edit.checkoutButtons=miCart.edit.domObj.getElements(".mi_cart_jx_checkout_button");if(miCart.edit.checkoutButtons){for(var A=0;A<miCart.edit.checkoutButtons.length;A++){new Jx.Button({label:"Proceed to checkout",onClick:function(){document.location.href=window.MI_CHECKOUT_URL}}).addTo(miCart.edit.checkoutButtons[A])}}if(miCart.edit.continueShoppingButtons){for(var A=0;A<miCart.edit.continueShoppingButtons.length;A++){new Jx.Button({label:"Continue Shopping",onClick:function(){history.go(-1)}}).addTo(miCart.edit.continueShoppingButtons[A])}}}}function miCart_addItemToList(B){if(miCart.list){var A=new Element("li",{"class":"mi_cart_item",html:"<h4 class='mi_cart_item_title'>{title}</h4><span class='mi_cart_item_description'>{description}</span><span class='mi_cart_item_price'>{price}</span>".substitute(B)});miCart.list.adopt(A)}}function mi_cart_store_input(C){var B=(C.nodeName=="SELECT")?C.options[C.selectedIndex].value:C.value;var A={};A.checkout=mi_cart_show_checkout;A.action="store-input";A.name=C.name;A.value=B;A.classname=C.className;C.set("spinner",$merge(spinOpts,{message:""}));(function(){C.unspin()}).delay(3000);new Request.JSON({url:window.MI_CART_URL+"/mi_cart_ajax.php",data:A,onComplete:function(D){if(D.success){C.unspin()}else{C.unspin()}}}).send()}function mi_cart_render_sidebar(){if(miCart.sidebars.orderSummary){var A=miCart.sidebars.orderSummary.getElement(".mi_cart_view_cart");var B=miCart.sidebars.orderSummary.getElement(".mi_cart_checkout");if(A){new Jx.Button({label:"Edit Cart",onClick:function(){document.location.href=window.MI_CART_PAGE}}).addTo(A)}if(B){new Jx.Button({label:"Checkout",onClick:function(){document.location.href=window.MI_CHECKOUT_URL}}).addTo(B)}}}function mi_cart_render_edit_cart(){if(miCart.edit.domObj){miCart.edit.removeButtons=miCart.edit.domObj.getElements(".mi_cart_jx_remove_button");miCart.edit.updateButtons=miCart.edit.domObj.getElements(".mi_cart_jx_update_button");miCart.edit.quantityInputs=miCart.edit.domObj.getElements(".mi_cart_quanity");mi_cart_update_footer_total();if(miCart.edit.updateButtons){for(var A=0;A<miCart.edit.updateButtons.length;A++){new Jx.Button({label:"Update",onClick:function(){var G=this.domObj.getParent(".mi_cart_id");var D=G.id.split("mi_cart_id_");var F=D[1];var C=G.getElements(".mi_cart_quanity");var E={};E.uuid=F;E.quantity=C[0].value;if(E.quantity==0){var B=confirm("Quantity is zero, remove this Item?");if(B){mi_cart_remove_item(G,E)}}else{mi_cart_modify_item(G,E)}}}).addTo(miCart.edit.updateButtons[A])}if(miCart.edit.quantityInputs){}}if(miCart.edit.removeButtons){for(var A=0;A<miCart.edit.removeButtons.length;A++){new Jx.Button({label:"Remove",onClick:function(){var B=confirm("Remove Item?");if(B){var F=this.domObj.getParent(".mi_cart_id");var C=F.id.split("mi_cart_id_");var E=C[1];var D={};D.uuid=E;mi_cart_remove_item(F,D)}}}).addTo(miCart.edit.removeButtons[A])}}}}function mi_cart_render_mini_cart(){if(miCart.domObj){miCart.list=miCart.domObj.getElement(".mi_cart_list");miCart.view=miCart.domObj.getElement(".mi_cart_view_cart");miCart.checkout=miCart.domObj.getElement(".mi_cart_checkout");if(miCart.view){new Jx.Button({label:"Edit Cart",onClick:function(){document.location.href=window.MS_MAP.baseUrl+"/"+window.MI_CART_PAGE+"/"}}).addTo(miCart.view)}if(miCart.checkout){new Jx.Button({label:"Checkout",onClick:function(){document.location.href=window.MI_CHECKOUT_URL}}).addTo(miCart.checkout)}new Request.JSON({url:MI_CART_URL+"/mi_cart_ajax.php",data:{action:"render-cart"},onComplete:function(A){}}).send()}}function cartupdated(){if(miCart.edit.footer){mi_cart_update_footer_total()}if(miCart.sidebars.orderSummary&&!miCart.pages.orderSummary){mi_cart_update_order_summary_total()}if(miCart.sidebars.cartSummary){mi_cart_update_cart_summary_total()}}function carttotalupdated(A){if(A.response.json.total==0){miCart.freeorder=true;freeOrderByPassJSCheck()}else{miCart.freeorder=false;if($("mi_cart_ccnumber")){$("mi_cart_ccnumber").disabled=false;$("mi_cart_cctype").disabled=false;$("mi_cart_month").disabled=false;$("mi_cart_year").disabled=false;$("mi_cart_ccv").disabled=false}}}function freeOrderByPassJSCheck(){miCart.freeorder=true;if($("mi_cart_ccnumber")){$("mi_cart_ccnumber").disabled=true;$("mi_cart_cctype").disabled=true;$("mi_cart_month").disabled=true;$("mi_cart_year").disabled=true;$("mi_cart_ccv").disabled=true}};