
/**
#	author - igz @ zoomedia

* @namespace YAHOO.widget
* @class TabMenu
* @extends YAHOO.widget.Overlay
* @constructor
* @param {String}	el	The element ID representing the TabMenu <em>OR</em>
* @param {HTMLElement}	el	The element representing the TabMenu
* @param {Object}	userConfig	The configuration object literal containing the configuration that should be set for this Overlay. See configuration documentation for more details.
*/

var tab_menu_close_all_tabs_event = new YAHOO.util.CustomEvent("tab_menu_hide_all"); 

var ZOO_LIT_TAB_CLASS = "selected";

YAHOO.widget.TabMenu = function(el, userConfig) {
	YAHOO.widget.TabMenu.superclass.constructor.call(this, el, userConfig);
};

YAHOO.extend(YAHOO.widget.TabMenu, YAHOO.widget.Overlay);

YAHOO.widget.TabMenu.prototype.init = function(el, userConfig) {
	if (document.readyState && document.readyState != "complete") {
		var deferredInit = function() {
			this.init(el, userConfig);
		};
		YAHOO.util.Event.addListener(window, "load", deferredInit, this, true);
	} else {
		YAHOO.widget.TabMenu.superclass.init.call(this, el);

		this.beforeInitEvent.fire(YAHOO.widget.TabMenu);

		if (userConfig) {
			this.cfg.applyConfig(userConfig, true);
		}

		this.render();

		YAHOO.util.Event.addListener(userConfig.controller, "click", this.tab_menu_toggle, this);		
		tab_menu_close_all_tabs_event.subscribe(this._do_menu_close, this); 

//		this.cfg.setProperty('tab', YAHOO.util.Dom.get(userConfig.tab));	
		this.tab = YAHOO.util.Dom.get(userConfig.tab);

		this.initEvent.fire(YAHOO.widget.TabMenu);
	}
}


YAHOO.widget.TabMenu.prototype.initDefaultConfig = function() {
	YAHOO.widget.TabMenu.superclass.initDefaultConfig.call(this);

//	this.cfg.addProperty("visible", false);
}


YAHOO.widget.TabMenu.prototype.tab_menu_toggle = function(e, obj) {									
	if(obj.cfg.getProperty('visible')) {
		obj._tab_menu_close();
	} else {
		obj._tab_menu_show();
	}
	YAHOO.util.Event.stopEvent(e); // stop event, mainly to prevent the browser from going to #
}

YAHOO.widget.TabMenu.prototype._do_menu_close = function(type, args, me) {
	me._tab_menu_close();
}

YAHOO.widget.TabMenu.prototype._tab_menu_close = function() {
	YAHOO.util.Dom.setStyle(this.element, "overflow", "hidden");
	this.hide();
//	YAHOO.util.Dom.removeClass(this.cfg.getConfig('controller'), ZOO_LIT_TAB_CLASS);
	if(YAHOO.util.Dom.hasClass(this.tab, 'tab_menu_controller') && this.tab.title!='active') YAHOO.util.Dom.removeClass(this.tab, ZOO_LIT_TAB_CLASS);
	YAHOO.util.Event.removeListener(document, "click", this.handleMouseClick);
}

YAHOO.widget.TabMenu.prototype._tab_menu_show = function() {
	tab_menu_close_all_tabs_event.fire();
//	YAHOO.util.Dom.addClass(this.cfg.getProperty('tab'), ZOO_LIT_TAB_CLASS);	
	if(YAHOO.util.Dom.hasClass(this.tab, 'tab_menu_controller')) YAHOO.util.Dom.addClass(this.tab, ZOO_LIT_TAB_CLASS);
	this.show();	
	YAHOO.util.Dom.setStyle(this.element, "overflow", "auto");
	YAHOO.util.Event.addListener(document, "click", this.handleMouseClick, this);
}


YAHOO.widget.TabMenu.prototype.handleMouseClick = function(e, obj) {
	var oTarget = YAHOO.util.Event.getTarget(e);

	if(oTarget != obj.element && !YAHOO.util.Dom.isAncestor(obj.element, oTarget)) {
		obj._tab_menu_close();
	}
}