/*MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006-2007 Valerio Proietti, <http://mad4milk.net>, MIT Style License.||CNET Libraries Copyright (c) 2006-2008, http://clientside.cnet.com/wiki/cnet-libraries#license*/

var dbug={logged:[],timers:{},firebug:false,enabled:false,log:function(){dbug.logged.push(arguments)},nolog:function(msg){dbug.logged.push(arguments)},time:function(name){dbug.timers[name]=new Date().getTime()},timeEnd:function(name){if(dbug.timers[name]){var end=new Date().getTime()-dbug.timers[name];dbug.timers[name]=false;dbug.log('%s: %s',name,end)}else dbug.log('no such timer: %s',name)},enable:function(silent){if(dbug.firebug){try{dbug.enabled=true;dbug.log=function(){(console.debug||console.log).apply(console,arguments)};dbug.time=function(){console.time.apply(console,arguments)};dbug.timeEnd=function(){console.timeEnd.apply(console,arguments)};if(!silent)dbug.log('enabling dbug');for(var i=0;i<dbug.logged.length;i++){dbug.log.apply(console,dbug.logged[i])}dbug.logged=[]}catch(e){dbug.enable.delay(400)}}},disable:function(){if(dbug.firebug)dbug.enabled=false;dbug.log=dbug.nolog;dbug.time=function(){};dbug.timeEnd=function(){}},cookie:function(set){var value=document.cookie.match('(?:^|;)\\s*jsdebug=([^;]*)');var debugCookie=value?unescape(value[1]):false;if((debugCookie!='true'||set)&&!set){dbug.enable();dbug.log('setting debugging cookie');var date=new Date();date.setTime(date.getTime()+(24*60*60*1000));document.cookie='jsdebug=true;expires='+date.toGMTString()+';path=/;'}else dbug.disableCookie()},disableCookie:function(){dbug.log('disabling debugging cookie');document.cookie='jsdebug=false;path=/;'}};(function(){var fb=typeof console!="undefined";var debugMethods=['debug','info','warn','error','assert','dir','dirxml'];var otherMethods=['trace','group','groupEnd','profile','profileEnd','count'];function set(methodList,defaultFunction){for(var i=0;i<methodList.length;i++){dbug[methodList[i]]=(fb&&console[methodList[i]])?console[methodList[i]]:defaultFunction}};set(debugMethods,dbug.log);set(otherMethods,function(){})})();if(typeof console!="undefined"&&console.warn){dbug.firebug=true;var value=document.cookie.match('(?:^|;)\\s*jsdebug=([^;]*)');var debugCookie=value?unescape(value[1]):false;if(window.location.href.indexOf("jsdebug=true")>0||debugCookie=='true')dbug.enable();if(debugCookie=='true')dbug.log('debugging cookie enabled');if(window.location.href.indexOf("jsdebugCookie=true")>0){dbug.cookie();if(!dbug.enabled)dbug.enable()}if(window.location.href.indexOf("jsdebugCookie=false")>0)dbug.disableCookie()}Browser.combine({getHost:function(url){url=$pick(url,window.location.href);var host=url;if(url.test('http://')){url=url.substring(url.indexOf('http://')+7,url.length);if(url.test(':'))url=url.substring(0,url.indexOf(":"));if(url.test('/'))return url.substring(0,url.indexOf('/'));return url}return false},getQueryStringValue:function(key,url){try{return Browser.getQueryStringValues(url)[key]}catch(e){return null}},getQueryStringValues:function(url){var qs=$pick(url,window.location.search,'').split('?')[1];if(!$chk(qs))return{};if(qs.test('#'))qs=qs.substring(0,qs.indexOf('#'));try{if(qs)return qs.parseQuery()}catch(e){return null}return{}},getPort:function(url){url=$pick(url,window.location.href);var re=new RegExp(':([0-9]{4})');var m=re.exec(url);if(m==null)return false;else{var port=false;m.each(function(val){if($chk(parseInt(val)))port=val})}return port}});window.addEvent('domready',function(){var count=0;function setQs(){function retry(){count++;if(count<20)setQs.delay(50)};try{if(!Browser.set("qs",Browser.getQueryStringValues()))retry()}catch(e){retry()}}setQs()});Browser.combine({fixPNG:function(selector){if($type(selector)=="array")return $$(selector).each(Browser.fixPNG);if($(selector))selector=$(selector).getTag();window.addEvent('domready',function(){if(document.all&&/MSIE (5\.5|6)/.test(navigator.userAgent)&&document.styleSheets&&document.styleSheets[0]&&document.styleSheets[0].addRule){if(!$('iepngfix_tilebg_js')){new Element('script',{src:Browser.iepngFixJs,id:'iepngfix_tilebg_js','type':'text/javascript'}).inject(document.head)}if(!document.styleSheets[0])new Element('style').inject(document.head);document.styleSheets[0].addRule(selector||'.fixPNG','behavior: url('+Browser.iepngfixUrl+')')}})},iepngFixJs:'http://www.cnet.com/html/rb/assets/global/fixpng/iepngfix_tilebg.js',iepngfixUrl:'http://www.cnet.com/html/rb/assets/global/fixpng/iepngfix.htc'});Browser.fixPNG();Hash.implement({getFromPath:function(notation){var source=this.getClean();notation.replace(/\[([^\]]+)\]|\.([^.[]+)|[^[.]+/g,function(match){if(!source)return;var prop=arguments[2]||arguments[1]||arguments[0];source=(prop in source)?source[prop]:null;return match});return source},cleanValues:function(method){method=method||$defined;this.each(function(v,k){if(!method(v))this.erase(k)},this);return this}});String.implement({stripTags:function(){return this.replace(/<\/?[^>]+>/gi,'')},parseQuery:function(encodeKeys,encodeValues){encodeKeys=$pick(encodeKeys,true);encodeValues=$pick(encodeValues,true);var vars=this.split(/[&;]/);var rs={};if(vars.length)vars.each(function(val){var keys=val.split('=');if(keys.length&&keys.length==2){rs[(encodeKeys)?encodeURIComponent(keys[0]):keys[0]]=(encodeValues)?encodeURIComponent(keys[1]):keys[1]}});return rs},tidy:function(){var txt=this.toString();$each({"[\xa0\u2002\u2003\u2009]":" ","\xb7":"*","[\u2018\u2019]":"'","[\u201c\u201d]":'"',"\u2026":"...","\u2013":"-","\u2014":"--","\uFFFD":"&raquo;"},function(value,key){txt=txt.replace(new RegExp(key,'g'),value)});return txt},cleanQueryString:function(method){return this.split("&").filter(method||function(set){return $chk(set.split("=")[1])}).join("&")}});Element.implement({expose:function(){if(this.getStyle('display')!='none')return $empty;var before={};var styles={visibility:'hidden',display:'block',position:'absolute'};$each(styles,function(value,style){before[style]=this.style[style]||''},this);this.setStyles(styles);return(function(){this.setStyles(before)}).bind(this)},getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};function getSize(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize()};if(this.getStyle('display')=='none'){var restore=this.expose();dim=getSize(this,options);restore()}else{try{dim=getSize(this,options)}catch(e){}}return $chk(dim.x)?$extend(dim,{width:dim.x,height:dim.y}):$extend(dim,{x:dim.width,y:dim.height})},getComputedSize:function(options){options=$merge({styles:['padding','border'],plains:{height:['top','bottom'],width:['left','right']},mode:'both'},options);var size={width:0,height:0};switch(options.mode){case'vertical':delete size.width;delete options.plains.width;break;case'horizontal':delete size.height;delete options.plains.height;break};var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=="border")?style+'-'+edge+'-'+'width':style+'-'+edge)})})});var styles=this.getStyles.apply(this,getStyles);var subtracted=[];$each(options.plains,function(plain,key){size['total'+key.capitalize()]=0;size['computed'+key.capitalize()]=0;plain.each(function(edge){size['computed'+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt();if(isNaN(styles[style]))styles[style]=0;size['total'+key.capitalize()]=size['total'+key.capitalize()]+styles[style];size['computed'+edge.capitalize()]=size['computed'+edge.capitalize()]+styles[style]}if(style.test(edge)&&key!=style&&(style.test('border')||style.test('padding'))&&!subtracted.contains(style)){subtracted.push(style);size['computed'+key.capitalize()]=size['computed'+key.capitalize()]-styles[style]}})})});if($chk(size.width)){size.width=size.width+this.offsetWidth+size.computedWidth;size.totalWidth=size.width+size.totalWidth;delete size.computedWidth}if($chk(size.height)){size.height=size.height+this.offsetHeight+size.computedHeight;size.totalHeight=size.height+size.totalHeight;delete size.computedHeight}return $extend(styles,size)}});Element.implement({isVisible:function(){return this.getStyle('display')!='none'},toggle:function(){return this[this.isVisible()?'hide':'show']()},hide:function(){var d;try{d=this.getStyle('display')}catch(e){}this.store('originalDisplay',d||'block');this.setStyle('display','none');return this},show:function(display){original=this.retrieve('originalDisplay')?this.retrieve('originalDisplay'):this.get('originalDisplay');this.setStyle('display',(display||original||'block'));return this},swapClass:function(remove,add){return this.removeClass(remove).addClass(add)},fxOpacityOk:function(){return!Browser.Engine.trident4}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{styles:['padding','border','margin'],transitionOpacity:true,mode:'vertical',heightOverride:null,widthOverride:null},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle('display')!='none'){this.hiding=true;this.showing=false;this.hidden=true;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});var setToAuto=this.element.style.height===""||this.element.style.height=="auto";this.element.setStyle('display','block');if(this.element.fxOpacityOk()&&this.options.transitionOpacity)startStyles.opacity=1;var zero={};$each(startStyles,function(style,name){zero[name]=[style,0]},this);var overflowBefore=this.element.getStyle('overflow');this.element.setStyle('overflow','hidden');if(!this.$chain)this.$chain=[];this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(startStyles,function(style,name){startStyles[name]=style},this);this.element.setStyles($merge({display:'none',overflow:overflowBefore},startStyles));if(setToAuto)this.element.setStyle('height','auto')}this.callChain()}.bind(this));this.start(zero)}else{this.callChain.delay(10,this);this.fireEvent('onComplete',this.element)}}}catch(e){this.hiding=false;this.element.hide();this.callChain.delay(10,this);this.fireEvent('onComplete',this.element)}return this},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle('display')=="none"||this.element.getStyle('visiblity')=="hidden"||this.element.getStyle('opacity')==0){this.showing=true;this.hiding=false;this.hidden=false;var before=this.element.getStyles('visibility','display','position');this.element.setStyles({visibility:'hidden',display:'block',position:'absolute'});var setToAuto=this.element.style.height===""||this.element.style.height=="auto";if(this.element.fxOpacityOk()&&this.options.transitionOpacity)this.element.setStyle('opacity',0);var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});this.element.setStyles(before);$each(startStyles,function(style,name){startStyles[name]=style},this);if($chk(this.options.heightOverride))startStyles['height']=this.options.heightOverride.toInt();if($chk(this.options.widthOverride))startStyles['width']=this.options.widthOverride.toInt();if(this.element.fxOpacityOk()&&this.options.transitionOpacity)startStyles.opacity=1;var zero={height:0,display:'block'};$each(startStyles,function(style,name){zero[name]=0},this);var overflowBefore=this.element.getStyle('overflow');this.element.setStyles($merge(zero,{overflow:'hidden'}));this.start(startStyles);if(!this.$chain)this.$chain=[];this.$chain.unshift(function(){if(!this.options.heightOverride&&setToAuto){if(["vertical","both"].contains(this.options.mode))this.element.setStyle('height','auto');if(["width","both"].contains(this.options.mode))this.element.setStyle('width','auto')}if(!this.hidden)this.showing=false;this.element.setStyle('overflow',overflowBefore);this.callChain()}.bind(this))}else{this.callChain();this.fireEvent('onComplete',this.element)}}}catch(e){this.element.setStyles({display:'block',visiblity:'visible',opacity:1});this.showing=false;this.callChain.delay(10,this);this.fireEvent('onComplete',this.element)}return this},toggle:function(){try{if(this.element.getStyle('display')=="none"||this.element.getStyle('visiblity')=="hidden"||this.element.getStyle('opacity')==0){this.reveal()}else{this.dissolve()}}catch(e){this.show()}return this}});Element.Properties.reveal={set:function(options){var reveal=this.retrieve('reveal');if(reveal)reveal.cancel();return this.eliminate('reveal').store('reveal:options',$extend({link:'cancel'},options))},get:function(options){if(options||!this.retrieve('reveal')){if(options||!this.retrieve('reveal:options'))this.set('reveal',options);this.store('reveal',new Fx.Reveal(this,this.retrieve('reveal:options')))}return this.retrieve('reveal')}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get('reveal',options).reveal();return this},dissolve:function(options){this.get('reveal',options).dissolve();return this}});var MooScroller=new Class({Implements:[Options,Events],options:{maxThumbSize:10,mode:'vertical',width:0,scrollSteps:10,wheel:true,scrollLinks:{forward:'scrollForward',back:'scrollBack'}},initialize:function(content,knob,options){this.setOptions(options);this.horz=(this.options.mode=="horizontal");this.content=$(content).setStyle('overflow','hidden');this.knob=$(knob);this.track=this.knob.getParent();this.setPositions();if(this.horz&&this.options.width){this.wrapper=new Element('div');this.content.getChildren().each(function(child){this.wrapper.adopt(child)});this.wrapper.inject(this.content).setStyle('width',this.options.width)}this.bound={'start':this.start.bind(this),'end':this.end.bind(this),'drag':this.drag.bind(this),'wheel':this.wheel.bind(this),'page':this.page.bind(this)};this.position={};this.mouse={};this.update();this.attach();var clearScroll=function(){$clear(this.scrolling)}.bind(this);['forward','back'].each(function(direction){var lnk=$(this.options.scrollLinks[direction]);if(lnk){lnk.addEvents({mousedown:function(){this.scrolling=this[direction].periodical(50,this)}.bind(this),mouseup:clearScroll.bind(this),click:clearScroll.bind(this)})}},this);this.knob.addEvent('click',clearScroll.bind(this));window.addEvent('domready',function(){try{$(document.body).addEvent('mouseup',clearScroll.bind(this))}catch(e){}}.bind(this))},setPositions:function(){[this.track,this.knob].each(function(el){if(el.getStyle('position')=='static')el.setStyle('position','relative')})},toElement:function(){return this.content},update:function(){var plain=this.horz?'Width':'Height';this.contentSize=this.content['offset'+plain];this.contentScrollSize=this.content['scroll'+plain];this.trackSize=this.track['offset'+plain];this.contentRatio=this.contentSize/this.contentScrollSize;this.knobSize=(this.trackSize*this.contentRatio).limit(this.options.maxThumbSize,this.trackSize);this.scrollRatio=this.contentScrollSize/this.trackSize;this.knob.setStyle(plain.toLowerCase(),this.knobSize);this.updateThumbFromContentScroll();this.updateContentFromThumbPosition()},updateContentFromThumbPosition:function(){this.content[this.horz?'scrollLeft':'scrollTop']=this.position.now*this.scrollRatio},updateThumbFromContentScroll:function(){this.position.now=(this.content[this.horz?'scrollLeft':'scrollTop']/this.scrollRatio).limit(0,(this.trackSize-this.knobSize));this.knob.setStyle(this.horz?'left':'top',this.position.now)},attach:function(){this.knob.addEvent('mousedown',this.bound.start);if(this.options.scrollSteps)this.content.addEvent('mousewheel',this.bound.wheel);this.track.addEvent('mouseup',this.bound.page)},wheel:function(event){this.scroll(-(event.wheel*this.options.scrollSteps));this.updateThumbFromContentScroll();event.stop()},scroll:function(steps){steps=steps||this.options.scrollSteps;this.content[this.horz?'scrollLeft':'scrollTop']+=steps;this.updateThumbFromContentScroll();this.fireEvent('onScroll',steps)},forward:function(steps){this.scroll(steps)},back:function(steps){steps=steps||this.options.scrollSteps;this.scroll(-steps)},page:function(event){var axis=this.horz?'x':'y';var forward=(event.page[axis]>this.knob.getPosition()[axis]);this.scroll((forward?1:-1)*this.content['offset'+(this.horz?'Width':'Height')]);this.updateThumbFromContentScroll();this.fireEvent('onPage',forward);event.stop()},start:function(event){var axis=this.horz?'x':'y';this.mouse.start=event.page[axis];this.position.start=this.knob.getStyle(this.horz?'left':'top').toInt();document.addEvent('mousemove',this.bound.drag);document.addEvent('mouseup',this.bound.end);this.knob.addEvent('mouseup',this.bound.end);event.stop()},end:function(event){document.removeEvent('mousemove',this.bound.drag);document.removeEvent('mouseup',this.bound.end);this.knob.removeEvent('mouseup',this.bound.end);event.stop()},drag:function(event){var axis=this.horz?'x':'y';this.mouse.now=event.page[axis];this.position.now=(this.position.start+(this.mouse.now-this.mouse.start)).limit(0,(this.trackSize-this.knobSize));this.updateContentFromThumbPosition();this.updateThumbFromContentScroll();event.stop()}});var SimpleCarousel=new Class({Implements:[Options,Events],options:{slideInterval:4000,transitionDuration:700,startIndex:0,buttonOnClass:"selected",buttonOffClass:"off",rotateAction:"none",rotateActionDuration:100,autoplay:true},initialize:function(container,slides,buttons,options){this.container=$(container);if(this.container.hasClass('hasCarousel'))return false;this.setOptions(options);this.container.addClass('hasCarousel');this.slides=$$(slides);this.buttons=$$(buttons);this.createFx();this.showSlide(this.options.startIndex);if(this.options.autoplay)this.autoplay();if(this.options.rotateAction!='none')this.setupAction(this.options.rotateAction);return this},toElement:function(){return this.container},setupAction:function(action){this.buttons.each(function(el,idx){$(el).addEvent(action,function(){this.slideFx.setOptions(this.slideFx.options,{duration:this.options.rotateActionDuration});if(this.currentSlide!=idx)this.showSlide(idx);this.stop()}.bind(this))},this)},createFx:function(){if(!this.slideFx)this.slideFx=new Fx.Elements(this.slides,{duration:this.options.transitionDuration});this.slides.each(function(slide){slide.setStyle('opacity',0)})},showSlide:function(slideIndex){var action={};this.slides.each(function(slide,index){if(index==slideIndex&&index!=this.currentSlide){$(this.buttons[index]).swapClass(this.options.buttonOnClass,this.options.buttonOffClass);action[index.toString()]={opacity:1}}else{$(this.buttons[index]).swapClass(this.options.buttonOffClass,this.options.buttonOnClass);action[index.toString()]={opacity:0}}},this);this.fireEvent('onShowSlide',slideIndex);this.currentSlide=slideIndex;this.slideFx.start(action);return this},autoplay:function(){this.slideshowInt=this.rotate.periodical(this.options.slideInterval,this);this.fireEvent('onAutoPlay');return this},stop:function(){$clear(this.slideshowInt);this.fireEvent('onStop');return this},rotate:function(){current=this.currentSlide;next=(current+1>=this.slides.length)?0:current+1;this.showSlide(next);this.fireEvent('onRotate',next);return this}});var SimpleSlideShow=new Class({Implements:[Events,Options,Chain],options:{startIndex:0,slides:[],currentSlideClass:'currentSlide',currentIndexContainer:false,maxContainer:false,nextLink:false,prevLink:false,wrap:true,disabledLinkClass:'disabled',crossFadeOptions:{}},initialize:function(options){this.setOptions(options);this.slides=this.options.slides;this.makeSlides();this.setCounters();this.setUpNav();this.now=this.options.startIndex;if(this.slides.length>0)this.show(this.now)},setCounters:function(){if($(this.options.currentIndexContainer))$(this.options.currentIndexContainer).set('html',this.now+1);if($(this.options.maxContainer))$(this.options.maxContainer).set('html',this.slides.length)},makeSlides:function(){this.slides.each(function(slide,index){if(index!=this.now)slide.setStyle('display','none');else slide.setStyle('display','block');this.makeSlide(slide)},this)},makeSlide:function(slide){slide.addEvent('click',function(){this.fireEvent('onSlideClick')}.bind(this))},setUpNav:function(){if($(this.options.nextLink))$(this.options.nextLink).addEvent('click',function(){this.forward()}.bind(this));if($(this.options.prevLink))$(this.options.prevLink).addEvent('click',function(){this.back()}.bind(this))},forward:function(){var fireEvent=false;if($type(this.now)&&this.now<this.slides.length-1)fireEvent=this.show(this.now+1);else if($type(this.now)&&this.options.wrap)fireEvent=this.show(0);else if(!$type(this.now))fireEvent=this.show(this.options.startIndex);if(fireEvent)this.fireEvent('onNext');if(this.now==this.slides.length&&!this.options.wrap&&$(this.options.nextLink))$(this.options.nextLink).addClass(this.options.disabledLinkClass);else if($(this.options.nextLink))$(this.options.nextLink).removeClass(this.options.disabledLinkClass);return this},back:function(){if(this.now>0){this.show(this.now-1);this.fireEvent('onPrev')}else if(this.options.wrap&&this.slides.length>1){this.show(this.slides.length-1);this.fireEvent('onPrev')}if(this.now==0&&!this.options.wrap&&$(this.options.prevSlide))$(this.options.prevSlide).addClass(this.options.disabledLinkClass);else if($(this.options.prevSlide))$(this.options.prevSlide).removeClass(this.options.disabledLinkClass);return this},show:function(index){if(this.showing)return this.chain(this.show.bind(this,index));var now=this.now;var s=this.slides[index];function fadeIn(s,resetOpacity){s.setStyle('display','block');if(s.fxOpacityOk()){if(resetOpacity)s.setStyle('opacity',0);s.set('tween',this.options.crossFadeOptions).get('tween').start('opacity',1).chain(function(){this.showing=false;this.callChain()}.bind(this))}};if(s){if($type(this.now)&&this.now!=index){if(s.fxOpacityOk()){var fx=this.slides[this.now].get('tween');fx.setOptions(this.options.crossFadeOptions);this.showing=true;fx.start('opacity',0).chain(function(){this.slides[now].setStyle('display','none');s.addClass(this.options.currentSlideClass);fadeIn.run([s,true],this)}.bind(this))}else{this.slides[this.now].setStyle('display','none');fadeIn.run(s,this)}}else fadeIn.run(s,this);this.now=index;this.setCounters()}},slideClick:function(){this.fireEvent('onSlideClick',[this.slides[this.now],this.now])}});var SimpleImageSlideShow=new Class({Extends:SimpleSlideShow,options:{imgUrls:[],imgClass:'screenshot',container:false},initialize:function(options){this.parent(options);this.options.imgUrls.each(function(url){this.addImg(url)},this);this.show(this.options.startIndex)},addImg:function(url){if($(this.options.container)){var img=new Element('img',{'src':url,'id':this.options.imgClass+this.slides.length}).addClass(this.options.imgClass).setStyle('display','none').inject($(this.options.container)).addEvent('click',this.slideClick.bind(this));this.slides.push(img);this.makeSlide(img);this.setCounters()}return this}});var TabSwapper=new Class({Implements:[Options,Events],options:{selectedClass:'tabSelected',mouseoverClass:'tabOver',deselectedClass:'',rearrangeDOM:true,initPanel:0,smooth:false,smoothSize:false,maxSize:null,effectOptions:{duration:500},cookieName:null,cookieDays:999},tabs:[],sections:[],clickers:[],sectionFx:[],initialize:function(options){this.setOptions(options);this.setup();if(this.options.cookieName&&this.recall())this.show(this.recall().toInt());else this.show(this.options.initPanel)},setup:function(){var opt=this.options;sections=$$(opt.sections);tabs=$$(opt.tabs);clickers=$$(opt.clickers);tabs.each(function(tab,index){this.addTab(tab,sections[index],clickers[index],index)},this);return this},addTab:function(tab,section,clicker,index){tab=$(tab);clicker=$(clicker);section=$(section);if(this.tabs.indexOf(tab)>=0&&tab.retrieve('tabbered')&&this.tabs.indexOf(tab)!=index&&this.options.rearrangeDOM){this.moveTab(this.tabs.indexOf(tab),index);return this}if(!$defined(index))index=this.tabs.length;if(index>0&&this.tabs[index-1]&&this.options.rearrangeDOM){tab.inject(this.tabs[index-1],'after');section.inject(this.tabs[index-1].retrieve('section'),'after')}this.tabs.splice(index,0,tab);clicker=clicker||tab;tab.addEvents({mouseout:function(){tab.removeClass(this.options.mouseoverClass)}.bind(this),mouseover:function(){tab.addClass(this.options.mouseoverClass)}.bind(this)});clicker.addEvent('click',function(){this.show(index)}.bind(this));tab.store('tabbered',true);tab.store('section',section);tab.store('clicker',clicker);this.hideSection(index);return this},removeTab:function(index){var now=this.tabs[this.now];if(this.now==index){if(index>0)this.show(index-1);else if(index<this.tabs.length)this.show(index+1)}this.now=this.tabs.indexOf(now);return this},moveTab:function(from,to){var tab=this.tabs[from];var clicker=tab.retrieve('clicker');var section=tab.retrieve('section');var toTab=this.tabs[to];var toClicker=toTab.retrieve('clicker');var toSection=toTab.retrieve('section');this.tabs.erase(tab).splice(to,0,tab);tab.inject(toTab,'before');clicker.inject(toClicker,'before');section.inject(toSection,'before');return this},show:function(i){if(!$chk(this.now)){this.tabs.each(function(tab,idx){if(i!=idx)this.hideSection(idx)},this)}this.showSection(i).save(i);return this},save:function(index){if(this.options.cookieName)Cookie.write(this.options.cookieName,index,{duration:this.options.cookieDays});return this},recall:function(){return(this.options.cookieName)?$pick(Cookie.read(this.options.cookieName),false):false},hideSection:function(idx){var tab=this.tabs[idx];if(!tab)return this;var sect=tab.retrieve('section');if(!sect)return this;if(sect.getStyle('display')!='none'){this.lastHeight=sect.getSize().y;sect.setStyle('display','none');tab.swapClass(this.options.selectedClass,this.options.deselectedClass);this.fireEvent('onBackground',[idx,sect,tab])}return this},showSection:function(idx){var tab=this.tabs[idx];if(!tab)return this;var sect=tab.retrieve('section');if(!sect)return this;var smoothOk=this.options.smooth&&(!Browser.Engine.trident4||(Browser.Engine.trident4&&sect.fxOpacityOk()));if(this.now!=idx){if(!tab.retrieve('tabFx'))tab.store('tabFx',new Fx.Morph(sect,this.options.effectOptions));var start={display:'block',overflow:'hidden'};if(smoothOk)start.opacity=0;var effect=false;if(smoothOk){effect={opacity:1}}else if(sect.getStyle('opacity').toInt()<1){sect.setStyle('opacity',1);if(!this.options.smoothSize)this.fireEvent('onActiveAfterFx',[idx,sect,tab])}if(this.options.smoothSize){var size=sect.getDimensions().height;if($chk(this.options.maxSize)&&this.options.maxSize<size)size=this.options.maxSize;if(!effect)effect={};effect.height=size}if($chk(this.now))this.hideSection(this.now);if(this.options.smoothSize&&this.lastHeight)start.height=this.lastHeight;sect.setStyles(start);if(effect){tab.retrieve('tabFx').start(effect).chain(function(){this.fireEvent('onActiveAfterFx',[idx,sect,tab]);sect.setStyle("height","auto")}.bind(this))}this.now=idx;this.fireEvent('onActive',[idx,sect,tab])}tab.swapClass(this.options.deselectedClass,this.options.selectedClass);return this}});