/**
 * Copyright(c) Dreamcode Technology <http://www.dreamcode.net/>
 * 
 * @author Joe Au <joe@dreamcode.net>
 */





function ParameterObject( ) {
	this.params = new Array();
	this.count = 0;
}

ParameterObject.prototype = new Object();


ParameterObject.prototype.getParameterNames = function( ) {
	var names = new Array();
	for (var i in this.params) {
		names[names.length] = i;
	}
	return names;
};

ParameterObject.prototype.getParameter = function( name ) {
	if (typeof(this.params[name]) == 'undefined') {
		return null;
	} else {
		return this.params[name];
	}
};

ParameterObject.prototype.addParameter = function( name, value ) {
	this.params[name] = value;
	this.count++;
};

ParameterObject.prototype.toString = function( ) {
	var str = "";
	var n = "";
	
	if (this.count > 0) {
		for (var i in this.params) {
			if (typeof(i) != 'undefined' && i != "") {
				str += n + i + "=";
				if (typeof(this.params[i]) != 'undefined' && this.params[i] != "") {
					if (this.params[i] instanceof Array) {
						for (var j = 0; j < this.params[i].length; j++) {
							str += escape(this.params[i][j]);
							if (j < this.params[i].length-1) str += escape(";");
						}
					} else {
						str += escape(this.params[i]);
					}
				}
				n = "&";
			}
		}
	}
	return str;
};





function RequestObject( ) {
	this.init();
}

RequestObject.prototype = new Object();

RequestObject.prototype.init = function( ) {
	this.parameter = new ParameterObject();
	this.count = 0;
	
	var query = window.location.search.substring(1,window.location.search.length);
	var pairs = query.split("&");
	
	if (pairs.length > 0) {
		for (var i = 0; i < pairs.length; i++) {
			var kv = pairs[i].split("=");
			var key = kv[0];
			var val = unescape(kv[1]);
			if (typeof(key)!= 'undefined' && key != "") {
				if (val.indexOf(";") != -1) {
					this.parameter.addParameter(key, val.split(";"));
				} else {
					this.parameter.addParameter(key, val);
				}
				this.count++;
			}
		}
	}
};

RequestObject.prototype.getParameterNames = function( ) {
	return this.parameter.getParameterNames();
};

RequestObject.prototype.getParameter = function( name ) {
	return this.parameter.getParameter(name);
};

RequestObject.prototype.toString = function( ) {
	return this.parameter.toString();
};

RequestObject.prototype.toQueryString = function( ) {
	return ("?" + this.toString());
};



var request = new RequestObject();

/**
 * EOF
 */

