/************************************************************************************************************
	@fileoverview
	Floating window
	
	Copyright (C) October, 2005  Alf Magne Kalleland(post@dhtmlgoodies.com)
	
	This library is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.
	
	This library is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.
	
	You should have received a copy of the GNU Lesser General Public
	License along with this library; if not, write to the Free Software
	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
	
	
	www.dhtmlgoodies.com 
	Alf Magne Kalleland

	/* Update LOG 
	
	January, 28th - Fixed problem when double clicking on a pane(i.e. expanding and collapsing).
	
*/

var xpPanel_slideActive = true;				// Slide down/up active?
var xpPanel_slideSpeed = 10;				// Speed of slide
var xpPanel_onlyOneExpandedPane = true;		// Only one pane expanded at a time ?
	
var dhtmlgoodies_xpPane;
var dhtmlgoodies_paneIndex;
	
var savedActivePane = false;
var savedActiveSub = false;

var xpPanel_currentDirection = new Array();
	
var cookieNames = new Array();
	
	
var currentlyExpandedPane = false;
	
/*
These cookie functions are downloaded from 
http://www.mach5.com/support/analyzer/manual/html/General/CookiesJavaScript.htm
*/	
function Get_Cookie(name)
{ 
	var start = document.cookie.indexOf(name+"="); 
	var len = start+name.length+1; 
   
	if ((!start) && (name != document.cookie.substring(0,name.length)))
		return null; 
	if (start == -1)
		return null; 

	var end = document.cookie.indexOf(";", len); 
	if (end == -1)
		end = document.cookie.length; 

	return unescape(document.cookie.substring(len, end)); 
} 

// This function has been slightly modified
function Set_Cookie(name,value,expires,path,domain,secure) 
{ 
	expires = expires * 60*60*24*1000;
	var today = new Date();
	var expires_date = new Date( today.getTime() + (expires) );
	var cookieString = name + "=" +escape(value) + 
       ((expires) ? ";expires=" + expires_date.toGMTString() : "") + 
       ((path) ? ";path=" + path : "") + 
       ((domain) ? ";domain=" + domain : "") + 
       ((secure) ? ";secure" : ""); 
	document.cookie = cookieString; 
}

function cancelXpWidgetEvent()
{
	return false;	
}
	
function showHidePaneContent(e, inputObj)
{
	if (!inputObj)
		inputObj = this;
		
	var img = inputObj.getElementsByTagName('IMG')[0];
	var numericId = img.id.replace(/[^0-9]/g,'');
	var obj = document.getElementById('paneContent' + numericId);
	if (img.src.toLowerCase().indexOf('up')>=0)
	{
		currentlyExpandedPane = false;
		img.src = img.src.replace('up','down');
		if (xpPanel_slideActive)
		{
			obj.style.display ='block';
			xpPanel_currentDirection[obj.id] = (xpPanel_slideSpeed*-1);
			slidePane((xpPanel_slideSpeed*-1), obj.id);
		}
		else
		{
			obj.style.display = 'none';
		}

		if (cookieNames[numericId])
			Set_Cookie(cookieNames[numericId],'0',100000);
	}
	else
	{
		if (this)
		{
			if (currentlyExpandedPane && xpPanel_onlyOneExpandedPane)
				showHidePaneContent(false, currentlyExpandedPane);
			currentlyExpandedPane = this;	
		}
		else
		{
			currentlyExpandedPane = false;
		}

		img.src = img.src.replace('down','up');
		if (xpPanel_slideActive)
		{
			if (document.all)
			{
				obj.style.display = 'block';
			}
			xpPanel_currentDirection[obj.id] = xpPanel_slideSpeed;
			slidePane(xpPanel_slideSpeed,obj.id);
		}
		else
		{
			obj.style.display = 'block';
			subDiv = obj.getElementsByTagName('DIV')[0];
			obj.style.height = subDiv.offsetHeight + 'px';
		}
		
		if (cookieNames[numericId])
			Set_Cookie(cookieNames[numericId],'1',100000);
	}	
	return true;	
}
	
