
comp_tab={tabs:[],cur_tab:0,reset:function(){this.tabs=[];this.cur_tab=0;if(console)console.log('comp_tab reset');}}
TabComponent=Class.create();TabComponent.prototype={initialize:function(target,action){this.id='tab_'+target;this.self=$(this.id);this.target=target;this.action=action;this.tab_num=comp_tab.tabs.length;this.injectBehaviour();if(this.tab_num==comp_tab.cur_tab){var me=this;page_init.scripts.tabs=function(){me.show(true);};}
if(console)console.log('GLOBAL CUR: '+comp_tab.cur_tab+' tab_num: '+this.tab_num);if(comp_tab.cur_tab==this.tab_num){var classes=this.self.className.split(" ");classes.push('on');this.self.className=classes.join(" ");}else{new Effect.Opacity(this.id,{from:0.5,to:0.5});}},injectBehaviour:function(){this.self.onclick=this.tabClick.bindAsEventListener(this);this.self.onmouseover=this.tabOver.bindAsEventListener(this);this.self.onmouseout=this.tabOut.bindAsEventListener(this);},tabClick:function(e){if(console)console.log('CUR TAB: '+comp_tab.cur_tab+' act: '+this.tab_num);if(comp_tab.cur_tab!=this.tab_num){comp_tab.tabs[comp_tab.cur_tab].hide(this);}
this.self.style.cursor='';this.trigger();},trigger:function(){if(this.action){if(console)console.log('ACTION COMMAND: '+this.action);var regExp=/^javascript:/;if(regExp.test(this.action)){eval(this.action.replace('javascript:',''));}else{document.location=this.action;}}},tabOver:function(e){this.self.style.cursor='pointer';},tabOut:function(e){this.self.style.cursor='';},show:function(){if(console)console.log('Show: '+this.id);var classes=this.self.className.split(" ");classes.push('on');this.self.className=classes.join(" ");comp_tab.cur_tab=this.tab_num;var e=new Effect.Opacity(this.id,{duration:0.25,from:0.5,to:1.0});if(this.action){this.trigger();}else{var effect=new Effect.Appear($(this.target),{duration:0.25});}},hide:function(caller){if(console)console.log('Hide: '+this.id);var classes=this.self.className.split(" ");classes.pop();this.self.className=classes.join(" ");var e=new Effect.Opacity(this.id,{duration:0.25,from:1.0,to:0.5});if(this.action){this.trigger();}else{if(console)console.log('HIDE Target: '+this.target);var effect=new Effect.Fade($(this.target),{duration:0.25,afterFinish:function(){caller.show();}});}}};
