// JavaScript Document// SpryURLUtils.js - version 0.1 - Spry Pre-Release 1.6.1//// Copyright (c) 2007. Adobe Systems Incorporated.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are met:////   * Redistributions of source code must retain the above copyright notice,//     this list of conditions and the following disclaimer.//   * Redistributions in binary form must reproduce the above copyright notice,//     this list of conditions and the following disclaimer in the documentation//     and/or other materials provided with the distribution.//   * Neither the name of Adobe Systems Incorporated nor the names of its//     contributors may be used to endorse or promote products derived from this//     software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 OWNER 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.var Spry; if (!Spry) Spry = {}; if (!Spry.Utils) Spry.Utils = {};// Spry.Utils.urlComponentToObject//// Given a URL component of name value pairs, it returns an object that has the// the URL component names as properties, and the URL component values as the value// of those properties.//// The paramSeparator and nameValueSeparator args are optional. If not specified,// the default paramSeparator is '&' and the default nameValueSeparator is '='.Spry.Utils.urlComponentToObject = function(ucStr, paramSeparator, nameValueSeparator){	var o = new Object;	if (ucStr)	{		if (!paramSeparator) paramSeparator = "&";		if (!nameValueSeparator) nameValueSeparator = "=";		var params = ucStr.split(paramSeparator);		for (var i = 0; i < params.length; i++)		{			var a = params[i].split(nameValueSeparator);			var n = decodeURIComponent(a[0]?a[0]:"");			var v = decodeURIComponent(a[1]?a[1]:"");			if (v.match(/^0$|^[1-9]\d*$/))				v = parseInt(v);			if (typeof o[n] == "undefined")				o[n] = v;			else						{				if (typeof o[n] != "object")				{					var t = o[n];					o[n] = new Array;					o[n].push(t);				}				o[n].push(v);			}		}	}	return o;};// Spry.Utils.getLocationHashParamsAsObject//// Returns window.location.hash as an object that has the the URL component// names as properties, and the URL component values as the value of those properties.Spry.Utils.getLocationHashParamsAsObject = function(paramSeparator, nameValueSeparator){	return Spry.Utils.urlComponentToObject(window.location.hash.replace(/^#/, ""), paramSeparator, nameValueSeparator);};// Spry.Utils.getLocationParamsAsObject//// Returns window.location.search as an object that has the the URL component// names as properties, and the URL component values as the value of those properties.Spry.Utils.getLocationParamsAsObject = function(){	return Spry.Utils.urlComponentToObject(window.location.search.replace(/^\?/, ""));};// Spry.Utils.getURLHashParamsAsObject//// Given a url string, extracts out the URL component that follows the '#' character// and returns an object that has the the URL component names as properties, and the// URL component values as the value of those properties.//// The paramSeparator and nameValueSeparator args are optional. If not specified,// the default paramSeparator is '&' and the default nameValueSeparator is '='.Spry.Utils.getURLHashParamsAsObject = function(url, paramSeparator, nameValueSeparator){	var i;	if (url && (i = url.search("#")) >= 0)		return Spry.Utils.urlComponentToObject(url.substr(i+1), paramSeparator, nameValueSeparator);	return new Object;};// Spry.Utils.getURLParamsAsObject//// Given a url string, extracts out the URL component that follows the '?' character// and returns an object that has the the URL component names as properties, and the// URL component values as the value of those properties.Spry.Utils.getURLParamsAsObject = function(url){	var s;	if (url && (s = url.match(/\?[^#]*/)) && s)		return Spry.Utils.urlComponentToObject(s[0].replace(/^\?/, ""));	return new Object;};
