function readCookie(name)
{
    var cookieValue = "";
    var search = name + "=";
    if (document.cookie.length > 0)
    {
        var offset = document.cookie.indexOf(search);
        if (offset != -1)
        {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if (end == -1)   end = document.cookie.length;
            cookieValue = unescape(document.cookie.substring(offset, end))
        }
    }
    return   cookieValue;
}
//  alert(   readCookie("myCookie")   );
function writeCookie(name, value, hours)
{
    var expire = "";
    if (hours != null)
    {
        expire = new Date((new Date()).getTime() + hours * 3600000);
        expire = ";   expires=" + expire.toGMTString();
    }
    document.cookie = name + "=" + escape(value) + expire;
}
//  writeCookie("myCookie",   "my   name",   24);

function getParam(name)
{
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(Xgraph.URL);
    if (results == null)
        return "";
    else
        return results[1];

}

//http://techpatterns.com/downloads/javascript_cookies.php
// this fixes an issue with the old method, ambiguous values
function Delete_Cookie(name, path, domain) {
    if (readCookie(name)) document.cookie = name + "=" +
                                            ( ( path ) ? ";path=" + path : "") +
                                            ( ( domain ) ? ";domain=" + domain : "" ) +
                                            ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}


function  trim(str){
    for(var  i  =  0  ;  i<str.length  &&  str.charAt(i)=="  "  ;  i++  )  ;
    for(var  j  =str.length;  j>0  &&  str.charAt(j-1)=="  "  ;  j--)  ;
    if(i>j)  return  "";
    return  str.substring(i,j);
} 