var Order=new Class({Implements:[Options,Events],options:{dayPrices:[],options:{},defaultValues:{},scheduleStartHour:0,scheduleEndHour:24,scheduleHolidays:"6;0",months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekDays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],pagesId:"pages",daysId:"days",deliveryDateId:"delivery-date",deliveryDatesContainerId:"delivery-dates",implementationGroup:"implementation",pagesSlider:{minValue:1,maxValue:15,defaultValue:1,step:1,container:"page-slider",points:[0,30,60,86,114,140,170,200,225,255,287,320,356,388,429],onUpdate:Class.empty},daysSlider:{minValue:1,maxValue:7,defaultValue:5,step:1,container:"day-slider",points:[0,72,143,215,290,365,438],onUpdate:Class.empty},pricePrefix:"price_",labelPrefix:"label_",suboptionsPrefix:"suboptions_",sign:"$",depositFactor:0.5,onSelectDeliveryDate:Class.empty,onSelectOption:Class.empty,onUpdatePages:Class.empty,onUpdateDays:Class.empty,onUpdatePrice:Class.empty},initialize:function(A){this.setOptions(A);this.pagesElement=$(this.options.pagesId);this.daysElement=$(this.options.daysId);this.deliveryDate=$(this.options.deliveryDateId);this.deliveryDatesContainer=$(this.options.deliveryDatesContainerId);this.activeGroupOptions={};this.prices={bulk:false,basePrice:0,optionsPrice:0,totalOptionsPrice:0,totalPrice:0,discount:0,priceWithDiscount:0,deposit:0,depositDiscount:0};if(this.pagesElement&&this.daysElement){this.initOptionGroups();this.initOptionButtons();this.initPages();this.initDays();var B=this.getDefaultImplementationOption();if(B){this.deliverTitle=B.title;this.selectOption(B.id,true)}this.initSliders()}else{this.log("Invalid form id")}},initOptionGroups:function(){this.optionGroups={};for(var A in this.options.options){if(!this.optionGroups[this.options.options[A].optiongroup]){this.optionGroups[this.options.options[A].optiongroup]=[]}this.optionGroups[this.options.options[A].optiongroup].push({id:A,group:this.options.options[A].optiongroup})}},initOptionButtons:function(){for(var B in this.options.options){var A=$(B);if(A){if(A.tagName.toUpperCase()=="INPUT"){A.addEvent("click",(function(C,D){this.selectOption(D,false);this.updatePrice();this.fireEvent("onSelectOption",D)}).bindWithEvent(this,B))}else{A.setProperty("href","javascript:;");A.addEvent("click",(function(C,D){this.selectOption(D,false);this.updatePrice();this.fireEvent("onSelectOption",D);C.stop()}).bindWithEvent(this,B))}}}},initSliders:function(){var A=this;if(!this.options.pagesSlider.onUpdate){this.options.pagesSlider.onUpdate=function(){A.pagesElement.setProperty("value",this.currentValue);A.updatePrice();A.fireEvent("onUpdatePages")}}if(!this.options.daysSlider.onUpdate){this.options.daysSlider.onUpdate=function(){A.daysElement.setProperty("value",this.currentValue);A.updatePrice();A.fireEvent("onUpdateDays")}}this.pagesSlider=new CustomSlider("page",this.options.pagesSlider);this.daysSlider=new CustomSlider("day",this.options.daysSlider)},initPages:function(){this.pagesElement.addEvents({keyup:(function(){if(this.pagesElement.getProperty("value").trim()){this.pagesSlider.currentValue=this.checkPages();this.pagesSlider.update()}}).bind(this),change:(function(){this.pagesSlider.currentValue=this.checkPages();this.pagesSlider.update()}).bind(this)})},initDays:function(){if(this.deliveryDatesContainer){var E=new Element("ul").inject(this.deliveryDatesContainer);for(var F=this.options.daysSlider.minValue;F<=this.options.daysSlider.maxValue;F++){var A=new Element("li").inject(E);var D=this.getCompanyNearestWorkingDate(F);var C=this;var B=D.getDate().toInt();var B=B<=9?"0"+B:B;new Element("a",{href:"javascript:;",html:this.options.weekDays[D.getDay()]+", "+this.options.months[D.getMonth()]+"-"+B+", "+D.getFullYear(),rel:F,events:{click:function(G){G.stop();C.daysSlider.currentValue=$(this).getProperty("rel").toInt();C.daysSlider.update();C.fireEvent("onSelectDeliveryDate")}}}).inject(A)}}},checkPages:function(){var A=this.pagesElement.getProperty("value").trim();if(isNaN(A)||Number(A)<1){A=1}A=parseInt(A);this.pagesElement.setProperty("value",A);return A},updateOptionPrices:function(){for(var C in this.options.options){var B=$(C);var A=$(this.options.options[C].name);if(B&&A){if(B.hasClass("active")){A.setProperty("value",this.options.options[C].value)}}}},getDefaultImplementationOption:function(){for(var A=0;A<this.optionGroups[this.options.implementationGroup].length;A++){var B=this.optionGroups[this.options.implementationGroup][A].id;if(this.options.options[B].value==this.options.defaultValues[this.options.options[B].name]){return this.options.options[B]}}return null},getDefaultImplementationTitle:function(){var A=this.getDefaultImplementationOption();if(A){return A.title}else{return null}},selectOption:function(C,A){var G=this.options.options[C];var D=$(C);if(G&&D){var E=D.hasClass("active");this.deselectOptionGroup(G.optiongroup,C);if(E&&G.deselectable&&!A){if(!this.options.options[C].parent&&G.optiongroup==this.options.implementationGroup){this.deliverTitle=this.getDefaultImplementationTitle()}}else{var F=$(this.options.pricePrefix+G.name);if(F){F.set("text",this.options.sign+G.price)}else{var F=$(this.options.pricePrefix+C);if(F){F.addClass("active")}}var I=$(this.options.suboptionsPrefix+C);if(I){I.removeClass("hidden")}var B=$(G.name);if(B){B.setProperty("value",G.value)}var H=$(this.options.labelPrefix+C);if(H){H.addClass("active")}D.addClass("active");if(!this.options.options[C].parent&&this.options.options[C].group==this.options.implementationGroup){this.deliverTitle=this.options.options[C].title}}}},deselectOptions:function(){for(var A in this.options.options){if(this.options.defaultValues[this.options.options[A].name]==this.options.options[A].value){this.selectOption(A,true)}}},deselectOptionGroup:function(A,H){var K=this.options.options[H].parent;for(var E=0;E<this.optionGroups[A].length;E++){var C=this.optionGroups[A][E].id;var D=$(C);var G=K&&(K==C||K==this.options.options[C].parent);if(!H||C==H||!G){if(D){D.removeClass("active")}var I=$(this.options.labelPrefix+C);if(I){I.removeClass("active")}var F=$(this.options.pricePrefix+C);if(F){F.removeClass("active")}var J=$(this.options.suboptionsPrefix+C);if(J){J.addClass("hidden")}if(this.options.options[C].deselectable&&this.options.defaultValues[this.options.options[C].name]){if(!K){var B=$(this.options.options[C].name);if(B){B.setProperty("value",this.options.defaultValues[this.options.options[C].name])}}if(C!=H){D.setProperty("checked","")}}}}},getOptionsPrice:function(){var D={};for(var C in this.options.options){var B=$(this.options.options[C].id);if(B){if(!D[this.options.options[C].group]){D[this.options.options[C].group]=0}if(B.tagName.toUpperCase()=="INPUT"){var A=$(this.options.options[C].id);if(A){if(A.getProperty("checked")){D[this.options.options[C].group]+=parseInt(this.options.options[C].price)}}}else{var A=$(this.options.options[C].name);if(A){if(this.options.options[C].value==A.getProperty("value")){D[this.options.options[C].group]+=parseInt(this.options.options[C].price)}}}}}return D},calculatePrice:function(){var N=this.daysElement.getProperty("value");var C=this.checkPages();var I=0;var F=false;if(this.options.dayPrices.length){if(this.options.dayPrices[N-1]){if(this.options.dayPrices[N-1][C-1]){I=this.options.dayPrices[N-1][C-1]}else{var A=this.options.dayPrices[N-1];I=A[A.length-1];F=true}}else{var A=this.options.dayPrices[this.options.dayPrices.length-1];I=A[A.length-1]}}var E=this.getOptionsPrice();var J=0;for(var L in E){J+=E[L]}var H=0;var D=0;var K=I+J;var O=Math.round(K*H);var G=K-O;var M=Math.round(K*this.options.depositFactor);var B=Math.round(G*D);G=G-B;M=Math.round(M-Math.round(M*D));depositDiscount=Math.round(K*D);this.prices.bulk=F;this.prices.basePrice=I;this.prices.optionsPrice=E;this.prices.totalOptionsPrice=J;this.prices.totalPrice=K;this.prices.discount=O;this.prices.priceWithDiscount=G;this.prices.deposit=M;this.prices.depositDiscount=depositDiscount},updatePrice:function(){this.calculatePrice();if(this.deliveryDate){var B=this.getCompanyNearestWorkingDate(this.daysElement.getProperty("value"));var A=B.getDate().toInt();var A=A<=9?"0"+A:A;this.deliveryDate.set("html",this.options.months[B.getMonth()]+"-"+A)}this.fireEvent("onUpdatePrice")},isHoliday:function(G){var B=G.getUTCDay();var H=G.getUTCDate()+"-"+(G.getUTCMonth()+1);var C=H+"-"+G.getUTCFullYear();var E=this.options.scheduleHolidays.split(";");for(var D=0;D<E.length;D++){var F=E[D].split("-").length;switch(F){case 1:var A=B==E[D];break;case 2:var A=H==E[D];break;case 3:var A=C==E[D];break;default:var A=false}if(A){return true}}return false},getCompanyNearestWorkingDate:function(B){var C=new Date();var F=new Date(C.getFullYear(),C.getMonth(),C.getDate(),C.getHours()+(C.getSeconds()?1:0),0,0);var A=F.getUTCHours();var E=this.isHoliday(F);if(A<=this.options.scheduleStartHour||A>this.options.scheduleEndHour||E){if(A<=this.options.scheduleStartHour&&!E&&B){B--}F.setUTCHours(this.options.scheduleEndHour)}var D=0;while(D<B){F.setDate(F.getDate()+1);if(this.isHoliday(F)){B++}D++}return F}});
