if (!sbweb.util.url) sbweb.util.url = function() {
	
	var colon = ":";
	
	return {
		getURL : function(pIsReturnQueryString) {
			var url = top.document.location;
			if (url.port == "") {
				colon = "";
			}
			var url = url.protocol + "//" + url.hostname + colon + url.port + url.pathname;
			
			if (url.indexOf("/catalog/category.jsp") >= 0)
			{
				url = url + "?categoryId=" + sbweb.util.url.getQueryParam("categoryId");
			} else if (url.indexOf("/catalog/product.jsp") >= 0)
			{
				url = url + "?prodId=" + sbweb.util.url.getQueryParam("prodId");
			}

			if (pIsReturnQueryString) {
				url = url + url.search;
			}
			
			return(url);
		},
		
		getQueryParam : function(pParamName) {
			var loc = location.search.substring(1,location.search.length);
			var paramValue = false;
			var params = loc.split("&");
			for (i=0; i<params.length; i++) {
				param_name = params[i].substring(0,params[i].indexOf('='));
				if (param_name == pParamName) {
					paramValue = params[i].substring(params[i].indexOf('=')+1)
				}
			}
			if (paramValue) {
				return(paramValue);
			}
			else {
				return(false);
			}
		},
		
		/* 
		 * This function attaches mboxSession to all matching links. 
		 * mboxSession helps retain tracking records for cross domain sites. 
		 */
		appendMboxSessionToMatchingAnchorTags: function(pUrlArray)
		{
	        if (mboxFactoryDefault) {
	        	try {
	        		if (pUrlArray && pUrlArray.length > 0 && pUrlArray.constructor.toString().indexOf("Array") != -1) {
				        var sessionId = mboxFactoryDefault.getSessionId().getId();
				        var anchorTags = document.getElementsByTagName('a');
				        for(var i = 0; i < anchorTags.length; i++)
				        {
				        	var url = anchorTags[i].href.toLowerCase();
			        		for (var j = 0; j < pUrlArray.length; j++) {
			        			var matchingUrl = pUrlArray[j].toLowerCase();
			        			if (url.indexOf(matchingUrl) != -1)
			        			{
			        				anchorTags[i].href = sbweb.util.url.appendUrlParam(anchorTags[i].href, "mboxSession", sessionId);
			        				break; // move on to new anchor tag
			        			}
			        		}
				        }
	        		}
	        		else {
	        			sbweb.util.log.debug("Non-Array passed into sbweb.util.url.addMboxSessionToMatchingLinks");
	        		}
	        	} catch (e) {}
	        }
		},
		
		appendUrlParam: function (pUrl, pParamName, pParamValue) {
			try {
				if (pUrl && pParamName)
				{
					var glue = (pUrl.indexOf('?') == -1) ? '?' : '&';
					pUrl += glue + pParamName + "=" + pParamValue;
				}
			} catch (e) {}
			return pUrl;
		},
		
		getAkamaiUrl: function () {
			var url = "";
			try {
				if (typeof getLocalAkamaiUrl == 'function') {
					url = getLocalAkamaiUrl();
				}
			} catch (e) {}
			return url;
		}
	};

}();