function param (s)
{
	this.paramString = new String(s);
	this.params = new Array();
	this.magic = new String("");

	this.getParam = function (p)
	{
		return this.params[p];
	};

	this.setParam = function (p, v)
	{
		p = this.magic + p;

		this.params[p] = new String(v);
		this.rebuild();
	};

	this.unsetParam = function (p)
	{
		p = this.magic + p;

		this.params[p] = undefined;
		this.rebuild();
	};

	this.rebuild = function ()
	{
		this.paramString = new String('');
		var a = new Array();

		for (p in this.params)
		{
			if (typeof(this.params[p]) == 'function')
			{
				continue;
			}

			// alert(p + "=" + this.params[p]);
			if (p.substr(0, this.magic.length) == this.magic)
			{
				a[a.length] = p + '=' + this.getParam(p);
			}
		}

		this.paramString = a.join('&');

		return this.paramString;
	};

	/*
	** Build the array
	*/
	var c = this.paramString.split("&");

	for (var i = 0; i != c.length; i++)
	{
		var ac = c[i].split("=");

		if (ac.length == 1)
		{
			ac[1] = "default";
		}

		this.setParam(ac[0], ac[1]);
	}

}
