﻿/* Client-side access to querystring name=value pairs
	Version 1.2.3
	22 Jun 2005
	Adam Vandenberg
	Azer Manafov 29 Dec 2008
*/
function Querystring(qs) { // optionally pass a querystring to parse
	this.params = new Object();
	this.get   = Querystring_get;
	this.set   = Querystring_set;
	this.build = Querystring_build;


	if (qs == null)
		qs=location.search.substring(1,location.search.length);

	if (qs.length == 0) return;
// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
    var args = (qs.indexOf('&amp;') > -1 )?qs.split('&amp;'):qs.split('&'); // parse out name/value pairs separated via &

// split out each name=value pair
	for (var i=0;i<args.length;i++)
	{
		var value;
//		var pair = args[i].split('=');//  Azer Manafov: not work if base64 encoded 
		var pair = new Array( );
		var pos  = args[i].indexOf("=");
		if ( pos > 0 )
		{   pair[0] = args[i].substring(0, pos);
		    pair[1] = args[i].substring(++pos );
		}
		else
		{   pair[1] = pair[0] = args[i];
		}
		  
		var name = unescape(pair[0]);
		if ( pair.length == 2)
			 value = unescape(pair[1]);
		else value = name;
		this.params[name] = value;
	}
	
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	
	if (default_ == null) default_ = null;
    var value=this.params[key];
    if (value==null) value=default_;
	
	return value;
}
// azerman @ hotmail.com
function Querystring_set(key, value )
{   if ( value == null ) return;
	this.params[key] = value;
}
function Querystring_build( )
{   var s = '';
    for( var key in this.params )
    {   if ( s.length ) s += '&';
	    s += (key + "=" + this.params[key]);
	}
    return '?'+s;
}

