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;};;Product.Config.prototype.getProductByAttributes=function(productIds,attributes){for(var i=0;i<productIds.length;i++){var foundMatchingProduct=true;for(var a=0;a<attributes.length;a++){if(attributes[a].indexOf(productIds[i])==-1){foundMatchingProduct=false;break;}}
if(foundMatchingProduct){return productIds[i];}}
return false;}
Product.Config.prototype.getMatchingSimpleProduct=function(){var childProducts=this.config.childProducts;var childProductIds=[];for(var x in childProducts){childProductIds.push(x);}
var attributeProducts=[];for(var s=this.settings.length-1;s>=0;s--){try{if(this.settings[s].type=='select-one'){var selected=this.settings[s].options[this.settings[s].selectedIndex];}
else if(this.settings[s].type=='checkbox'){var selected=this.settings[s];}}
catch(err){return false;}
if(!selected.config){return false;}
attributeProducts.push(selected.config.products);}
return this.getProductByAttributes(childProductIds,attributeProducts);}
Product.Config.prototype.getLowestPossiblePrice=function(){var childProducts=this.config.childProducts;var minPrice=Infinity;var minPriceString="";for(var x in childProducts){var thisPrice=Number(childProducts[x]);if(thisPrice<minPrice){minPrice=thisPrice;minPriceString=childProducts[x];}}
return minPriceString;}
Product.Config.prototype.updateFormProductId=function(productId){if(!productId){return false;}
var currentAction=$('product_addtocart_form').action;newcurrentAction=currentAction.sub(/product\/\d+\//,'product/'+productId+'/');$('product_addtocart_form').action=newcurrentAction;$('product_addtocart_form').product.value=productId;}
Product.Config.prototype.addParentProductIdToCartForm=function(parentProductId){if(typeof $('product_addtocart_form').cpid!='undefined'){return;}
var el=document.createElement("input");el.type="hidden";el.name="cpid";el.value=parentProductId.toString();$('product_addtocart_form').appendChild(el);}
Product.Config.prototype.addChildProductIdToCartForm=function(childProductId){if(typeof $('product_addtocart_form').productid!='undefined'){return;}
var el=document.createElement("input");el.type="hidden";el.name="productid";el.id="productid";el.value=childProductId.toString();$('product_addtocart_form').appendChild(el);}
Product.Config.prototype.addProductIdsToCartForm=function(parentProductId,childProductId){$('cpid').value=parentProductId;$('productid').value=childProductId;}
Product.Config.prototype.showTierPricesBlock=function(productId){$$('ul.product-pricing').each(function(label){label.remove();});config=this.config;if(productId&&config.childProductTierPriceHtml[productId]){$$('div.product-options-bottom').each(function(label){label.innerHTML=this.config.childProductTierPriceHtml[productId];});}else{$$('div.product-options-bottom').each(function(label){label.innerHTML=spConfig.config.ProductsPrice;});}}
Product.Config.prototype.showImagesBlock=function(productId){config=this.config;if(productId){$('preview').innerHTML=config.childProductImageHtml[productId];}else{$('preview').innerHTML=spConfig.config.ProductsImage;}}
Product.Config.prototype.reloadPrice=function(){var childProductId=this.getMatchingSimpleProduct();if(childProductId){optionsPrice.productPrice=this.config.childProducts[childProductId];optionsPrice.reload();optionsPrice.reloadPriceLabels(true);optionsPrice.reloadSku(true);this.updateFormProductId(childProductId);this.addProductIdsToCartForm(this.config.productId,childProductId)
this.showTierPricesBlock(childProductId);this.showImagesBlock(childProductId);}else{optionsPrice.productPrice=this.getLowestPossiblePrice();optionsPrice.reload();optionsPrice.reloadPriceLabels(false);optionsPrice.reloadSku(false);this.showTierPricesBlock(false);this.showImagesBlock(false);}}
Product.OptionsPrice.prototype.reloadPriceLabels=function(productPriceIsKnown){var priceLabel='';if(!productPriceIsKnown){priceLabel=spConfig.config.priceFromLabel;}
var priceSpanId='configurable-price-from-'+this.productId;var duplicatePriceSpanId=priceSpanId+this.duplicateIdSuffix;if($(duplicatePriceSpanId)&&$(duplicatePriceSpanId).select('span.configurable-price-from-label')){$(duplicatePriceSpanId).select('span.configurable-price-from-label').each(function(label){label.innerHTML=priceLabel;});}}
Product.OptionsPrice.prototype.reloadSku=function(productIsKnown){var skuDivId='product-sku';if($(skuDivId)&&$(skuDivId).select('span.out-of-stock')){var productSku='';productSku=spConfig.config.childProductsSku[spConfig.getMatchingSimpleProduct()];if(!productIsKnown){productSku=spConfig.config.ProductsSku;}
$(skuDivId).select('span.out-of-stock').each(function(label){label.innerHTML=productSku;});}}
Product.Config.prototype.reloadChildSku=function(childProductId){var skuDivId='product-sku';if($(skuDivId)&&$(skuDivId).select('span.out-of-stock')){var productSku=spConfig.config.childProductsSku[childProductId];$(skuDivId).select('span.out-of-stock').each(function(label){label.innerHTML=productSku;});}}
Product.Config.prototype.getPreFilledProduct=function(sku){if(typeof $('product_addtocart_form')=='undefined'||typeof spConfig=='undefined'){return;}
var childProductsSku=spConfig.config.childProductsSku;for(var id in childProductsSku){if(childProductsSku[id].toLowerCase()==sku.toLowerCase()){for(var attribute in spConfig.config.attributes){for(var products in spConfig.config.attributes[attribute].options){var option=spConfig.config.attributes[attribute].options[products];var product=option.products;if(typeof product!='undefined'){for(var childId in product){if(product[childId]==id){this.config=spConfig.config;this.taxConfig=this.config.taxConfig;Product.Config.prototype.fillSelect($('attribute'+attribute));var optionId=option.id;var selectOption=$('attribute'+attribute).options;for(var s=selectOption.length-1;s>=0;s--){if($('attribute'+attribute).options[s].value==optionId){$('attribute'+attribute).disabled=false;$('select_box_id'+attribute).className="active";$('step_id'+attribute).className="active";$('attribute'+attribute).options[s].selected=true;}}
optionsPrice.productPrice=this.config.childProducts[id];optionsPrice.reload();optionsPrice.reloadPriceLabels(true);this.reloadChildSku(id);this.addProductIdsToCartForm(this.config.productId,id)
this.updateFormProductId(id);this.showTierPricesBlock(id);this.showImagesBlock(id);}}}}}}}}