﻿function SetCookie(strName, oValue)
{
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;

    var oDate = false; // аргумент expires

    if((argc > 2) && (argv[2] != null))
    {
        // задана дата
        // дату допустимо задавать:
        //    объектом Date,
        //    числом (миллисекундное смещение от 00:00:00 01.01.1970)
        //    строкой в формате, приемлемом для Date.parse

        var nStamp = (typeof(argv[2]) != "number")    ?
                Date.parse(argv[2].toString())        :
                argv[2];

        if(!isNaN(nStamp))
            oDate = new Date(nStamp);
    }

    document.cookie =   strName + "=" + escape(oValue.toString())                   +
                        (oDate ? "; expires=" + oDate.toGMTString() : "")           +
                        (((argc > 3) && (argv[3])) ? "; domain=" + argv[3] : "")    +
                        (((argc > 4) && (argv[4])) ? "; path=" + argv[4] : "")      +
                        ((argc > 5) ? (argv[5] ? "; secure" : "") : "");
}

function GetCookie(strName)
{
    if((typeof(strName) == "string") && strName.length)
    {
        var i = 0, j;

        var strFind    = strName + "=";
        var strCookie  = document.cookie;

        do
        {
            j = i + strFind.length;

            if(strCookie.substring(i, j) == strFind)
            {
                var nEnd = strCookie.indexOf(";", j);

                if(nEnd < 0)
                    nEnd = strCookie.length;

                return unescape(strCookie.substring(j, nEnd));
            }
        }
        while(i = strCookie.indexOf(" ", j) + 1);
    }

    return null;
}

function DeleteCookie(strName)
{
    document.cookie = strName + "=0; expires=" + (new Date(0)).toGMTString();
}

function DeleteAllCookie()
{
    var arr = new Array();
    var str = document.cookie;

    var i = 0, nBeg = 0, nEnd;

    do
    {
        if((nEnd = str.indexOf("=", nBeg)) > -1)
            arr[i] = str.substring(nBeg, nEnd);
    }
    while(i++, nBeg = str.indexOf(" ", nEnd) + 1);

    for(i = 0; i < arr.length; i++)
        DeleteCookie(arr[i]);
}

function IsCookieEnabled(domain)
{
    //if(typeof(navigator.cookieEnabled) != "undefined")
    //    return navigator.cookieEnabled;
    //else
    //{
        // свойство navigator.cookieEnabled не поддерживается
        // установим и получим тестовую куку

        var _c = "checkcookieless";

        SetCookie(_c, "1",null,domain);

        if(GetCookie(_c) != null)
        {
            DeleteCookie(_c);
            return true;
        }

        return false;
    //}
}