/*****************************************************************************
*
* File     : WmsPanel.js
* 
* Project  : WMS Viewer Client
* 
* Contents : 
*
* Author: Milan Trninic
*
* Copyright 1999-2005 Galdos Systems, Inc.
* All rights reserved.
* 
***|***************************|***********************|*******************|*/

/************************************************************************
*
*	Global declarations
*
*
*************************************************************************/

/************************************************************************
*
*	function:	WmsPanel
*
*	purpose:	Constructor
*
*************************************************************************/
function WmsPanel()
{
	// superclass
	var uiElement = document.getElementById("wmsPanel");
	this._superClass = StackedPanel;
	this._superClass(uiElement);
	
	// method assignments
	this.init = WmsPanel.init;
	this.setSize = WmsPanel.setSize;
	this.addServerHandler = WmsPanel.addServerHandler;
	this.removeServersHandler = WmsPanel.removeServersHandler;
	this.saveServersHandler = WmsPanel.saveServersHandler;
	this.setActiveServerHandler = WmsPanel.setActiveServerHandler;
	this.addServer = WmsPanel.addServer;
	this.removeServers = WmsPanel.removeServers;
	this.saveServers = WmsPanel.saveServers;
	this.setActiveServer = WmsPanel.setActiveServer;
	this.retrieveServers = WmsPanel.retrieveServers;
	this.getActiveServer = WmsPanel.getActiveServer;

	this.addServerAdapter = WmsPanel.addServerAdapter;
	this.removeServersAdapter = WmsPanel.removeServersAdapter;
	this.saveServersAdapter = WmsPanel.saveServersAdapter;
	this.setActiveServerAdapter = WmsPanel.setActiveServerAdapter;
	
	// instance field declarations
	this._superClass;
	this._wmsAddressUI;
	this._wmsAddressInputUI;
	this._manageAddressToolbar;
	this._setAddressToolbar;
	this._addressListUI;
	this._addressList;
	this._activeServer;
	
	// initialization
	this.init();
}

/************************************************************************
*
*	function:	init
*
*	purpose:	initializes the globals
*
*************************************************************************/
function WmsPanel.init()
{
	var toolbarUI = document.getElementById("setAddressToolbar");
	this._setAddressToolbar = new Toolbar(toolbarUI);

	toolbarUI = document.getElementById("manageAddressToolbar");
	this._manageAddressToolbar = new Toolbar(toolbarUI);

	var setButton = this._setAddressToolbar.getButton("setServerButton");
	var addButton = this._manageAddressToolbar.getButton("addServerButton");
	var removeButton = this._manageAddressToolbar.getButton("removeServersButton");
	//var saveButton = this._manageAddressToolbar.getButton("saveServersButton");
	
	setButton.setDisabledImagePath("images/upArrowDisabled.gif");
	//setButton.setSelectedImagePath("images/upArrowActive.gif");
	addButton.setDisabledImagePath("images/upArrowDisabled.gif");
	//addButton.setSelectedImagePath("images/upArrowActive.gif");
	removeButton.setDisabledImagePath("images/deleteDisabled.gif");
	//removeButton.setSelectedImagePath("images/deleteActive.gif");
	//saveButton.setDisabledImagePath("images/saveDisabled.gif");
	//saveButton.setSelectedImagePath("images/saveActive.gif");
	
	this._uiElement.setAttribute("dataTransfer", this);
	setButton.attachEvent("onclick", WmsPanel.setActiveServerAdapter);
	addButton.attachEvent("onclick", WmsPanel.addServerAdapter);
	removeButton.attachEvent("onclick", WmsPanel.removeServersAdapter);
	//saveButton.attachEvent("onclick", WmsPanel.saveServersAdapter);

	this._wmsAddressInputUI = document.getElementById("wmsAddressInput");
	this._wmsAddressUI = document.getElementById("wmsAddress");
	
	this._addressListUI = document.getElementById("serverList");
	this._addressList = new JsList(this._addressListUI);

	this.retrieveServers();
	this.setActiveServer(this._activeServer);
}

