var dwProgressBar=new Class({Implements:[Options],options:{container:$$('body')[0],boxID:'',percentageID:'',displayID:'',startPercentage:0,displayText:false,speed:10},initialize:function(options){this.setOptions(options);this.createElements();},createElements:function(){var box=new Element('div',{id:this.options.boxID});var perc=new Element('div',{id:this.options.percentageID,'style':'width:0px;'});perc.inject(box);box.inject(this.options.container);if(this.options.displayText){var text=new Element('div',{id:this.options.displayID});text.inject(this.options.container);}
this.set(this.options.startPercentage);},calculate:function(percentage){return(($(this.options.boxID).getStyle('width').replace('px','')*(percentage/100)).toInt());},animate:function(to){$(this.options.percentageID).set('morph',{duration:this.options.speed,link:'cancel'}).morph({width:this.calculate(to.toInt())});if(this.options.displayText){$(this.options.displayID).set('text',to.toInt()+'%');}},set:function(to){this.animate(to);}});

var noobSlide=new Class({initialize:function(a){this.items=a.items;this.mode=a.mode||'horizontal';this.modes={horizontal:['left','width'],vertical:['top','height']};this.size=a.size||240;this.box=a.box.setStyle(this.modes[this.mode][1],(this.size*this.items.length)+'px');this.button_event=a.button_event||'click';this.handle_event=a.handle_event||'click';this.onWalk=a.onWalk||null;this.currentIndex=null;this.previousIndex=null;this.nextIndex=null;this.interval=a.interval||5000;this.autoPlay=a.autoPlay||false;this._play=null;this.handles=a.handles||null;if(this.handles){this.addHandleButtons(this.handles)}this.buttons={previous:[],next:[],play:[],playback:[],stop:[]};if(a.addButtons){for(var b in a.addButtons){this.addActionButtons(b,$type(a.addButtons[b])=='array'?a.addButtons[b]:[a.addButtons[b]])}}this.fx=new Fx.Tween(this.box,$extend((a.fxOptions||{duration:500,wait:false}),{property:this.modes[this.mode][0]}));this.walk((a.startItem||0),true,true)},addHandleButtons:function(a){for(var i=0;i<a.length;i++){a[i].addEvent(this.handle_event,this.walk.bind(this,[i,true]))}},addActionButtons:function(a,b){for(var i=0;i<b.length;i++){switch(a){case'previous':b[i].addEvent(this.button_event,this.previous.bind(this,[true]));break;case'next':b[i].addEvent(this.button_event,this.next.bind(this,[true]));break;case'play':b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'next',false]));break;case'playback':b[i].addEvent(this.button_event,this.play.bind(this,[this.interval,'previous',false]));break;case'stop':b[i].addEvent(this.button_event,this.stop.bind(this));break}this.buttons[a].push(b[i])}},previous:function(a){this.walk((this.currentIndex>0?this.currentIndex-1:this.items.length-1),a)},next:function(a){this.walk((this.currentIndex<this.items.length-1?this.currentIndex+1:0),a)},play:function(a,b,c){this.stop();if(!c){this[b](false)}this._play=this[b].periodical(a,this,[false])},stop:function(){$clear(this._play)},walk:function(a,b,c){if(a!=this.currentIndex){this.currentIndex=a;this.previousIndex=this.currentIndex+(this.currentIndex>0?-1:this.items.length-1);this.nextIndex=this.currentIndex+(this.currentIndex<this.items.length-1?1:1-this.items.length);if(b){this.stop()}if(c){this.fx.cancel().set((this.size*-this.currentIndex)+'px')}else{this.fx.start(this.size*-this.currentIndex)}if(b&&this.autoPlay){this.play(this.interval,'next',true)}if(this.onWalk){this.onWalk((this.items[this.currentIndex]||null),(this.handles&&this.handles[this.currentIndex]?this.handles[this.currentIndex]:null))}}}});

