/* Client-Side Cookie Functions
Based on http://tech.irt.org/articles/js064/index.htm 
by Martin Webb, which was in turn based based on the 
public domain cookie code produced by Bill Dortch. */

function getCookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    var end = document.cookie.indexOf(";", len);

    if ((!start) && (name != document.cookie.substring(0, name.length))) {
        return null;
    }

    if (start == -1) {
        return null;
    }

    if (end == -1) {
        end = document.cookie.length;
    }

    return unescape(document.cookie.substring(len, end));
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) 
        + ( (expires) ? ";expires=" + 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";
    }
}

var today = new Date();
var zero_date = new Date(0, 0, 0);
today.setTime(today.getTime() - zero_date.getTime());

var todays_date = new Date(today.getYear(), today.getMonth(), today.getDate(), 0, 0, 0);
var expires_date = new Date(todays_date.getTime() + (8 * 7 * 86400000));

function storeMasterCookie() {
    if (!getCookie('MasterCookie')) {
        getCookie('MasterCookie', 'MasterCookie');
    }
}

function storeIntelligentCookie(name, value) {
    if (getCookie('MasterCookie')) {
        var intelligentCookie = getCookie(name);
        if ((!intelligentCookie) || (intelligentCookie != value)) {
            getCookie(name, value, expires_date);
            var intelligentCookie = getCookie(name);
            if ((!intelligentCookie) || (intelligentCookie != value)) {
                deleteCookie('MasterCookie');
            }
        }
    }
}
