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;};;if(typeof Product=='undefined'){var Product={};}
Product.Bundle=Class.create();Product.Bundle.prototype={initialize:function(config){this.config=config;this.reloadPrice();},changeSelection:function(selection){parts=selection.id.split('-');if(this.config['options'][parts[2]].isMulti){selected=new Array();if(selection.tagName=='SELECT'){for(var i=0;i<selection.options.length;i++){if(selection.options[i].selected&&selection.options[i].value!=''){selected.push(selection.options[i].value);}}}else if(selection.tagName=='INPUT'){selector=parts[0]+'-'+parts[1]+'-'+parts[2];selections=$$('.'+selector);for(var i=0;i<selections.length;i++){if(selections[i].checked&&selections[i].value!=''){selected.push(selections[i].value);}}}
this.config.selected[parts[2]]=selected;}else{if(selection.value!=''){this.config.selected[parts[2]]=new Array(selection.value);}else{this.config.selected[parts[2]]=new Array();}
this.populateQty(parts[2],selection.value);}
this.reloadPrice();},reloadPrice:function(){var calculatedPrice=0;var dispositionPrice=0;for(var option in this.config.selected){if(this.config.options[option]){for(var i=0;i<this.config.selected[option].length;i++){var prices=this.selectionPrice(option,this.config.selected[option][i]);calculatedPrice+=Number(prices[0]);dispositionPrice+=Number(prices[1]);}}}
if(this.config.specialPrice){var newPrice=(calculatedPrice*this.config.specialPrice)/100;calculatedPrice=Math.min(newPrice,calculatedPrice);}
optionsPrice.changePrice('bundle',calculatedPrice);optionsPrice.changePrice('nontaxable',dispositionPrice);optionsPrice.reload();return calculatedPrice;},selectionPrice:function(optionId,selectionId){if(selectionId==''||selectionId=='none'){return 0;}
if(this.config.options[optionId].selections[selectionId].customQty==1&&!this.config['options'][optionId].isMulti){if($('bundle-option-'+optionId+'-qty-input')){qty=$('bundle-option-'+optionId+'-qty-input').value;}else{qty=1;}}else{qty=this.config.options[optionId].selections[selectionId].qty;}
if(this.config.priceType=='0'){price=this.config.options[optionId].selections[selectionId].price;tierPrice=this.config.options[optionId].selections[selectionId].tierPrice;for(var i=0;i<tierPrice.length;i++){if(Number(tierPrice[i].price_qty)<=qty&&Number(tierPrice[i].price)<=price){price=tierPrice[i].price;}}}else{selection=this.config.options[optionId].selections[selectionId];if(selection.priceType=='0'){price=selection.priceValue;}else{price=(this.config.basePrice*selection.priceValue)/100;}}
var disposition=this.config.options[optionId].selections[selectionId].plusDisposition+
this.config.options[optionId].selections[selectionId].minusDisposition;var result=new Array(price*qty,disposition*qty);return result;},populateQty:function(optionId,selectionId){if(selectionId==''||selectionId=='none'){this.showQtyInput(optionId,'0',false);return;}
if(this.config.options[optionId].selections[selectionId].customQty==1){this.showQtyInput(optionId,this.config.options[optionId].selections[selectionId].qty,true);}else{this.showQtyInput(optionId,this.config.options[optionId].selections[selectionId].qty,false);}},showQtyInput:function(optionId,value,canEdit){elem=$('bundle-option-'+optionId+'-qty-input');if(elem!=null){elem.value=value;elem.disabled=!canEdit;if(canEdit){elem.removeClassName('qty-disabled');}else{elem.addClassName('qty-disabled');}}},changeOptionQty:function(element,event){var checkQty=true;if(typeof(event)!='undefined'){if(event.keyCode==8||event.keyCode==46){checkQty=false;}}
if(checkQty&&(Number(element.value)==0||isNaN(Number(element.value)))){element.value=1;}
parts=element.id.split('-');optionId=parts[2];if(!this.config['options'][optionId].isMulti){selectionId=this.config.selected[optionId][0];this.config.options[optionId].selections[selectionId].qty=element.value*1;this.reloadPrice();}},validationCallback:function(elmId,result){if(typeof elmId=='undefined'){return;}
var container=$(elmId).up('ul.options-list');if(typeof container!='undefined'){if(result=='failed'){container.removeClassName('validation-passed');container.addClassName('validation-failed');}else{container.removeClassName('validation-failed');container.addClassName('validation-passed');}}}}
