/*******************************************************************************
 * 
 * ParsedQueryString version 1.0
 * Copyright 2007, Jeff Mott <Mott.Jeff@gmail.com>. All rights reserved.
 * 
 * Redistribution and use in source and binary forms with or without
 * modification are permitted provided that the above copyright notice,
 * this condition, and the following disclaimer are retained.
 *
 * THIS SOFTWARE IS PROVIDED AS IS, AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT
 * LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 ******************************************************************************/

function ParsedQueryString() {
	this._init();
}

ParsedQueryString.version = '1.0';

ParsedQueryString.prototype =
{
	_init:
		function ()
		{
			this._parameters = {};
			var re1='((?:[a-z][a-z]+:\//[a-z.]+\/[a-z]+\/))';	// domain + /location/ 
			var re2='([a-z-]+)'; // path containing site and from
			var p = new RegExp(re1+re2,"gi");
			var m = p.exec(location);
			if (m == null)
			{
				// No match
				// deal with
			}
			else 
			{
				// m[2] is the path
				var path = m[2];
				var re3 = "([a-z]+)"; // find words
				var p2 = new RegExp(re3,"gi");
				var pathArray = new Array();
				var iCount = 0;
				var m2;
				while( (m2 = p2.exec(path)) != null )	
				{
					pathArray[iCount] = m2[0];
					iCount++;
		
				};
						
				if(pathArray.length >2)
				{
					// site and from are different
					var site = pathArray[0];
					var from = pathArray[3];
					for(var i = 4; i < pathArray.length; i++)
					{
						from += "," + pathArray[i];
					}
	
				}
				else
				{
					var site = pathArray[0];
					var from = pathArray[0];
				}
				
				if(site == "scotland")
				{
					site = "wiston";
				}
				var pairs = new Array();
				pairs[0] = "site=" + site;
				pairs[1] = "from=" + from;
			}
			
			
			// old code for pulling params
			/*
			if (location.search.length <= 1)
				return;
			var pairs = location.search.substr(1).split(/[&;]/);
			*/
			for (var i = 0; i < pairs.length; i++)
			{
				var pair = pairs[i].split(/=/);
				var name = this._decodeURL(pair[0]);
				if (Boolean(pair[1]))
				{
					var value = this._decodeURL(pair[1]);
					if (Boolean(this._parameters[name]))
						this._parameters[name].push(value);
					else
						this._parameters[name] = [value];
				}
			}
			
		},

	_decodeURL:
		function (url) {
			return decodeURIComponent(url.replace(/\+/g, " "));
		},

	param:
		function (name)
		{
			if (Boolean(this._parameters[name]))
				return this._parameters[name][0];
			else
				return "";
		},

	params:
		function (name)
		{
			if (Boolean(name))
			{
				if (Boolean(this._parameters[name]))
				{
					var values = [];
					for (var i = 0; i < this._parameters[name].length; i++)
						values.push(this._parameters[name][i]);
					return values;
				}
				else
					return [];
			}
			else
			{
				var names = [];
				for (var name in this._parameters)
					names.push(name);
				return names;
			}
		}
};
