//_______________________________________________________________________
function i_Button(id_str,classname_str,tooltip_str,disabled_bool){
// object to manage all drag and drop operations

	// setup paramters
	var self						= this;
	var initialEnabledState_bool 	= !disabled_bool;
	delete disabled_bool;
	
	var XHTML_h;
	var container_h;
	var liner_h;
	
	var containerClassname_str		= 'button';
	var depressed_an				= 'depressed';
	var enabled_an					= 'enabled'
	
	// define accessor methods
	this.__defineGetter__('XHTML_h',getXHTML);
	this.__defineGetter__('enabled',function(){return liner_h.getAttribute(enabled_an)=='true'? true : false;});

	//-------------------------------------------------------------------
	function createXHTML(){
	
		// setup container
		container_h				= document.createHElement('div',null,id_str);
		var classClassName		= classname_str? classname_str : '';
		var instanceClassName	= containerClassname_str;
		container_h.className	= classClassName+' '+instanceClassName;
		
		// setup liner
		liner_h					= container_h.createChild('div');
		liner_h.title			= tooltip_str;
		
		// add event handling
		container_h.addEventListener('click',handleClick,false);
		container_h.addEventListener('mousedown',handleMousedown,false);
		container_h.addEventListener('mouseup',handleMouseup,false);
		container_h.addEventListener('mouseout',handleMouseout,false);
		
		// create references
		XHTML_h					= container_h;
		setEnabledState(initialEnabledState_bool);
	};
	//-------------------------------------------------------------------
	function getXHTML(){
	
		XHTML_h? null: createXHTML();
		return XHTML_h;
	};
	//-------------------------------------------------------------------
	function displayState(){
	// sets up the appropriate classname for the button given it's current state
		
		liner_h.setAttribute(enabled_an,enabled);
	};
	//-------------------------------------------------------------------
	function handleClick (evt){
	
		self.enabled? self.handleClick() : null;
	};
	//-------------------------------------------------------------------
	function setDepressState(newState_bool){
	
		liner_h.setAttribute(depressed_an,newState_bool);	
	};
	//-------------------------------------------------------------------
	function setEnabledState(newState_bool){
		
		liner_h.setAttribute(enabled_an,newState_bool);
	};
	//-------------------------------------------------------------------
	function handleMousedown(evt){

		setDepressState(true);
	};
	//-------------------------------------------------------------------
	function handleMouseup(evt){
	
		setDepressState(false);
	};
	//-------------------------------------------------------------------
	function handleMouseout(evt){
	
		setDepressState(false);
	};
	//___________________________________________________________________
	this.enable = function(){
	
		setEnabledState(true);
	};
	//___________________________________________________________________
	this.disable = function(){
	
		setEnabledState(false);
	};
	//___________________________________________________________________
};	//___________________________________________________________________
	i_Button.prototype.handleClick = function(){
	// conduit to owner object
	};
//_______________________________________________________________________