var MultiSelect=new Class({Implements:[Options],options:{boxes:'input[type=checkbox]',labels:'label',monitorText:' selected',containerClass:'MultiSelect',monitorClass:'monitor',monitorActiveClass:'active',itemSelectedClass:'selected',itemHoverClass:'hover'},initialize:function(selector,options){this.setOptions(options);this.active=false;this.action='open';this.elements=document.getElements(selector);this.elements.each(function(element){this.buildMenu(element);},this);},buildMenu:function(element){var self=this;element.addClass(self.options.containerClass);var boxes=element.getElements(self.options.boxes);var labels=element.getElements(self.options.labels);var list=new Element('ul',{'styles':{display:'none'},'events':{'mouseenter':function(){self.action='open';},'mouseleave':function(){self.action='close';self.itemHover(this,'none');},'mousedown':function(e){e.stop();},'selectstart':function(){return false;},'keydown':function(e){if(e.key=='esc'){self.toggleMenu('close',monitor,this);}
else if(e.key=='down'||e.key=='up'){self.itemHover(this,e.key);}}}});boxes.each(function(box,i){box.addEvents({'click':function(e){e.stop();},'keydown':function(e){if(e.key=='space'){self.active=true;self.changeItemState(this.getParent(),this,monitor);}
if(self.active&&(e.key=='down'||e.key=='up')){self.changeItemState(this.getParent(),this,monitor);}},'keyup':function(e){if(e.key=='space'){self.active=false;}}});var label=labels[i];new Element('li',{'class':box.get('checked')?self.options.itemSelectedClass:'','events':{'mouseenter':function(){if(self.active===true){self.changeItemState(this,box,monitor);}
self.itemHover(list,this);},'mousedown':function(){self.active=true;self.changeItemState(this,box,monitor);}}}).adopt([box,label]).inject(list);});var monitor=new Element('div',{'class':self.options.monitorClass,'html':'<div><div>'+self.changeMonitorValue(list)+'</div></div>','tabindex':0,'events':{'mouseenter':function(){self.action='open';},'mouseleave':function(){self.action='close';},'click':function(){if(this.hasClass(self.options.monitorActiveClass)){self.toggleMenu('close',monitor,list);}
else{self.toggleMenu('open',monitor,list);}},'keydown':function(e){if(e.key=='space'||e.key=='down'||e.key=='up'){self.action='close';self.toggleMenu('open',monitor,list);}},'mousedown':function(e){e.stop();},'selectstart':function(){return false;}}});document.addEvents({'mouseup':function(){self.active=false;},'click':function(){if(self.action=='close'){self.toggleMenu('close',monitor,list);}},'keydown':function(e){if(e.key=='esc'){self.toggleMenu('close',monitor,list);self.itemHover(list,'none');}}});element.empty().adopt([monitor,list]);},append:function(selector){var elements=document.getElements(selector);this.elements.combine(elements);elements.each(function(element){this.buildMenu(element);},this);},changeItemState:function(item,checkbox,monitor){if(item.hasClass(this.options.itemSelectedClass)){item.removeClass(this.options.itemSelectedClass);checkbox.set('checked',false).focus();}
else{item.addClass(this.options.itemSelectedClass);checkbox.set('checked',true).focus();}
monitor.set('html','<div><div>'+this.changeMonitorValue(item.getParent())+'</div></div>');},changeMonitorValue:function(list){var text=list.getElements(this.options.boxes).filter(function(box){return box.get('checked');}).length+this.options.monitorText;return text;},itemHover:function(list,select){var current=list.getElement('li.'+this.options.itemHoverClass);switch(select){case'down':if(current&&(sibling=current.getNext()))current.removeClass(this.options.itemHoverClass);else this.itemHover(list,'last');break;case'up':if(current&&(sibling=current.getPrevious()))current.removeClass(this.options.itemHoverClass);else this.itemHover(list,'first');break;case'none':list.getElements('li.'+this.options.itemHoverClass).removeClass(this.options.itemHoverClass);break;case'first':var sibling=list.getFirst();break;case'last':var sibling=list.getLast();break;default:if(current)current.removeClass(this.options.itemHoverClass);var sibling=select;break;}
if(sibling)
sibling.addClass(this.options.itemHoverClass).getElement(this.options.boxes).focus();},toggleMenu:function(state,monitor,list){if(state=='open'){monitor.addClass(this.options.monitorActiveClass);list.setStyle('display','');this.itemHover(list,'first');}
else{this.elements.getElement('div.monitor').removeClass(this.options.monitorActiveClass);this.elements.getElement('ul').setStyle('display','none');this.action='open';}
if(list.getScrollSize().y>(list.getStyle('max-height').toInt()?list.getStyle('max-height').toInt():list.getStyle('height').toInt()))
list.setStyle('overflow-y','scroll');}});
