var sliding_tabs=new Class({initialize:function(d,a,b){this.options={active_tab_class:"active_tab",tab_margin_left:"10px",tab_margin_right:"10px",tab_margin_top:"10px",tab_margin_bottom:"10px",scroll_fx_duration:500,event:"click",orientation:"horizontal",scroll_orientation:"vertical",container_reposition:false,container:null,offset:null,outer_container:null,initial_tab:0,classes:{tab_overflow:"tab_overflow",tab_container:"tab_container",tab_body_container:"tab_body_container"}};var c=this.options.classes;$extend(c,b.classes);$extend(this.options,b);this.options.classes=c;if(this.options.orientation=="horizontal"){this.flow="left";this.side="right";this.dim="width";this.cart="x"}else{this.flow="top";this.side="bottom";this.dim="height";this.cart="y"}this.bodies=a;this.tabs=d;if(this.options.orientation=="horizontal"){this.tabs.setStyles({position:"relative","float":this.flow})}else{this.tabs.setStyles({position:"relative"})}this.tab_overflow=new Element("div").setProperty("class",this.options.classes.tab_overflow);this.tab_overflow.injectBefore(this.tabs[0]);this.tab_container=new Element("div").setProperty("class",this.options.classes.tab_container);this.tab_container.injectInside(this.tab_overflow);this.tab_body_container=new Element("div").setProperty("class",this.options.classes.tab_body_container);this.tab_body_container.injectBefore(this.bodies[0]);if(this.options.orientation!="horizontal"){this.tab_overflow.setStyle("float","left")}this.bodies.each(function(f,e){f.injectInside(this.tab_body_container)}.bind(this));if(this.options.container_reposition){if(this.options.outer_container.toLowerCase()=="window"){this.outer_container_dim=this.options.scroll_orientation=="vertical"?Window.getSize().height:Window.getSize().width}else{this.outer_container_dim=this.options.scroll_orientation=="vertical"?$(this.options.outer_container).getStyle("height").toInt():$(this.options.outer_container).getStyle("width").toInt()}this.scroll_flow=this.options.scroll_orientation=="vertical"?"top":"left";this.container_fx=new Fx.Tween($(this.options.container),{link:"cancel"})}this.body_fx=new Fx.Scroll(this.tab_body_container,{link:"cancel",duration:this.options.scroll_fx_duration});this.tab_items=[];this.tabs_dim=0;this.tabs.each(function(f,e){this.tabs_dim+=f.getStyle(this.dim).toInt()+f.getStyle("border-"+this.side+"-width").toInt()+f.getStyle("border-"+this.flow+"-width").toInt()+f.getStyle("margin-"+this.flow).toInt()+f.getStyle("margin-"+this.side).toInt()+f.getStyle("padding-"+this.flow).toInt()+f.getStyle("padding-"+this.side).toInt();f.injectInside(this.tab_container);f.setStyle(this.flow,this.options["tab_margin_"+this.flow]);this.tab_items[e]=new tab_item(f,this.bodies[e],this)}.bind(this));this.tab_container.setStyle(this.dim,(this.tabs_dim+this.options["tab_margin_"+this.flow].toInt()+this.options["tab_margin_"+this.side].toInt())+"px");this.tab_fx=new Fx.Scroll(this.tab_overflow,{duration:300,link:"cancel",onComplete:function(){this.tab_overflow.addEvent("mousemove",this.mouse_move.bind(this))}.bind(this)});this.tab_overflow.addEvent("mouseenter",function(f){f=new Event(f).stop();if(this.options.orientation=="horizontal"){this.tab_fx.start(this.get_position(f))}else{this.tab_fx.start(0,this.get_position(f))}}.bind(this));this.tab_overflow.addEvent("mouseleave",function(){this.tab_overflow.removeEvents("mousemove")}.bind(this));this.active_item=this.tab_items[this.options.initial_tab];this.tabs[this.options.initial_tab].addClass(this.options.active_tab_class);this.tab_body_container.setStyle(this.tab_items[this.options.initial_tab].dim,this.tab_items[this.options.initial_tab].body_dim);this.body_event_fx=new Fx.Tween(this.tab_body_container,{duration:0,link:"cancel"});new Fx.Scroll(this.tab_body_container,{link:"cancel",duration:0}).toElement(this.tab_items[this.options.initial_tab].body);new Fx.Scroll(this.tab_overflow,{link:"cancel",duration:0}).toElement(this.tab_items[this.options.initial_tab].item)},mouse_move:function(a){a=new Event(a).stop();this.tab_fx.cancel();if(this.options.orientation=="horizontal"){this.tab_overflow.scrollLeft=this.get_position(a)}else{this.tab_overflow.scrollTop=this.get_position(a)}},get_position:function(c){var f=this.tab_overflow.getPosition();var b=this.tab_overflow.getScroll();var d=Window.getScroll()[this.cart]+c.client[this.cart]-(f[this.cart]+b[this.cart]);var a=d*(this.tab_container.getStyle(this.dim).toInt())/this.tab_overflow.getStyle(this.dim).toInt()-d;return a}});var tab_item=new Class({initialize:function(c,a,b){this.item=c;this.body=a;this.tab_obj=b;this.dim=this.tab_obj.options.scroll_orientation=="vertical"?"height":"width";if(this.tab_obj.options.scroll_orientation=="vertical"){this.body_dim=(this.body.getStyle("height").toInt()+this.body.getStyle("border-bottom-width").toInt()+this.body.getStyle("border-top-width").toInt()+this.body.getStyle("margin-bottom").toInt()+this.body.getStyle("margin-top").toInt()+this.body.getStyle("padding-bottom").toInt()+this.body.getStyle("padding-top").toInt())+"px"}else{this.body_dim=(this.body.getStyle("width").toInt()+this.body.getStyle("border-right-width").toInt()+this.body.getStyle("border-left-width").toInt()+this.body.getStyle("margin-right").toInt()+this.body.getStyle("margin-left").toInt()+this.body.getStyle("padding-right").toInt()+this.body.getStyle("padding-left").toInt())+"px";this.body.setStyle("float","left")}this.item.addEvent(this.tab_obj.options.event,this.on_event.bind(this));this.container_flow=(this.tab_obj.outer_container_dim-this.body_dim.toInt()+this.tab_obj.options.offset)/2},on_event:function(a){a=new Event(a).stop();if($defined(this.tab_obj.active_item)){this.tab_obj.active_item.item.removeClass(this.tab_obj.options.active_tab_class)}this.item.addClass(this.tab_obj.options.active_tab_class);if(this.tab_obj.options.container_reposition){this.tab_obj.container_fx.start(this.tab_obj.scroll_flow,this.container_flow+"px")}this.tab_obj.body_event_fx.removeEvents("complete");this.tab_obj.body_event_fx.addEvent("complete",function(){this.tab_obj.body_fx.toElement(this.body);this.tab_obj.active_item=this}.bind(this));this.tab_obj.body_event_fx.start(this.dim,this.body_dim)}});