// Function that takes in a name, reads that name from a cookie, and returns the value of that name.
function readCookie(name) {
    
    var cookies = document.cookie;
    var start = cookies.indexOf(name + "=");
    if (start == -1) return null;
    start = cookies.indexOf("=", start) + 1;
    var end = cookies.indexOf(";", start);
    if (end == -1) end = cookies.length;
    var value = unescape(cookies.substring(start, end));
    
    return value;
}

// Function that takes a name/value pair and sets them to a cookie
/*
   name - name of the cookie
   value - value of the cookie
   [expires] - expiration date of the cookie in days (defaults to end of current session)
   [path] - path for which the cookie is valid (defaults to path of calling document)
   [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
   [domain] - domain for which the cookie is valid (defaults to domain of calling document)
   * an argument defaults when it is assigned null as a placeholder
   * a null placeholder is not required for trailing omitted arguments
*/
function setCookie(name, value, expires, path, secure, domain) {
    
    var today = new Date();
    today.setTime(today.getTime());
    
    if (expires) { expires = expires * 1000 * 60 * 60 * 24; }
    var expires_date = new Date( today.getTime() + (expires) );

    var curCookie = name + "=" + escape(value) +
    (( expires ) ? "; expires=" + expires_date.toGMTString() : "") + 
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
    document.cookie = curCookie;
}

// Function that deletes a cookie
/*
   name - name of the cookie
   [path] - path of the cookie (must be same as path used to create cookie)
   [domain] - domain of the cookie (must be same as domain used to create cookie)
   * path and domain default if assigned null or omitted if no explicit argument proceeds
*/
function deleteCookie(name, path, domain) {
    if (readCookie(name)) {
        document.cookie = name + "=" +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}