function slidePane(slideValue, id)
{
	if (slideValue!=xpPanel_currentDirection[id])
	{
		return false;
	}

	var activePane = document.getElementById(id);
	if (activePane == savedActivePane)
	{
		var subDiv = savedActiveSub;
	}
	else
	{
		var subDiv = activePane.getElementsByTagName('DIV')[0];
	}
	savedActivePane = activePane;
	savedActiveSub = subDiv;
		
	var height = activePane.offsetHeight;
	var innerHeight = subDiv.offsetHeight;
	height += slideValue;
	if (height < 0)
		height=0;
	if (height > innerHeight)
		height = innerHeight;
	
	if (document.all)
	{
		activePane.style.filter = 'alpha(opacity=' + Math.round((height / subDiv.offsetHeight)*100) + ')';
	}
	else
	{
		var opacity = (height / subDiv.offsetHeight);
		if (opacity == 0)
			opacity = 0.01;
		if (opacity == 1)
			opacity = 0.99;
		activePane.style.opacity = opacity;
	}
	
	if (slideValue < 0)
	{			
		activePane.style.height = height + 'px';
		subDiv.style.top = height - subDiv.offsetHeight + 'px';
		if (height > 0)
		{
			setTimeout('slidePane(' + slideValue + ',"' + id + '")',10);
		}
		else
		{
			if (document.all)
				activePane.style.display = 'none';
		}
	}
	else
	{			
		subDiv.style.top = height - subDiv.offsetHeight + 'px';
		activePane.style.height = height + 'px';
		if (height < innerHeight)
		{
			setTimeout('slidePane(' + slideValue + ',"' + id + '")',10);				
		}		
	}
}
	
function initDhtmlgoodies_xpPane(panelTitles,panelDisplayed,cookieArray)
{
	dhtmlgoodies_xpPane = document.getElementById('dhtmlgoodies_xpPane');
	var divs = dhtmlgoodies_xpPane.getElementsByTagName('DIV');
	dhtmlgoodies_paneIndex = 0;
	cookieNames = cookieArray;
	for (var no = 0; no < divs.length; no++)
	{
		if (divs[no].className == 'dhtmlgoodies_panel')
		{
			var outerContentDiv = document.createElement('DIV');	
			var contentDiv = divs[no].getElementsByTagName('DIV')[0];
			outerContentDiv.appendChild(contentDiv);	
			outerContentDiv.id = 'paneContent' + dhtmlgoodies_paneIndex;
			outerContentDiv.className = 'panelContent';
			var topBar = document.createElement('DIV');
			topBar.onselectstart = cancelXpWidgetEvent;
			topBar.onclick = showHidePaneContent;
			if (document.all)
				topBar.ondblclick = showHidePaneContent;
			topBar.style.position = 'relative';
			img_src = '/images/arrow_up.gif';
			
			if (cookieArray[dhtmlgoodies_paneIndex])
			{
				cookieValue = Get_Cookie(cookieArray[dhtmlgoodies_paneIndex]);
				if (cookieValue)
					panelDisplayed[dhtmlgoodies_paneIndex] = cookieValue == 1 ? true : false;
			}
			if (!panelDisplayed[dhtmlgoodies_paneIndex])
			{
				outerContentDiv.style.height = '0px';
				contentDiv.style.top = 0 - contentDiv.offsetHeight + 'px';
				if (document.all)
					outerContentDiv.style.display='none';
				img_src = '/images/arrow_down.gif';
			}
			
			topBar.innerHTML =
				'<table align="left" height="17" border="0" cellspacing="0" cellpadding="0">' +
				'<tr><td width="20" height="17" align="center"><img src="' + img_src + '" width="13" height="17" ' +
				' alt="" id="showHideButton' + dhtmlgoodies_paneIndex + '"></td><td><span>' + 
				panelTitles[dhtmlgoodies_paneIndex] + '</span></td></tr></table>';

			topBar.className = 'topBar';
			divs[no].appendChild(topBar);				
			divs[no].appendChild(outerContentDiv);	
			dhtmlgoodies_paneIndex++;			
		}			
	}
}

