function getQueryStringParameter( sUrl, sParameter )
{
	var sValue = null;
	if( sUrl.indexOf( '#' ) != -1 )
		sUrl = sUrl.substring( 0, sUrl.indexOf( '#' ) );

	var nIndex = findQueryStringParameter( sUrl, sParameter );

	if( nIndex != -1 )
	{
		var nNextIndex = sUrl.indexOf( '&', nIndex + 1 );
		if( nNextIndex == -1 )
			sValue = sUrl.substring( nIndex + sParameter.length + 2 );
		else
			sValue = sUrl.substring( nIndex + sParameter.length + 2, nNextIndex );
	}

	return( sValue );
}

function setQueryStringParameter( sUrl, sParameter, sValue )
{
	var sNextUrl = '';

	if( sUrl.indexOf( '?' ) == -1 )
		sNextUrl = sUrl + '?' + sParameter + '=' + sValue;

	else
	{
		var nIndex = findQueryStringParameter( sUrl, sParameter );

		if( nIndex == -1 )
			sNextUrl = sUrl + '&' + sParameter + '=' + sValue;

		else
		{
			sNextUrl = sUrl.substring( 0, nIndex + 1 );
			sNextUrl += sParameter + '=';
			sNextUrl += sValue;

			var nNextIndex = sUrl.indexOf( '&', nIndex + 1 );
			if( nNextIndex != -1 )
				sNextUrl += sUrl.substring( nNextIndex );
		}
	}

	return( sNextUrl );
}

function removeQueryStringParameter( sUrl, sParameter )
{
	if( sUrl.indexOf( '?' ) == -1 )
		return( sUrl );


	var nIndex = findQueryStringParameter( sUrl, sParameter );

	if( nIndex == -1 )
		return( sUrl );

	var sNextUrl = sUrl.substring( 0, nIndex + 1 );

	var nNextIndex = sUrl.indexOf( '&', nIndex + 1 );
	if( nNextIndex != -1 )
		sNextUrl += sUrl.substring( nNextIndex + 1 );

	if( sNextUrl.charAt( sNextUrl.length - 1 ) == '?' )
		sNextUrl = sNextUrl.substring( 0, sNextUrl.length - 1 );

	return( sNextUrl );
}

function findQueryStringParameter( sUrl, sParameter )
{
	var nIndex = sUrl.indexOf( '&' + sParameter + '=' );

	if( nIndex == -1 )
		nIndex = sUrl.indexOf( '?' + sParameter + '=' );

	return( nIndex );
}

function openWidget(inputModeUrl, height, width)
{
	widgWin = window.open(inputModeUrl,'myWin','toolbars=no,scrollbars=yes,height=' +  height  + ',width=' +  width);
	widgWin.focus();
}

var wpbInitFunctionArray = new Array();

function wpbInit()
{
	for( var n = 0; n < wpbInitFunctionArray.length; n++ )
		wpbInitFunctionArray[ n ]();
}

function wpbAddToInitFunctionArray( func )
{
	wpbInitFunctionArray[ wpbInitFunctionArray.length ] = func;
}

var wpbOnResizeFunctionArray = new Array();

function wpbOnResize()
{
	for( var n = 0; n < wpbOnResizeFunctionArray.length; n++ )
		wpbOnResizeFunctionArray[ n ]();
}

function wpbAddToOnResizeFunctionArray( func )
{
	wpbOnResizeFunctionArray[ wpbOnResizeFunctionArray.length ] = func;
}

var topNavBarCount = 0;

function getElementOffset( elm )
{
	var elmTmp = elm;

	var nPosX = elmTmp.offsetLeft;
	var nPosY = elmTmp.offsetTop;

	elmTmp = elmTmp.offsetParent;
	while( elmTmp )
	{
		nPosX += elmTmp.offsetLeft;
		nPosY += elmTmp.offsetTop;

		elmTmp = elmTmp.offsetParent;
	}

	return( { nPosX:nPosX, nPosY:nPosY } );
}
