// v 1.0
function http_build_query(obj, prefix)
{
	var result=new Array();
	for(var k in obj)
	{
		switch(typeof(obj[k]))
		{
			case 'number':
			case 'string':
				var v=encodeURIComponent(obj[k]);
				if(prefix)
					result.push(prefix+'['+k+']='+v);
				else
					result.push(k+'='+v);
				break;
			case 'object':
				if(prefix)
					result.push(http_build_query(obj[k], prefix+'['+k+']'));
				else
					result.push(http_build_query(obj[k], k));
				break;
		}
	}
	return result.join('&');
}

function parse_str(str)
{
	var tmp=str.split('&');
	var result=new Object;
	for(var i in tmp)
	{
		var t=tmp[i].match(/([^\[=&]*)((\[[^\]]*])*)=([^&]*)/);
		t[4]=t[4].replace('+', ' ');
		t[4]=decodeURIComponent(t[4]);
		if(t[2]!='')
		{
			if(typeof(result[t[1]])=='undefined')
				result[t[1]]=new Object;
			var ptr=result[t[1]];
			var p=t[2].match(/\[([^\]]*)]/g);
			for(var k=0; k<p.length; k++)
			{
				var key=p[k].substr(1, p[k].length-2);
				if(k!=p.length-1)
				{
					if(!ptr[key])
						ptr[key]=new Object;
					ptr=ptr[key];
				}
				else
					ptr[key]=t[4];

			}
		}
		else
			result[t[1]]=t[4];
	}
	return result;
}



