// tab.js custom object for tab manipulation
// requires: prototype.js

var Tab = Class.create();

Tab.prototype = {

	initialize:function(o) {
		this.name = o.name;
	
		this.panelName = o.panelName;
		this.parentObject = global.panels['panel' + this.panelName];
		this.parentElement = this.parentObject.bodyElement;
		this.bodyElement = $(o.bodyElement);
		this.buttonElement = $(o.buttonElement)
		
		this.mouseOutObserver=this.onmouseout.bindAsEventListener(this);
		this.mouseOverObserver=this.onmouseover.bindAsEventListener(this);
		this.clickObserver=this.onclick.bindAsEventListener(this);
		
		Event.observe(this.buttonElement,'mouseout',this.mouseOutObserver,false);
		Event.observe(this.buttonElement,'mouseover',this.mouseOverObserver,false);
		Event.observe(this.buttonElement,'click',this.clickObserver,false);
		
		this.hide();
		
		return this;
	},

	open:function() {
		if(this.parentObject.activeTab !== undefined) {this.parentObject.activeTab.close()};		
		this.isOpen=true;
		this.show();
		this.parentObject.activeTab=this;
		if(this.setDeepLink!==undefined){this.setDeepLink();}
		setPanelHeight();
	},

	close:function() {
		this.isOpen=false;	
		this.hide();
		delete global.deepLink;
	},
	
	show:function()  {
		this.buttonElement.style.backgroundColor=global.colophon.tabButtonActiveColor;	
		Element.show(this.bodyElement);
	},
	
	hide:function() {
		this.buttonElement.style.backgroundColor='';	
		Element.hide(this.bodyElement);
	},
	
	onmouseover:function(e) {
		if(!this.isOpen){this.buttonElement.style.backgroundColor=global.colophon.tabButtonMouseOverColor};
	},

	onmouseout:function(e) {
		if(!this.isOpen){this.buttonElement.style.backgroundColor=global.colophon.tabButtonMouseOutColor;}
	},

	onclick:function(e){
		this.open();
	}	
}