﻿
var _panelDisplayOrder = [];
var _manager = new YAHOO.widget.OverlayManager();
var _panelWidth = 250;

function addPanel(panelID){
	var a = _manager.overlays;
	var alreadyRegistered = false;
	for(var i = 0; i < a.length; i++){
		if(a[i].id == panelID){
			alreadyRegistered = true;
		}
	}
	if(!alreadyRegistered){
		//alert(panelID + " Not registered");
		var panel = new YAHOO.widget.Panel(panelID, { xy:[0,0], visible:true, width:_panelWidth + "px", draggable:false, close:false} );
		panel.render();
		panel.beforeHideEvent.subscribe(function(){removePanel(panel.id);});
		_manager.register(panel);
		_panelDisplayOrder.unshift(panelID);
	}
}

function removePanel(panelID){
	var panel = _manager.find(panelID);
	if(panel != null){
		_manager.remove(panel);
		//	_panelDisplayOrder.shift(panelID);
		var arr = new Array();
		for(var i = 0; i < _panelDisplayOrder.length; i++){
			//alert(_panelDisplayOrder[i]);
			if(_panelDisplayOrder[i] != panelID){
				arr.push(_panelDisplayOrder[i]);
			}
		}
		_panelDisplayOrder = arr;
	}
}

function showPanel(panelID){
    //alert(_manager.find(panelID));
    if(_manager.find(panelID) == null){
        addPanel(panelID);
        showPanel(panelID);
    }else{
        //shows an already rendered but maybe minimized panel
	    var panelContainerElement = document.getElementById("panelContainer");
	    var panelContainerDimension = YAHOO.util.Dom.getRegion("panelContainer");
	    var availableHeight = panelContainerDimension.bottom - panelContainerDimension.top; //leftPanel.offsetHeight;
	    var headerHeight = 30;
	    var displayedPanelHeight = availableHeight - ((_panelDisplayOrder.length) * headerHeight);
	    var topPos = panelContainerDimension.top;
	    var leftPos = panelContainerDimension.left;

	    for(var i = 0; i < _panelDisplayOrder.length; i++){
		    var selectedPanel = _manager.find(_panelDisplayOrder[i]);	
		    selectedPanel.moveTo(leftPos,topPos);
		    _manager.showAll;
		    if(_panelDisplayOrder[i] == panelID){
			    expandPanel(_panelDisplayOrder[i], displayedPanelHeight);
		    }else{
			    minimizePanel(_panelDisplayOrder[i]);
		    }
		    topPos += selectedPanel.header.offsetHeight + selectedPanel.body.offsetHeight +selectedPanel.footer.offsetHeight;
		    YAHOO.util.Dom.setStyle(_panelDisplayOrder[i]+"_c", "visibility", "visible");		
	    }
	}
}

function expandPanel(panelID, height){
    YAHOO.util.Dom.setStyle(panelID+"_b", "display", "block");
	YAHOO.util.Dom.setStyle(panelID+"_f", "display", "block");
	
	try{
        var selectedPanel = _manager.find(panelID);	
        var selectedPanelFooter = YAHOO.util.Dom.getRegion(selectedPanel.footer.id);
        if(!(height == "" || height == "undefined")){
		    selectedPanel.body.style.height = height - (selectedPanelFooter.bottom - selectedPanelFooter.top);
	    }
	}catch(e){
	}
}

function minimizePanel(panelID){
	YAHOO.util.Dom.setStyle(panelID+"_b", "display", "none");
	YAHOO.util.Dom.setStyle(panelID+"_f", "display", "none");
}

function hideAllPanels(){
    for(var i = 0; i < _panelDisplayOrder.length; i++){
		var selectedPanel = _manager.find(_panelDisplayOrder[i]);	
		if(selectedPanel != null){
		    YAHOO.util.Dom.setStyle(_panelDisplayOrder[i]+"_c", "visibility", "hidden");		
		}
	}
}


