/******************************************************************************
* cCatNavig.js
*******************************************************************************

*******************************************************************************
*                                                                             *
* Copyright 2000-2003								                          *
*                                                                             *
******************************************************************************/

function _cCatSubmitForm(form,viewGID)
{
	var ctrlControl = form.elements["ctrl"+viewGID];
	if (ctrlControl != null)
		ctrlControl.value = "ok";
	form.submit();
}

function cCatGoToPage(viewGID,pageNumber)
{
	var form = document.forms["FORM"+viewGID];
	form.elements["p"+viewGID].value=pageNumber;
	_cCatSubmitForm(form,viewGID);
	return false;
}

function cCatShowInPlaceCardView(viewGID,inPlaceCardViewGID,cardPos)
{
	var form = document.forms["FORM"+viewGID];
	form.elements["cardView"+viewGID].value=inPlaceCardViewGID;
	form.elements["p"+viewGID].value=cardPos;
	_cCatSubmitForm(form,viewGID);
	return false;
}

function cCatSort(viewGID,columnID,order)
{
	var form = document.forms["FORM"+viewGID];
	form.elements["sc"+viewGID].value=columnID;
	form.elements["so"+viewGID].value=order;
	_cCatSubmitForm(form,viewGID);
	return false;
}

// selection support

// global functions

function cCatRegisterSelectEvent(selectionId,cardId,handler,params)
{
	var selHandler = cCatSelectionHandler.prototype.getSelectionHandler(selectionId);
	selHandler.addHandler(cardId,handler,params);
}

function cCatFireSelChangeEvent(selectionId,cardId,isIn)
{
	var selHandler = cCatSelectionHandler.prototype.getSelectionHandler(selectionId);
	selHandler.fireEvent(cardId,isIn);
}

function cCatToggleInnerHTML(params,isIn)
{
	var htmlElemId = params[0];
	var htmlElem = document.getElementById(htmlElemId);
	htmlElem.innerHTML = isIn?unescape(params[2]):unescape(params[1]);
}

//
// cCatSelectionHandler
//
// Each instance manage events associated to a selection
//

function cCatSelectionHandler(selectionId)
{
	this.selectionId = selectionId;
	this.globalHandlers = new Array();
	this.cardHandlers = new Array();
}

cCatSelectionHandler.prototype.addHandler = function(cardId,handler,params)
{
	var objHandler = new Object();
	objHandler.handler = handler;
	objHandler.params = params;
	if (cardId == null)
		this.globalHandlers[this.globalHandlers.length] = objHandler;
	else
	{
		var cardHandlers = this.cardHandlers[''+cardId];
		if (cardHandlers == null)
		{
			cardHandlers = new Array();
			this.cardHandlers[''+cardId] = cardHandlers;
		}
		cardHandlers[cardHandlers.length] = objHandler;
	}	
}

cCatSelectionHandler.prototype.fireEvent = function(cardId,isIn)
{
	var cardHandlers = this.cardHandlers[''+cardId];
	if (cardHandlers != null)
	{
		for (var i=0;i<cardHandlers.length;i++)
			cardHandlers[i].handler(cardHandlers[i].params,isIn);
	}
	for (var i=0;i<this.globalHandlers.length;i++)
		this.globalHandlers[i].handler(this.globalHandlers[i].params,isIn);
}

// static members
cCatSelectionHandler.prototype.sHandlers = new Array();
cCatSelectionHandler.prototype.getSelectionHandler = function(selectionId)
{
	var handler = cCatSelectionHandler.prototype.sHandlers[selectionId];
	if (handler == null)
	{
		handler = new cCatSelectionHandler(selectionId);
		cCatSelectionHandler.prototype.sHandlers[selectionId] = handler;
	}
	return handler;
}