Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};;function getPointsString(amount,currency_id){s=amount+' ';if(currency_map[currency_id]!=''&&currency_map[currency_id]!=' '){s=s+currency_map[currency_id]+" ";}
if(amount>1){s+=CAPTION_POINTS;}else{s+=CAPTION_POINT;}
return s;};var rSlider;var usesSelect;var usesCaption;var usesContainer;function getProductPriceBeforeRedemptions(){var priceBeforeRedemptions=optionsPrice.productPriceBeforeRedemptions;if(optionsPrice.optionPrices.config!=undefined){if(optionsPrice.optionPrices.config.price!=undefined){priceBeforeRedemptions+=optionsPrice.optionPrices.config.price;}else{priceBeforeRedemptions+=optionsPrice.optionPrices.config;}}
return priceBeforeRedemptions;}
function feignPriceChange(rule_id){var newPrice=$(new_price_dom_id);var oldPrice=$(old_price_dom_id);var numUses=getRedemptionUses();numUses=(numUses=="")?1:parseInt(numUses);if(rule_id==null){rule_id=$('redemption_rule').value;}
if(!show_lowest_price){return;}
if(oldPrice==null){oldPrice=newPrice.cloneNode(true);newPrice.up().insertBefore(oldPrice,newPrice);oldPrice.id=old_price_dom_id;oldPrice.removeClassName('price');oldPrice.addClassName('old-price');do_hide_old_price=true;}
var finalPrice=getProductPriceBeforeRedemptions();if(rule_id==""){if(do_hide_old_price)oldPrice.hide();optionsPrice.productPrice=finalPrice;optionsPrice.reload();}else{if(do_hide_old_price)oldPrice.show();var price_disposition=rule_options[rule_id]['price_disposition'];if(rule_options[rule_id]['discount_action']=='by_fixed'&&rule_options[rule_id]['new_price_flt']<=0.0000){optionsPrice.productPrice=0;optionsPrice.minusDisposition=9999999999;}else{optionsPrice.productPrice=finalPrice-price_disposition*numUses;}
points_amount=rule_options[rule_id]['amount'];points_currency_id=rule_options[rule_id]['currency_id'];points_caption=getPointsString(points_amount*numUses,points_currency_id);optionsPrice.reload();var points_with=" "+CAPTION_WITH+" "+points_caption;if(newPrice.down()!=null){newPrice.down().innerHTML=newPrice.down().innerHTML+points_with;}else if(newPrice.down()==null&&newPrice!=null){newPrice.innerHTML=newPrice.innerHTML+points_with;}
else{}}}
function updateRemptionUsesSelector(rule_id,retain_value){var init_value=retain_value?retain_value:usesSelect.value;if(rule_id==''){usesContainer.hide();}else{usesSelect.innerHTML='';var uses=1;var amt=rule_options[rule_id]['amount'];var curr=rule_options[rule_id]['currency_id'];var max_uses=rule_options[rule_id]['max_uses'];var relevant_customer_points=customer_points?customer_points[curr]:default_guest_points;var price_disposition=rule_options[rule_id]['price_disposition'];var nextPrice=getProductPriceBeforeRedemptions()-price_disposition;usesSelect.hide();usesCaption.hide();if(max_uses==1||max_uses==null){usesCaption.innerHTML=CAPTION_YOU_WILL_SPEND+" "+getPointsString(uses*amt,curr);usesCaption.show();}else{while(relevant_customer_points>=amt*uses){var oOption=document.createElement("option");oOption.text=getPointsString(uses*amt,curr);if(show_discount_in_uses_selector){oOption.text=oOption.text+" ( - "+optionsPrice.formatPrice(price_disposition*uses)+")";}
oOption.value=uses;usesSelect.appendChild(oOption);uses++;if(nextPrice<=0||(uses>max_uses&&max_uses!=0))break;nextPrice=getProductPriceBeforeRedemptions()-price_disposition*uses;}
if(retain_value){if(init_value>uses){init_value=max_uses;}
usesSelect.setValue(init_value);}else{usesSelect.setValue(1);}
usesSelect.show();}
usesContainer.show();}};var SmoothSlider=Class.create();SmoothSlider.prototype=Control.Slider.prototype;SmoothSlider.prototype.setValue=function(sliderValue,handleIdx){if(!this.active){this.activeHandleIdx=handleIdx||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles();}
handleIdx=handleIdx||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if((handleIdx>0)&&(sliderValue<this.values[handleIdx-1]))
sliderValue=this.values[handleIdx-1];if((handleIdx<(this.handles.length-1))&&(sliderValue>this.values[handleIdx+1]))
sliderValue=this.values[handleIdx+1];}
sliderValue=this.getNearestValue(sliderValue);this.values[handleIdx]=sliderValue;this.value=this.values[0];if(this.slideFxBusy==true){if(this.slideFx){this.slideFx.cancel();this.slideFxBusy=false;this.handles[handleIdx].style[this.isVertical()?'top':'left']=this.translateToPx(sliderValue);}}else{this.slideFxBusy=true;var translated_value=this.translateToPx(sliderValue);if(translated_value!="NaNpx"){var move_x=this.isVertical()?0:parseInt(translated_value);var move_y=this.isVertical()?parseInt(translated_value):0;this.slideFx=new Effect.Move(this.handles[handleIdx],{x:move_x,y:move_y,mode:'absolute',duration:0.4,afterFinish:function(){this.slideFxBusy=false;}.bindAsEventListener(this)});}}
this.isMoving=false;this.drawSpans();if(!this.dragging||!this.event)this.updateFinished();};;var RedemptionSlider=Class.create({initialize:function(sliderHandleId,sliderRailId,sliderCaptionId,sliderValueboxId){this.sliderHandleId=sliderHandleId;this.sliderRailId=sliderRailId;this.sliderCaptionId=sliderCaptionId;this.sliderValuebox=$(sliderValueboxId);this.sliderData={minimum:1,maximum:1,sliderValue:1,step:1,range:$R(0,100),values:$R(0,100),onSlide:this.slideListener.bind(this),onChange:this.changeListener.bind(this)};this.regenerateSlider(1,1,1,1);this.sliderCaption=$(sliderCaptionId);this.points_per_use=1;this.points_currency=-1;this.oldRuleId=-1;this.oldProductPrice=-1;},changeListener:function(val){this.setExternalValue(val);feignPriceChange();},slideListener:function(val){this.changeListener(val);},getValue:function(){return this.slider.value;},getUses:function(){return this.getValue();},getRealMaxUses:function(max_uses,points_per_use,cp,pp,pp_disp){var lowest_max_uses=max_uses;var max_pp_uses=pp/pp_disp;max_pp_uses=parseInt(max_pp_uses)+((max_pp_uses-parseInt(max_pp_uses)>0)?1:0);if(max_pp_uses<lowest_max_uses){lowest_max_uses=max_pp_uses;}
var max_cp_uses=parseInt(cp/points_per_use);if(max_cp_uses<lowest_max_uses){lowest_max_uses=max_cp_uses;}
return lowest_max_uses;},regenerateSlider:function(min,max,step,initial_value){if(this.slider!=null){this.slider.dispose();}
max=parseInt(max/step)*step;this.sliderData.minimum=min;this.sliderData.maximum=max;this.sliderData.step=step;this.sliderData.range=$R(min,max);if(step==1){this.sliderData.values=$R(min,max);}else{var vals=new Array();vals.push(min);$R(min,max-1).each(function(v){if(v%step==0&&(v+step)<=max){vals.push(v+step);}});this.sliderData.values=vals;}
this.sliderData.sliderValue=initial_value;this.slider=new SmoothSlider(this.sliderHandleId,this.sliderRailId,this.sliderData);},setExternalValue:function(val){this.sliderCaption.innerHTML=getPointsString(val*this.points_per_use,this.points_currency);this.sliderValuebox.value=this.getUses();},incr:function(){this.slider.setValue(this.slider.value+this.sliderData.step);},decr:function(){this.slider.setValue(this.slider.value-this.sliderData.step);},maximize:function(){this.slider.setValue(this.sliderData.maximum);},isMaxed:function(){return(this.getValue()==this.sliderData.maximum);}});;var PointsSlider=Class.create(RedemptionSlider,{changeRule:function(rule_id){var init_value=this.getValue();if(init_value==null)init_value=1;var uses=1;if(rule_id==''){usesContainer.hide();}else{var amt=parseInt(rule_options[rule_id]['amount']);var curr=parseInt(rule_options[rule_id]['currency_id']);var max_uses=parseInt(rule_options[rule_id]['max_uses']);this.points_per_use=amt;this.points_currency=curr;if(max_uses==0){max_uses=parseInt(getProductPriceBeforeRedemptions())*1000+1;}
var relevant_customer_points=customer_points?customer_points[curr]:default_guest_points;var price_disposition=rule_options[rule_id]['price_disposition'];var product_price=getProductPriceBeforeRedemptions();max_uses=this.getRealMaxUses(max_uses,this.points_per_use,relevant_customer_points,product_price,price_disposition);if(max_uses>1){if(init_value>max_uses){init_value=max_uses;}
this.regenerateSlider(1,max_uses,1,init_value);this.slider.setValue(init_value);usesContainer.show();}else{this.regenerateSlider(1,1,1,1);usesContainer.hide();}}
if(this.oldRuleId!=rule_id){this.slider.setValue(1);this.oldRuleId=rule_id;}}});
