/*

EXAMPLE USAGE:

qs = Querystring.get('key'); // returns the value associated with that key

*/

querystring = {
	params: null,
	parseQuerystring: function(qs) { // optionally pass a querystring to parse
		this.params = new Object();
		if(qs == null) { qs = location.search.substring(1, location.search.length); }
		if(qs.length == 0) { return; }
		qs = qs.replace(/\+/g, ' '); // Turn <plus> back to <space>
		var args = qs.split('&');
		
		// build params object
		for(var i=0;i<args.length;i++) {
			var value;
			var pair = args[i].split('=');
			var name = unescape(pair[0]);
	
			if (pair.length == 2) { value = unescape(pair[1]); }
			else { value = name; }
			
			this.params[name] = value;
		}
	},
	get: function(key, default_) {
		if(this.params==null) { this.parseQuerystring(); }

		if(default_ == null) { default_ = null; } // changes UNDEFINED to NULL
		
		var value = this.params[key];
		if(value==null) { value=default_; }
		
		return value;
	},
	set: function(key, value) {
		if(this.params==null) { this.parseQuerystring(); }

		this.params[key] = value;
	},
	serialize: function() {
		if(this.params==null) { this.parseQuerystring(); }
				
		var qs = '';
		for(var key in this.params) {
			qs += key+'='+this.params[key]+'&';
		}
		qs = qs.substring(0, qs.lastIndexOf('&'));
		
		return qs;
	}
}
