function querystring_from_search(qs) {
	var params = {};
	
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		
		params[name] = value;
	}
	
	return params;
}

function querystring_from_url(url) {
	var split = url.split('?');
	
	if(split.length > 0)
		return querystring_from_search(split[split.length - 1]);
	else
		return {};
}

 function querystring_to_string(qs) {
	var output = "";
	var isFirst = true;
	for (var i in qs) {
		if(!isFirst)
			output += "&";
		
		output += encodeURIComponent(i);
		output += "=";
		output += encodeURIComponent(qs[i]);
		
		ifFirst = false;
	}
	return output;
}

