///////////////////////////////////////////////////////////////////////////////
//  Author      : Mahendra Parmar
//  Date        : Tuesday, June 17, 2003
//  Description : To handle hidden param on client side
//  Copyright   : (c) Avani Cimcon, 2003
///////////////////////////////////////////////////////////////////////////////
// Modification History   :
///////////////////////////////////////////////////////////////////////////////
// Code            Date             Description
//                 By
///////////////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Friday, April 25, 2003
// Object : To handle hidden param on client side


function HiddenParameter()
{

	// Properties
	this.sHiddenParam = "";
	this.aHiddenParam = new Array();
	this.aClientParam = new Array();
	this.aServerParam = new Array();
	this.sSeparator = "††";
	this.sClientSeparator = "@@";
	this.aReservedCharIdentifiers = new Array();
		this.aReservedCharIdentifiers["ÉÊË"] = "\"";
		this.aReservedCharIdentifiers["ÌÍÎ"] = "\'";

	// Methods
	this.setHiddenParam = MMP1706031850_setHiddenParam;

	this.getClientParams = MMP1706031850_getClientParams;
	this.getServerParams = MMP1706031850_getServerParams;

	this.decodeReservedChars = MMP1706031850_decodeReservedChars;

	this.paramExists = MMP1706031850_paramExists;
	this.clientParamExists = MMP1706031850_clientParamExists;
	this.serverParamExists = MMP1706031850_serverParamExists;

	this.getParam = MMP1706031850_getParam;
	this.addParam = MMP1706031850_addParam;
	this.removeParam = MMP1706031850_removeParam;
	this.getClientParam = MMP1706031850_getClientParam;
	this.addClientParam = MMP1706031850_addClientParam;
	this.removeClientParam = MMP1706031850_removeClientParam;
	this.getServerParam = MMP1706031850_getServerParam;
	this.addServerParam = MMP1706031850_addServerParam;
	this.removeServerParam = MMP1706031850_removeServerParam;

	this.trimAll = MMP1706031850_trimAll;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Saturday, April 26, 2003
// Method : To set hidden parameter string

function MMP1706031850_setHiddenParam(sHiddenParam)
{
	this.sHiddenParam = String(sHiddenParam);

	var aKeyNValues = new Array();
	if (this.sHiddenParam != "")
	{
		aKeyNValues = this.sHiddenParam.split(this.sSeparator);
	}

	var i;
	var sKey = "";
	var sValue = "";
	var iRet;

	for (i=0; i<aKeyNValues.length; i++)
	{
		iRet = aKeyNValues[i].search("=");
		sKey = aKeyNValues[i].substring(0, iRet);
		sValue = aKeyNValues[i].substring(iRet+1, aKeyNValues[i].length);

		// Add after decode
		this.aHiddenParam[this.decodeReservedChars(sKey)] = this.decodeReservedChars(sValue);

		// Also add as client param
		this.aClientParam[this.decodeReservedChars(sKey)] = this.decodeReservedChars(sValue);
	}
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To get client side hidden parameter

function MMP1706031850_getClientParams()
{
	var iCtr = 0;
	var sClientParam = "";
	var sKey;

	for(sKey in this.aClientParam)
	{
		if (this.aClientParam[sKey] == null)
		{
			continue;
		}

		if (iCtr == 0)
		{
			sClientParam +=  sKey + "=" + this.aClientParam[sKey] ;
		}
		else
		{
			sClientParam +=  this.sClientSeparator + sKey + "=" + this.aClientParam[sKey] ;
		}
		iCtr++;
	}

	return sClientParam;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To get server side hidden parameter

function MMP1706031850_getServerParams()
{
	var iCtr = 0;
	var sServerParam = "";
	var sKey;

	for(sKey in this.aServerParam)
	{
		if (this.aServerParam[sKey] == null)
		{
			continue;
		}

		if (iCtr == 0)
		{
			sServerParam +=  sKey + "=" + this.aServerParam[sKey] ;
		}
		else
		{
			sServerParam +=  this.sClientSeparator + sKey + "=" + this.aServerParam[sKey] ;
		}
		iCtr++;
	}

	return sServerParam;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Friday, April 25, 2003
// Method : To decode reserved chars

function MMP1706031850_decodeReservedChars(sSTR)
{
	var sKeyReserved;

	for (sKeyReserved in this.aReservedCharIdentifiers)
	{
		while(sSTR.search(sKeyReserved) != -1)
		{
			sSTR = sSTR.replace(sKeyReserved, this.aReservedCharIdentifiers[sKeyReserved]);
		}
	}

	return sSTR;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Friday, April 25, 2003
// Method : To check if parameter exists

function MMP1706031850_paramExists(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.aHiddenParam[sKeyName] == null)
		return false;
	else
		return true;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To check if client parameter exists

function MMP1706031850_clientParamExists(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.aClientParam[sKeyName] == null)
		return false;
	else
		return true;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To check if server parameter exists

function MMP1706031850_serverParamExists(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.aServerParam[sKeyName] == null)
		return false;
	else
		return true;
}
/////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Friday, April 25, 2003
// Method : To get parameter value for the passed parameter name

function MMP1706031850_getParam(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.paramExists(sKeyName))
		return this.aHiddenParam[sKeyName];
	else
		return null;
}
/////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Saturday, April 26, 2003
// Method : To add param

function MMP1706031850_addParam(sKey, sValue, bReplace)
{
	sKey = String(sKey);
	sValue = String(sValue);

	if (this.trimAll(sKey, " ") == "")
	{
		return false;
	}

	if (bReplace || (!bReplace && !this.paramExists(sKey)))
	{
		this.aHiddenParam[sKey] = sValue;
	}

	return true;
}
///////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Thursday, June 26, 2003
// Method : To remove param

function MMP1706031850_removeParam(sKey)
{
	if (this.paramExists(sKey))
	{
		this.aHiddenParam[sKey] = null;
	}
}
///////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To get client parameter value 

function MMP1706031850_getClientParam(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.clientParamExists(sKeyName))
		return this.aClientParam[sKeyName];
	else
		return null;
}
/////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To add client param

function MMP1706031850_addClientParam(sKey, sValue, bReplace)
{
	sKey = String(sKey);
	sValue = String(sValue);

	if (this.trimAll(sKey, " ") == "")
	{
		return false;
	}

	if (bReplace || (!bReplace && !this.clientParamExists(sKey)))
	{
		this.aClientParam[sKey] = sValue;
	}

	return true;
}
///////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Thursday, June 26, 2003
// Method : To remove client param

function MMP1706031850_removeClientParam(sKey)
{
	if (this.clientParamExists(sKey))
	{
		this.aClientParam[sKey] = null;
	}
}
///////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To get server parameter value 

function MMP1706031850_getServerParam(sKeyName)
{
	sKeyName = String(sKeyName);

	if (this.serverParamExists(sKeyName))
		return this.aServerParam[sKeyName];
	else
		return null;
}
/////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Tuesday, June 17, 2003
// Method : To add server param

function MMP1706031850_addServerParam(sKey, sValue, bReplace)
{
	sKey = String(sKey);
	sValue = String(sValue);

	if (this.trimAll(sKey, " ") == "")
	{
		return false;
	}

	if (bReplace || (!bReplace && !this.serverParamExists(sKey)))
	{
		this.aServerParam[sKey] = sValue;
	}

	return true;
}
///////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author : Mahendra Parmar
// Date   : Thursday, June 26, 2003
// Method : To remove client param

function MMP1706031850_removeServerParam(sKey)
{
	if (this.serverParamExists(sKey))
	{
		this.aServerParam[sKey] = null;
	}
}
///////////////////////////////////////////////////////////////////////////////



///////////////////////////////////////////////////////////////////////////////
// Author   : Mahendra Parmar
// Date     : Friday, April 25, 2003
// Function : To trim a given character from left and right sides for the given string

function MMP1706031850_trimAll(sSTR, sChar)
{
	return String(sSTR).replace(new RegExp("^(" + sChar + ")*|(" + sChar + ")*$", "g"), "");
}
///////////////////////////////////////////////////////////////////////////////