// From: <http://www.dustindiaz.com/top-ten-javascript/>

// [2006-02-27][MEE] Moved cookie retrieval from getCookie to getRawCookie.
// [2006-02-27][MEE] Changed getCookie to call getRawCookie then unescape
//                   (in other words, getCookie's behaviour is not changed).
// [2006-02-27][MEE] Added getCookieSetByPhp.
function getCookieSetByPhp( name ) {

    // We use this function because PHP's setcookie does an automatic
    // urlencode, which acts different to Javascript's escape.
    //
    // $unescaped = 'abc+def ghi';
    // $phpUrlEncoded = 'abc%2Bdef+ghi';
    // $javascriptEscaped = 'abc+def%20ghi';

    var cookie = getRawCookie(name);
    if (cookie != null)
    {
        cookie = cookie.replace(/\+/g, '%20');
        cookie = cookie.replace(/%2B/g, '+');
        return unescape(cookie);
    }
    
    return null;
}

function getCookie( name ) {
    var cookie = getRawCookie(name);
    if (cookie == null)
    {
        return null;
    }
    else
    {
        return unescape(cookie);
    }
}

function getRawCookie( name ) {
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
        return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return document.cookie.substring( len, end );
}
    
function setCookie( name, value, expires, path, domain, secure ) {
    var today = new Date();
    today.setTime( today.getTime() );
    if ( expires ) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    document.cookie = name+"="+escape( value ) +
        ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
        ( ( path ) ? ";path=" + path : "" ) +
        ( ( domain ) ? ";domain=" + domain : "" ) +
        ( ( secure ) ? ";secure" : "" );
}
    
function deleteCookie( name, path, domain ) {
    if ( getCookie( name ) ) document.cookie = name + "=" +
            ( ( path ) ? ";path=" + path : "") +
            ( ( domain ) ? ";domain=" + domain : "" ) +
            ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
