function QueryString(qs) {

	this.arguments = new Object();

	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

	// Turn <plus> back to <space>
	// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');

	var args = qs.split('&');

	// split out each name=value pair
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = unescape(pair[0]).toLowerCase();
		if (pair.length == 2) var value = unescape(pair[1]);
		else var value = '';
		this.arguments[name] = value
	}

	this.get = function (key, default_) {
		// This silly looking line changes UNDEFINED to NULL
		if (default_ == null) default_ = null;
		var value = this.arguments[key.toLowerCase()];
		if (value == null) value = default_;
		return value;
	}

	this.set = function (key, value) {
		if (value == null) value = '';
		this.arguments[key.toLowerCase()] = value;
	}

	this.rebuild = function () {
		var st = new Array();
		for (i in this.arguments) st[st.length] = i + '=' + this.arguments[i];
		return st.join('&');
	}
}
