﻿// Functions for working with cookies.
// Author: Alexey Alexandrov

var caution = false;

// Set the value of the cookie
// Parameters:
//   name - the cookie name
//   value - the cookie value
//   [expires] - date then the cookie is expires (default - expires at the end of the session)
//   [path] - cookie path
//   [domain] - cookie domain
//   [secure] - boolean, indicates what the cookie must be encrypted
function setCookie(name, value, expires, path, domain, secure) {
    var curCookie = name + "=" + escape(value) +
                ((expires) ? "; expires=" + expires.toGMTString() : "") +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                ((secure) ? "; secure" : "");
    if (!caution || (name + "=" + escape(value)).length <= 4000)
        document.cookie = curCookie;
    else
        if (confirm("Cookie exceeds 4KB limit and will be cutted!"))
            document.cookie = curCookie;
}    

// Get the value of the cookie
// Parameters:
//   name - the cookie name
function getCookie(name) {
    var prefix = name + "=";
    var cookieStartIndex = document.cookie.indexOf(prefix);
    if (cookieStartIndex == -1)
        return null;
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1)
        cookieEndIndex = document.cookie.length;
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}


// Delete cookie from the document cookies
// Parameters:
//   name - the cookie name
//   [path] - cookie path
//   [domain] - cookie domain
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}      
