


// Copyright (c) NimbleCat, 2008

/*
* this object implements a button
* 
* */
// make sure that the required includes are there
 if (typeof NC == 'undefined') {
       alert("menubutton.js requires the NC JavaScript framework");
 }
 
 if (typeof NC.widget.Button == 'undefined') {
       alert("menubutton.js requires button.js");
 }
 if (typeof NC.widget.Menu == 'undefined') {
       alert("menubutton.js requires menu.js");
 }
 
  /* constructor */ 
  NC.widget.MenuButton = function( buttonId, menuId) {
		var fnSuperClass = NC.widget.MenuButton.superclass.constructor;
		fnSuperClass.call( this, buttonId);
		var buttonElement = document.getElementById( buttonId);
		buttonElement.menuId = menuId;
		buttonElement.buttonId = buttonId;
		this.menuId = menuId;
		this.buttonId = buttonId;
  }
  
    NC.lang.extend(NC.widget.MenuButton, NC.widget.Button, 
  	{
		_click: function( event)
		{
			var target =  NC.core.Event.getEventTarget(event);
			if (NC.widget.MenuManager.isMenuVisible( target.menuId)) {
				NC.widget.MenuManager.hideMenu( target.menuId);
			}
			else {
				var pos = NC.util.Dom.getAbsoluteXY(target);
				var region = NC.util.Region.getRegion( target);
				var menupos = [region.left + 3, region.bottom];
				NC.widget.MenuManager.showMenu( target.menuId, menupos, target.buttonId);
			}
			/*
			var menuElement = document.getElementById( target.menuId);
			NC.util.Dom.setAbsoluteXY( menuElement, menupos, true);
			var vis = NC.util.Dom.getStyle( menuElement, 'visibility');
			vis = (vis == 'hidden' ? 'visible' : 'hidden');
			NC.util.Dom.setStyle( menuElement, 'visibility', vis);
			*/
			
		},
		
	  	init: function() {
            NC.widget.MenuButton.superclass.init.call(this);
			this.addDomEvent(NC.core.EventType.Click, this._click, false);
			NC.widget.ElementManager.register( this.buttonId, this);
	  		return "init button function";
	  	},


 		render:function() {
 			return "render";
 		},
 		
 		getMenuId: function() {
 			return this.menuId;
 		},
	  	
 		getButtonId: function() {
 			return this.buttonId;
 		},
 		
 		onMenuItemSelected: function( event, optionElement, optionLabel, optionValue) {
 			var button = document.getElementById( this.domId);
 			button.value = optionLabel;
 			NC.widget.Attribute.set( button, NC.widget.Attribute.SelectedOption, optionValue);
 			this.fireEvent( NC.core.EventType.Change);
 		}
	  	
  	});
  
  
 
 