//____________________________________________________________________
function Panel(panelset,parentNode_h){
	
	var self					= this;
	
	var classname_str			= 'panel'
	var XHTML_h;
	
	var broadcaster				= new Broadcaster(this);
	broadcaster.createEventType('beforeSelect');
	broadcaster.createEventType('select');
	broadcaster.createEventType('deselect');
	
	panelset.addEventListener('switchSelection',handleSelectionSwitch);
	
	createXHTML();
	
	this.__defineGetter__('XHTML_h',function(){return XHTML_h;});
	this.__defineGetter__('selected',function(){return XHTML_h.parentNode? true : false;});
	
	//----------------------------------------------------------------
	function createXHTML(){
		
		XHTML_h					= document.createHElement('div');
		XHTML_h.className		= classname_str;
	};
	//----------------------------------------------------------------
	function handleSelectionSwitch(newSelection){
		
		newSelection==self? null : self.deselect();
	};
	//----------------------------------------------------------------
	function handleSelection(){
		
		parentNode_h.appendChild(XHTML_h);
		broadcaster.triggerEvent('select');
		
		// <bug> 
		// force window redraw - rounded corners don't always assume new positions
		window.app.redraw();
		// </bug>
	};
	//________________________________________________________________
	this.deselect = function(){
		
		if(XHTML_h.parentNode){
			parentNode_h.removeChild(XHTML_h);
			broadcaster.triggerEvent('deselect');
		}
	};
	//________________________________________________________________
	this.createSelector = function(element_h){
		
		return new SelectionElement(self,element_h);
	};
	//________________________________________________________________
	this.select = function(){
		
		if(panelset.requestSelection(self)){
			handleSelection();
		}
	};
};	//________________________________________________________________
//____________________________________________________________________