REGEX_AUTO_FIELD=/^[^_]+(_Req)?(_(Tel|Num|Int|Email|Url|Date))?$/;REGEX_BLANK=/^\s*$/;REGEX_EMAIL=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;REGEX_TEL=/^([0-9]*\-?\ ?\/?[0-9]*)$/;REGEX_NUM=/^[-+]?\d+(\.\d+)?$/;REGEX_URL=/^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/;REGEX_DAY=/^(0?[1-9]|[1-2][0-9]|3[01])$/;REGEX_MONTH=/^(0?[1-9]|1[0-2])$/;REGEX_YEAR=/^[0-9]{2,4}$/;REGEX_TYPED_FIELD=/_(Tel|Num|Int|Email|Url|Date)$/;var Protoform=Class.create({initialize:function(form,options){this.options={ajax:true,url:''}
Object.extend(this.options,options||{});this.form=$(form);this.formProcess=this.checkForm.bindAsEventListener(this);this.form.observe("submit",this.formProcess);this.hoverFocus();},hoverFocus:function(){this.form.select('input','textarea').each(function(item){Event.observe(item,'focus',function(){Element.addClassName(this,'hoverfocus');}.bind(item));Event.observe(item,'blur',function(){Element.removeClassName(this,'hoverfocus');}.bind(item));});},checkForm:function(event){Event.stop(event);var errors='';var faulty=null;if($('response')){$('response').remove();}
this.form.getElements().each(function(formElements){var value=($F(formElements)!=null)?$F(formElements):'';var idField=formElements.readAttribute('id')?formElements.readAttribute('id'):'';var typedField=idField.match(REGEX_TYPED_FIELD);var errorMessage=formElements.readAttribute('title');if(!idField.match(REGEX_AUTO_FIELD)){return;}
if(idField.match(/_Req/)&&value.match(REGEX_BLANK)){errors+='<li>'+errorMessage+'</li>';faulty=faulty||formElements;return;}
if(typedField&&!value.match(REGEX_BLANK)){var type=typedField[1];var error=this.checkField(value,type);if(error){errors+='<li>'+errorMessage+'</li>';faulty=faulty||formElements;}}}.bindAsEventListener(this));if(errors==0){if(this.options.ajax){this.sendData();}else{this.form.submit();}}else{if(!$('error')){this.form.insert({before:new Element('ul',{id:'error'}).update(errors)});}else{$('error').update(errors);}
faulty.focus();}},checkField:function(value,type){switch(type){case'Tel':var phone=value;if(!phone.match(REGEX_TEL)){return true;}
break;case'Num':var number=value;if(!number.match(REGEX_NUM)){return true;}
break;case'Tel':var phone=value;if(!phone.match(REGEX_TEL)){return true;}
break;case'Email':var address=value;if(!address.match(REGEX_EMAIL)){return true;}
break;case'Url':var resource=value;if(!resource.match(REGEX_URL)){return true;}
break;case'Date':var comps=value.split('/');if(3!=comps.length||!comps[0].match(REGEX_DAY)||!comps[1].match(REGEX_MONTH)||!comps[2].match(REGEX_YEAR)){return true;}
break;default:return null;}}.bind(this),sendData:function(event){var url=(this.options.url)?(this.options.url):this.form.readAttribute('action');var reqType=this.form.readAttribute('method');var pars=this.form.serialize();var myAjax=new Ajax.Request(url,{method:reqType,parameters:pars,onCreate:this.showLoad.bind(this),onComplete:this.getResponse.bind(this)});},showLoad:function(){this.form.insert({before:'<p id="working">loading...</p>'});if($('error')){$('error').remove();}},getResponse:function(transport){$('working').remove();var newData=transport.responseText;this.form.insert({before:newData}).reset();}});;Validation.defaultOptions.immediate=true;Validation.defaultOptions.addClassNameToContainer=true;Event.observe(document,'dom:loaded',function(){var inputs=$$('ul.options-list input');for(var i=0,l=inputs.length;i<l;i++){inputs[i].addClassName('change-container-classname');}})
if(!window.Enterprise){window.Enterprise={};}
Enterprise.templatesPattern=/(^|.|\r|\n)(\{\{(.*?)\}\})/;Enterprise.TopCart={initialize:function(container){this.container=$(container);this.element=this.container.up(0);this.elementHeader=this.container.previous(0);this.intervalDuration=4000;this.interval=null;this.onElementMouseOut=this.handleMouseOut.bindAsEventListener(this);this.onElementMouseOver=this.handleMouseOver.bindAsEventListener(this);this.onElementMouseClick=this.handleMouseClick.bindAsEventListener(this);this.element.observe('mouseout',this.onElementMouseOut);this.element.observe('mouseover',this.onElementMouseOver);this.elementHeader.observe('click',this.onElementMouseClick);},handleMouseOut:function(evt){if($(this.elementHeader).hasClassName('expanded')){this.interval=setTimeout(this.hideCart.bind(this),this.intervalDuration);}},handleMouseOver:function(evt){if(this.interval!==null){clearTimeout(this.interval);this.interval=null;}},handleMouseClick:function(evt){if(!$(this.elementHeader).hasClassName('expanded')&&!$(this.container.id).hasClassName('process')){this.showCart();}
else{this.hideCart();}},showCart:function(timePeriod){this.container.parentNode.style.zIndex=992;new Effect.SlideDown(this.container.id,{duration:0.5,beforeStart:function(effect){$(effect.element.id).addClassName('process');},afterFinish:function(effect){$(effect.element.id).removeClassName('process');}});$(this.elementHeader).addClassName('expanded');if(timePeriod){this.timePeriod=timePeriod*1000;this.interval=setTimeout(this.hideCart.bind(this),this.timePeriod);}},hideCart:function(){if(!$(this.container.id).hasClassName('process')&&$(this.elementHeader).hasClassName('expanded')){new Effect.SlideUp(this.container.id,{duration:0.5,beforeStart:function(effect){$(effect.element.id).addClassName('process');},afterFinish:function(effect){$(effect.element.id).removeClassName('process');effect.element.parentNode.style.zIndex=1;}});}
if(this.interval!==null){clearTimeout(this.interval);this.interval=null;}
$(this.elementHeader).removeClassName('expanded');}};Enterprise.Bundle={oldReloadPrice:false,initialize:function(){this.slider=$('bundleProduct');this.xOffset=$('bundle-product-wrapper').getDimensions().width;},swapReloadPrice:function(){Enterprise.Bundle.oldReloadPrice=Product.Bundle.prototype.reloadPrice;Product.Bundle.prototype.reloadPrice=Enterprise.Bundle.reloadPrice;Product.Bundle.prototype.selection=Enterprise.Bundle.selection;},reloadPrice:function(){var result=Enterprise.Bundle.oldReloadPrice.bind(this)();var priceContainer,duplicateContainer=null
if(priceContainer=$('bundle-product-wrapper').down('.price-box .price-as-configured')){if(duplicateContainer=$('bundle-product-wrapper').down('.duplicate-price-box .price-as-configured')){duplicateContainer.down('.price').update(priceContainer.down('.price').innerHTML);}}
if(!this.summaryTemplate&&$('bundle-summary-template')){this.summaryTemplate=new Template($('bundle-summary-template').innerHTML,Enterprise.templatesPattern);this.optionTemplate=new Template($('bundle-summary-option-template').innerHTML,Enterprise.templatesPattern);this.optionMultiTemplate=new Template($('bundle-summary-option-multi-template').innerHTML,Enterprise.templatesPattern);}
if(this.summaryTemplate&&$('bundle-summary')){var summaryHTML='';for(var option in this.config.options){if(typeof(this.config.selected[option])!=='undefined'){var optionHTML='';for(var i=0,l=this.config.selected[option].length;i<l;i++){var selection=this.selection(option,this.config.selected[option][i]);if(selection&&this.config.options[option].isMulti){optionHTML+=this.optionMultiTemplate.evaluate(selection);}else if(selection){optionHTML+=this.optionTemplate.evaluate(selection);}}
if(optionHTML.length>0){summaryHTML+=this.summaryTemplate.evaluate({label:this.config.options[option].title.escapeHTML(),options:optionHTML});}}}
$('bundle-summary').update(summaryHTML)}
return result;},selection:function(optionId,selectionId){if(selectionId==''||selectionId=='none'){return false;}
var qty=null;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;}
return{qty:qty,name:this.config.options[optionId].selections[selectionId].name.escapeHTML()};},start:function(){if(!$('bundle-product-wrapper').hasClassName('moving-now')){new Effect.Move(this.slider,{x:-this.xOffset,y:0,mode:'relative',duration:1.5,beforeStart:function(effect){$('bundle-product-wrapper').setStyle({height:$('productView').getHeight()+'px'});$('options-container').show();Enterprise.BundleSummary.initialize();$('bundle-product-wrapper').addClassName('moving-now');},afterFinish:function(effect){$('bundle-product-wrapper').setStyle({height:'auto'});$('productView').hide();$('bundle-product-wrapper').removeClassName('moving-now');}});}},end:function(){if(!$('bundle-product-wrapper').hasClassName('moving-now')){new Effect.Move(this.slider,{x:this.xOffset,y:0,mode:'relative',duration:1.5,beforeStart:function(effect){$('bundle-product-wrapper').setStyle({height:$('options-container').getHeight()+'px'});$('productView').show();$('bundle-product-wrapper').addClassName('moving-now');},afterFinish:function(effect){$('bundle-product-wrapper').setStyle({height:'auto'});$('options-container').hide();Enterprise.BundleSummary.exitSummary();$('bundle-product-wrapper').removeClassName('moving-now');}});}}};Enterprise.BundleSummary={initialize:function(){this.summary=$('bundleSummary');this.summaryOffsetTop=$('customizeTitle').getDimensions().height;this.summary.setStyle({top:this.summaryOffsetTop+"px"});this.summaryContainer=this.summary.up(0);this.doNotCheck=false;this.summaryStartY=this.summary.positionedOffset().top;this.summaryStartY=this.summaryOffsetTop;this.summaryStartX=this.summary.positionedOffset().left;this.onDocScroll=this.handleDocScroll.bindAsEventListener(this);this.GetScroll=setInterval(this.onDocScroll,50);this.onEffectEnds=this.effectEnds.bind(this);},handleDocScroll:function(){if(this.currentOffsetTop==document.viewport.getScrollOffsets().top&&(this.checkOffset(null)==null)){return;}else{if(this.currentOffsetTop==document.viewport.getScrollOffsets().top){this.doNotCheck=true;}
this.currentOffsetTop=document.viewport.getScrollOffsets().top;}
if(this.currentEffect){this.currentEffect.cancel();var topOffset=0;if(this.summaryContainer.viewportOffset().top<-60){topOffset=-(this.summaryContainer.viewportOffset().top);}else{topOffset=this.summaryStartY;}
topOffset=this.checkOffset(topOffset);if(topOffset===null){this.currentEffect=false;return;}
this.currentEffect.start({x:this.summaryStartX,y:topOffset,mode:'absolute',duration:0.3,afterFinish:this.onEffectEnds});return;}
this.currentEffect=new Effect.Move(this.summary);},effectEnds:function(){if(this.doNotCheck==true){this.doNotCheck=false;}},checkOffset:function(offset){if(this.doNotCheck&&offset===null){return null;}
var dimensions=this.summary.getDimensions();var parentDimensions=this.summary.up().getDimensions();if((offset!==null?offset:this.summary.offsetTop)+dimensions.height>=parentDimensions.height){offset=parentDimensions.height-dimensions.height;}else if(offset===null&&this.currentOffsetTop>(this.summaryContainer.viewportOffset().top)&&(this.currentOffsetTop-this.summaryContainer.viewportOffset().top)>this.summary.offsetTop){offset=this.currentOffsetTop-this.summaryContainer.viewportOffset().top;}
return offset;},exitSummary:function(){clearInterval(this.GetScroll);}};Enterprise.Tabs=Class.create();Object.extend(Enterprise.Tabs.prototype,{initialize:function(container){this.container=$(container);this.container.addClassName('tab-list');this.tabs=this.container.select('dt.tab');this.activeTab=this.tabs.first();this.tabs.first().addClassName('first');this.tabs.last().addClassName('last');this.onTabClick=this.handleTabClick.bindAsEventListener(this);for(var i=0,l=this.tabs.length;i<l;i++){this.tabs[i].observe('click',this.onTabClick);}
this.select();},handleTabClick:function(evt){this.activeTab=Event.findElement(evt,'dt');this.select();},select:function(){for(var i=0,l=this.tabs.length;i<l;i++){if(this.tabs[i]==this.activeTab){this.tabs[i].addClassName('active');this.tabs[i].style.zIndex=this.tabs.length+2;new Effect.Appear(this.tabs[i].next('dd'),{duration:0.5});this.tabs[i].parentNode.style.height=this.tabs[i].next('dd').getHeight()+15+'px';}else{this.tabs[i].removeClassName('active');this.tabs[i].style.zIndex=this.tabs.length+1-i;this.tabs[i].next('dd').hide();}}}});Enterprise.Slider=Class.create();Object.extend(Enterprise.Slider.prototype,{initialize:function(container,config){this.container=$(container);this.config={panelCss:'slider-panel',sliderCss:'slider',itemCss:'slider-item',slideButtonCss:'slide-button',slideButtonInactiveCss:'inactive',forwardButtonCss:'forward',backwardButtonCss:'backward',pageSize:6,scrollSize:2,slideDuration:1.0,slideDirection:'horizontal',fadeEffect:true};Object.extend(this.config,config||{});this.items=this.container.select('.'+this.config.itemCss);this.isPlaying=false;this.isAbsolutized=false;this.offset=0;this.onClick=this.handleClick.bindAsEventListener(this);this.sliderPanel=this.container.down('.'+this.config.panelCss);this.slider=this.sliderPanel.down('.'+this.config.sliderCss);this.container.select('.'+this.config.slideButtonCss).each(this.initializeHandlers.bind(this));this.updateButtons();Event.observe(window,'load',this.initializeDimensions.bind(this));},initializeHandlers:function(element){if(element.hasClassName(this.config.forwardButtonCss)||element.hasClassName(this.config.backwardButtonCss)){element.observe('click',this.onClick);}},handleClick:function(evt){var element=Event.element(evt);if(!element.hasClassName(this.config.slideButtonCss)){element=element.up('.'+this.config.slideButtonCss);}
if(!element.hasClassName(this.config.slideButtonInactiveCss)){element.hasClassName(this.config.forwardButtonCss)||this.backward();element.hasClassName(this.config.backwardButtonCss)||this.forward();}
Event.stop(evt);},updateButtons:function(){var buttons=this.container.select('.'+this.config.slideButtonCss);for(var i=0,l=buttons.length;i<l;i++){if(buttons[i].hasClassName(this.config.backwardButtonCss)){if(this.offset<=0){buttons[i].addClassName(this.config.slideButtonInactiveCss);}
else{buttons[i].removeClassName(this.config.slideButtonInactiveCss);}}else if(buttons[i].hasClassName(this.config.forwardButtonCss)){if(this.offset>=this.items.length-this.config.pageSize){buttons[i].addClassName(this.config.slideButtonInactiveCss);}
else{buttons[i].removeClassName(this.config.slideButtonInactiveCss);}}}},initializeDimensions:function(){if((this.config.slideDirection=='horizontal'&&this.sliderPanel.style.width)||(this.config.slideDirection!='horizontal'&&this.sliderPanel.style.height)){return this;}
var firstItem=this.items.first();var offset=0;if(this.config.slideDirection=='horizontal'){offset=(parseInt(firstItem.getStyle('margin-left'))+parseInt(firstItem.getStyle('margin-right')))*(this.config.pageSize-1);this.sliderPanel.setStyle({width:(firstItem.getDimensions().width*this.config.pageSize+offset)+'px'});}else{offset=(parseInt(firstItem.getStyle('margin-bottom'))+parseInt(firstItem.getStyle('margin-top')))*(this.config.pageSize-1);this.sliderPanel.setStyle({height:(firstItem.getDimensions().height*this.config.pageSize+offset)+'px'});}
var dimensions=this.sliderPanel.getDimensions();var sliderParent=this.sliderPanel.up();sliderParent.setStyle({width:dimensions.width+'px',height:dimensions.height+'px'});return this;},absolutize:function(){if(!this.isAbsolutized){this.isAbsolutized=true;var dimensions=this.sliderPanel.getDimensions();this.sliderPanel.setStyle({height:dimensions.height+'px',width:dimensions.width+'px'});this.slider.absolutize();}},forward:function(){if(this.offset+this.config.pageSize<=this.items.length-1){this.slide(true);}},backward:function(){if(this.offset>0){this.slide(false);}},slide:function(isForward){if(this.isPlaying){return;}
this.absolutize();this.effectConfig={duration:this.config.slideDuration};if(this.config.slideDirection=='horizontal'){this.effectConfig.x=this.getSlidePosition(isForward).left;}else{this.effectConfig.y=this.getSlidePosition(isForward).top;}
this.start();},start:function()
{if(this.config.fadeEffect){this.fadeIn();}else{this.move();}},fadeIn:function()
{new Effect.Fade(this.slider.up('div.slider-panel'),{from:1.0,to:0.5,afterFinish:this.move.bind(this),beforeStart:this.effectStarts.bind(this),duration:0.3});},fadeOut:function()
{new Effect.Fade(this.slider.up('div.slider-panel'),{from:0.5,to:1.0,afterFinish:this.effectEnds.bind(this),duration:0.3});},move:function()
{if(this.config.fadeEffect){this.effectConfig.afterFinish=this.fadeOut.bind(this);}else{this.effectConfig.afterFinish=this.effectEnds.bind(this);this.effectConfig.beforeStart=this.effectStarts.bind(this);}
new Effect.Move(this.slider,this.effectConfig);},effectStarts:function(){this.isPlaying=true;},effectEnds:function(){this.isPlaying=false;this.updateButtons();},getSlidePosition:function(isForward){var targetOffset;if(isForward){targetOffset=Math.min(this.items.length-this.config.pageSize,this.offset+this.config.scrollSize)}
else{targetOffset=Math.max(this.offset-this.config.scrollSize,0);}
this.offset=targetOffset;var item=this.items[targetOffset];var itemOffset={left:0,top:0};itemOffset.left=-(item.cumulativeOffset().left
-this.slider.cumulativeOffset().left+this.slider.offsetLeft);itemOffset.top=-(item.cumulativeOffset().top
-this.slider.cumulativeOffset().top+this.slider.offsetTop);return itemOffset;}});Enterprise.PopUpMenu={currentPopUp:null,documentHandlerInitialized:false,popUpZIndex:994,hideDelay:2000,hideOnClick:true,hideInterval:null,initializeDocumentHandler:function(){if(!this.documentHandlerInitialized){this.documentHandlerInitialized=true;Event.observe(document.body,'click',this.handleDocumentClick.bindAsEventListener(this));}},handleDocumentClick:function(evt){if(this.currentPopUp!==null){var element=Event.element(evt);if(!this.currentPopUp.onlyShowed&&this.hideOnClick){this.hide();}else{this.currentPopUp.onlyShowed=false;}}},handlePopUpOver:function(evt){if(this.currentPopUp!==null){this.currentPopUp.removeClassName('faded');this.resetTimeout(0);}},handlePopUpOut:function(evt){if(this.currentPopUp!==null){this.currentPopUp.addClassName('faded');this.resetTimeout(1);}},show:function(trigger){this.initializeDocumentHandler();var container=$(trigger).up('.switch-wrapper');if(!$('popId-'+container.id)){return;}
if(this.currentPopUp!==null&&$('popId-'+container.id)!==this.currentPopUp){this.hide(true);}else if(this.currentPopUp!==null&&this.currentPopUp===$('popId-'+container.id)){this.hide();return;}
this.currentPopUp=$('popId-'+container.id);this.currentPopUp.container=container;this.currentPopUp.container.oldZIndex=this.currentPopUp.container.style.zIndex;this.currentPopUp.container.style.zIndex=this.popUpZIndex;new Effect.Appear(this.currentPopUp,{duration:0.3});if(!this.currentPopUp.isHandled){this.currentPopUp.observe('mouseover',this.handlePopUpOver.bindAsEventListener(this));this.currentPopUp.observe('mouseout',this.handlePopUpOut.bindAsEventListener(this));this.currentPopUp.isHandled=true;}
this.currentPopUp.onlyShowed=true;this.currentPopUp.container.down('.switcher').addClassName('list-opened');this.resetTimeout(2);},hide:function(){if(this.currentPopUp!==null){if(arguments.length==0){new Effect.Fade(this.currentPopUp,{duration:0.3});}else{this.currentPopUp.hide();}
this.currentPopUp.container.style.zIndex=this.currentPopUp.container.oldZIndex;this.resetTimeout(0);this.currentPopUp.container.down('.switcher').removeClassName('list-opened');this.currentPopUp=null;}},resetTimeout:function(delay){if(this.hideTimeout!==null){clearTimeout(this.hideTimeout);this.hideTimeout=null;}
if(delay){this.hideTimeout=setTimeout(this.hide.bind(this),this.hideDelay*delay);}}};function popUpMenu(element){Enterprise.PopUpMenu.show(element);};var iSlideShow=new Class.create();iSlideShow.prototype={initialize:function(oArgs){this.wait=oArgs.wait?oArgs.wait:8000;this.start=oArgs.start?oArgs.start:0;this.duration=oArgs.duration?oArgs.duration:0.5;this.autostart=(typeof(oArgs.autostart)=='undefined')?true:oArgs.autostart;this.slides=oArgs.slides;this.counter=oArgs.counter;this.caption=oArgs.caption;this.playButton=oArgs.playButton?oArgs.playButton:'PlayButton';this.pauseButton=oArgs.pauseButton?oArgs.pauseButton:'PauseButton';this.iImageId=this.start;if(this.slides){this.numOfImages=this.slides.length;if(!this.numOfImages){alert('No slides?');}}
if(this.autostart){this.startSlideShow();}},swapImage:function(x,y){$(this.slides[x])&&$(this.slides[x]).appear({duration:this.duration});$(this.slides[y])&&$(this.slides[y]).fade({duration:this.duration});},startSlideShow:function(){this.play=setInterval(this.play.bind(this),this.wait);$(this.playButton).hide();$(this.pauseButton).appear({duration:0});this.updatecounter();},play:function(){var imageShow,imageHide;imageShow=this.iImageId+1;imageHide=this.iImageId;if(imageShow==this.numOfImages){this.swapImage(0,imageHide);this.iImageId=0;}else{this.swapImage(imageShow,imageHide);this.iImageId++;}
this.textIn=this.iImageId+1+' of '+this.numOfImages;this.updatecounter();},stop:function(){clearInterval(this.play);$(this.playButton).appear({duration:0});$(this.pauseButton).hide();},goNext:function(){clearInterval(this.play);$(this.playButton).appear({duration:0});$(this.pauseButton).hide();var imageShow,imageHide;imageShow=this.iImageId+1;imageHide=this.iImageId;if(imageShow==this.numOfImages){this.swapImage(0,imageHide);this.iImageId=0;}else{this.swapImage(imageShow,imageHide);this.iImageId++;}
this.updatecounter();},goPrevious:function(){clearInterval(this.play);$(this.playButton).appear({duration:0});$(this.pauseButton).hide();var imageShow,imageHide;imageShow=this.iImageId-1;imageHide=this.iImageId;if(this.iImageId==0){this.swapImage(this.numOfImages-1,imageHide);this.iImageId=this.numOfImages-1;}else{this.swapImage(imageShow,imageHide);this.iImageId--;}
this.updatecounter();},updatecounter:function(){var textIn=this.iImageId+1+' of '+this.numOfImages;$(this.counter)&&($(this.counter).innerHTML=textIn);if($(this.caption)&&(oNewCaption=$(this.slides[this.iImageId]).down('.image-caption'))){$(this.caption).innerHTML=oNewCaption.innerHTML;}}}
