// SpryURLUtils.js - version 0.1 - Spry Pre-Release 1.6
|
//
|
// 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;
|
};
|