var ChooseBox={config:{successRedirect:null,defaultChoices:null},lang:{noDaysSelected:"no days selected",noPrice:"&nbsp;n/a",noType:"n/a",promocodeNotFound:"sorry, we couldn't find that code"},boxType:null,scrolled:false,daysInput:null,daysHasUserChanges:false,nutritionPlan:null,nutritionPlanWizard:null,submitButton:null,promotionCodeInput:null,initialise:function(a){Object.extend(this.config,a||{});if(this.promotionCodeInput=$("chooseBoxPrice").down("input")){this.promotionCodeInput.observe("focus",
function(){this.promotionCodeInput.setValue("")}.bind(this));this.promotionCodeInput.observe("blur",function(){this.submitPromocode()}.bind(this));this.promotionCodeInput.observe("keypress",function(b){b.keyCode==13&&this.promotionCodeInput.blur()}.bind(this))}$$(".chooseBoxTypeOption").each(function(b){var c=b.readAttribute("id")=="chooseBoxTypeNibble"?"nibble":"nutrition",d=b.select(".chooseBoxFader");b.select(".chooseBoxTypeLink").each(function(f){f.observe("click",function(e){e.stop();c=="nutrition"&&
this.boxType=="nutrition"&&this.showNutritionPlanModal();this.selectBoxType(c);if(!this.config.defaultChoices&&(c=="nibble"||this.nutritionPlan))this.scrollToDays()}.bind(this));f.setStyle({cursor:"pointer"});f.observe("mouseover",function(){c!=this.boxType&&!this.nutritionPlan&&d.each(function(e){e.setOpacity(0.8)})}.bind(this));f.observe("mouseout",function(){c!=this.boxType&&!this.nutritionPlan&&d.each(function(e){e.setOpacity(0.3)})}.bind(this))}.bind(this));b.down("input").observe("focus",function(){b.down("input").blur()})}.bind(this));
this.daysInput=new CheckBoxGroup($("chooseBoxDays"),{onChange:function(){this.daysHasUserChanges=true;this.updateSummaryDays();this.updateDisablers()}.bind(this)});this.submitButton=$("chooseBoxButtons").down("input.submit");this.submitButton.observe("click",function(b){b.stop();this.submit()}.bind(this));$("chooseBoxNutritionSelection").down("a").observe("click",function(b){b.stop();this.showNutritionPlanModal()}.bind(this));if(this.config.defaultChoices)this.setAll(this.config.defaultChoices);else{this.selectBoxType("nibble");
this.updateSummaryDays()}(new String(document.location)).endsWith("#days")&&this.scrollToDays(true)},selectBoxType:function(a){if(this.boxType!=a){this.boxType=a;var b=a=="nibble"?$("chooseBoxTypeNibble"):$("chooseBoxTypeNutrition"),c=a=="nibble"?$("chooseBoxTypeNutrition"):$("chooseBoxTypeNibble");b.select(".chooseBoxFader").each(function(d){d.setOpacity(1)});b.down(".radioButton").setOpacity(1);b.down(".radioButton").addClassName("checked");b.down(".chooseBoxTypeButton").addClassName("chooseBoxTypeButtonSelected");
c.select(".chooseBoxFader").each(function(d){d.setOpacity(0.3)});c.down(".radioButton").setOpacity(0.5);c.down(".radioButton").removeClassName("checked");c.down(".chooseBoxTypeButton").removeClassName("chooseBoxTypeButtonSelected");this.updateDefaultDays();this.updateSummaryPrice();this.updateDisablers();this.updateNutritionPlanDisplay();a=="nutrition"&&!this.nutritionPlan&&this.showNutritionPlanModal();this.updateSummaryBoxType()}},scrollToDays:function(a){if(!this.scrolled){this.scrolled=true;!a&&
$("chooseBoxDays").isWithinViewport()||Effect.ScrollTo($("chooseBoxDays"),{duration:0.6,offset:-100})}},setAll:function(a){a.days&&a.days.each(function(b){this.daysInput.checkByValue(b)}.bind(this));this.setNutritionPlan(a.nutritionPlan,true)},getBoxProfileById:function(a){for(var b in this.config.boxProfiles){var c=this.config.boxProfiles[b];if(c.id==a)return c}return null},getNutritionPlanById:function(a){for(var b in this.config.nutritionPlans){var c=this.config.nutritionPlans[b];if(c.id==a)return c}return null},
getPromotionalPrices:function(){new AjaxRequest("/choosebox/ajaxpromotionalprices",{onSuccess:function(a){for(var b in a.prices){var c=a.prices[b],d=this.getBoxProfileById(b).internalName;this.config.boxProfiles[d].price=c.fullPrice;this.config.boxProfiles[d].promotionalPriceStrings=c.promotionalPriceStrings}this.updateSummaryPrice()}.bind(this)})},updateSummaryBoxType:function(){var a=$("chooseBoxSummaryType"),b=this.lang.noType;switch(this.boxType){case "nibble":b=this.config.boxProfiles.dry.nameStyled;
break;case "nutrition":if(this.nutritionPlan)b=this.getNutritionPlanById(this.nutritionPlan).nameStyledBox;break}a.update(b)},updateSummaryPrice:function(){var a={};if(this.boxType){var b=this.config.boxProfiles.dry;a={fullPrice:b.price,promotionalPriceStrings:b.promotionalPriceStrings}}else a={fullPrice:-1};$$(".chooseBoxFullPrice").each(function(c){if(a.fullPrice==-1){c.update(this.lang.noPrice);c.addClassName("chooseDaysSummaryNone")}else{c.update(a.fullPrice);c.removeClassName("chooseDaysSummaryNone")}}.bind(this));
$("chooseBoxSummaryPromotion").update();if(a.promotionalPriceStrings&&a.promotionalPriceStrings.length>0){a.promotionalPriceStrings.each(function(c){var d=(new Element("div")).insert(c.priceString);c.showLimitedOffer&&d.insert($("limitedTimeOfferGraphic").innerHTML);$("chooseBoxSummaryPromotion").insert(d)}.bind(this));$($("chooseBoxSummaryPromotion").parentNode).visible()||new Effect.Appear($("chooseBoxSummaryPromotion").parentNode,{duration:0.3})}else $($("chooseBoxSummaryPromotion").parentNode).visible()&&
new Effect.Fade($("chooseBoxSummaryPromotion").parentNode,{duration:0.3})},updateSummaryDays:function(){var a=this.daysInput.getChecked().sort();if(a.length==0)b=(new Element("span",{"class":"chooseDaysSummaryNone"})).insert(this.lang.noDaysSelected);else{for(var b="",c=0;c<a.length;c++){b+=Utils.dayName(parseInt(a[c])).toLowerCase()+"s";if(c==a.length-2)b+=" & ";else if(c<a.length-2)b+=", "}b=b.escapeHTML()}$("chooseBoxSummaryDays").update(b)},updateDefaultDays:function(){if(!this.daysHasUserChanges){this.daysInput.uncheckAll(true);
this.config.defaultDays.each(function(a){this.daysInput.checkByValue(a,true)}.bind(this));this.updateSummaryDays()}},updateDisablers:function(){if(this.boxType){$("noBoxTypeFader").setOpacity(1);this.daysInput.getChecked().length>0?$("chooseBoxButtons").setOpacity(1):$("chooseBoxButtons").setOpacity(0.3)}else $("noBoxTypeFader").setOpacity(0.3)},updateNutritionPlanDisplay:function(){var a=$("chooseBoxNutritionSelection");if(this.nutritionPlan){a.show();a.down("span").update(this.getNutritionPlanById(this.nutritionPlan).nameStyled)}else a.hide()},
getRequestParams:function(){return{boxProfile:this.config.boxProfiles.dry.id,days:this.daysInput.getValue(),nutritionPlan:this.boxType=="nutrition"&&this.nutritionPlan?this.nutritionPlan:null}},submit:function(){var a=new Loader({elementToOverlay:this.submitButton});a.show();var b=this.getRequestParams();b.submitted=1;new AjaxRequest(location.href,{parameters:b,onSuccess:function(c){c.valid&&this.successRedirect()}.bind(this),onFailure:function(){a.hide()}.bind(this)})},successRedirect:function(){if(this.config.successRedirect)document.location=
this.config.successRedirect},enterPromocode:function(){Promocode.config.onSuccessClose=function(){this.promocodeSuccess(Promocode.promotionName)}.bind(this);Promocode.enterCode()},promocodeSuccess:function(a){$$(".chooseBoxPromotionName").each(function(b){b.update(a.escapeHTML())});$$(".chooseBoxEnterPromocode").each(function(b){b.hide()});$$(".chooseBoxPromocodeEntered").each(function(b){b.show()});this.getPromotionalPrices()},showNutritionPlanModal:function(){if(!(this.nutritionPlanWizard&&this.nutritionPlanWizard.modal.isOpen())){this.nutritionPlanWizard=
new Wizard({requestUrl:"/choosebox/nutrition-plan",basicRequestParameters:{npid:this.nutritionPlan},modalOptions:{width:420}});GoogleAnalytics.track("signup/nutritionPlans")}},setNutritionPlan:function(a,b){this.nutritionPlan=a;this.updateSummaryBoxType();this.updateNutritionPlanDisplay();a&&a!=this.config.nutritionPlans.none.id?this.selectBoxType("nutrition"):this.selectBoxType("nibble");b||this.scrollToDays()},submitPromocode:function(){if(!this.promotionCodeInput.getValue()||this.promotionCodeInput.getValue()==
this.promotionCodeInput.defaultValue)this.promotionCodeInput.setValue(this.promotionCodeInput.defaultValue);else{var a=new Loader({elementToOverlay:$("chooseBoxPrice"),zIndex:1E3});a.show();var b=function(c){if(c.promocodeValid)this.promocodeSuccess(c.promotionName);else{$("chooseBoxPrice").down(".chooseBoxEnterPromocode span").update(this.lang.promocodeNotFound);$("chooseBoxPrice").down(".chooseBoxEnterPromocode img").show()}}.bind(this);Promocode.request(this.promotionCodeInput.getValue(),function(){a.hide()},
b)}}};
