﻿var CurrentUsername = "";

function ShowMenu(menu)
{
    CloseAllChildrenDivs('Content');
    DisplayYes(menu);

    if (menu == 'divHome')
    {
        DisplayNone('divLive');
    }
    else
    {
        DisplayYes('divLive');
    }
}

function DisplayNone(elt)
{
    $get(elt).style.display = "None";
}

function DisplayYes(elt)
{
    $get(elt).style.display = "";
}

function SetHidden(elt)
{
    $get(elt).style.visibility = "hidden";
}

function SetVisible(elt)
{
    $get(elt).style.visibility = "visible";
}

var HeartbeatInitialized = false;

function UsfInitialize()
{
    UsfService.GetUsername(LoginReady);
    HeartbeatInitialized = false;
    GetUsfCount();
    GetLiveBijdragen(-1, false);
    CheckVersion();
    ShowMenu('divHome');
    InitializeMap();
}

function CheckVersion()
{
    UsfService.GetVersionUSF(GotVersion);
}

var MyVersion = "3.0.0.0";

function GotVersion(versie)
{
    //todo
    if (MyVersion != versie)
    {
        //$get('lblWarning').innerHTML = "Er zijn wijzigingen aan USF; ververs met F5";
        //DisplayYes('lblWarning');
    }
    else
    {
        //DisplayNone('lblWarning');
    }
}

function GetUsfCount()
{
    UsfService.GetUsfCount(GotUsfCount);
}

function GotUsfCount(count)
{
    $get('lblUsfCount').innerHTML = count;
    setTimeout('GetUsfCount()', 5000);
}

function InitializeMap()
{
    MapHeight = screen.height - 210 + "px";
    
    $get('divHome').style.height = MapHeight;
    $get('divUsfMap').style.height = MapHeight;

    var map = new VEMap("divUsfMap");
    map.LoadMap(new VELatLong(52.09, 5.12), 12);

    AddClub(map, "52.08009", "5.08223",
        "sc utrecht<br />scu jeugdteam<br />goede zetten zat",
        "den hommel<br />kennedylaan 9<br />3533 kh utrecht");

    AddClub(map, "52.08362", "5.12202",
        "paul keres",
        "buurthuis de sjuut<br />moutstraat 2<br />3511 xt utrecht");

    AddClub(map, "52.09686", "5.10491",
        "de rode loper",
        "huis aan de werf<br />boorstraat 107<br />3513 se utrecht");

    AddClub(map, "52.11799", "5.07934",
        "oud zuylen",
        "sporthal zuilen<br />burgemeester norbruislaan 13<br />3555 ed utrecht");

    AddClub(map, "52.07758", "5.13317",
        "moira domtoren",
        "rode kruisgebouw<br />koningsweg 2<br />3582 ge utrecht");

    AddClub(map, "52.03742", "5.09412",
        "asvn",
        "het geinlicht<br />nedereindseweg 1-3<br />nieuwegein");

    AddClub(map, "52.10450", "5.18205",
        "dbc",
        "de voorhof<br />burg. de withstraat 29a<br />de bilt");

    AddClub(map, "52.09017", "5.09619",
        "hot spirit",
        "buurthuis don bosco - spirit<br />abel tasmanstraat 88 b<br />utrecht");

    AddClub(map, "52.08007", "5.03792",
        "sv trio",
        "oranjelaan 10<br />de meern");

    AddClub(map, "52.08878", "5.23851",
        "sc zeist",
        "zaal maria oord<br />hortensialaan 30<br />3702 vg zeist");

    AddClub(map, "52.13796", "5.03857",
        "sc vegtlust",
        "de open hof<br />kerkweg 60<br />3603 cm maarssen");
}

function AddClub(map, lon, lat, clubnaam, adres)
{
    var pin = map.AddPushpin(new VELatLong(lon, lat));
    pin.SetTitle(clubnaam);
    pin.SetDescription(adres);
}

var weekdagen = new Array("zo", "ma", "di", "wo", "do", "vr", "za");
var maandenshort = new Array("jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec");
var maandenlong = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");

function FormatDatum(d)
{
    var weekdag = d.getDay();
    
    if (d.format("HH:mm.ss") == "00:00.00")
        return weekdagen[weekdag] + " " + d.format("dd-MM-yyyy");
    else
        return weekdagen[weekdag] + " " + d.format("dd-MM-yyyy HH:mm");
}

function MakeLink(link)
{
    if (link == null)
        return null;
    
    if (link.substring(0,7) != "http://" && link.substring(0,8) != "https://")
        link = "http://" + link;
    
    var linkShort = link;
    
    if (linkShort.length > 40)
    {
        linkShort = linkShort.substring(0, 40) + "...";
    }

    return '<a href="' + link + '">' + linkShort + "</a>";
}

function ShowWaitingGif()
{
    $get('imgMenuLoading').style.display = "";
}

function HideWaitingGif()
{
    $get('imgMenuLoading').style.display = "None";
}

function Trim(value)
{
    value = value.replace(/^\s+/, '');
    value = value.replace(/\s+$/, '');
 
    return value;
}

function CloseAllChildrenDivs(id)
{
    var div = $get(id);

    for (var i = 0; i < div.childNodes.length; i++)
    {
        if (div.childNodes[i].id != null && div.childNodes[i].id != "divLive"
            && div.childNodes[i].id != "divClubsMenu"
            && div.childNodes[i].id != "divLinksMenu")
            $get(div.childNodes[i].id).style.display = "None";
    }
}

function CheckUpdates(IsHeartbeat)
{
    if (IsHeartbeat)
    {
        UsfService.GetLastBijdrageID(GotLastID);
    }
    else
    {
        UsfService.GetLastBijdrageID(GotLastIDNoHeartbeat);
    }
}

