var Utility = {
    getElementHeight : function(id) {
        if (document.getElementById) 
	    {	
		    var element = document.getElementById(id);
		    return element.offsetHeight;
	    } 
    	
	    return 0;
    },
    createCookie : function(name,value,days)
    {
	    if (days)
	    {
		    var date = new Date();
		    date.setTime(date.getTime()+(days*24*60*60*1000));
		    var expires = "; expires="+date.toGMTString();
	    }
	    else var expires = "";
	    document.cookie = name+"="+value+expires+"; path=/";
    },
    readCookie : function(name)
    {
	    var nameEQ = name + "=";
	    var ca = document.cookie.split(';');
	    for(var i=0;i < ca.length;i++)
	    {
		    var c = ca[i];
		    while (c.charAt(0)==' ') c = c.substring(1,c.length);
		    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	    }
	    return null;
    },
    eraseCookie : function(name)
    {
	    createCookie(name,"",-1);
    },
    getUrlParameters : function()
    {
	    var parameters = new Object;
        var url = window.document.URL.toString();

        if (url.indexOf("?") > 0)
        {
            var urlParts = url.split("?");
            var parameterList = urlParts[1].split("&");

            var i = 0;

            for (i = 0; i < parameterList.length; i++)
            {
                var paramParts =  parameterList[i].split("=");
                var name = paramParts[0];
                var value = unescape(paramParts[1]);

                parameters[name] = value;
            }
        }
        
        return parameters;
    },
    stopEvent : function (e)
    {
        if (!e) 
            e = window.event;               
        
        e.cancelBubble = true;
	    if (e.stopPropagation) 
	        e.stopPropagation();
    },
    getRequestUrl: function()
    {
	    var additionalUrlParams = new Object;
	    var ignoredUrlParams = new Array();
    	
	    if (arguments.length > 0)
		    additionalUrlParams = arguments[0];
    			
	    if (arguments.length > 1)
		    ignoredUrlParams = arguments[1];
    		
	    //begin
	    var keepOriginalParams = true;
	    var requestParams = new Object;
    		
	    if (ignoredUrlParams.length > 0)
		    if (ignoredUrlParams[0] == "*")
			    keepOriginalParams = false;		    				   
    	
	    var ignoredUrlParamLookup = new Object;
	    for (i = 0; i < ignoredUrlParams.length; i++)
		    ignoredUrlParamLookup[ignoredUrlParams[i]] = true;
    			
	    if (keepOriginalParams)
	    {
		    var currentUrlParams = Utility.getUrlParameters();
		    for (var key in currentUrlParams)
		    {
			    if (ignoredUrlParamLookup[key] != true)
				    requestParams[key] = currentUrlParams[key];
		    }
	    }
    	
	    for (var key in additionalUrlParams)
	    {
		    requestParams[key] = additionalUrlParams[key];
	    }
    	
	    var urlParts = window.document.URL.toString().split("?");
	    var baseUrl = urlParts[0];
	    var parameterParts = new Array();
    	
	    for (var key in requestParams)
	    {
		    parameterParts.push(key + "=" + escape(requestParams[key]));
	    }
    	
	    var url = baseUrl + "?" + parameterParts.join("&");
    		
	    return url;
    },
    toggle: function(id)
    {
        $("#" + id).toggle();
        
        if (/MSIE (5\.5|6\.)/.test(navigator.userAgent))
            $("#" + id).toggle().toggle(); //to fix some of the positioning problems with the drop down menus on IE 5.5
    }
};
