/**
 *$Id: cookie.js 113 2009-02-12 16:09:31Z aanpilogov $
 *
 * Манипуляции с cookie
 */
PuskFramework.cookie = new function()
{
    var pf = PuskFramework;
    this.default_expires = 2592000;    // seconds, 30 days

    /**
     * Получить значение куки с заданным именем
     * @param {String} name
     * @return {String}
     */
    this.get = function(name)
    {
        if (!name) return null;
        var cookie = ' ' + document.cookie;
        var cname = ' ' + name + '=';
        var to, from  = cookie.indexOf(cname);
        if ( from != -1 )
        {
            from += cname.length;
            to    = cookie.indexOf(';', from );
            if ( to == -1 )
                to = cookie.length;
            return unescape( cookie.substring(from, to) );
        }
        return null;
    };

    /**
     * Установить куки с заданными параметрами
     *
     * @param {Object} name ключ
     * @param {Object} data значение
     * @param {Object} path путь для установки
     * @param {Object} expires время жизни
     * @param {Object} domain домен
     * @param {Object} secure флаг безопасности
     */
    this.set = function(name, data, path, expires, domain, secure)
    {
        if (!expires)
        {
            expires = new Date();
            expires.setTime( expires.getTime() + this.default_expires*1000);
        }
        document.cookie = name + "=" + escape(data)
            + ((expires == null) ? "" : "; expires=" + expires.toGMTString())
            + ((path == null)    ? "" : "; path=" + path)
            + ((domain == null)  ? "" : "; domain=" + domain)
            + ((secure == null)  ? "" : "; secure");
    };

    /**
     * Удалить куку. Внимание, удаление происходит при правильном повторении пути и домена
     * с которыми кука была установлена!
     *
     * @param {Object} name ключ
     * @param {Object} path путь
     * @param {Object} domain домен
     */
    this.remove = function(name, path, domain)
    {
        if (this.get(name))
        {
            document.cookie = name + "=" + ((path == null) ? "" : "; path=" + path) + ((domain == null) ? "" : "; domain=" + domain) + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    }
};