function GotLastID(id)
{
    GotLastID2(id, true);
}

function GotLastIDNoHeartbeat(id)
{
    GotLastID2(id, false);
}

function GotLastID2(id, IsHeartbeat)
{
    if (CurrentBijdrageID < id)
    {
        GetUpdates(id, IsHeartbeat);
    }
    else
    {
        if ($get('lblHeartBeat').style.visibility == "hidden")
        {
            $get('lblHeartBeat').style.visibility = "visible"; 
        }
        else
        {
            $get('lblHeartBeat').style.visibility = "hidden";
        }
        
        // OK
        if (IsHeartbeat)
            CurrentTimeout = setTimeout('CheckUpdates(true)', 5000);
    }
}

function GetUpdates(NewID, IsHeartbeat)
{
    if (IsHeartbeat)
        UsfService.GetBijdragenUpdates(CurrentBijdrageID, GotBijdragenUpdates);
    else
        UsfService.GetBijdragenUpdates(CurrentBijdrageID, GotBijdragenUpdatesNoHeartbeat);
    
    CurrentBijdrageID = NewID;
}

var CurrentTimeout = 0;
var CurrentBijdrageID = 0;

function MarkUp(Tag, ElementID)
{
    
}

function FadeIn(id, i)
{
    if (document.all)
    {
        $get(id).style.filter = "";
        $get(id).style.opacity = 100;
        
        return;
    }
    
    i += 1;

    var interval = 20;
    
    if (i < 100)
    {
        $get(id).style.filter = "alpha(opacity=" + i + ")";
        $get(id).style.opacity = i / 100;

        var func = 'FadeIn("' + id + '", ' + i + ')';

        setTimeout(func, interval);
    }
    else
    {
        $get(id).style.filter = "";
        $get(id).style.opacity = 100;
    }
}

function TransformHTML(Tekst, blnHTML)
{
    var index = Tekst.indexOf("<diagram>");
    var index2 = Tekst.indexOf("</diagram>");
    var diagramTag;

    if (blnHTML)
    {
        while (index >= 0)
        {
            if (index2 < 0)
                Tekst = Tekst.replace("<diagram>", "&lt;diagram&gt;");
            else
            {
                diagramTag = Tekst.substring(index, index2 + 10);
                Tekst = Tekst.replace(diagramTag, Diagram2HTML(diagramTag));
            }

            index = Tekst.indexOf("<diagram>");
            index2 = Tekst.indexOf("</diagram>");
        }
    }
    else
    {
        Tekst = Tekst.replace(/</g, "&lt;");
        Tekst = Tekst.replace(/>/g, "&gt;");
    }

    return Tekst;
}

function Diagram2HTML(diagram)
{
    var symbolen = " pnbrqkpnbrqk";

    var bord = new Array();

    for (i = 0; i < 64; i++)
        bord[i] = 0;

    var bValid = true;
    result = "";

    diagram = diagram.replace(/ /g, "");

    var i1 = diagram.indexOf(";");

    // Witte stukken
    if (i1 < 0)
        i1 = diagram.length - 10;

    var stukken = diagram.substring(9, i1);

    var arrStukken = new Array();

    arrStukken = stukken.split(",");

    var x;
    var y;

    for (i = 0; i < arrStukken.length; i++)
    {
        var stuk = arrStukken[i];

        x = fVeld(stuk);
        y = fStuk(stuk, "w");

        if (x >= 0 && y >= 0)
            bord[x] = y;
    }

    //Zwarte stukken
    stukken = diagram.substring(i1 + 1, diagram.length - 10);

    if (stukken.length > 1)
    {
        arrStukken = stukken.split(",");

        for (i = 0; i < arrStukken.length; i++)
        {
            stuk = arrStukken[i];

            x = fVeld(stuk);
            y = fStuk(stuk, "b");

            if (x >= 0 && y >= 0)
            {
                bord[x] = y;
            }
        }
    }

    // Opbouwen tabel

    result = '<table border="1"><tr><td>';

    for (x = 0; x < 8; x++)
    {
        for (y = 0; y < 8; y++)
        {
            i1 = x * 8 + y;

            result = result + '<img src="gif/';

            if (bord[i1] != 0)
            {
                if (bord[i1] <= 6)
                    result += "w";
                else
                    result += "b";

                result += symbolen.charAt(bord[i1]);
            }

            if ((x % 2 == 0 && y % 2 == 0) || (x % 2 == 1 && y % 2 == 1))
                result += "w";
            else
                result += "b";

            result += '.gif">'
        }
        result += "<br />";
    }

    result += "</td></tr></table>";

    //result = result.replace(/</g, "&lt;");
    //result = result.replace(/>/g, "&gt;");

    return result;
}

function fVeld(s)
{
    var veld = 0;

    s = s.toUpperCase();

    if (s.length > 2)
        s = s.substring(1);

    if (s.length >= 2)
    {
        veld = 8 * (8 - parseInt(s.charAt(1)));
        veld += s.charCodeAt(0) - 65;
    }

    if (veld < 0 || veld > 63)
        veld = -1;

    return veld;
}


function fStuk(s, k)
{
    var stuk = 0;

    s = s.toUpperCase();

    if (s.length == 2)
        s = "X" + s;

    if (s.length == 3)
    {
        switch (s.substring(0, 1))
        {
            case "X": stuk = 1;
                break;

            case "P": stuk = 2;
                break;

            case "L": stuk = 3;
                break;

            case "T": stuk = 4;
                break;

            case "D": stuk = 5;
                break;

            case "K": stuk = 6;
                break;

            default: stuk = 0;
        }
    }

    // Voor zwarte stukken +6
    if (k == "b" && stuk != 0)
        stuk += 6;

    return stuk;

}