/************************************************************************
*
*	function:	setSize
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.setSize(width, height)
{
	// For explanation of the purpose of the temp variable, see the documentation
	this.temp = this._superClass.setSize;
	this.temp(width, height);

	this._wmsAddressUI.style.width = width * 0.98;
	
	this._addressListUI.style.width = width * 0.98;
	//this._addressListUI.style.height = height * 0.4;

	this._wmsAddressInputUI.style.width = width * 0.98;
}

/************************************************************************
*
*	function:	getActiveServer
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.getActiveServer()
{
	return this._activeServer;
}

/************************************************************************
*
*	function:	setActiveServerHandler
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.setActiveServerHandler(event)
{
	this.setActiveServer();
}

/************************************************************************
*
*	function:	setActiveServer
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.setActiveServer(server)
{
	if (server == null)
	{
		server = this._addressList.getSelectedItem();
		if (server == null) server = "";
	}
	this._wmsAddressUI.value = server;
	this._activeServer = server;
	this.saveServers();
	if (_controlPanel) _controlPanel.setToolbarEnabled(server != "");
}

/************************************************************************
*
*	function:	addServerHandler
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.addServerHandler(event)
{
	this.addServer();
}

/************************************************************************
*
*	function:	addServer
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.addServer(server)
{
	if (server == null) server = this._wmsAddressInputUI.value;
	if (server == "") return;
	this._addressList.addItem(server);
	this._addressList.selectItem(server);
	this.saveServers();
}

/************************************************************************
*
*	function:	removeServersHandler
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.removeServersHandler(event)
{
	this.removeServers();
}

/************************************************************************
*
*	function:	removeServers
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.removeServers()
{
	this._addressList.removeSelectedItems();
	this.saveServers();
}

/************************************************************************
*
*	function:	saveServersHandler
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.saveServersHandler(event)
{
	this.saveServers();
}

/************************************************************************
*
*	function:	saveServers
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.saveServers()
{
	var date = new Date("December 31, 2010");
	var todayDate = new Date();
	var servers = this._addressList.getItems();
	var size = servers.getSize();
	for (var index = 0; index < 19; index++)
	{
		if (index < size)
		{
			var server = trim(servers.get(index));
			document.cookie = "Server_" + index + "=" + escape(server) + "; expires=" + date.toGMTString();
		}
		else
		{
			var cookie = "Server_" + index + "=empty" + "; expires=" + todayDate.toGMTString();
			document.cookie = cookie;
		}
	}
	var activeServer = trim(this.getActiveServer());
	if (activeServer != "")
	{
		document.cookie = "ActiveServer=" + escape(activeServer) + "; expires=" + date.toGMTString();
	}
	else
	{
		document.cookie = "ActiveServer=" + escape(activeServer) + "; expires=" + todayDate.toGMTString();
	}

}

/************************************************************************
*
*	function:	retrieveServers
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.retrieveServers()
{
  var cookie = document.cookie.split(";");
  for (var index = 0; index < cookie.length; index++)
  {
  	if (trim(cookie[index]) == "") continue;
    var crumb = cookie[index].split("=");
    var name = trim(crumb[0]);
    var address = trim(crumb[1]);
  	if (address == "") continue;
    if (name == "ActiveServer") this.setActiveServer(unescape(address));
    else if (name.indexOf("Server") == 0) this._addressList.addItem(unescape(address));
  }
}

/************************************************************************
*
*	function:	Event handler adapters
*
*	purpose:	
*
*************************************************************************/
function WmsPanel.addServerAdapter(){target(event, WmsPanel).addServerHandler(event);}
function WmsPanel.removeServersAdapter(event){target(event, WmsPanel).removeServersHandler(event);}
function WmsPanel.saveServersAdapter(event){target(event, WmsPanel).saveServersHandler(event);}
function WmsPanel.setActiveServerAdapter(event){target(event, WmsPanel).setActiveServerHandler(event);}

