
// check for 'xwp' namespace
if (!namespace.exists('xwp'))
	namespace.create('xwp');

xwp.string = new function () {
	var self = this;

	self.parseStr = function (str) {
    var s = str.split("&");
    var ret = {};
    var sk;
    var p;
    var k1;
    var k2;
    
    for (var k in s) {
			sk = s[k].split("=");
			if (!sk[0])
				continue;
			sk[0] = unescape(sk[0]);
			sk[1] = (sk[1] ? unescape(sk[1]).replace(/[+]/g, " ") : "");
			
			k1 = sk[0].split("[")[0];
			p = ret;
			while (sk[0].indexOf("[") != -1) {
				sk[0] = sk[0].substr(sk[0].indexOf("[") + 1);
				k2 = sk[0].split("]")[0];
				if (typeof(p[k1]) != "object" || typeof(p[k1]) != "object")
					p[k1] = {};
				p = p[k1];
				k1 = k2;
			}
			p[k1] = sk[1];
		}
    return ret;
	};

	self.httpBuildQuery = function (arr) {
		if (typeof(arr) != "object" && typeof(arr) != "array")
			return "";
		var out = self._httpBuildQuery(arr, "");
		return out.substr(0, out.length - 1);
	};

	self._httpBuildQuery = function (arr, key) {
		var out = "";
		var k1 = "";
		for (k in arr) {
			k1 = key + (key ? "[" + k + "]" : k);
			if (typeof(arr[k]) == "object")
				out += self._httpBuildQuery(arr[k], k1);
			else
				out += escape(k1) + "=" + escape(arr[k]) + "&";
		}
		return out;
	};

};
