
//============== TRACE ==============

function trace(Str)
{
    document.write(Str);
}

function traceln(Str)
{
    trace(Str+"<BR>");
}

//================ HEX ================

function ToHexStr(str)
{
    var Result="";
    var n=str.length;
    var i=0;
    var h;
    while(i<n)
    {
        h=str.charCodeAt(i++).toString(16);
        while(h.length<2) h="0"+h;
        Result+=h;
    }
    return Result;
}

function FromHexStr(str)
{
    var Result="";
    var n=str.length;
    var i=0;
    while(i<n)
    {
        Result+=String.fromCharCode("0x"+str.substring(i,i+2));
        i+=2;
    }
    return Result;
}

//============== COMMAND-LINE CMD ===============

function GetParamsCount()
{
    var Result=0;
    var Href = window.location.href;
    if (Href.indexOf("?") > -1)
    {
        var Params = Href.substr(Href.indexOf("?")).split("&");
        Result = Params.length;
    }
    return Result;
}

function ExtractParam(Href,Name)
{
    var Result = "";
    Name=Name.toLowerCase()+"=";

    if (Href.indexOf("?") > -1)
    {
        var Params = Href.substr(Href.indexOf("?")+1).split("&");
        for (var i in Params)
        {
            if (Params[i].toLowerCase().indexOf(Name) == 0)
            {
                Result = Params[i].split("=")[1];
                break;
            }
        }
    }
    return unescape(Result);
}

function GetParam(Name)
{
    return ExtractParam(window.location.href, Name);
}

//============== POST TO URL =================

function PostToURL(Url, Method, ParamNames, ParamValues)
{ 
    try
    {
        var form = document.createElement("form"); 
        form.setAttribute("action", Url); 
        form.setAttribute("method", Method); 

        var n=ParamNames.length;
        if (ParamValues.length<n) n=ParamValues.length; 
 
        for(var i=0; i<n; i++) 
        { 
            var hiddenField = document.createElement("input"); 
            hiddenField.setAttribute("type", "hidden"); 
            hiddenField.setAttribute("name", ParamNames[i]); 
            hiddenField.setAttribute("value", ParamValues[i]); 
 
            form.appendChild(hiddenField); 
        } 
 
        document.body.appendChild(form);    // Not entirely sure if this is necessary 
        form.submit(); 
    }
    catch(err) {}
}

function LoadURL(Url)
{
    try
    {
        var form = document.createElement("form"); 
        form.setAttribute("method", "get"); 
        form.setAttribute("action", Url); 
        document.body.appendChild(form);    // Not entirely sure if this is necessary 
        form.submit(); 
    }
    catch(err) {}
} 

function ReloadCurrentPage()
{
    LoadURL(window.location.pathname);
}

//============== RETRIEVE INFO ===============

function GetDate()
{
    var date = new Date();
    var _day = date.getDate();
    var _month = date.getMonth()+1;
    var _hour = date.getHours();
    var _minute = date.getMinutes();

    if (_day<10)    _day   ="0"+_day;
    if (_month<10)  _month ="0"+_month;
    if (_hour<10)   _hour  ="0"+_hour;
    if (_minute<10) _minute="0"+_minute;


    var Result = _day+"-"+_month+"-"+date.getFullYear()+" "+_hour+":"+_minute;
    return Result;
}

function GetPageName(WithHtml)
{
    var sPath = window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    if (sPage=="") sPage="index.html";
    var Idx=sPage.lastIndexOf(".html");
    if ((! WithHtml) && (Idx>0)) sPage=sPage.substring(0,Idx);
    return sPage;
}

function GetKeyword()
{
    var Result = "";
    if (Result=="") Result = ExtractParam(document.referrer,"q")
    if (Result=="") Result = ExtractParam(document.referrer,"p")
    if (Result=="") Result = ExtractParam(document.referrer,"s")
    if (Result=="") Result = ExtractParam(document.referrer,"query")
    return Result;
}

function GetReferrer()
{
    var Result = document.referrer;
    var idx = Result.indexOf('?');
    if (idx>0) Result = Result.substring(0,idx.valueOf());
    var idx = Result.indexOf("://");
    if (idx>0) Result = Result.substring(idx.valueOf()+3);
    var idx = Result.indexOf(";");
    if (idx>0) Result = Result.substring(0,idx);
    return Result;
}


function GetReferrerData()
{
    var sKeyWord  = GetKeyword();
    var sReferrer = GetReferrer();
    if (sReferrer=="") sReferrer="Direct";
    if (sKeyWord =="") sKeyWord="no-keyword"; 
//    if (sKeyWord =="") sKeyWord="["+document.referrer+"]"; 
    var sDoc = "["+document.referrer+"]"; 

    Result=GetDate()+","+sReferrer+","+unescape(sKeyWord)+","+GetPageName(true)+","+sDoc;
    return Result;
}

//=============== READ/CREATE COOKIE ================

function ReadCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i < ca.length; i++) 
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return "";
}

function CreateCookie(name,value,days) 
{
    var expires = "";
    if (days) 
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }
    document.cookie = name+"="+value+expires+"; domain=pantaray.com";
//  document.cookie = name+"="+value+expires+"; path=/";
}

//============= SET COOKIES =============

function SetCookie_VERSION()
{
    CreateCookie("_version","1",365);
}


function SetCookie_PAGES()
{
    var _pages = ReadCookie("_pages");
    if (_pages=="") _pages="|";
    _pages += GetDate()+","+GetPageName(false)+"|";
    CreateCookie("_pages",_pages,365);
}

function SetCookie_REFERRER()
{
    var _referrer=ReadCookie("_referrer");
    if (_referrer=="")
    {
        CreateCookie("_referrer",GetReferrerData(),365);
    }
}

function SetCookie_PRE(message)
{
    var _pages = ReadCookie("_pages");
    if (_pages=="") _pages="|";
    _pages += GetDate()+","+message+"|";
    CreateCookie("_pages",_pages,365);
}

//============= PANATA STAT =============

function PantaStat()
{
    SetCookie_VERSION();
    SetCookie_REFERRER();
    SetCookie_PAGES();
}

function PantaTest()
{
//    SetCookie_VERSION();
//    SetCookie_PAGES();
//    SetCookie_REFERRER();
    traceln("* "+document.referrer+" *");
    traceln("* "+GetReferrerData()+" *");
    traceln("* "+GetKeyword()+" *");
}

