/*!
 * $Revision: 2309 $
 * $Date: 2007-06-25 15:54:03 +1000 (Mon, 25 Jun 2007) $
 */

/**
 * Creates a delegate to maintain proper scope when refering to callbacks
 * or event handers.
 * 
 * @param obj A reference to a object that owns the method.
 * @param fn A string that indicates the method to be called.
 * 
 * @return A function.
 */
function delegate(obj, fn)
{
	return function()
	{
		return obj[ fn ].apply(obj, arguments);
	};
}

/**
 * 
 */
function getParamValue(url, param)
{
	var result = null;
	
	if( url.indexOf("?") > -1 && url.indexOf(param + "=") > -1 )
	{
		var i = url.indexOf(param + "=") + (param + "=").length;
		var j = url.indexOf("&", i);

		result = url.substring(i, j > -1 ? j : url.length );
	}
	
	return( unescape( result ) );
}

/**
 * 
 */
function setParamValue(url, param, value)
{
	if( url.indexOf("?") < 0 )
	{
		url += "?" + param + "=" + value;
	}
	else
	{
		url += "&";
		
		if( url.indexOf(param + "=") > -1 )
		{
			var i = url.indexOf(param + "=") + (param + "=").length;
			var j = url.indexOf("&", i);
			
			url = url.substring(0, i) + value + url.substring(j, url.length);
		}
		
		if( url.charAt( url.length - 1 ) == "&" )
		{
			url = url.substring(0, url.length - 1);
		}
	}
	
	return( url );
}

/*!
 * EOF;
 */
