/* Minification failed. Returning unminified contents.
(3865,6): run-time error JS1004: Expected ';'
(3869,20): run-time error JS1004: Expected ';'
(3877,6): run-time error JS1004: Expected ';'
(3883,20): run-time error JS1004: Expected ';'
(4011,6): run-time error JS1004: Expected ';'
(4015,28): run-time error JS1004: Expected ';'
 */

class UParameters {
    set EveID(value) {
        this._Eve = value;
    }
    get EveID() {
        return this._Eve;
    }
    set ClID(value) {
        this._ClID = value;
    }
    get ClID() {
        return this._ClID;
    }
    set PoID(value) {
        this._PoID = value;
    }
    get PoID() {
        return this._PoID;
    }
    set View(value) {
        this._View = value;
    }
    get View() {
        return this._View;
    }
    set Level(value) {
        this._Level = value;
    }
    get Level() {
        return this._Level;
    }
    set URL(value) {
        this._URL = value;
    }
    get URL() {
        return this._URL;
    }
    set FromInd(value) {
        this._FromInd = value;
    }
    get FromInd() {
        return this._FromInd;
    }
    set Theme(value) {
        this._Theme = value;
    }
    get Theme() {
        return this._Theme;
    }
    set FullScreen(value) {
        this._FullScreen = value;
    }
    get FullScreen() {
        return this._FullScreen;
    }
}
class ActiveClass {
    set ClID(value) {
        this._ClID = value;
    }
    get ClID() {
        return this._ClID;
    }
    set AcClID(value) {
        this._AcClID = value;
    }
    get AcClID() {
        return this._AcClID;
    }
    set LvL(value) {
        this._LvL = value;
    }
    get LvL() {
        return this._LvL;
    }
    set Gend(value) {
        this._Gend = value;
    }
    get Gend() {
        return this._Gend;
    }
}
class SplitCls {
    set HTM(value) {
        this._HTM = value;
    }
    get HTM() {
        return this._HTM;
    }
    set Ipo(value) {
        this._Ipo = value;
    }
    get Ipo() {
        return this._Ipo;
    }
    set MsTim(value) {
        this._MsTim = value;
    }
    get MsTim() {
        return this._MsTim;
    }
    set Id(value) {
        this._Id = value;
    }
    get Id() {
        return this._Id;
    }
    set Rank(value) {
        this._Rank = value;
    }
    get Rank() {
        return this._Rank;
    }
    constructor() {
        this._MsTim = 0;
        this._Rank = null;
    }
}
class IpoAth {
    set Ipo(value) {
        this._Ipo = value;
    }
    get Ipo() {
        return this._Ipo;
    }
    set Arr(value) {
        this._Arr = value;
    }

}

var Language = "English";
var BaseURL = "";
var EventID;
var EventObj;
var ClassObj;
var TimPosObj;
var myIntevallChecker;
var Theme;
var DicSpli = {};
let ActCls = new ActiveClass();
let URLPar = new UParameters();
var InterV = null;
$(document).ready(function () {
    $("body").hide();
    URLPar = new UParameters();
    URLPar.FromInd = 0;
    GetUrlPara();
   // LoadLastVisit();
    BaseURL = URLPar.URL + "/";
    $("#head-img").attr("href", URLPar.URL);
    if (URLPar.EveID == undefined || URLPar.EveID == "") {
        $("#live-tabs").hide();
        $("#cont-menu").hide();
        $("#rac-tab").show();
        document.getElementById("compName").innerHTML = "<span data-lan='competitions'>Tävlingar</span>"; //Denna går inte! 
        LoadRaces();
    }
    else {
       // console.log(UParameters);
        LoadLastVisit();
        $("#live-tabs").show();
        $("#cont-menu").show();
        $("#rac-tab").hide();
        LoadEvent();
        LayoutChange();
    }
    SignalRSConnection();
    myIntevallChecker = setInterval(EverythingOkFunc, 3000);
    GetLanguages();
    Translate();
    $("body").show();
    if (Theme == "FJALLMARA") {
        $("#nav-m").html(`<li><a href="https://eqtiming.com" class="nav-li">Följ helgens tävlingar</a></li>`);
    }
});

$(window).focus(function () {
    //  console.log("Focus");

});
$(window).blur(function () {
    //console.log("UnFocus");
});

$(document).on("click", '.nav-li', function (event) {
    if (event.currentTarget.attributes["men-coho"].nodeValue == "live-broadcast") {
        //return;
    }
    else if ("startpage" == event.currentTarget.attributes["men-coho"].nodeValue) {
        if (Theme != null && Theme != "SSF" && Theme != "FIS") {
            location.href = URLPar.URL + "/?Theme=" + Theme; //We add parameter if we have a theme 
        } else {
            location.href = URLPar.URL;
        }
    } else {
        URLPar.View = event.currentTarget.attributes["men-coho"].nodeValue;
        SetUrl(event.currentTarget.attributes["men-coho"].nodeValue);
        LayoutChange();
    }

});
//Fixing the menu for 
$(document).on("click", '.nav-sm-menu', function (event) {
    if (parseInt($("#nav-b").height()) > 0) {
        $("#nav-b").removeClass("nav-btn-show");
        $("#nav-b").find("ul").removeClass("nav-ul-show");
    } else {
        $("#nav-b").addClass("nav-btn-show");
        $("#nav-b").find("ul").addClass("nav-ul-show");
    }

});

function LoadEvent() {
    EventObj = GetJs("GetRace/" + URLPar.EveID, false);
    if (EventObj == null) {
       // console.log("EventID not loaded " + URLPar.EveID);
        return null;
    }
    var RDate = Date.parse(EventObj["RaceDate"]);
    var DatDiff = Math.round((RDate - (new Date())) / (1000 * 60 * 60 * 24));
    const themeId = "231232119";
    Theme = EventObj["Theme"];
    if (1191 == URLPar.EveID) {
        Theme = "TIV20";
        EventObj["Theme"] = "TIV20";
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/TIV20.css?' + themeId + '">');

    }
    else if (1198 == URLPar.EveID) {
        Theme = "UNOX";
        EventObj["Theme"] = "UNOX";
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/UNOX.css' + themeId + '">');

    }

    else if (Theme != null && Theme != "SSF") {

        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/' + EventObj["Theme"] + '.css?' + themeId + '">');
    }
    else if ("BT" == EventObj["Sport"]) {
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/SSSF_Biathlon.css?' + themeId + '">');
    }
    else if (URLPar._URL.includes("live.skidskytte")) {
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/SSSF_Biathlon.css?' + themeId + '">');
        console.log("Is biathlon");
    }
    else if (EventObj["Nation"] === "NOR") {
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/eqtiming.css?' + themeId + '">');
    }
   


    if (Theme == "FJALLMARA") {
        document.title = "Fjällmaraton";
    }

    if (DatDiff < -20 && EventObj["TaID"] != undefined && EventObj["TaEventID"] != undefined) {
        var _URL = "https://ta.skidor.com/ResultList.aspx?eventid=" +
            EventObj["TaEventID"] +
            "&competitionid=" +
            EventObj["TaID"];
        $("div").hide();
        $("#cont-menu").show();
        $("#nav-b").show();
        $(".nav-lin li").hide();
        $(".nav-lin li:first-child").show();
        $(".nav-lin li:first-child a > span").attr("data-lan", "backtolive");

        // $(document.body).append('We are transfering you to SSF TA for the oficial results <iframe src="' + _URL + '"></iframe>');
        $(document.body).append('<iframe src="' + _URL + '"></iframe>');

       // console.log(_URL);
        //window.location.href = _URL;
        return;
    }
    document.getElementById("compName").innerText = EventObj["Name"];
    document.getElementById("compOrg").innerText = EventObj["Organizer"];
    document.getElementById("compPla").innerText = EventObj["Place"];



    MenuChange();
    //console.log("Event Loaded " + EventObj["Name"] + " and Sport " + EventObj["Sport"]);
    if (URLPar.ClID == undefined) {

    }
    else if (URLPar.ClID in EventObj["Class"]) {
        document.getElementById("cl-name").innerHTML = EventObj["Class"][URLPar.ClID]["Name"];
        document.getElementById("cl-name").setAttribute("data-cls", URLPar.ClID);
    }
    else {
        URLPar.ClID = undefined;
    }
    if (EventObj["Sport"] == "AL" && (URLPar.View == undefined || URLPar.View == null)) {
        URLPar.View = "alpine";
    }
    LayoutChange();
    MakeClassBoxes();
    Translate();
    LoadMessageText();
}
function MenuChange() {
    if (EventObj["Sport"] == "CC") {
        $("a[men-coho='alpine']").hide();
        $("a[men-coho='split']").hide();
        $("a[men-coho='scroll']").hide();
        //$("a[men-coho='shooting']").hide();
    }
    else if (EventObj["Sport"] == "AL" || EventObj["Sport"] == "SS") {
        $("a[men-coho='sprint']").hide();
        $("a[men-coho='split']").hide();
        $("a[men-coho='scroll']").hide();
        //$("a[men-coho='shooting']").hide();
        $("#tbl-starttime").hide();
    }
    else if (EventObj["Sport"] == "BT") {
        $("a[men-coho='sprint']").hide();
        $("a[men-coho='alpine']").hide();
        $("a[men-coho='split']").hide();
        $("a[men-coho='scroll']").hide();
        //$("a[men-coho='shooting']").hide();
    }
}
function LayoutChange() {
    //console.log(URLPar.View);
   
    if (URLPar.View == "result" || URLPar.View == null || URLPar.View == "split") {
        $("#res-tab").show();
        $("#choices").show();
        $("#cl-lvl-pos").show();
        $("#alp-tab").hide();
        $("#spr-tab").hide();
        $("#out-spr-tab").hide();
        $("#score-tab").hide();
        $("#shooting-tab").hide();
        if (URLPar.View == "split") {
            URLPar.PoID = 999;
        }
        else if (URLPar.PoID == -1) {
            LoadStartlist();
        }
        else {
            LoadResultlist();
        }

    }
    else if (URLPar.View == "sprint") {
        $("#res-tab").hide();
        $("#choices").show();
        $("#alp-tab").hide();
        $("#out-spr-tab").show();
        $("#cl-lvl-pos").hide();
        $("#spr-tab").show();
        $("#score-tab").hide();
        $("#shooting-tab").hide();
        GetSchemaSprint();
        LoadSprintStage();
    }
    else if (URLPar.View == "scoreboard") {
        $("#res-tab").hide();
        $("#choices").hide();
        $("#alp-tab").hide();
        $("#out-spr-tab").hide();
        $("#cl-lvl-pos").hide();
        $("#spr-tab").hide();
        $("#score-tab").show();
        $("#shooting-tab").hide();

        ScoreBoardBuild();
    }
    else if (URLPar.View == "shooting") {
        $("#res-tab").hide();
        $("#choices").hide();
        $("#alp-tab").hide();
        $("#out-spr-tab").hide();
        $("#cl-lvl-pos").hide();
        $("#spr-tab").hide();
        $("#score-tab").hide();
        $("#shooting-tab").show();
        BuildShooting();
    }
    else {

        $("#res-tab").hide();
        $("#choices").hide();
        $("#alp-tab").show();
        $("#spr-tab").hide();
        $("#out-spr-tab").hide();
        $("#score-tab").hide();
        AlpBuild();
        document.getElementById('alp-tab').scrollIntoView();
    }
}
function MakeClassBoxes() {
    var Exi = false;
    var Pop = "";
    for (var k in EventObj["Class"]) {
        var Value = EventObj["Class"][k];
        Pop += "<li id='cl_" + Value["ID"] + "' class='li-class' data-class='" + k + "'>" + Value["Name"] + "</li>";
        if (k == URLPar.ClID) {
            Exi = true;
        }
    }
    URLPar.FromInd = 0;
    document.getElementById("Classcomb").innerHTML = Pop;
    if (Exi == true) {
        document.getElementById("cl-name").innerHTML = EventObj["Class"][URLPar.ClID]["Name"];
        document.getElementById("cl-name").setAttribute("data-cls", URLPar.ClID);
        document.getElementById("cl-name").removeAttribute("data-lan");
    } else {
        return;
    }
    if (URLPar.ClID == null || URLPar.ClID === "undefined") {
        MakeLevelBoxes(k);
    } else {
        MakeLevelBoxes(URLPar.ClID);
    }
}
$(document).on("click", '.li-class', function (event) {
    URLPar.ClID = event.currentTarget.attributes["data-class"].nodeValue;
    document.getElementById("cl-name").innerHTML = event.currentTarget.innerText;
    document.getElementById("cl-name").setAttribute("data-cls", URLPar.ClID);
    document.getElementById("cl-name").removeAttribute("data-lan");
    document.getElementById("tboy").innerHTML = "";


    if (URLPar.View == "sprint") {
        GetSchemaSprint();
        SetUrl("sprint");
    }
    else {
        MakeLevelBoxes(URLPar.ClID);
    }
});

function MakeLevelBoxes(ClID) {
    if (ClID == undefined) {
        return;
    }

    var Cls = EventObj["Class"][ClID]["Level"];
    ClassObj = EventObj["Class"][ClID];
    var Pop = "";
    var Coun = 0;
    var Exi = false;
    var ClNam = "col-sm-4";
    var ClObj;
    URLPar.FromInd = 0;
    var Av = {};
    //console.log(ClassObj);

    for (var z in Cls) {
        Av[Cls[z]["SortOrder"]] = Cls[z];
    }
    // result.forEach(r => r.forEach(p => p.hospital.sort((a, b) => a.amountinINR - b.amountinINR)));
    if (Theme == "FJALLMARA") {
        Pop += "<li id='lv_" + 1 + "' data-level='" + 1 + "' class='li-level'>" + "Total" + "</li>";
        Coun += 1;
        if (1 == URLPar.Level) {
            Exi = true;
        }
        Pop += "<li id='lv_" + 2 + "' data-level='" + 2 + "' class='li-level'>" + "Dam" + "</li>";
        Coun += 1;
        if (2 == URLPar.Level) {
            Exi = true;
        }
        Pop += "<li id='lv_" + 3 + "' data-level='" + 3 + "' class='li-level'>" + "Herr" + "</li>";
        Coun += 1;
        if (3 == URLPar.Level) {
            Exi = true;
        }
    }
    else {
        for (var k in Av) {
            Pop += "<li id='lv_" + Av[k]["Level"] + "' data-level='" + Av[k]["Level"] + "' class='li-level'>" + Av[k]["Name"] + "</li>";
            Coun += 1;
            if (Av[k]["Level"] == URLPar.Level) {
                Exi = true;
            }
        }
    }
    
    document.getElementById("Levelcomb").innerHTML = Pop;
    if (Coun < 2) {
        URLPar.Level = 1;
        $(".levels").hide();
        $("a[men-coho='sprint']").hide(); // vi döljer sprint om det inte finns något run > 1
        ClNam = "col-sm-6";
        ClObj = document.getElementsByClassName("dropdown");
    }
    else {
        $(".levels").show();
        MenuChange();
        if (Exi == true) {
            URLPar.Level = URLPar.Level;
            if (Theme != "FJALLMARA") {
                document.getElementById("lev-name").innerHTML = Cls[URLPar.Level]["Name"];
            }
            else if (1 == URLPar.Level) {
                document.getElementById("lev-name").innerHTML = "Total";
            }
            else if (2 == URLPar.Level) {
                document.getElementById("lev-name").innerHTML = "Dam";
            }
            else if (3 == URLPar.Level) {
                document.getElementById("lev-name").innerHTML = "Herr";
            }
            
            document.getElementById("lev-name").setAttribute("lev-name", URLPar.Level);
            document.getElementById("lev-name").removeAttribute("data-lan");
        }
        else {
            URLPar.Level = 1;
        }

        ClNam = "col-sm-4";
        ClObj = document.getElementsByClassName("dropdown");
    }//.classList.add("col-sm-4")
    for (var i = 0; i < ClObj.length; i++) {
        if (ClObj[i].classList.contains("col-sm-4")) {
            ClObj[i].classList.remove("col-sm-4");
        }
        if (ClObj[i].classList.contains("col-sm-6")) {
            ClObj[i].classList.remove("col-sm-6");
        }
        ClObj[i].classList.add(ClNam);
    }
    if (EventObj["Sport"] == "AL" && URLPar.Level == 1) {
        $('#res-tabl').attr('data-style', 'hide_Starttime');
    }
    else if (EventObj["Sport"] == "AL" && URLPar.Level == 2 && !EventObj["Class"][URLPar.ClID]["ShowTime"]) {
        $('#res-tabl').attr('data-style', 'hide_Starttime');
    }
    else if (URLPar.Level > 2) {
        //tboy
        $('#res-tabl').attr('data-style', 'hide_Starttime');
    }
    else {
        $('#res-tabl').attr('data-style', 'view_Starttime');
    }
    MakeTimePosBox(ClID);
}
$(document).on("click", '.li-level', function (event) {
   
    URLPar.Level = event.currentTarget.attributes["data-level"].nodeValue;
    document.getElementById("lev-name").innerHTML = event.currentTarget.innerText;
    document.getElementById("lev-name").setAttribute("data-level", URLPar.PoID);
    document.getElementById("lev-name").removeAttribute("data-level", URLPar.PoID);
    document.getElementById("lev-name").removeAttribute("data-lan");
    SetUrl("result");
    if (EventObj["Sport"] == "AL" && URLPar.Level == 1) {
        $('#res-tabl').attr('data-style', 'hide_Starttime');
    }
    else if (URLPar.Level > 2) {
        //tboy
        $('#res-tabl').attr('data-style', 'hide_Starttime');
    }
    else {
        $('#res-tabl').attr('data-style', 'view_Starttime');
    }
    if (URLPar.PoID < 0) {
        LoadStartlist(URLPar.ClID, URLPar.Level);
    }
    else {
        
        LoadResultlist(URLPar.ClID, URLPar.PoID, URLPar.Level);
    }
});

function MakeTimePosBox(ClID, Lvl = 1) {
    //console.log(EventObj["Class"][ClID]["Level"][Lvl]);
    var Cls = EventObj["Class"][ClID]["Level"][Lvl]["TimePos"];
  
    var Pop = "";
    var Ipo = null;
    URLPar.FromInd = 0;
    Pop = "<li id ='ti_-1' class='li-pos' data-pos='-1' data-lan='startlist'> Startlista</li >";
    for (var k in Cls) {
        if (k == 999) {
            Pop += "<li class='li-pos' id='ti_" + k + "' data-pos='" + k + "' data-lan='finish'>" + Cls[k]["Name"] + "</li>";
        }
        else if (Cls[k]["IsVisible"] == true) { //Läggs bara till om den är true

            Pop += "<li class='li-pos' id='ti_" + k + "' data-pos='" + k + "'>" + Cls[k]["Name"] + "</li>";

        }

        if (k == URLPar.PoID) {
            Ipo = k;
        }
    }
    if (Theme.toLowerCase() == "fjallmara" && Ipo == null) {
        Ipo = 999;
    }



    if (Ipo == null) {
        document.getElementById("pos-name").innerHTML = "Startlista";
        document.getElementById("pos-name").setAttribute("data-pos", -1);
        document.getElementById("pos-name").setAttribute("data-lan", "startlist");
        LoadStartlist(URLPar.ClID, URLPar.Level);
        URLPar.PoID = -1;
    }
    else {
        if (URLPar.PoID == 999) {
            document.getElementById("pos-name").setAttribute("data-lan", "finish");

        }
        else if (URLPar.PoID > -1) {
            document.getElementById("pos-name").removeAttribute("data-lan");
        }


        document.getElementById("pos-name").innerHTML = Cls[Ipo]["Name"];
        document.getElementById("pos-name").setAttribute("data-pos", Ipo);
        URLPar.PoID = Ipo;
        if (Theme == "FJALLMARA") {
            TimPosObj = EventObj["Class"][URLPar.ClID]["Level"][1]["TimePos"][URLPar.PoID];
        }
        else {
            TimPosObj = EventObj["Class"][URLPar.ClID]["Level"][URLPar.Level]["TimePos"][URLPar.PoID];
        }
        
        LoadResultlist(URLPar.ClID, URLPar.PoID, URLPar.Level);
    }
    document.getElementById("TimPoscomb").innerHTML = Pop;
    SetUrl(URLPar.View);
    Translate();
}

$(document).on("click", '.li-pos', function (event) {
    URLPar.FromInd = 0;
    URLPar.PoID = event.currentTarget.attributes["data-pos"].nodeValue;
    document.getElementById("pos-name").innerHTML = event.currentTarget.innerText;
    document.getElementById("pos-name").setAttribute("data-pos", URLPar.PoID);
    if (Theme == "FJALLMARA") {
        TimPosObj = EventObj["Class"][URLPar.ClID]["Level"]["1"]["TimePos"][URLPar.PoID];
    }
    else {
        TimPosObj = EventObj["Class"][URLPar.ClID]["Level"][URLPar.Level]["TimePos"][URLPar.PoID];
    }
    if (URLPar.PoID == -1) {
        document.getElementById("pos-name").setAttribute("data-lan", "startlist");
    }
    else if (URLPar.PoID == 999) {
        document.getElementById("pos-name").setAttribute("data-lan", "finish");
    }
    else {
        document.getElementById("pos-name").removeAttribute("data-lan");
    }
    Translate();
    SetUrl();
    if (URLPar.PoID < 0) {
        LoadStartlist(URLPar.ClID, URLPar.Level);
    }
    else {
        LoadResultlist(URLPar.ClID, URLPar.PoID, URLPar.Level);
    }
});
$(document).on("click", '#btnUpdate', function (event) {


    if (InterV == null) {
        //InterV = setInterval(LiveResults, 3000);
    }
    else {
        clearInterval(InterV);
        InterV = null;
    }
    if ($("#chk-live").is(":checked")) {
        InterV = setInterval(LiveResults, 3000);

    }

});
function LiveResults() {
    if (URLPar.View == "alpine") {
        AlpFillSchema();
    }
    else if (URLPar.View == "sprint") {
        LoadSprintStage();
    }
    else {
        if (URLPar.PoID < 0) {
            LoadStartlist(URLPar.ClID, URLPar.Level, URLPar.FromInd);
        }
        else {
            LoadResultlist(URLPar.ClID, URLPar.PoID, URLPar.Level, URLPar.FromInd);
        }
    }
}
function EverythingOkFunc() {
    if ($("#chk-live").is(":checked")) {
        //console.log("Is are checked! :D ");
        if (InterV == null) {

            InterV = setInterval(LiveResults, 3000);
        }
    }
}

//#Region startlist handling 
//Fixar startlistan skicka med ett 
function LoadStartlist(ClID, Lvl = 1, From = 0) {
    var Gender = "N";
    if (ClID == undefined) {
        return;
    }
    if (Theme == "FJALLMARA" && Lvl == 2) {
        Gender = "L";
        Lvl = 1;
    }
    else if (Theme == "FJALLMARA" && Lvl == 3) {
        Gender = "M";
        Lvl = 1;
    }


    document.getElementById("pos-name").setAttribute("data-lan", "startlist");
    var Ap = "GetStartlist/" + URLPar.EveID + "/" + ClID + "?Count=50&From=" + From + "&Level=" + Lvl + "&Gender=" + Gender;
    GetJs(Ap, true, PopulateStartlist);
}

function Build_Startlist_Head() {
    var Htm = "<tr data-tab='head'>";
    var Head = [["<span style='center'>#</span>", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"], ["Starttid", "starttime"]];
    var IsRel = IsRelay();
    for (var h = 0; h < Head.length; h++) {
        if (IsRel == true && Head[h][1] == "name") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='teamname'>" + Head[h][0] + "</th> ";
        }
        else if (IsRel == true && Head[h][1] == "club") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='relayathlete'>" + Head[h][0] + "</th> ";
        } else {
            Htm += " <th class='head-" +
                Head[h][1] +
                " tbl-" +
                Head[h][1] +
                "' data-lan='" +
                Head[h][1] +
                "'>" +
                Head[h][0] +
                "</th> ";

        }
    }
    Htm += "</tr>";
    document.getElementById("thea").innerHTML = Htm;
    Translate();
}
function PopulateStartlist(_data) {

    Build_Startlist_Head();
    ShowMultiplePages(_data["Count"], "startlist", _data["From"]);
    if (_data["Count"] == 0) {
        document.getElementById("tboy").innerHTML = "";
    }

    $('#res-tabl').attr('data-info', 'stlist');

    var Htm = "";
    for (var z = 0; z < _data["Startlist"].length; z++) {
        var Ob = _data["Startlist"][z];
        var RelAthl = Ob["RealyAthletes"];
        var RelStri = "<span class='startlist-name'>";
        for (var k in RelAthl) {
            RelStri += "<span class='startlist-inner-name'>" + k + ". " + FormatName(RelAthl[k]["FirstName"], RelAthl[k]["LastName"]) + " </span>";
        }
        RelStri += "</span>";

        if (IsRelay()) {
            Ob["Club"] = RelStri;
            Ob["LastName"] = (Ob["FirstName"] + " " + Ob["LastName"]).trim();
            Ob["FirstName"] = "";
        }
        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj.Sport == "AL") {
            Ob["StartTime"] = "";

        }
       
        Ob["Nation"] = IsNull(Ob["Nation"], "");
        Htm += "<tr data-id='" + Ob["ID"] + "'>";
        var Ro = [[FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Ob["Nation"], "nation"], [FormatStarttime(Ob["StartTime"]), "starttime"]];
        for (var d = 0; d < Ro.length; d++) {
            Htm += " <td class='head-" + Ro[d][1] + " tbl-" + Ro[d][1] + " body-" + Ro[d][1] + "' >" + Ro[d][0] + "</td> ";
        }
        Htm += "</tr>";
    }
    document.getElementById("tboy").innerHTML = Htm;
}
//#End region startlist 
//#Region resultlists
function LoadResultlist(ClID, Ipos, Lvl = 1, From = 0) {
    var gender = "N";
    if (URLPar.View == "split") {
        DicSpli = {};
        LoadSplitlist(URLPar.ClID);
        return;
    }

    if (ClID == undefined) {
        return;
    }
    if (Theme == "FJALLMARA") {
        if (Lvl == 1) {
            gender = "N";
        }
        else if (Lvl == 2) {
            gender = "L";
        }
        else if (Lvl == 3) {
            gender = "M";
        }
        Lvl = 1;
    }

    var Ap = "GetResultlist/" + URLPar.EveID + "/" + ClID + "?Ipos=" + Ipos + "&Count=50&From=" + From + "&Level=" + Lvl + "&Gender=" + gender;
    
    GetJs(Ap, true, PopulateResultlist);
}
function Build_Result_Head() {
    var Htm = "<tr data-tab='head'> \n";
    var IsRel = IsRelay();
    var Head = [["Pl.", "rank"], ["#", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"],
    ["Åktid", "runtime"], ["Difftid", "diff"]];
    if (EventObj["Sport"] == "BT") {
        Head = [["Pl.", "rank"], ["#", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"], ["Sht.", "shooting"],
        ["Åktid", "runtime"], ["Difftid", "diff"]];
    }
    if (Theme == "IPC" || Theme == "Winterparasport") {
        if (EventObj["Sport"] == "BT") {
            Head = [["Pl.", "rank"], ["#", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"], ["Sht", "shooting"], ["Realtime", "realtime"],
            ["Åktid", "runtime"], ["Difftid", "diff"]];
        } else {
            Head = [["Pl.", "rank"], ["#", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"], ["Realtime", "realtime"],
            ["Åktid", "runtime"], ["Difftid", "diff"]];
        }

    }
    for (var h = 0; h < Head.length; h++) {
        if (IsRel == true && Head[h][1] == "name") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='teamname'>" + Head[h][0] + "</th> ";
        }
        else if (IsRel == true && Head[h][1] == "club") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='relayathlete'>" + Head[h][0] + "</th> ";
        } else {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='" + Head[h][1] + "'>" + Head[h][0] + "</th> ";
        }
    }
    Htm += "</tr>";
    document.getElementById("thea").innerHTML = Htm;
    Translate();
}
function PopulateResultlist(_data) {
    Build_Result_Head();
    $('#res-tabl').attr('data-info', 'relist');
    ShowMultiplePages(_data["Count"], "resultlist", _data["From"]);
    var Htm = "";
    var Lvl = URLPar.Level;
    for (var z = 0; z < _data["ResultList"].length; z++) {
        var Ob = _data["ResultList"][z];
        var Ti = Ob["Times"][URLPar.PoID];
        var Sht = null;
        var Sh = "";
        var SortbyName = false;
        Ti["DiffClass"] = FormatTime(Ti["DiffClass"]);
        Ti["RunTime"] = FormatTime(Ti["RunTime"]);
        if (EventObj["Sport"] == "SS") {
            Ti["DiffClass"] = FormatPoints(IsNull(Ti["DiffPoints"], ""));
            Ti["RunTime"] = FormatPoints(IsNull(Ti["Points"], ""));
            Ti["RunTimeMS"] = Ti["Points"];
        }

        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false || EventObj["Class"][URLPar.ClID]["SortByRank"] === false) {
            if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj["Class"][URLPar.ClID]["SortByRank"] == false) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = "";
                Ti["RankGender"] = "";
                Ti["DiffGender"] = "";
                SortbyName = true;
            }
            else if (!EventObj["Class"][URLPar.ClID]["SortByRank"]) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = Ti["RunTime"];
                Ti["RankGender"] = "";
                Ti["DiffGender"] = "";
                SortbyName = true;
            } else if (!EventObj["Class"][URLPar.ClID]["ShowTime"]) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = "";
                Ti["RankGender"] = "";
                Ti["DiffGender"] = "";
            }
        }
         if (Lvl == 2 && Theme == "FJALLMARA") {
             Ti["DiffClass"] = Ti["DiffGender"];
             Ti["RankClass"] = Ti["RankGender"];
        }
         else if (Lvl == 3 && Theme == "FJALLMARA") {
             Ti["DiffClass"] = Ti["DiffGender"];
             Ti["RankClass"] = Ti["RankGender"];
        }
        if (SortbyName && Ob["LastName"].toString().length > 0) {
            Ti["RunTimeMS"] = Ob["LastName"].toString().charCodeAt(0);
        }
        if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {
            //Vid en status så tar vi bort tiden 
            Ti["RunTime"] = Ob["Status"];
            Ti["DiffClass"] = "";
            Ti["RankClass"] = "";
        }
        for (var k in Ob["Shooting"]) {
            //Hämtar ut alla skjutningar
            if (k <= TimPosObj["AfterShootNr"]) {
                Sht += Ob["Shooting"][k]["Missed"];
                Sh += Ob["Shooting"][k]["Missed"] + "+";
            }
        }
        if (Sh.length > 0) {
            Sh = Sh.substring(0, Sh.length - 1);
        }
        if (IsRelay()) {
            if (TimPosObj["Leg"] in Ob["RealyAthletes"]) {
                Ob["Club"] = FormatName(Ob["RealyAthletes"][TimPosObj["Leg"]]["FirstName"],
                    Ob["RealyAthletes"][TimPosObj["Leg"]]["LastName"]);

            } else {
                Ob["Club"] = "";
            }
            Ob["LastName"] = (Ob["FirstName"] + " " + Ob["LastName"]).trim();
            Ob["FirstName"] = "";
        }
        Ob["Nation"] = IsNull(Ob["Nation"], "");
        Htm += `<tr data-id='${Ob["ID"]}' data-order='${Ob["SortOrder"]}' data-bib='${Ob["Startno"]}' data-tim="${Ti["RunTimeMS"]}">`;
        var Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Ob["Nation"], "nation"], [Ti["RunTime"], "runtime"], [Ti["DiffClass"], "diff"]];

        if (Theme == "IPC" || Theme == "Winterparasport") {
            if (EventObj["Sport"] == "BT") {
                Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
                [Ob["Nation"], "nation"], [FormatShooting(Sht, Sh), "shooting"], [FormatTime(Ti["RealRuntime"]), "realtime"], [Ti["RunTime"], "runtime"], [Ti["DiffClass"], "diff"]];

            } else {
                Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
                [Ob["Nation"], "nation"], [FormatTime(Ti["RealRuntime"]), "realtime"], [Ti["RunTime"], "runtime"], [Ti["DiffClass"], "diff"]];
            }

        }
        else if (EventObj["Sport"] == "BT") {
            Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
            [Ob["Nation"], "nation"], [FormatShooting(Sht, Sh), "shooting"], [Ti["RunTime"], "runtime"], [Ti["DiffClass"], "diff"]];

        }


        for (var d = 0; d < Ro.length; d++) {
            Htm += ` <td class='body-${Ro[d][1]} tbl-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
        }
        Htm += "</tr>";

    }
    document.getElementById("tboy").innerHTML = Htm;
}
//Endregion Resultlist
//Region Splitview 
function LoadSplitlist(ClID, Lvl = 1, From = 0) {
    if (ClID == undefined) {
        return;
    }
    document.getElementById("pos-name").setAttribute("data-lan", "startlist");
    var Ap = "GetStartlist/" + URLPar.EveID + "/" + ClID + "?Count=200&From=" + From + "&Level=" + Lvl + "&GetTimes=true";
    GetJs(Ap, true, PopulateSplitlist);
}
function Build_Split_Head() {
    var Htm = "<tr data-tab='head-split'> \n";
    var Head = [["Pl.", "rank"], ["#", "bib"], ["Namn", "name"], ["Klubb", "club"]];

    for (var h = 0; h < Head.length; h++) {
        Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='" + Head[h][1] + "'>" + Head[h][0] + "</th> ";
    }
    var Tpo = ClassObj["Level"][URLPar.Level]["TimePos"];
    for (var k in Tpo) {
        if (k != 999 && Tpo[k]["IsVisible"]) {
            Htm += "<th class='head-split tbl-split tbl-split-" + k + "' data-ipo='" + k + "'>" + Tpo[k]["Name"] + "</th> ";

        }
    }
    Htm += " <th class='head-split tbl-split tbl-split-999' data-ipo='999' data-lan='finish'>Mål</th> ";


    Htm += "</tr>";
    document.getElementById("thea").innerHTML = Htm;
    Translate();
}
function PopulateSplitlist(_data) {
    Build_Split_Head();
    // ShowMultiplePages(_data["Count"], "startlist", _data["From"]);
    if (_data["Count"] == 0) {
        document.getElementById("tboy").innerHTML = "";
    }

    $('#res-tabl').attr('data-info', 'stlist');
    var Rel = [];
    $("[data-tab='head-split'] [data-ipo]").each(function () {
        Rel.push(parseInt($(this).attr("data-ipo")));
    });

    var Htm = "";
    var Tpos = {}; //Lokalt objekt med alla resultat
    var ArrOfIpos = new Array();
    for (var z = 0; z < _data["Startlist"].length; z++) {
        var Ob = _data["Startlist"][z];
        var Ti = Ob["Times"];
        let Po = new SplitCls();
        Po.Ipo = 0;
        if (IsRelay()) {
            Ob["Club"] = FormatName(Ob["RealyAthletes"][TimPosObj["Leg"]]["FirstName"], Ob["RealyAthletes"][TimPosObj["Leg"]]["LastName"]);
            Ob["LastName"] = Ob["FirstName"] + " " + Ob["LastName"];
            Ob["FirstName"] = "";
        }
        Htm += "<tr data-id='" + Ob["ID"] + "' data-starttime='" + IsNull(Ob["UsedStartTime"], Ob["StartTime"]) + "'>";
        var Ro = [["", "rank"], [Ob["Startno"], "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"]];
        for (var d = 0; d < Ro.length; d++) {
            Htm += " <td class='head-" + Ro[d][1] + " tbl-" + Ro[d][1] + " body-" + Ro[d][1] + "' >" + Ro[d][0] + "</td> ";
        }
        for (var i = 0; i < Rel.length; i++) {
            var Tim = "";
            var Ms = null;
            if (Rel[i] in Ti) {
                if (Rel[i] > Po.Ipo) {
                    Po.Ipo = Rel[i];
                    Po.Rank = Ti[Rel[i]]["RankClass"];
                    Po.MsTim = Ti[Rel[i]]["RunTimeMS"];
                    Ms = Ti[Rel[i]]["RunTimeMS"];
                }
                Tim = FormatSplitResults(FormatTime(Ti[Rel[i]]["RunTime"]), Ti[Rel[i]]["RankClass"]);
            }
            Htm += "<td class='body-split tbl-split tbl-split-" + Rel[i] + "' data-bod-ipo='" + Rel[i] + "' data-bod-runtime='" + Ms + "'> " + Tim + "</td> ";
        }
        Htm += "</tr>";
        Po.HTM = Htm;
        Po.Id = Ob["ID"];
        if (Po.Ipo in Tpos) {
            var av = Tpos[Po.Ipo];
            var Ar = av._Arr;
            var Indx = -1;
            if (Po.Ipo == 0) {
                Ar.push(Po); //Om det är startlista då är dem i rätt sortering

            } else {
                for (var b = 0; b < Ar.length; b++) {
                    if (Ar[b]._MsTim >= Po.MsTim) {
                        Indx = b;
                        break;
                    }
                }
                if (Indx == -1) {
                    Ar.push(Po);
                } else {
                    Ar.splice(Indx, 0, Po);
                }
            }
            av.Arr = Ar;
            Tpos[Po.Ipo] = av;
        }
        else {
            let Atv = new IpoAth();
            Atv.Arr = new Array(Po);
            ArrOfIpos.push(Po.Ipo);
            Atv.Ipo = Po.Ipo;
            Tpos[Po.Ipo] = Atv;
        }
        Htm = "";
    }
    function sortNumber(a, b) {
        return a - b;
    }
    ArrOfIpos.sort(sortNumber);
    var Loc = new Array();
    var add = false;
    for (var l = ArrOfIpos.length - 1; l >= 0; l--) {
        var aL = Tpos[ArrOfIpos[l]]._Arr;

        if (Loc.length == 0) {
            Loc = aL;
        } else {
            for (var q = 0; q < aL.length; q++) {
                if (ArrOfIpos[l] === 0) {
                    Loc.push(aL[q]);
                }
                else if (aL._Rank > Loc.length) {
                    Loc.push(aL[q]);
                } else {
                    add = false;
                    for (var x = 0; x < Loc.length; x++) {
                        if (aL[q]._Rank >= Loc[x]._Rank && aL[q]._Ipo > Loc[x]._Ipo) {
                            Loc.splice(x, 0, aL[q]);
                            add = true;

                            break;
                        }
                    }
                    if (add === false) {
                        Loc.splice((aL[q]._Rank - 1), 0, aL[q]);
                    }

                }
            }
        }
    }

    var Ht = "";
    for (var nk = 0; nk < Loc.length; nk++) {
        Ht += Loc[nk]._HTM;
    }
    document.getElementById("tboy").innerHTML = Ht;
}
//end region splittview 

function namesCtrl($scope) {
    // console.log("aa");
    $scope.List = $scope;
    //console.log("aa");
}

//Retunerar json objekt
function GetJs(Parameters, asy = true, succed = null, Para = null) {
    var _Data = null;
    $.ajax({
        url: BaseURL + Parameters,
        dataType: 'json',
        async: asy,
        data: _Data,
        success: function (data) {
            if (succed != null) {
                if (Para == null) {
                    succed(data);
                } else {
                    succed(data, Para);
                }

            }
            else {
                _Data = data;
            }
        }
    });
    return _Data;
}
//Fixa ut flera sidor val 
function ShowMultiplePages(Cou, ty, fr) {

    if ((Cou + fr) > 50) {
        $("#page-nxt").show();
        var htm = "";
        var Vp = Math.ceil(fr / 50);
        var ant = Math.ceil((Cou) / 50);
        var ant2 = Math.ceil((Cou) / 50);// + Math.ceil(fr/50);
        if (ty == "resultlist") {
            ant = Math.ceil((Cou + fr) / 50);
            ant2 = Math.ceil((Cou + fr) / 50);// + Math.ceil(fr/50);

        }
        // console.log(ant + " & " + Cou + " & " + fr);
        if (fr > 0) {
            htm += "<li class='page-item' ";
            htm += " data-page='" + (fr - 50) + "' data-view='" + ty + "' id='pi_" + i + "'><span class='page-link' data-lan='previous'>Föregående</span></li>";

        }
        else {
            htm += "<li class='page-item disabled' ";
            htm += " data-page='" + (0) + "' data-view='" + ty + "' id='pi_" + i + "'><span class='page-link' data-lan='previous'>Föregående</span></li>";

        }
        for (var i = 0; i < ant2; i++) {
            if (Vp == i) {
                htm += "<li class='page-item active'";
            }
            else {
                htm += "<li class='page-item'";
            }
            htm += "data-page='" + (i * 50) + "' data-view='" + ty + "' id='pi_" + i + "'><span class='page-link'>" + (i + 1) + "</span></li>";

        }
        if ((Cou + fr) > (fr + 50) && ty == "resultlist") {
            htm += "<li class='page-item' ";
            htm += " data-page='" + (fr + 50) + "' data-view='" + ty + "' id='pi_" + ant + "'><span class='page-link' data-lan='next'>Nästa</span></li>";

        }
        else if ((Cou) > (fr + 50) && ty == "startlist") {
            htm += "<li class='page-item' ";
            htm += " data-page='" + (fr + 50) + "' data-view='" + ty + "' id='pi_" + ant + "'><span class='page-link' data-lan='next'>Nästa</span></li>";

        }
        else {
            htm += "<li class='page-item disabled' ";
            htm += " data-page='" + (fr) + "' data-view='" + ty + "' id='pi_" + ant + "'><span class='page-link' data-lan='next'>Nästa</span></li>";

        }

        if (document.getElementById("page-nxt").innerHTML !== htm) {
            document.getElementById("page-nxt").innerHTML = htm;
        }
        /*<li class="page-item"><a class="page-link" href="#">Previous</a></li> */

    }
    else {
        $("#page-nxt").hide();
    }///page-item
}
$(document).on("click", '.page-item', function (event) {
    URLPar.FromInd = event.currentTarget.attributes["data-page"].nodeValue;
    if (event.currentTarget.attributes["data-view"].nodeValue == "startlist") {
        LoadStartlist(URLPar.ClID, URLPar.Level, event.currentTarget.attributes["data-page"].nodeValue);
    }
    else {
        LoadResultlist(URLPar.ClID, URLPar.PoID, URLPar.Level, event.currentTarget.attributes["data-page"].nodeValue);
    }
});
//Fixa till tider 
function FormatTime(Tim, Frm = null) {
    var Ti;
    Tim = IsNull(Tim, "");
    if (ClassObj == null) {
        return Tim;
    }

    if (Tim.length > 1) {

        if (Tim[0] == "D") {
            return Tim;
        }
    } else {
        return Tim;
    }
    if (Frm == null) {
        Ti = ClassObj["TimeFormat"];
    } else {
        Ti = Frm;
    }

    if (Tim.length < 10) {
        Tim = Tim + ".00";
    }

    if (Tim.length < 11) {
        Tim = Tim + "0";
        //return Tim;
    }
    var Ftim;
    if (Ti == "S") {
        Ftim = Tim.substring(0, 8);
    }
    else if (Ti == "H") {
        Ftim = Tim.substring(0, 11);
    }
    else if (Ti == "K") {
        Ftim = Tim.substring(0, 12);
    }
    else {
        Ftim = Tim.substring(0, 10);
    }
    if (Ftim.substring(0, 4) == "00:0") {
        return Ftim.substring(4, Ftim.length);
    }
    else if (Ftim.substring(0, 3) == "00:") {
        return Ftim.substring(3, Ftim.length);
    }
    else if (Ftim[0] == "0") {
        return Ftim.substring(1, Ftim.length);
    }
    else {
        return Ftim;
    }
}
function LoadMessageText() {

    for (var key in EventObj.ExtraInfo) {
        //EventObj.ExtraInfo
        PopulateText(key,EventObj.ExtraInfo[key]);
        console.log(key + " " + EventObj.ExtraInfo[key]);
    }

}
function PopulateText(messageType,message ) {
    if (messageType === "RaceInfo") {
        $("#nav-extrainfo").html(message);
        if (message == "" || message == null) {
            $(".nav-extrainfo").hide();
        }
        else {
            $(".nav-extrainfo").show();
        }

    }
    else if (messageType === "menu-url") {
        //$("#nav-extrainfo").html(message.Message);
        $('a[men-coho="live-broadcast"]').attr("href",message);
        if (message == "") {
            $('[men-coho="live-broadcast"]').hide();
        }
        else {
            $('[men-coho="live-broadcast"]').show();
        }
        
    }

}


function FormatStarttime(Tim) {
    if (Tim == null) {
        return Tim;
    }
    var Spli = Tim.split("T");
    if (Spli.length > 0) {
        if (EventObj["Sport"] == "AL") {
            return FormatTime(Spli[1], "H");
        }
        else {
            return Spli[1];
        }

    }
}
function FormatPoints(Poi, Frm = null) {
    var Al = Poi.toString().split(".");
    var RetPoints = "";
    if (Al.length < 2) {
        RetPoints =  "000";
    }
    else if (parseInt(Al[1]) == 0) {
        RetPoints =  "000";
    }
    else if (parseInt(Al[1].toString().length) >= 3) {
        RetPoints = Al[1].substring(0, 3);
    }
    else if (parseInt(Al[1]) < 10) {
        RetPoints = Al[1] + "00";
    }
    else if (parseInt(Al[1]) < 100) {
        RetPoints = Al[1].substring(0, 2) +"0";
    } else {
        RetPoints = Al[1].substring(0,3);
    }

    var Ti;
    var Ftim;
    if (Frm == null) {
        Ti = ClassObj["TimeFormat"];
    } else {
        Ti = Frm;
    }
    if (Ti == "S") {
        Ftim = "";
    }
    else if (Ti == "H") {
        Ftim = "." + RetPoints.substring(0, 2);
    }
    else if (Ti == "K") {
        Ftim = "." + RetPoints.substring(0, 3);
    }
    else {
        Ftim = "." + RetPoints.substring(0, 1);
    }


    return Al[0] + Ftim;

}
function FormateMS(s) {
    function pad(n, z) {
        z = z || 2;
        return ('00' + n).slice(-z);
    }
    var ms = s % 1000;
    s = (s - ms) / 1000;
    var secs = s % 60;
    s = (s - secs) / 60;
    var mins = s % 60;
    var hrs = (s - mins) / 60;
    return pad(hrs) + ':' + pad(mins) + ':' + pad(secs) + '.' + pad(ms, 3);
}
function FormateStartnumber(startnumber) {
    if (startnumber > 10000) {

    }
    return startnumber;
}
function FormatName(firstname, lastname) {
    var htm = "";
    if (firstname.length > 1) {
        htm += "<span class='td-sh-fname'>" + firstname.substring(0, 1) + ". </span>";
    }
    htm += "<span class='td-fname'>" + firstname.trim() + " </span>";
    htm += "<span class='td-lname'>" + lastname.trim() + "</span>";
    return htm;
}
function FormatShooting(misses, formattedString) {
    var htm = "";
    htm += "<span class='td-misses'>" + IsNull(misses, "") + " </span>";
    htm += "<span class='td-shootings'>" + IsNull(formattedString, "").trim() + "</span>";
    return htm;
}
function FormatSplitResults(runtime, rank) {
    var htm = "";
    htm += "<span class='split-runtime'>" + IsNull(runtime, "") + " </span>";
    htm += "<span class='split-rank'>" + IsNull(rank, "") + "</span>";
    return htm;
}

/*URL handler*/
//Få ut paramterarna 
function GetUrlPara(OnlyValid = false) {
    var GetUrl = window.location.href;
    var IndOfFyr = GetUrl.indexOf("#");
    var IndOfQues = GetUrl.indexOf("?");
    if (IndOfQues > 0) {
        IndOfFyr = IndOfQues;
    }
    URLPar = new UParameters();
    //Om det inte finns paramterar 
    if (IndOfFyr < 0) {
        URLPar.EveID = GetID(GetUrl, GetUrl.length);
        URLPar.URL = GetBaseURL(GetUrl, GetUrl.length);
        if (IndOfQues > 0) {
            let url_string = URLPar.URL; //window.location.href
            let url = new URL(url_string);
            URLPar.Theme = url.searchParams.get("Theme");

        }
        if (IndOfQues > 0) {
            let url_string2 = GetUrl; //window.location.href
            let url2 = new URL(url_string2);
            URLPar.FullScreen = url2.searchParams.get("fullscreen");
            if (URLPar.FullScreen == "1") {
                $("body").addClass("fullscreen");
            }
        }
        return URLPar;
    }
    else {
        var ParSp = GetUrl.split("#");
        URLPar.EveID = GetID(GetUrl, IndOfFyr);
        URLPar.URL = GetBaseURL(GetUrl, IndOfFyr);
        if (IndOfQues > 0) {
            let url_string2 = GetUrl; //window.location.href
            let url2 = new URL(url_string2);
            URLPar.Theme = url2.searchParams.get("Theme");
        }
        if (IndOfQues > 0) {
            let url_string2 = GetUrl; //window.location.href
            let url2 = new URL(url_string2);
            URLPar.FullScreen = url2.searchParams.get("fullscreen");
            if (URLPar.FullScreen == "1") {
                $("body").addClass("fullscreen");
            }
        }
        if (OnlyValid) {
            return URLPar;
        }
        if (ParSp.length > 1) {
            var para = ParSp[1].split("@");
            if (para.length > -1) {
                URLPar.View = para[0];
            }
            if (para.length > 0) {
                URLPar.ClID = para[1];
            }
            if (para.length > 1) {
                URLPar.Level = para[2];
            }
            if (para.length > 2) {
                URLPar.PoID = para[3];
            }
        }
        return URLPar;
    }
}
function GetID(UR, Pos) {
    var EvID = "";
    for (var i = Pos - 1; i > 0; i--) {
        if (UR[i] == "/") {
            i = -20;
        }
        else {
            EvID = UR[i] + EvID;
        }
    }
    return EvID;
}
//Retunerar bas url:n 
function GetBaseURL(UR, Pos) {
    for (var i = Pos - 1; i > 0; i--) {
        if (UR[i] == "/") {
            return UR.substring(0, i);
        }

    }
    return UR.substring(0, UR.length < 1);
}
function SetUrl(inp = "result") {
    window.location.hash = inp + "@" + URLPar.ClID + "@" + URLPar.Level + "@" + URLPar.PoID;
    if (URLPar.ClID != "undefined" || URLPar.ClID != null) {
        localStorage.setItem('race_' + URLPar.EveID, JSON.stringify(URLPar));
    }

}
function ValidateUrl() {

}
function IsRelay() {
    return EventObj["Class"][URLPar.ClID]["Discipline"].toUpperCase().includes("STAFETT");
}
function IsNull(Inp, Rep = "") {
    if (Inp == undefined) {
        return Rep;
    }
    else {
        return Inp;
    }
}
function TryParseTime(Inp) {

    return Inp;
}

function LoadLastVisit() {
    let UrParra = null;
    if (URLPar.View != "" && URLPar.View != undefined) {
        UrParra = URLPar.View;
    }
    if (URLPar.ClID == null || URLPar.ClID == "undefined") {
        if (localStorage.getItem('race_' + URLPar.EveID) != null) {
            var ll = JSON.parse(localStorage.getItem('race_' + URLPar.EveID));
            URLPar.Level = ll["_Level"];
            URLPar.ClID = ll["_ClID"];
            URLPar.PoID = ll["_PoID"];
            if (UrParra != ll["_View"] && UrParra != null) {
                URLPar.View = UrParra;
            }
            else {
                URLPar.View = ll["_View"];
            }
            SetUrl();

        }
    }


}

/**SIGNALR+JAVSCRIPT**/
//function SignalRSConnection() {
//    //Set the hubs URL for the connection
//    //$.connection.hub.url = "http://live.skidor.com:8080/signalr";  // "http://livetest.northeurope.cloudapp.azure.com:8080/signalr"; //"http://localhost:8080/signalr"; // //// "http://live.skidor.com:8080/signalr"; // //  

//    // Declare a proxy to reference the hub.m
//    var chat = $.connection.myHub;
//    //console.log(chat);
//    //
//    chat.client.passingScroll = function (ipo, Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "sprint") {
//            SprFillResult(Obj);
//        }
//        else if (URLPar.View == "alpine") {
//            AddRowAlpine(ipo, Obj);
//        }
//        else if (URLPar.View == "scoreboard") {

//        }
//        else {
//            PutInscroll(ipo, Obj);
//        }
//    };
//    chat.client.deleteTime = function (Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "sprint") {
//            SprDeleteResult(Obj);
//        } else if (URLPar.View == "alpine") {
//            alpDeleteResult(Obj);
//        }
//        else {
//            DeleteResult(Obj);
//        }
//    };
//    chat.client.addAthlete = function (Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "sprint") {
//            SprAddAthlete(Obj);
//        }
//    };
//    chat.client.addActive = function (Json) {
//        var Obj = JSON.parse(Json);
//        FillActiveClsLvl(Obj);
//    };
//    chat.client.nextStart = function (Json) {
//        var Obj = JSON.parse(Json);
//        AddNextStarter(Obj);
//    };
//    chat.client.addStatus = function (Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "sprint") {
//            SprSetStatus(Obj);
//        }
//    };
//    chat.client.shootStatus = function (Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "shooting") {
//            Shooting_HandleStatus(Obj);
//        }
//    };
//    chat.client.shootFired = function (Json) {
//        var Obj = JSON.parse(Json);
//        if (URLPar.View == "shooting") {
//            Shooting_HandleFired(Obj.Data);
//        }
//    };
//    chat.client.addMessage = function (Json) {
//        var Obj = JSON.parse(Json);
//        console.log(Obj);

//        PopulateText(Obj.Key, Obj.Value);
//        //if (URLPar.View == "shooting") {
//        //    Shooting_HandleFired(Obj.Data);
//        //}
//    };

//    $.connection.hub.disconnected(function () {
//        setTimeout(function () {
//            console.log("Dissconected");
//            $.connection.hub.start()
//                .done(function () {
//                    console.log('Reconnected');
//                    // DO STUFF HERE
//                    chat.server.joinGroup(URLPar.EveID);
//                    console.log("Connected");
//                });
//        }, 3000);
//    });


//    // Start the connection.
//    $.connection.hub.start().done(function () {
//        chat.server.joinGroup(URLPar.EveID);
//        console.log("Connected");
//    })
//        .fail(function () {
//            console.log("Could not connect");
//        });
//}

function SignalRSConnection() {
    // Create a new SignalR connection
    const connection = new signalR.HubConnectionBuilder()
        .withUrl("https://liveapi.skidor.com/myHub") // Update the URL to match your hub endpoint
        .withAutomaticReconnect() // Enable automatic reconnection
        .build();

    // Define client-side methods
    connection.on("passingScroll", function (ipo, Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "sprint") {
            SprFillResult(Obj);
        } else if (URLPar.View === "alpine") {
            AddRowAlpine(ipo, Obj);
        } else if (URLPar.View === "scoreboard") {
            // Handle scoreboard view
        } else {
            PutInscroll(ipo, Obj);
        }
    });

    connection.on("deleteTime", function (Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "sprint") {
            SprDeleteResult(Obj);
        } else if (URLPar.View === "alpine") {
            alpDeleteResult(Obj);
        } else {
            DeleteResult(Obj);
        }
    });

    connection.on("addAthlete", function (Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "sprint") {
            SprAddAthlete(Obj);
        }
    });

    connection.on("addActive", function (Json) {
        const Obj = JSON.parse(Json);
        FillActiveClsLvl(Obj);
    });

    connection.on("nextStart", function (Json) {
        const Obj = JSON.parse(Json);
        AddNextStarter(Obj);
    });

    connection.on("addStatus", function (Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "sprint") {
            SprSetStatus(Obj);
        }
    });

    connection.on("shootStatus", function (Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "shooting") {
            Shooting_HandleStatus(Obj);
        }
    });

    connection.on("shootFired", function (Json) {
        const Obj = JSON.parse(Json);
        if (URLPar.View === "shooting") {
            Shooting_HandleFired(Obj.Data);
        }
    });

    connection.on("addMessage", function (Json) {
        const Obj = JSON.parse(Json);
        console.log(Obj);
        PopulateText(Obj.Key, Obj.Value);
    });

    // Handle reconnection
    connection.onreconnecting(() => {
        console.log("Reconnecting...");
    });

    connection.onreconnected(() => {
        console.log("Reconnected");
        // DO STUFF HERE
        connection.invoke("joinGroup", URLPar.EveID);
    });

    // Start the SignalR connection
    connection.start()
        .then(() => {
            console.log("Connected");
            connection.invoke("joinGroup", URLPar.EveID);
        })
        .catch(error => {
            console.error("Could not connect:", error);
        });
}


function DeleteResult(Obj) {
    var SortbyName = false;
    if (URLPar.PoID != Obj["Ipos"]) {
        // console.log("Icke delete existerande mellantid " + Obj["Ipos"] + " " + URLPar.PoID);
        return;
    }
    if (Obj["ClassID"] != URLPar.ClID) {
        // console.log("Icke delete existerande Classid " + Obj["ClassID"]);
        return;
    }
    if (Obj["Level"] != URLPar.Level) {
        //console.log("Icke delete existerande possition" + " " + Obj["Level"]);
        return;
    }
    if (CheckIfExistinResultList(Obj["Startno"], "tboy") == false) {
        $('[data-bib="' + Obj["Startno"] + '"]').remove();
    }
    var tbl = document.getElementById("tboy");
    if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false || EventObj["Class"][URLPar.ClID]["SortByRank"] === false) {
        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj["Class"][URLPar.ClID]["SortByRank"] == false) {
            SortbyName = true;
        }
        else if (!EventObj["Class"][URLPar.ClID]["SortByRank"]) {
            SortbyName = true;
        }
    }
    if (EventObj["Sport"] == "SS") {
        if (!SortbyName) {
            ReRankSpeed(tbl, 0);
        }
    } else {
        if (!SortbyName) {
            ReRank(tbl, 0);
        }
    }


}

function PutInscroll(Ipo, Obj) {
    var SortbyName = false;
    if (URLPar.PoID != Ipo) {
        //  console.log("Icke existerande mellantid " + Ipo + " " + URLPar.PoID);
        return;
    }
    if (Obj["ClassID"] != URLPar.ClID) {
        // console.log("Icke existerande Classid " + Obj["ClassID"]);
        return;
    }
    if (Obj["Level"] != URLPar.Level) {
        // console.log("Icke existerande possition" + " " + Obj["Level"]);
        return;
    }

    if (CheckIfExistinResultList(Obj["Athletes"]["Startno"], "tboy")) {

        $('[data-bib="' + Obj["Athletes"]["Startno"] + '"]').remove();

    }
    var tbl = document.getElementById("tboy");
    var t = tbl[0];
    if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false || EventObj["Class"][URLPar.ClID]["SortByRank"] === false) {
        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj["Class"][URLPar.ClID]["SortByRank"] == false) {
            SortbyName = true;
        }
        else if (!EventObj["Class"][URLPar.ClID]["SortByRank"]) {
            SortbyName = true;
        }
    }
    //if (EventObj["Sport"] == "SS") {
    //    Ti["DiffClass"] = FormatPoints(IsNull(Ti["DiffPoints"], ""));
    //    Ti["RunTime"] = FormatPoints(IsNull(Ti["Points"], ""));
    //}

    if (EventObj["Sport"] == "SS") {
        // Ti["DiffClass"] = FormatPoints(IsNull(Ti["DiffPoints"], ""));
        Obj["PassingTime"]["RunTimeMS"] = Obj["PassingTime"]["Points"];
    }
    if (SortbyName && Obj["Athletes"]["LastName"].toString().length > 0) {
        Obj["PassingTime"]["RunTimeMS"] = Obj["Athletes"]["LastName"].toString().charCodeAt(0);
    }
    var Indx;

    if (EventObj["Sport"] == "SS") {
        Indx = FindIndexSpeed("tboy", parseInt(Obj["PassingTime"]["RunTimeMS"]));
    } else {
        Indx = FindIndex("tboy", parseInt(Obj["PassingTime"]["RunTimeMS"]));
    }

    if (Indx >= 50) {
        return;
    }
    AddrowInResult(Obj, Indx);
    if (parseInt(Indx) >= parseInt(tbl.rows.length)) {
        return;
    }
    if (EventObj["Sport"] == "SS") {
        ReRankSpeed(tbl, Indx);
    }
    else if (!(EventObj["Class"][URLPar.ClID]["ShowTime"] == false || EventObj["Class"][URLPar.ClID]["SortByRank"] === false)) {
        ReRank(tbl, Indx);
    }
}
function FindIndexSort(TBId, SortOrder) {
    var tbl = document.getElementById(TBId);
    for (var r = 0; r < tbl.rows.length; r++) {
        if (tbl.rows[r].getAttribute("data-order") == "null") {
            return r;
        }
        else if (parseInt(tbl.rows[r].getAttribute("data-order")) >= SortOrder) {
            //-87 och -84 
            return r;
        }
    }
    return tbl.rows.length;
}
function FindIndex(TBId, RtimMS) {
    var tbl = document.getElementById(TBId);
    for (var r = 0; r < tbl.rows.length; r++) {
        if (tbl.rows[r].getAttribute("data-tim") == "null") {
            return r;
        }
        else if (parseInt(tbl.rows[r].getAttribute("data-tim")) >= RtimMS) {
            //-87 och -84 
            return r;
        }
    }
    return tbl.rows.length;
}
function FindIndexSpeed(TBId, RtimMS) {
    var tbl = document.getElementById(TBId);
    for (var r = 0; r < tbl.rows.length; r++) {
        if (tbl.rows[r].getAttribute("data-tim") == "null") {
            return r;
        }
        else if (parseFloat(tbl.rows[r].getAttribute("data-tim")) <= RtimMS) {
            //-87 och -84 
            return r;
        }
    }
    return tbl.rows.length;
}
function ReRank(tbl, Ind) {
    tbl = document.getElementById("tboy");
    if (tbl.rows.length < 1) {
        return;
    }

    if (tbl.rows[0].querySelectorAll('[data-bod="runtime"]')[0].innerHTML[0] != "D") {
        tbl.rows[0].cells[0].innerHTML = 1;
        tbl.rows[0].querySelectorAll('[data-bod="diff"]')[0].innerHTML = FormatTime("00:00:00.00");
    }
    var LeadingTime = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var Before = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var JumpOver = 0;
    var NewLeader = true;
    if (Ind == 0) {
        NewLeader = true;
    }
    for (var i = 1; i < tbl.rows.length; i++) {
        var ThisRow = parseInt(tbl.rows[i].getAttribute("data-tim"));
        if (tbl.rows[i].querySelectorAll('[data-bod="runtime"]')[0].innerHTML[0] == "D") {
            continue;
        }
        if (parseInt(tbl.rows[i - 1].getAttribute("data-tim")) == ThisRow) {
            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML);
            JumpOver += 1;
        } else {

            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML) + 1 + JumpOver;
            JumpOver = 0;
        }
        if (NewLeader) {
            var diff = ThisRow - LeadingTime;
            var dif = FormateMS(diff);
            tbl.rows[i].querySelectorAll('[data-bod="diff"]')[0].innerHTML = FormatTime(dif);
        }
    }
}
function ReRankSpeed(tbl, Ind) {
    tbl = document.getElementById("tboy");
    if (tbl.rows.length < 1) {
        return;
    }

    if (tbl.rows[0].querySelectorAll('[data-bod="runtime"]')[0].innerHTML[0] != "D") {
        tbl.rows[0].cells[0].innerHTML = 1;
        tbl.rows[0].querySelectorAll('[data-bod="diff"]')[0].innerHTML = "0.00";
    }
    var LeadingTime = parseFloat(tbl.rows[0].getAttribute("data-tim"));
    var Before = parseFloat(tbl.rows[0].getAttribute("data-tim"));
    var JumpOver = 0;
    var NewLeader = true;
    if (Ind == 0) {
        NewLeader = true;
    }
    for (var i = 1; i < tbl.rows.length; i++) {
        var ThisRow = parseFloat(tbl.rows[i].getAttribute("data-tim"));
        if (tbl.rows[i].querySelectorAll('[data-bod="runtime"]')[0].innerHTML[0] == "D") {
            continue;
        }
        if (parseFloat(tbl.rows[i - 1].getAttribute("data-tim")) == ThisRow) {
            tbl.rows[i].cells[0].innerHTML = parseFloat(tbl.rows[i - 1].cells[0].innerHTML);
            JumpOver += 1;
        } else {

            tbl.rows[i].cells[0].innerHTML = parseFloat(tbl.rows[i - 1].cells[0].innerHTML) + 1 + JumpOver;
            JumpOver = 0;
        }
        if (NewLeader) {
            var diff = LeadingTime - ThisRow;
            tbl.rows[i].querySelectorAll('[data-bod="diff"]')[0].innerHTML = FormatPoints(diff);
        }
    }
}

function AddrowInResult(_data, Indx) {
    var Htm = "";
    var tbl = document.getElementById("tboy");
    var row = tbl.insertRow(Indx);
    var Ob = _data["Athletes"];
    var Ti = _data["PassingTime"];
    var Sht = null;
    var Sh = "";
    var SortbyName = false;
    if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false || EventObj["Class"][URLPar.ClID]["SortByRank"] === false) {
        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj["Class"][URLPar.ClID]["SortByRank"] == false) {
            Ti["RankClass"] = "";
            Ti["DiffClass"] = "";
            Ti["RunTime"] = "";
            SortbyName = true;
        }
        else if (!EventObj["Class"][URLPar.ClID]["SortByRank"]) {
            Ti["RankClass"] = "";
            Ti["DiffClass"] = "";
            Ti["RunTime"] = Ti["RunTime"];
            SortbyName = true;
        } else if (!EventObj["Class"][URLPar.ClID]["ShowTime"]) {
            Ti["RankClass"] = "";
            Ti["DiffClass"] = "";
            Ti["RunTime"] = "";
        }
    }

    if (SortbyName && Ob["LastName"].toString().length > 0) {
        Ti["RunTimeMS"] = Ob["LastName"].toString().charCodeAt(0);
    }
    if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {
        Ti["RunTime"] = Ob["Status"];
        Ti["DiffClass"] = "";
        Ti["RankClass"] = "";
    }
    row.setAttribute("data-id", Ob["ID"]);
    row.setAttribute("data-order", Ob["SortOrder"]);
    row.setAttribute("data-bib", FormateStartnumber(Ob["Startno"])); 
    row.setAttribute("data-tim", Ti["RunTimeMS"]);
    for (var k in Ob["Shooting"]) {
        if (k <= TimPosObj["AfterShootNr"]) {
            Sht += Ob["Shooting"][k]["Missed"];
            Sh += Ob["Shooting"][k]["Missed"] + "+";
        }
    }
    Ob["Nation"] = IsNull(Ob["Nation"], "");
    if (Sh.length > 0) {
        Sh = Sh.substring(0, Sh.length - 1);
    }

    if (IsRelay()) {
        if (TimPosObj["Leg"] in Ob["RealyAthletes"]) {
            Ob["Club"] = FormatName(Ob["RealyAthletes"][TimPosObj["Leg"]]["FirstName"],
                Ob["RealyAthletes"][TimPosObj["Leg"]]["LastName"]);

        } else {
            Ob["Club"] = "";
        }
        Ob["LastName"] = (Ob["FirstName"] + " " + Ob["LastName"]).trim();
        Ob["FirstName"] = "";
    }


    var Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
    [Ob["Nation"], "nation"], [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];
    if (Theme == "IPC" || Theme == "Winterparasport") {
        if (EventObj["Sport"] == "BT") {
            Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
            [Ob["Nation"], "nation"], [FormatShooting(Sht, Sh), "shooting"], [FormatTime(Ti["RealRuntime"]), "realtime"], [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];


        } else {
            Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
            [Ob["Nation"], "nation"], [FormatTime(Ti["RealRuntime"]), "realtime"], [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];

        }
    }
    else if (EventObj["Sport"] == "BT") {
        Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Ob["Nation"], "nation"], [FormatShooting(Sht, Sh), "shooting"], [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];
    }
    else if (EventObj["Sport"] == "SS") {
        Ro = [[Ti["RankClass"], "rank"], [FormateStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Ob["Nation"], "nation"], [FormatShooting(Sht, Sh), "shooting"], [FormatPoints(IsNull(Ti["Points"], "")), "runtime"], [FormatPoints(IsNull(Ti["DiffPoints"], "")), "diff"]];
    }
    //if (EventObj["Sport"] == "SS") {
    //    Ti["DiffClass"] = FormatPoints(IsNull(Ti["DiffPoints"], ""));
    //    Ti["RunTime"] = FormatPoints(IsNull(Ti["Points"], ""));
    //}

    for (var d = 0; d < Ro.length; d++) {
        Htm += ` <td class='body-${Ro[d][1]} tbl-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
    }
    row.innerHTML = Htm;
    $("#tboy").find("[data-id='" + Ob["ID"] + "']").addClass("new-income");
    setTimeout(function () {
        $("#tboy").find("[data-id='" + Ob["ID"] + "']").removeClass("new-income");
    }, (1000 * 25)); // for 1s = 1000ms
}
function CheckIfExistinResultList(Startno, idOfTbl) {
    var table = document.getElementById(idOfTbl);
    var t = table[0];
    for (var r = 0; r < table.rows.length; r++) {
        if (table.rows[r].cells[0].toString() == Startno.toString()) {
            return true;
        }
        // t.rows[r].cells[2].innerHTML = parseInt(t.rows[r].cells[0].innerHTML) + parseInt(t.rows[r].cells[1].innerHTML);
    }
    return false;
}
$('.tbl-name').click(function () {
   // var bid = this.id; // button ID 
    var trid = $(this).closest('tr').attr('id');
// table row ID 
    alert(trid);
});

/*Translation */
var TransTbl = {
    "Swedish": {
        "Language": "Swedish",
        "FriendlyLanguage": null,
        "Translated": {
            "bib": "Strn.",
            "name": "Namn",
            "club": "Klubb",
            "rank": "Pl.",
            "nation": "Nation",
            "diff": "Diff.",
            "starttime": "Starttid",
            "previous": "Föregående",
            "next": "Nästa",
            "resultlist": "Resultatlista",
            "sprintstage": "Sprintstege",
            "livetiming": "Livetiming",
            "chooseclass": "Välj Klass",
            "chooselevel": "Välj Nivå",
            "chooseposition": "Välj position",
            "live": "Live",
            "earliercompetion": "Tidigare tävlingar",
            "todayscompeition": "Dagens tävlingar",
            "newercompeition": "Kommande tävlingar",
            "incourse": "I banan",
            "scroll": "Scroll",
            "auto": "Auto",
            "run1": "Åk 1",
            "run2": "Åk 2",
            "run": "Åk",
            "total": "Total",
            "startlist": "Startlista",
            "headsponsor": "Huvudsponsor",
            "runtime": "Tid",
            "competitions": "Tävlingar",
            "allrights": "Alla rättigheter reserverade",
            "infocookies": "Information om cookies",
            "terms": "Användarvilkor",
            "finish": "Mål",
            "startpage": "Startsida",
            "menu": "Meny",
            "relayathlete": "Namn",
            "teamname": "Lag",
            "backtolive": "Gå tillbaka till livesidan",
            "lists": "Listor",
            "shooting": "Skj.",
            "lane":"Bana"
        }
    },
    "English": {
        "Language": "English",
        "FriendlyLanguage": null,
        "Translated": {
            "bib": "Bib.",
            "name": "Name",
            "club": "Club",
            "rank": "Rn.",
            "nation": "Nation",
            "diff": "Diff.",
            "starttime": "Starttime",
            "previous": "Previous",
            "next": "Next",
            "resultlist": "Resultlist",
            "sprintstage": "Sprint",
            "livetiming": "Livetiming",
            "chooseclass": "Choose class",
            "chooselevel": "Choose run",
            "chooseposition": "Choose position",
            "live": "Live",
            "earliercompetion": "Earlier Compeitions",
            "todayscompeition": "Todays Compeitions",
            "newercompeition": "Newer Competitions",
            "incourse": "Incourse",
            "scroll": "Scroll",
            "auto": "Auto",
            "run1": "Run 1",
            "run2": "Run 2",
            "run": "Run",
            "total": "Total",
            "startlist": "Startlist",
            "headsponsor": "Head sponsor",
            "runtime": "Time",
            "competitions": "Competitions",
            "allrights": "All rights reserverd",
            "infocookies": "Information about cookies",
            "terms": "Terms of use",
            "finish": "Finish",
            "startpage": "Startpage",
            "menu": "Menu",
            "relayathlete": "Name",
            "teamname": "Team",
            "backtolive": "Return to livepage",
            "lists": "Lists",
            "shooting": "Sht.",
            "lane": "Lane"
        }
    },
    "Norwegian": {
        "Language": "Norwegian",
        "FriendlyLanguage": null,
        "Translated": {
            "bib": "Strn.",
            "name": "Navn",
            "club": "Klubb",
            "rank": "Pl.",
            "nation": "Land",
            "diff": "Diff.",
            "starttime": "Starttid",
            "previous": "Forrige",
            "next": "Nest",
            "resultlist": "Resultatliste",
            "sprintstage": "Sprint",
            "livetiming": "Livetiming",
            "chooseclass": "Velg klasse",
            "chooselevel": "Velg run",
            "chooseposition": "Velg position",
            "live": "Live",
            "earliercompetion": "Tidligere konkurranser",
            "todayscompeition": "Dagens konkurranser",
            "newercompeition": "Kommende konkurranser",
            "incourse": "I banen",
            "scroll": "Scroll",
            "auto": "Auto",
            "run1": "Run 1",
            "run2": "Run 2",
            "run": "Run",
            "total": "Total",
            "startlist": "Startliste",
            "headsponsor": "Huvudsponsor",
            "runtime": "Tid",
            "competitions": "Konkurranser",
            "allrights": "Alle rettigheter forbeholdt",
            "infocookies": "Information om cookies",
            "terms": "Användarvilkor",
            "finish": "Mål",
            "startpage": "Startside",
            "menu": "Meny",
            "relayathlete": "Navn",
            "teamname": "Lag",
            "backtolive": "Gå tillbaka till livesidan",
            "lists": "Lister",
            "shooting": "Sht.",
            "lane": "Lane"
        }
    },
    "Finish": {
        "Language": "Finish",
        "FriendlyLanguage": null,
        "Translated": {
            "bib": "Nro.",
            "name": "Nimi",
            "club": "Seura",
            "rank": "Sij",
            "nation": "Maa",
            "diff": "Ero",
            "starttime": "Lähtöaika",
            "previous": "Edellinen",
            "next": "Seuraava",
            "resultlist": "Tuloslista",
            "sprintstage": "Sprint",
            "livetiming": "Livetiming",
            "chooseclass": "Valitse sarja",
            "chooselevel": "Valitse run",
            "chooseposition": "Valitse paikka",
            "live": "Live",
            "earliercompetion": "Edelliset kisat",
            "todayscompeition": "Päivän kisat",
            "newercompeition": "Tulevat kisat",
            "incourse": "Radalla",
            "scroll": "Scroll",
            "auto": "Auto",
            "run1": "Run 1",
            "run2": "Run 2",
            "run": "Run",
            "total": "Yhteensä",
            "startlist": "Lähtölista",
            "headsponsor": "Pääsponsori",
            "runtime": "Aika",
            "competitions": "Kilpailut",
            "allrights": "All rights reserverd",
            "infocookies": "Information about cookies",
            "terms": "Terms of use",
            "finish": "Maali",
            "startpage": "Aloitussivu",
            "menu": "Valikko",
            "relayathlete": "Nimi",
            "teamname": "Tiimi",
            "backtolive": "Gå tillbaka till livesidan",
            "lists": "Listoja",
            "shooting": "Sht.",
            "lane": "Lane"
        }
    }
};

function Translate() {
    if (Theme == "IPC" || Theme == "Winterparasport") {
        Language = "English";
    }
    $("[data-lan]").each(function () {
        if ($(this).attr("data-lan") == "runtime" && (Theme == "IPC" || Theme == "Winterparasport")) {
            $(this).html("Result");
        } else {
            $(this).html(TransTbl[Language]["Translated"][$(this).attr("data-lan")]);
        }

    });
}

function GetLanguages() {
    var htm = "";
    for (var k in TransTbl) {
        htm += ` <li data-language="${k}" class="li-language">${k} </li>  `;
    }
    document.getElementById("lng-populate").innerHTML = htm;
    if (localStorage.getItem('language') != null) { //Har vi ett värde sparat så använder vi det språket 
        var ExisLang = false;
        Language = localStorage.getItem('language');
        for (var k in TransTbl) {
            if (k == Language) {
                ExisLang = true;
                break;
            }
        }

        if (ExisLang == false) {
            Language = "English";

        }
    } else { //KOllar vilket språk webbläsaren har 
        var userLang = navigator.language || navigator.userLanguage;
        if (userLang == "sv-SE" || userLang == "sv-FI" || userLang == "sv" || userLang == "se-SE") {
            Language = "Swedish";
        }
        else if (userLang == "nb-NO" || userLang == "nb" || userLang == "nn-NO") {
            Language = "Norwegian";
        }
        else if (userLang == "fi-FI" || userLang == "fi") {
            Language = "Finish";
        } else {
            Language = "English";
        }
        Translate();
    }
}
$(document).on("click", '.li-language', function (event) {
    Language = event.currentTarget.attributes["data-language"].nodeValue;
    Translate();
    localStorage.setItem('language', Language);
});
//New functionlaty 

function GetStartlistHead() {
    var Htm = "<tr data-tab='head'>";
    var Head = [["<span style='center'>#</span>", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Klass", "class"], ["Level", "level"], ["Land", "nation"], ["Starttid", "starttime"]];
    var IsRel = IsRelay();
    for (var h = 0; h < Head.length; h++) {
        if (IsRel == true && Head[h][1] == "name") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='teamname'>" + Head[h][0] + "</th> ";
        }
        else if (IsRel == true && Head[h][1] == "club") {
            Htm += " <th class='head-" + Head[h][1] + " tbl-" + Head[h][1] + "' data-lan='relayathlete'>" + Head[h][0] + "</th> ";
        } else {
            Htm += " <th class='head-" +
                Head[h][1] +
                " tbl-" +
                Head[h][1] +
                "' data-lan='" +
                Head[h][1] +
                "'>" +
                Head[h][0] +
                "</th> ";

        }
    }
    Htm += "</tr>";
    return Htm;
}

function GetStartlist(_data) {

    Build_Startlist_Head();
    ShowMultiplePages(_data["Count"], "startlist", _data["From"]);
    if (_data["Count"] == 0) {
        document.getElementById("tboy").innerHTML = "";
    }

    $('#res-tabl').attr('data-info', 'stlist');

    var Htm = "";
    for (var z = 0; z < _data["Startlist"].length; z++) {
        var Ob = _data["Startlist"][z];
        var RelAthl = Ob["RealyAthletes"];
        var RelStri = "<span class='startlist-name'>";
        for (var k in RelAthl) {
            RelStri += "<span class='startlist-inner-name'>" + k + ". " + FormatName(RelAthl[k]["FirstName"], RelAthl[k]["LastName"]) + " </span>";
        }
        RelStri += "</span>";

        if (IsRelay()) {
            Ob["Club"] = RelStri;
            Ob["LastName"] = (Ob["FirstName"] + " " + Ob["LastName"]).trim();
            Ob["FirstName"] = "";
        }
        Ob["Nation"] = IsNull(Ob["Nation"], "");
        Htm += "<tr data-id='" + Ob["ID"] + "'>";
        if (EventObj["Class"][URLPar.ClID]["ShowTime"] == false && EventObj.Sport == "AL") {
            Ob["StartTime"] = "";
            
        }
       
        var Ro = [[FormatStartnumber(Ob["Startno"]), "bib"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Ob["Nation"], "nation"], [FormatStarttime(Ob["StartTime"]), "starttime"]];
        for (var d = 0; d < Ro.length; d++) {
            Htm += " <td class='head-" + Ro[d][1] + " tbl-" + Ro[d][1] + " body-" + Ro[d][1] + "' >" + Ro[d][0] + "</td> ";
        }
        Htm += "</tr>";
    }
    document.getElementById("tboy").innerHTML = Htm;
};
class ALPView {
    set ResClass(value) {
        this._ResClass = value;
    }
    get ResClass() {
        return this._ResClass;
    }
    set ResLevel(value) {
        this._ResLevel = value;
    }
    get ResLevel() {
        return this._ResLevel;
    }
    set ActiveClass(value) {
        this._ActiveClass = value;
    }
    get ActiveClass() {
        return this._ActiveClass;
    }
    set ActiveResClass(value) {
        this._ActiveClass = value;
    }
    get ActiveResClass() {
        return this._ActiveClass;
    }
    set ActiveLevel(value) {
        this._ActiveLevel = value;
    }
    get ActiveLevel() {
        return this._ActiveLevel;
    }
    set ActiveResLevel(value) {
        this._ActiveLevel = value;
    }
    get ActiveResLevel() {
        return this._ActiveLevel;
    }
    set AutoRes(value) {
        this._AutoRes = value;
    }
    get AutoRes() {
        return this._AutoRes;
    }

    constructor() {
        this._ActiveLevel = null;
        this._ActiveClass = null;
        this._AutoRes = true;
    }
}

var alp_ActiveClass;
var alp_ActiveLevel;
let ALPV;
$(document).ready(function () {
    ALPV = new ALPView();

});
//Bygger upp all boxar
function AlpBuild() {
    var Hs = [["#", "bib"], ["Namn", "name"], ["Klubb", "club"], ["&nbsp;", "status"]]; //Scrollen 
    var Hr = [["Pl.", "rank"], ["Namn", "name"], ["Klubb", "club"],
    ["Åktid", "runtime"], ["Difftid", "diff"]]; //Resultatvyn 
    var Hc = [["Bib", "bib"], ["Namn", "name"], ["Klubb", "club"], ["Land", "nation"]];
    var Ht = "";
    for (var h = 0; h < Hs.length; h++) {
        Ht += " <th class='al-head-" + Hs[h][1] + " al-" + Hs[h][1] + "' data-lan='" + Hs[h][1] + "'>" + Hs[h][0] + "</th> ";
    }
    document.getElementById("alp-tb-hs").innerHTML = "<tr data-tab='al-head-st'>" + Ht + "</tr>";
    document.getElementById("alp-tb-hi").innerHTML = "<tr data-tab='al-head-inr'>" + Ht + "</tr>";
    Ht = "";
    for (var z = 0; z < Hr.length; z++) {
        Ht += " <th class='al-head-" + Hr[z][1] + " al-" + Hr[z][1] + "' data-lan='" + Hr[z][1] + "'>" + Hr[z][0] + "</th> ";
    }
    document.getElementById("alp-tb-hr").innerHTML = "<tr data-tab='al-head-re'>" + Ht + "</tr>";
    document.getElementById("alp-tb-hsc").innerHTML = "<tr data-tab='al-head-scr'>" + Ht + "</tr>";
  

    var FilMenu = "";
    if (EventObj["Sport"] == "SS") {
        FilMenu = `<li class="btn alp-li-lvl active autoon" data-lvl="-1" data-lan="auto">Auto</li>
            <li class="btn alp-li-lvl" data-lvl="1" data-lan="run1">Åk1</li>
            <li class="btn alp-li-lvl" data-lvl="2" data-lan="run2">Åk2</li>
            <li class="btn alp-li-lvl" data-lvl="3" data-lan="run3">Åk3</li>
            <li class="btn alp-li-lvl" data-lvl="4" data-lan="run4">Åk4</li>`;
    }
    else {
        FilMenu = `<li class="btn alp-li-lvl active autoon" data-lvl="-1" data-lan="auto">Auto</li>
            <li class="btn alp-li-lvl" data-lvl="1" data-lan="run1">Åk1</li>
            <li class="btn alp-li-lvl" data-lvl="2" data-lan="run2">Åk2</li>
            <li class="btn alp-li-lvl" data-lvl="99" data-lan="total">Total</li>`;
    }
    document.getElementById("alp-men-but").innerHTML = FilMenu;
    AlpFillSchema();
    AlpBuildButtons();
    Translate();
}
function AlpFillSchema() {
    var Apr = "GetNextOnstart/" + URLPar.EveID;
    GetJs(Apr, true, AlpFillNext);
    //Aps = "GetStartlist/" + URLPar.EveID + "/" + ClID + "?Count=5&From=0&Level=" + Lvl + "&OrderBy=nextstart";
    //GetJs(Apr, true, AlpFillResultlist);
}
function LoadAlpResults(Cou = 10) {
    var Cli = ALPV.ResClass;
    var Lv = ALPV.ResLevel;
    if (ALPV.ResClass == null) {
        Cli = ALPV.ActiveClass;
    }
    if (ALPV.ResLevel == null) {
        Lv = ALPV.ActiveLevel;

    }
    document.getElementById("alp-r-class").innerHTML = EventObj["Class"][Cli]["Name"] + " " + EventObj["Class"][Cli]["Level"][Lv]["Name"];
    if (Cli != null) {
        ClassObj = EventObj["Class"][Cli];

    }
    var Ap = "GetResultlist/" + URLPar.EveID + "/" + Cli + "?Ipos=999&Count=" + Cou + "&From=0&Level=" + Lv;
    GetJs(Ap, true, AlpFillResultlist);
    var Re = "GetScroll/" + URLPar.EveID + "?ClassID=" + IsNull(ALPV.ResClass, ALPV.ActiveClass) + "&Level=" + IsNull(ALPV.ResLevel, ALPV.ActiveLevel) + "&Ipos=999&Count=6";
    GetJs(Re, true, AlpLoadScroll); //Hämtar scrollen 
}
//Bygger resultatlistan med all data 
function AlpFillResultlist(_data) {
    var Htm = "";
    for (var z = 0; z < _data["ResultList"].length; z++) {
        var Ob = _data["ResultList"][z];
        var Ti = Ob["Times"]["999"];
        var Rtim = "";
        var Dtim = "";
        var SortbyName = false;
        if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false || EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] === false) {
            if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false && EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] == false) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = "";
                SortbyName = true;
            }
            else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"]) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = Ti["RunTime"];
                SortbyName = true;
            } else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"]) {
                Ti["RankClass"] = "";
                Ti["DiffClass"] = "";
                Ti["RunTime"] = "";
            }
        }

        if (SortbyName && Ob["LastName"].toString().length > 0) {
            Ti["RunTimeMS"] = Ob["LastName"].toString().charCodeAt(0);
        }

        if (Ob["Status"] == "DNS" || Ob["Status"] == "DNF" || Ob["Status"] == "DSQ") {
            Rtim = Ob["Status"];
            Dtim = "";
            Ti["RankClass"] = "";
        } else {
            Rtim = FormatTime(Ti["RunTime"], "H");
            Dtim = FormatTime(Ti["DiffClass"], "H");
        }
        if (EventObj["Sport"] == "SS") {
            Dtim = FormatPoints(IsNull(Ti["DiffPoints"], ""));
            Rtim = FormatPoints(IsNull(Ti["Points"], ""));
            Ti["RunTimeMS"] = Ti["Points"];
        }
        Htm += "<tr data-id='" + Ob["ID"] + "' data-tim='" + Ti["RunTimeMS"] + "' data-order='" + Ob["SortOrder"] + "' data-alp-bib='" + Ob["Startno"] + "'>";
        var Ro = [[Ti["RankClass"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
        [Rtim, "runtime"], [Dtim, "diff"]];
        for (var d = 0; d < Ro.length; d++) {
            Htm += ` <td class='body-${Ro[d][1]} al-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
        }
        Htm += "</tr>";
    }
    document.getElementById("alp-tb-br").innerHTML = Htm;
}
//Får datan som scrollen ska fyllas med
function AlpLoadScroll(_data) {
    if (_data.length < 1) {
        document.getElementById("alp-tb-bsc").innerHTML = "";
        return;
    }
    var LScroll = AlpGetTbl(_data, "scr", true);
    document.getElementById("alp-tb-bsc").innerHTML = LScroll;
}
//Nästa på start den här fyller, Åkare På start nästa och åkare i banan 
function AlpFillNext(_data, SignalR = false) {
    if (_data == undefined || _data == "") {
        return;
    }
    //http://localhost:54127/GetScroll/10?ClassID=83&Level=1&Ipos=999&Count=6

    //if (SignalR == false) {
    //    var LScroll = AlpGetTbl(_data["LiveScroll"], "scr", true); //Scrollen 
    //    document.getElementById("alp-tb-bsc").innerHTML = LScroll;
    //}
    var NxStart = AlpGetTbl([_data["NextStarter"]["NextStarter"]], "nx");
    var NxTStart = AlpGetTbl(_data["NextStarter"]["NextToStart"], "sta"); //Startlista
    var Started = AlpGetTbl(_data["NextStarter"]["Started"], "inc"); //De som är ibanan

    if (document.getElementById("alp-tb-bs").innerHTML != (NxTStart + NxStart)) {
        document.getElementById("alp-tb-bs").innerHTML = (NxTStart + NxStart);
    }
    document.getElementById("alp-tb-bi").innerHTML = Started;
    alp_ActiveLevel = _data["NextStarter"]["ActiveLevel"]; //Får den activa leveln
    alp_ActiveClass = _data["NextStarter"]["ActiveClass"]; //Får den activa klassen 
    //Om det
    if (ALPV.ActiveClass !== alp_ActiveClass) {
        //document.getElementById("alp-sc-class").innerHTML = EventObj["Class"][alp_ActiveClass]["Name"];
        //document.getElementById("alp-ic-class").innerHTML = EventObj["Class"][alp_ActiveClass]["Name"];
        document.getElementById("alp-s-class").innerHTML = EventObj["Class"][alp_ActiveClass]["Name"] + " " + EventObj["Class"][alp_ActiveClass]["Level"][alp_ActiveLevel]["Name"];
        ALPV.ActiveClass = alp_ActiveClass; //Vi byter aktiv klass 
    }
    //console.log(ALPV.ActiveLevel + " lf " + alp_ActiveLevel);
    if (ALPV.ActiveLevel !== alp_ActiveLevel) {
        document.getElementById("alp-s-class").innerHTML = EventObj["Class"][alp_ActiveClass]["Name"] + " " + EventObj["Class"][alp_ActiveClass]["Level"][alp_ActiveLevel]["Name"];
        if (ALPV.ResLevel == null) {
            //$('[data-lvl="' + alp_ActiveLevel + '"]').addClass("btn-primary");
            //$('[data-lvl="' + ALPV.ActiveLevel + '"]').removeClass("btn-primary");
        }
        ALPV.ActiveLevel = alp_ActiveLevel;
    }
    if (SignalR == false) {
        LoadAlpResults(10);
        $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
        $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("btn-primary");
    }
    if (ALPV.ResClass == null) {
        ALPV.ResClass = _data["NextStarter"]["ActiveResClass"];
        ALPV.ResLevel = _data["NextStarter"]["ActiveResLevel"];
        $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
        $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("btn-primary");
    }
    ALPV.ActiveResClass = _data["NextStarter"]["ActiveResClass"];
    ALPV.ActiveResLevel = _data["NextStarter"]["ActiveResLevel"];

}
//Bygger data i tabellerna 
function AlpGetTbl(AthArr, HeTbl, showTime = false) {
    var htm = "";
    if (AthArr == "undefined") {
        return;
    }
    for (var i = 0; i < AthArr.length; i++) {
        var ob = AthArr[i];
        var Orc;
        var Sta = "";
        var Bib = "";
        if (showTime == true) {
            var Dtim = FormatTime(ob["PassingTime"]["DiffClass"], "H");
            var Rtim = FormatTime(ob["PassingTime"]["RunTime"], "H");
            if (EventObj["Sport"] == "SS") {
                Dtim = FormatPoints(IsNull(ob["PassingTime"]["DiffPoints"], ""));
                Rtim = FormatPoints(IsNull(ob["PassingTime"]["Points"], ""));
                ob["PassingTime"]["RunTimeMS"] = ob["PassingTime"]["Points"];
            }
            if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false || EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] === false) {
                if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false && EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] == false) {
                    ob["PassingTime"]["RankClass"] = "";
                    Dtim = "";
                    Rtim = "";
                }
                else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"]) {
                    ob["PassingTime"]["RankClass"] = "";
                    Dtim = "";
                    Rtim = ob["PassingTime"]["RunTime"];
                } else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"]) {
                    ob["PassingTime"]["RankClass"] = "";
                    Dtim = "";
                    Rtim = "";
                }
            }
            if (ob["Athletes"]["Status"] == "DNF" ||
                ob["Athletes"]["Status"] == "DNS" ||
                ob["Athletes"]["Status"] == "DSQ") {
                Dtim = "";
                Rtim = ob["Athletes"]["Status"];
                ob["PassingTime"]["RunTime"] = ob["Athletes"]["Status"];
                ob["PassingTime"]["RankClass"] = "";
            }

            Orc = [[ob["PassingTime"]["RankClass"], "rank"], [FormatName(ob["Athletes"]["FirstName"], ob["Athletes"]["LastName"]), "name"],
            [ob["Athletes"]["Club"], "club"], [Rtim, "runtime"], [Dtim, "diff"]];
            Bib = ob["Athletes"]["Startno"];
            //FormatTime
        }
        else if (HeTbl == "sta" || HeTbl == "inc") {
            Orc = [[ob["Startno"], "bib"], [FormatName(ob["FirstName"], ob["LastName"]), "name"], [ob["Club"], "club"]];
            Sta += `<td colspan="2" class='al-tbl-${HeTbl}-status al-status '>&nbsp;</td>`;
            Bib = ob["Startno"];
        } else if (HeTbl == "nx" && ob != null) {
            Orc = [[ob["Startno"], "bib"], [FormatName(ob["FirstName"], ob["LastName"]), "name"], [ob["Club"], "club"]];
            Sta += `<td colspan="2" class='al-tbl-${HeTbl}-${"status"} al-status'>På start</td>`;
            Bib = ob["Startno"];
        }
        else if (ob != null) {
            Orc = [
                [ob["Athletes"]["Startno"], "bib"],
                [FormatName(ob["Athletes"]["FirstName"], ob["Athletes"]["LastName"]), "name"],
                [ob["Athletes"]["Club"], "club"]
            ];
            Bib = ob["Athletes"]["Startno"];
            Sta += `<td colspan="2" class='al-tbl-${HeTbl}-status al-status '>&nbsp;</td>`;
        } else {
            return "";
        }
        htm += `<tr data-alp-bib="${Bib}">`;
        for (var z = 0; z < Orc.length; z++) {
            htm += `<td class='al-tbl-${HeTbl}-${Orc[z][1]} al-${Orc[z][1]} '>${Orc[z][0]}</td>`;
            //htm += 

        }
        htm += Sta;
        htm += "</tr>";

    }
    return htm;
}
function AlpBuildButtons(ActiveClass = 0) {
    var Cls = EventObj["Class"];
    var Htm = "";
    Htm += `<li class='btn alp-li-cls active' style="display:none;" data-cls='${-1}'>Auto</li>`;

    for (var k in Cls) {
        if (k == ActiveClass) {

        }
        if (EventObj["Sport"] == "SS") {
            var FilMenu = '<li class="btn alp-li-lvl active autoon" data-lvl=" - 1" data-lan="auto">Auto</li>';
            for (var v in EventObj["Class"][k]["Level"]) {
                FilMenu += '<li class="btn alp-li-lvl" data-lvl="' + v + '"> <span data-lan="run">Åk</span>&nbsp;' + v + '</li>';
            }
            document.getElementById("alp-men-but").innerHTML = FilMenu;
        }
        Htm += `<li class='btn alp-li-cls' data-cls='${k}'>${Cls[k]["Name"]}</li>`;
    }
   
    document.getElementById("alp-rebut").innerHTML = Htm;
}
$(document).on("click", '.alp-li-cls', function (event) {
    var val = (event.currentTarget.attributes["data-cls"].nodeValue);
    ALPV.AutoRes = false;
    $('.alp-class li').removeClass("active");
    $('.alp-class li').removeClass("btn-primary");
    $('[data-lvl="-1"]').removeClass("active");
    $('[data-lvl="-1"]').removeClass("autoon");
    if (ALPV.ResClass == null || ALPV.ResClass == "undefined") {
        $('[data-cls="-1"]').removeClass("active");
        $('[data-cls="' + ALPV.ActiveClass + '"]').removeClass("btn-primary");
    } else {

        $('[data-cls="' + ALPV.ResClass + '"]').removeClass("active");
    }

    if (val == -1) {
        ALPV.ResClass = null;
        $('[data-cls="-1"]').addClass("active");
        $('[data-cls="' + ALPV.ActiveClass + '"]').addClass("btn-primary");
    } else {
        ALPV.ResClass = val;
        $('[data-cls="' + ALPV.ResClass + '"]').addClass("active");
        $('[data-lvl="' + IsNull(ALPV.ResLevel, 1) + '"]').addClass("btn-primary");
        $('[data-lvl="' + IsNull(ALPV.ResLevel, 1) + '"]').addClass("active");
        $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
    }

    if (EventObj["Sport"] == "SS") {
        var FilMenu = '<li class="btn alp-li-lvl active autoon" data-lvl=" - 1" data-lan="auto">Auto</li>';
        for (var k in EventObj["Class"][val]["Level"]) {
            FilMenu += '<li class="btn alp-li-lvl" data-lvl="' + k + '" data-lan="run' + k + '">Åk' + k + '</li>';
        }
        document.getElementById("alp-men-but").innerHTML = FilMenu;
    }
    LoadAlpResults(10);
    SaveSetup();
});
$(document).on("click", '.alp-li-lvl', function (event) {
    var val = (event.currentTarget.attributes["data-lvl"].nodeValue);
    //alp-level
    $('.alp-level li').removeClass("active");
    $('.alp-level li').removeClass("autoon");
    $('.alp-level li').removeClass("btn-primary");
    if (ALPV.ResLevel !== null) {

        $('[data-lvl="' + ALPV.ActiveLevel + '"]').removeClass("btn-primary");
    }
    else if (ALPV.ResClass == null) {
        $('[data-lvl="-1"]').removeClass("active");
        $('[data-lvl="-1"]').removeClass("autoon");
    }//Sätt grön vid auto på 
    if (val == -1) {
        ALPV.ResLevel = null;
        $('.alp-class li').removeClass("active");
        $('.alp-class li').removeClass("btn-primary");
        $('[data-lvl="-1"]').addClass("active");
        $('[data-lvl="-1"]').addClass("autoon");
        $('[data-cls="' + ALPV.ActiveResClass + '"]').addClass("btn-primary");
        $('[data-lvl="' + ALPV.ActiveResLevel + '"]').addClass("btn-primary");
        ALPV.ResLevel = ALPV.ActiveResLevel;
        ALPV.ResClass = ALPV.ActiveResClass;
        ALPV.AutoRes = true;
    } else {
        ALPV.ResLevel = val;
        $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("active");
        $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("btn-primary");
        $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
        ALPV.AutoRes = false;

    }
    LoadAlpResults(10);
    SaveSetup();
});
function SaveSetup() {

    if (typeof (Storage) == "undefined") {
        console.log("Sorry, your browser does not support Web Storage...");
        return;
    }

    if (sessionStorage.alpinev) {
        //var an = sessionStorage.alpinev;
        sessionStorage.alpinev[URLPar.EveID.toString()] = ALPV;

    } else {
        var arr = new Array();
        arr[URLPar.EveID.toString()] = ALPV;
        sessionStorage.alpinev = new Array();
        sessionStorage.alpinev[URLPar.EveID.toString()] = ALPV;
    }

}
//SIGNALR 
function AddRowAlpine(Ipo, Obj) {

    if (Obj["Level"] != 99) {
        ALPV.ActiveResLevel = Obj["Level"];
        ALPV.ActiveClsLevel = Obj["ClassID"];
    }
   
    if (ALPV.ResClass == null) {
        Alpv.ResClass = Obj["ClassID"];
        Alpv.ResLevel = Obj["Level"];
        // LoadAlpResults(10);
        return;
    } else {
        if (Obj["Athletes"]["Status"].toString()[0] == "D" && (Obj["ClassID"] != ALPV.ResClass || Obj["Level"] != ALPV.ResLevel)) {
            return;
        }
        else if (ALPV.ResLevel == 2 && Obj["Level"] == 99) {
            return;
        }
        else if (ALPV.ResLevel == 99 && Obj["Level"] == 2) {
            return;
        }
        else if (Obj["ClassID"] != ALPV.ResClass) {
            //Ny aktiv klass då laddar vi om resultaten helt o hållet  
            if (ALPV.AutoRes == false) {
                if ($("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").length > 0) {
                    $("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").remove();
                }
                if ($(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').length > 0) {
                    $(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').remove();
                }                //Om man har gjort ett eget val så ska vi bara visa det valet 
                return;
            }
            ALPV.ResClass = Obj["ClassID"];
            ALPV.ResLevel = Obj["Level"];
            document.getElementById("alp-tb-br").innerHTML = "";
            document.getElementById("alp-tb-bsc").innerHTML = "";
            document.getElementById("alp-r-class").innerHTML = EventObj["Class"][ALPV.ResClass]["Name"] + " " + EventObj["Class"][ALPV.ResClass]["Level"][ALPV.ResLevel]["Name"];
            $('.btn-primary').removeClass("btn-primary");
            $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
            $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("btn-primary");
            ///LoadAlpResults(10);
        }
        else if (Obj["Level"] != ALPV.ResLevel) {
            if (ALPV.AutoRes == false) {
                if ($("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").length > 0) {
                    $("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").remove();
                }
                if ($(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').length > 0) {
                    $(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').remove();
                }
                //Om man har gjort ett eget val så ska vi bara visa det valet 
                return;
            }
            ALPV.ResClass = Obj["ClassID"];
            ALPV.ResLevel = Obj["Level"];
            document.getElementById("alp-tb-br").innerHTML = "";
            document.getElementById("alp-tb-bsc").innerHTML = "";
            document.getElementById("alp-r-class").innerHTML = EventObj["Class"][ALPV.ResClass]["Name"] + " " + EventObj["Class"][ALPV.ResClass]["Level"][ALPV.ResLevel]["Name"];
            $('.btn-primary').removeClass("btn-primary");
            $('[data-cls="' + ALPV.ResClass + '"]').addClass("btn-primary");
            $('[data-lvl="' + ALPV.ResLevel + '"]').addClass("btn-primary");
            ///LoadAlpResults(10);
        }

    }

    if ($("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").length > 0) {
        $("#alp-tb-bi").find("[data-alp-bib='" + Obj["Athletes"]["Startno"] + "']").remove();
    }
    if ($(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').length > 0) {
        $(".alp-tb-res").find('[data-alp-bib="' + Obj["Startno"] + '"]').remove();
    }
    if (EventObj["Sport"] == "SS") {
        // Ti["DiffClass"] = FormatPoints(IsNull(Ti["DiffPoints"], ""));
        Obj["PassingTime"]["RunTimeMS"] = FormatPoints(Obj["PassingTime"]["Points"]);
    }
    if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"]) {
        if (Obj["Athletes"]["LastName"].toString().length > 0) {
            Obj["PassingTime"]["RunTimeMS"] = Obj["Athletes"]["LastName"].charCodeAt(0);
        }
    }
    var tbl = document.getElementById("alp-tb-res");
    var Indx;

    if (EventObj["Sport"] == "SS") {
        Indx = FindIndexSpeed("alp-tb-br", parseFloat(Obj["PassingTime"]["RunTimeMS"]));
    } else {
        Indx = FindIndex("alp-tb-br", parseInt(Obj["PassingTime"]["RunTimeMS"]));
    }

    Alp_ScrollAdd(Obj);
    if (Indx > 10) {
        // Vi visar bara topp 10
        return;
    }

    if (Indx == "undefined") {
        Alp_AddrowInResult(Obj, 0);
    } else {
        Alp_AddrowInResult(Obj, Indx);
    }
    if (EventObj["Sport"] == "SS") {
        Speed_ReRank(tbl, Indx);
    }
    else if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] && EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"]) {
        Alp_ReRank(tbl, Indx);
    }


}
function AddNextStarter(_data) {
    AlpFillNext(_data, true);
}
//***RESULT INSERTER **/
function Alp_AddrowInResult(_data, Indx) {
    var Htm = "";
    var tbl = document.getElementById("alp-tb-br");
    var row = tbl.insertRow(Indx);
    var Ob = _data["Athletes"];
    var Ti = _data["PassingTime"];
    var DifCls = FormatTime(Ti["DiffClass"], "H");
    var RanCls = Ti["RankClass"];
    var RunCls = FormatTime(Ti["RunTime"], "H");
    var SortbyName = false;
    if (EventObj["Sport"] == "SS") {
        DifCls = FormatPoints(IsNull(Ti["DiffPoints"], ""));
        RunCls = FormatPoints(IsNull(Ti["Points"], ""));
        Ti["RunTimeMS"] = Ti["Points"];
    }
    if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false || EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] === false) {
        if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false && EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] == false) {
            Ti["RankClass"] = "";
            DifCls = "";
            RunCls = "";
            SortbyName = true;
        }
        else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"]) {
            Ti["RankClass"] = "";
            DifCls = "";
            RunCls = RunCls;
            SortbyName = true;
        } else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"]) {
            Ti["RankClass"] = "";
            DifCls = "";
            RunCls = "";
        }
    }

    if (SortbyName && Ob["LastName"].toString().length > 0) {
        Ti["RunTimeMS"] = Ob["LastName"].toString().charCodeAt(0);
    }

    if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {
        RunCls = Ob["Status"];
        RanCls = "";
        DifCls = "";
    }
    row.setAttribute("data-id", Ob["ID"]);
    row.setAttribute("data-order", Ob["SortOrder"]);
    row.setAttribute("data-alp-bib", Ob["Startno"]);
    row.setAttribute("data-tim", Ti["RunTimeMS"]);
    var Ro = [[RanCls, "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
    [RunCls, "runtime"], [DifCls, "diff"]];
    for (var d = 0; d < Ro.length; d++) {
        Htm += ` <td class='body-${Ro[d][1]} al-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
    }
    row.innerHTML = Htm;
    while (tbl.rows.length > 10) {
        tbl.deleteRow(tbl.rows.length - 1);
    }

    $("#alp-tb-br").find("[data-id='" + Ob["ID"] + "']").addClass("new-income");

    setTimeout(function () {
        $("#alp-tb-br").find("[data-id='" + Ob["ID"] + "']").removeClass("new-income");
    }, (1000 * 30)); // for 1s = 1000ms
    //$("#alp-tb-res").find("[data-id='" + Ob["ID"] + "']").addClass("new-income");

    //setTimeout(function () {
    //    $("#alp-tb-res").find("[data-id='" + Ob["ID"] + "']").removeClass("new-income");
    //}, (1000 * 60)); // for 1s = 1000ms
}
function alpDeleteResult(_data) {
    //Inte implmenterat ännu
}
function Speed_ReRank(tbl, Ind) {
    tbl = document.getElementById("alp-tb-br");
    if (tbl.rows.length < 1) {
        return;
    }
    if (tbl.rows[0].cells[3].innerHTML[0] != "D") {
        tbl.rows[0].cells[0].innerHTML = 1;
        tbl.rows[0].cells[4].innerHTML = "0.00";
    }
    //[[Ti["RankClass"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
    //    [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];
    var LeadingTime = parseFloat(tbl.rows[0].getAttribute("data-tim"));
    var Before = parseFloat(tbl.rows[0].getAttribute("data-tim"));
    var JumpOver = 0;
    var NewLeader = true;
    if (Ind == 0) {
        NewLeader = true;
    }
    for (var i = 1; i < tbl.rows.length; i++) {
        var ThisRow = parseFloat(tbl.rows[i].getAttribute("data-tim"));
        if (tbl.rows[i].cells[3].innerHTML[0] == "D") {
            continue;
        }
        if (parseInt(tbl.rows[i - 1].getAttribute("data-tim")) == ThisRow) {
            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML);
            JumpOver += 1;
        } else {

            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML) + 1 + JumpOver;
            JumpOver = 0;
        }
        if (NewLeader) {
            var diff = LeadingTime - ThisRow;
            tbl.rows[i].cells[4].innerHTML = FormatPoints(diff);
        }
    }
}
function Alp_ReRank(tbl, Ind) {
    tbl = document.getElementById("alp-tb-br");
    if (tbl.rows.length < 1) {
        return;
    }
    if (tbl.rows[0].cells[3].innerHTML[0] != "D") {
        tbl.rows[0].cells[0].innerHTML = 1;
        tbl.rows[0].cells[4].innerHTML = FormatTime("00:00:00.00", "H");
    }
    //[[Ti["RankClass"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
    //    [FormatTime(Ti["RunTime"]), "runtime"], [FormatTime(Ti["DiffClass"]), "diff"]];
    var LeadingTime = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var Before = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var JumpOver = 0;
    var NewLeader = true;
    if (Ind == 0) {
        NewLeader = true;
    }
    for (var i = 1; i < tbl.rows.length; i++) {
        var ThisRow = parseInt(tbl.rows[i].getAttribute("data-tim"));
        if (tbl.rows[i].cells[3].innerHTML[0] == "D") {
            continue;
        }
        if (parseInt(tbl.rows[i - 1].getAttribute("data-tim")) == ThisRow) {
            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML);
            JumpOver += 1;
        } else {

            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML) + 1 + JumpOver;
            JumpOver = 0;
        }
        if (NewLeader) {
            var diff = ThisRow - LeadingTime;
            var dif = FormateMS(diff);
            tbl.rows[i].cells[4].innerHTML = FormatTime(dif, "H");
        }
    }
}

function Alp_ScrollAdd(_data) {

    var Htm = "";
    var tbl = document.getElementById("alp-tb-bsc");
    var row = tbl.insertRow(0);
    var Ob = _data["Athletes"];
    var Ti = _data["PassingTime"];
    var Rtim = "";
    var Dtim = "";
    var SortbyName = false;
    while (tbl.rows.length > 6) {
        tbl.deleteRow(tbl.rows.length - 1);
    }


    if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {

        Rtim = Ob["Status"];
        Dtim = "";
        Ti["RankClass"] = "";
    } else if (EventObj["Sport"] == "SS") {
        Dtim = FormatPoints(IsNull(Ti["DiffPoints"], ""));
        Rtim = FormatPoints(IsNull(Ti["Points"], ""));
        Ti["RunTimeMS"] = FormatPoints(Ti["Points"]);
    } else {
        Rtim = FormatTime(Ti["RunTime"], "H");
        Dtim = FormatTime(Ti["DiffClass"], "H");
    }

    if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false || EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] === false) {
        if (EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"] == false && EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"] == false) {
            Ti["RankClass"] = "";
            Rtim = "";
            Dtim = "";
            SortbyName = true;
        }
        else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["SortByRank"]) {
            Ti["RankClass"] = "";
            Dtim = "";
            SortbyName = true;
        } else if (!EventObj["Class"][IsNull(ALPV.ResClass, ALPV.ActiveClass)]["ShowTime"]) {
            Ti["RankClass"] = "";
            Rtim = "";
            Dtim = "";
        }
    }
    row.setAttribute("data-id", Ob["ID"]);
    row.setAttribute("data-order", Ob["SortOrder"]);
    row.setAttribute("data-alp-bib", Ob["Startno"]);
    row.setAttribute("data-tim", Ti["RunTimeMS"]);

    var Ro = [[Ti["RankClass"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"],
    [Rtim, "runtime"], [Dtim, "diff"]];

    for (var i = 0; i < Ro.length; i++) {
        Htm += `<td class='al-tbl-scr-${Ro[i][1]} al-${Ro[i][1]} '>${Ro[i][0]}</td>`;
    }
    row.innerHTML = Htm;
    $("#alp-tb-bsc").find("[data-id='" + Ob["ID"] + "']").addClass("new-income");

    setTimeout(function () {
        $("#alp-tb-bsc").find("[data-id='" + Ob["ID"] + "']").removeClass("new-income");
    }, (1000 * 30)); // for 1s = 1000ms
};
"use strict";
var DivBuilder;
function GetSchemaSprint() {
    DivBuilder = {};
    
    var ShowTime = "true";
    if (EventObj["Class"][URLPar.ClID] == undefined) {
        return false;
    }
   var stages = EventObj["Class"][URLPar.ClID]["FinalType"];
   // console.log("Stages " + stages);
    var htm = "";
    var boxes = [["Kvart 1", "kvart1"], ["Kvart 2", "kvart2"], ["Kvart 3", "kvart3"],
    ["Kvart 4", "kvart4"], ["Kvart 5", "kvart5"], ["Semi 1", "semi1"], ["Semi 2", "semi2"], ["Final", "final"]];
    //Vi bygger upp boxar nedan för sprinten 
    if (stages == "16") {
        boxes = [["1/4", "kvart1", 3], ["2/4", "kvart2", 4], ["3/4", "kvart3", 5],
        ["4/4", "kvart4", 6], ["1/2", "semi1", 7], ["2/2", "semi2", 8], ["Final", "final", 10]];
        DivBuilder["kvart"] = `<div class="kvart-kvart"> <div class="inner-kvart-kvart"> `;
        DivBuilder["semi"] = `<div class="semi-kvart"> <div class="inner-semi-kvart"> `;
        DivBuilder["final"] = `<div class="final-kvart"> <div class="inner-final-kvart"> `;
    }
    else if (stages == "32") {
        boxes = [["1/16", "sixteen1", 501], ["2/16", "sixteen2", 502], ["3/16", "sixteen3", 503], ["4/16", "sixteen4", 504],
        ["5/16", "sixteen5", 505], ["6/16", "sixteen6", 506], ["7/16", "sixteen7", 507], ["8/16", "sixteen8", 508],
        ["9/16", "sixteen1", 509], ["10/16", "sixteen10", 510], ["11/16", "sixteen11", 511], ["12/16", "sixteen12", 512],
        ["13/16", "sixteen13", 513], ["14/16", "sixteen14", 514], ["15/6", "sixteen15", 515], ["16/16", "sixteen16", 516],
        ["1/8", "eight1", 41], ["2/8", "eight2", 42], ["3/8", "eight3", 43], ["4/8", "eight4", 44],
        ["Åttondel 5", "eight5", 45], ["Åttondel 6", "eight6", 46], ["Åttondel 7", "eight7", 47], ["Åttondel 8", "eight8", 48],
        ["Kvartsfinal 1", "kvart1", 3], ["Kvartsfinal 2", "kvart2", 4], ["Kvartsfinal 3", "kvart3", 5],
            ["Kvartsfinal 4", "kvart4", 6], ["Semifinal 1", "semi1", 7], ["Semifinal 2", "semi2", 8], ["Final", "final", 10]];
        DivBuilder["sixteen"] = `<div class="sixteen-kvart"> <div class="inner-sixteen-kvart"> `;
        DivBuilder["eight"] = `<div class="eight-kvart"> <div class="inner-eight-kvart"> `;
        DivBuilder["kvart"] = `<div class="kvart-kvart"> <div class="inner-kvart-kvart"> `;
        DivBuilder["semi"] = `<div class="semi-kvart"> <div class="inner-semi-kvart"> `;
        DivBuilder["final"] = `<div class="final-kvart"> <div class="inner-final-kvart"> `;
    }
    else if (stages == "16s") {
        boxes = [["Åttondel 1", "eight1", 41], ["Åttondel 2", "eight2", 42], ["Åttondel 3", "eight3", 43], ["Åttondel 4", "eight4", 44],
        ["Åttondel 5", "eight5", 45], ["Åttondel 6", "eight6", 46], ["Åttondel 7", "eight7", 47], ["Åttondel 8", "eight8", 48],
        ["Kvartsfinal 1", "kvart1", 3], ["Kvartsfinal 2", "kvart2", 4], ["Kvartsfinal 3", "kvart3", 5],
            ["Kvartsfinal 4", "kvart4", 6], ["Semifinal 1", "semi1", 7], ["Semifinal 2", "semi2", 8], ["Final", "final", 10], ["Final-B", "finalb", 9]];
        DivBuilder["eight"] = `<div class="eight-kvart"> <div class="inner-eight-kvart"> `;
        DivBuilder["kvart"] = `<div class="kvart-kvart"> <div class="inner-kvart-kvart"> `;
        DivBuilder["semi"] = `<div class="semi-kvart"> <div class="inner-semi-kvart"> `;
        DivBuilder["final"] = `<div class="final-kvart"> <div class="inner-final-kvart"> `;
    }
    else {
        boxes = [["Kvartsfinal 1", "kvart1", 3], ["Kvartsfinal 2", "kvart2", 4], ["Kvartsfinal 3", "kvart3", 5],
        ["Kvartsfinal 4", "kvart4", 6], ["Kvartsfinal 5", "kvart5", 11], ["Semifinal 1", "semi1", 7], ["Semifinal 2", "semi2", 8], ["Final", "final", 10]];
        DivBuilder["kvart"] = `<div class="kvart-kvart"> <div class="inner-kvart-kvart"> `;
        DivBuilder["semi"] = `<div class="semi-kvart"> <div class="inner-semi-kvart"> `;
        DivBuilder["final"] = `<div class="final-kvart"> <div class="inner-final-kvart"> `;

    }
    var he = {};
    var Head = [["^", "rank"], ["Name", "name"], ["Club", "club"], ["Time", "runtime"]];
    //console.log(boxes);
    for (let i = 0; i < boxes.length; i++) {
        htm = `<div class='heat-box heat-${boxes[i][1]}'  data-hetnr='${boxes[i][2]}'>
<div class="sp-box-head">
<span data-inf='${boxes[i][1]}' class='sp-th-title'> ${boxes[i][0]}</span>
</div>
<table class='tb-heat' data-heat='${boxes[i][1]}' data-showtime=${ShowTime} class='${boxes[i][1].substring(0, boxes[i][1].length - 1)}' > 
        <thead class='tb-heat-head'> `;
        for (var z = 0; z < Head.length; z++) {
            htm += `<th class="tb-sp-${Head[z][1]} th-sp-${Head[z][1]}" data-lan='${Head[z][1]}'>${Head[z][0]}</th>`;
        }
        htm += "</thead> <tbody class='tb-heat-body' id='tb-heat-" + boxes[i][2] + "'> ";
        htm += "</tbody> </table> </div>";
        let Keyn = "heat_" + boxes[i][2].toString();
        he[Keyn] = htm;
        //console.log("Heat " + boxes[i][2]);
    }
    //console.log(he);
    for (let i in he) {
        //console.log(i);
        let heat = parseInt( i.replace("heat_", ""));
        if (heat < 7 || heat == 11) {
            DivBuilder["kvart"] += he[i];
        }
        else if (heat == 7 || heat == 8) {
            DivBuilder["semi"] += he[i];
        }
        else if (heat == 10 || heat == 9) {
            DivBuilder["final"] += he[i];
        }
        else if (heat > 40 && heat < 49) {
            DivBuilder["eight"] += he[i];
        }
        else if (heat > 500 && heat < 517) {
            DivBuilder["sixteen"] += he[i];
        }
    }
    htm = "";
    for (var j in DivBuilder) {
        htm += ` ${DivBuilder[j]} </div></div>`;
    }

    document.getElementById("spr-tab").innerHTML = htm;
    LoadSprintStage();
    Translate();
    return true;
}
function LoadSprintStage() {

    //http://localhost:54127/
    //GetResultFromLevel / 10 / 64 ? Ipos = 999 & FromLevel=2 & Count=50
    var Ap = "GetResultFromLevel/" + URLPar.EveID + "/" + URLPar.ClID + "?Ipos=999&FromLevel=3&Count=10";
    GetJs(Ap, true, Fillsprint);

}
function Fillsprint(_data) {
    var obarr = {};

    for (var k in _data) {
        var _Ob = _data[k];
        //console.log(k + " raden som kraschar");
        if ($("#tb-heat-" + k).length < 1) {
            continue;
        }
        document.getElementById("tb-heat-" + k).innerHTML = "";
        for (var n = 0; n < _Ob.length; n++) {
            var Ob = _Ob[n];
            var indx = 0;
            //console.log("tb-heat-" + k);
                      var lId = "tb-heat-" + k;
            if ((Ob["Times"]["999"] == undefined) == false) {
                indx = FindIndex(lId, (parseInt(Ob["Times"]["999"]["RunTimeMS"])));
            }
            else {
                indx = FindIndexSort(lId, (parseInt(Ob["SortOrder"])));
            }
            SprAddrowInResult2(Ob, indx, lId);
          //  console.log(indx);
            //SprFillResult(Ob);
            //var RTim = undefined;
            //var RCls = undefined;
            //var RtimMS = null;
            //if ((Ob["Times"]["999"] == undefined) == false) {

            //    if (n > 0) {
            //        RTim = "+" + FormatTime(Ob["Times"]["999"]["DiffClass"]);
            //    } else {
            //        RTim = FormatTime(Ob["Times"]["999"]["RunTime"]);
            //    }
            //    RCls = Ob["Times"]["999"]["RankClass"];
            //    RtimMS = Ob["Times"]["999"]["RunTimeMS"];
            //    if (Ob["Status"] == "DNS" || Ob["Status"] == "DNF" || Ob["Status"] == "DSQ") {
            //        RTim = Ob["Status"];
            //        RCls = "";
            //    }

            //}
            //var Ro = [[IsNull(RCls, Ob["Startno"]), "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"],
            //[Ob["Club"], "club"], [RTim, "runtime"]];

            //var htm = "";
            //if (Ob["Status"] == "LL") {
            //    htm = `<tr class='sp-ro-bo LuckyLooser' data-id='${Ob["ID"]}' data-order='${(Ob["SortOrder"] + 100)}' data-bib='${Ob["Startno"]}' data-tim="${RtimMS}"> `;
            //} else {
            //    htm = `<tr class='sp-ro-bo' data-id='${Ob["ID"]}' data-bib='${Ob["Startno"]}' data-order='${(Ob["SortOrder"] + 100)}' data-tim="${RtimMS}"> `;

            //}
            //for (var z = 0; z < Ro.length; z++) {
            //    htm += `<td class='tb-sp-${Ro[z][1]}' data-bod='${Ro[z][1]}'>${IsNull(Ro[z][0])}</td>`;
            //}
            //htm += "</tr>";
            //// console.log(htm);
            //if (obarr[k] == undefined) {
            //    obarr[k] = htm;
            //} else {
            //    obarr[k] += htm;
            //}
        }
    }
   // console.log(obarr);
    //for (var i in obarr) {
       
    //    if (i != 9) {
    //        document.getElementById("tb-heat-" + i).innerHTML = obarr[i];
    //    }
      
    //}
    GetActiveClsLvl();
}
/**SignalR Sprint**/
function SprFillResult(Obj) {
    //tb - heat - 8
    var lId = "tb-heat-" + Obj["Level"];
    if (Obj["IPos"] != 999) {
        console.log("Ingen ipo ");
        return; // Ska bara vara på mål 
    }
    if (Obj["ClassID"] != URLPar.ClID) {
        console.log("Ingen klass ");
        return;
    }
    if ($("#" + lId).length < 1) {
        console.log("Ingen level" + Obj["Level"] + " " + lId);
        return;
    }
    if ($('#' + lId).find('[data-bib="' + Obj["Athletes"]["Startno"] + '"]').length > 0) {
        $('#' + lId).find('[data-bib="' + Obj["Athletes"]["Startno"] + '"]').remove();
    }
    var Indx = FindIndex(lId, parseInt(Obj["PassingTime"]["RunTimeMS"]));
    
    SprAddrowInResult(Obj, Indx, lId);
    SprReRank(lId, Indx);
}
function SprReRank(_tbl, Ind) {
    var tbl = document.getElementById(_tbl);
    if (tbl.rows.length < 1) {
        return;
    }
    if (tbl.rows[0].cells[3].innerHTML[0] != "D" && tbl.rows[0].getAttribute("data-tim") != "null") {
        tbl.rows[0].cells[0].innerHTML = 1;
    }
    var LeadingTime = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var Before = parseInt(tbl.rows[0].getAttribute("data-tim"));
    var JumpOver = 0;
    var NewLeader = true;
    if (Ind == 0) {
        NewLeader = true;
    }
    for (var i = 1; i < tbl.rows.length; i++) {
        if (tbl.rows[i].cells[3].innerHTML[0] == "D" || tbl.rows[i].getAttribute("data-tim") == "null") {
            continue;
        }
        var ThisRow = parseInt(tbl.rows[i].getAttribute("data-tim"));
        if (parseInt(tbl.rows[i - 1].getAttribute("data-tim")) == ThisRow) {
            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML);
            JumpOver += 1;
        } else {

            tbl.rows[i].cells[0].innerHTML = parseInt(tbl.rows[i - 1].cells[0].innerHTML) + 1 + JumpOver;
            JumpOver = 0;
        }
        if (NewLeader) {
            var diff = ThisRow - LeadingTime;
            var dif = FormateMS(diff);
            tbl.rows[i].cells[3].innerHTML = "+" + FormatTime(dif);
        }
    }
}
function SprAddrowInResult(_data, Indx, TblID) {
    var Htm = "";
    var tbl = document.getElementById(TblID);
    var row = tbl.insertRow(Indx);
    var Ob = _data["Athletes"];
    var Ti = _data["PassingTime"];
    var Tim = FormatTime(Ti["RunTime"]);
    if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {
        Tim = Ob["Status"];
       // Ti["RunTime"] = Ob["Status"];
        Ti["DiffClass"] = "";
        Ti["RankClass"] = "";
    }
    else if (Indx > 0) {
        Tim = "+" + FormatTime(Ti["DiffClass"]);
    }
    row.setAttribute("data-id", Ob["ID"]);
    row.setAttribute("data-order", Ob["SortOrder"]);
    row.setAttribute("data-bib", Ob["Startno"]);
    row.setAttribute("data-tim", Ti["RunTimeMS"]);
    row.setAttribute("class", "sp-ro-bo");
    var Ro = [[Ti["RankClass"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"], [Tim, "runtime"]];
    for (var d = 0; d < Ro.length; d++) {
        Htm += ` <td class='tb-sp-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
    }
    row.innerHTML = Htm;

    // htm += `<td class='tb-sp-${Ro[z][1]}' data-bod='${Ro[z][1]}'>${IsNull(Ro[z][0])}</td>`;

}
function SprAddrowInResult2(_data, Indx, TblID) {
    var Htm = "";
    var tbl = document.getElementById(TblID);
    var row = tbl.insertRow(Indx);
    var Ob = _data;
    var Ti = null;
    var Tim = "";
    var RnkClass = "";
    //console.log(_data);
    if ((_data["Times"]["999"] == undefined) == false) {
        Ti = _data["Times"]["999"];
        Tim = FormatTime(Ti["RunTime"]);
        if (Ob["Status"] == "DNS" || Ob["Status"] == "DSQ" || Ob["Status"] == "DNF") {
            Tim = Ob["Status"];
            // Ti["RunTime"] = Ob["Status"];
            Ti["DiffClass"] = "";
            Ti["RankClass"] = "";
        }
        else if (Indx > 0) {
            Tim = "+" + FormatTime(Ti["DiffClass"]);
        }
        row.setAttribute("data-id", Ob["ID"]);
        row.setAttribute("data-order", Ob["SortOrder"]);
        row.setAttribute("data-bib", Ob["Startno"]);
        row.setAttribute("data-tim", Ti["RunTimeMS"]);
        row.setAttribute("class", "sp-ro-bo");
        RnkClass = Ti["RankClass"];
    } else {
        row.setAttribute("data-id", Ob["ID"]);
        row.setAttribute("data-order", Ob["SortOrder"]);
        row.setAttribute("data-bib", Ob["Startno"]);
        row.setAttribute("data-tim", null);
        row.setAttribute("class", "sp-ro-bo");
        RnkClass = _data["Startno"];
    }
    
   
    var Ro = [[RnkClass, "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"], [Tim, "runtime"]];
    for (var d = 0; d < Ro.length; d++) {
        Htm += ` <td class='tb-sp-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
    }
    row.innerHTML = Htm;

    // htm += `<td class='tb-sp-${Ro[z][1]}' data-bod='${Ro[z][1]}'>${IsNull(Ro[z][0])}</td>`;

}
function SprAddAthlete(Obj) {
    var lId = "tb-heat-" + Obj["Level"];
   
    if (Obj["ClassID"] != URLPar.ClID) {
        return;
    }
    if ($("#" + lId).length < 1) {
        return;
    }
    if ($('#' + lId).find('[data-bib="' + Obj["Startno"] + '"]').length > 0) {
        var tbl = document.getElementById(lId);
        for (var r = 0; r < tbl.rows.length; r++) {
            if (tbl.rows[r].getAttribute("data-bib") == Obj["Startno"]) {
                tbl.rows[r].cells[1].innerHTML = FormatName(Obj["FirstName"], Obj["Athletes"]["LastName"]);
                tbl.rows[r].cells[2].innerHTML = Obj["Club"];
                break;
            }
        }
    } else {
        SprAddrowInList(Obj, 0, lId);
    }
}
function SprAddrowInList(Ob, Indx, TblID) {
    var Htm = "";
    var tbl = document.getElementById(TblID);
    var row = tbl.insertRow(Indx);
   
    var Tim = "";
    if (Ob["Status"] == "DNS" || Ob["Status"] == "DNS" || Ob["Status"] == "DNF") {
        Tim = Ob["Status"];
        Ti["DiffClass"] = "";
        Ti["RankClass"] = "";
    }
    row.setAttribute("data-id", Ob["ID"]);
    row.setAttribute("data-order", Ob["SortOrder"]);
    row.setAttribute("data-bib", Ob["Startno"]);
    row.setAttribute("data-tim", "null");
    row.setAttribute("class", "sp-ro-bo");
    var Ro = [[Ob["Startno"], "rank"], [FormatName(Ob["FirstName"], Ob["LastName"]), "name"], [Ob["Club"], "club"], [Tim, "runtime"]];
    for (var d = 0; d < Ro.length; d++) {
        Htm += ` <td class='tb-sp-${Ro[d][1]}' data-bod='${Ro[d][1]}'>${Ro[d][0]}</td> `;
    }
    row.innerHTML = Htm;
}
function SprDeleteResult(Obj) {
    if (URLPar.PoID != Obj["Ipos"]) {
        // console.log("Icke delete existerande mellantid " + Obj["Ipos"] + " " + URLPar.PoID);
        return;
    }
    if (Obj["ClassID"] != URLPar.ClID) {
        // console.log("Icke delete existerande Classid " + Obj["ClassID"]);
        return;
    }
    if (Obj["Level"] != URLPar.Level) {
        //console.log("Icke delete existerande possition" + " " + Obj["Level"]);
        return;
    }
    if (CheckIfExistinResultList(Obj["Startno"], "tboy") == false) {
        $('[data-bib="' + Obj["Startno"] + '"]').remove();
    }
   var tbl = document.getElementById("tboy");
    ReRank(tbl, 0);
}
function SprSetStatus(Obj) {

    if (Obj.Status == "LL") {
        if ((Obj.Level >= 3 && Obj.Level <= 6) || Obj.Level == 11) {
            $(".inner-kvart-kvart").find('[data-bib="' + Obj.Startno + '"]').addClass("LuckyLooser");
        }
        else if (Obj.Level == 8 || Obj.Level == 7) {
            $(".inner-semi-kvart").find('[data-bib="' + Obj.Startno + '"]').addClass("LuckyLooser");
        }
    }
    else if (Obj.Status == "RemoveLL") {
        if (Obj.Level >= 3 || Obj.Level <= 6 || Obj.Level == 11) {
            $(".inner-kvart-kvart").find('[data-bib="' + Obj.Startno + '"]').removeClass("LuckyLooser");
        }
        else if (Obj.Level == 8 || Obj.Level == 7) {
            $(".inner-semi-kvart").find('[data-bib="' + Obj.Startno + '"]').removeClass("LuckyLooser");
        }
    }
}
function SetStatus(Status,Level,Startno) {

    if (Status == "LL") {
        $("#tb-heat-" + Level).find('[data-bib="' + Startno + '"]').addClass("LuckyLooser");

    }
    else if (Status == "RemoveLL") {
        if ((Level >= 3 && Level <= 6) || Level == 11) {
            $(".inner-kvart-kvart").find('[data-bib="' + Startno + '"]').removeClass("LuckyLooser");
        }
        else if (Obj.Level == 8 || Obj.Level == 7) {
            $(".inner-semi-kvart").find('[data-bib="' + Startno + '"]').removeClass("LuckyLooser");
        }
    }
}
//Laddar Aktiv 
function GetActiveClsLvl() {
    var Ap = "GetActiveClassRun/" + URLPar.EveID;
    if (URLPar.ClID !== undefined || URLPar.ClID !== null) {
        Ap += "?ClassID=" + URLPar.ClID;
    }
    GetJs(Ap, true, FillActiveClsLvl);
}
function FillActiveClsLvl(_data) {
    ActCls.AcClID = _data.ActiveClass;
    ActCls.ClID = _data.ClassID;
    ActCls.LvL = _data.ActiveLevel;
    if (URLPar.ClID == ActCls.ClID && URLPar.View == "sprint") {
        if (ActCls.LvL != null) {
            if (ActCls.LvL > 2) {
                $(".heat-active").removeClass("heat-active");
                $('[data-hetnr="' + ActCls.LvL + '"]').addClass("heat-active");
                $("#out-spr-tab").scrollLeft($('[data-hetnr="' + ActCls.LvL + '"]').offset().left + 50);
                $("#out-spr-tab").scrollTop($('[data-hetnr="' + ActCls.LvL + '"]').offset().top);
            }
        }
    }
}

    //Level,
    //ClassID,
    //Startno,
    //Status
;
"use strict";
const monthNames = ["JAN", "FEB", "MAR", "APR", "MAJ", "JUN",
    "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
];

function LoadRaces() {
    $("body").hide();
    $("#cont-menu").hide();

    if (URLPar.URL.includes("live.elitetiming.se")) {
        URLPar.Theme = "IPC";
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/IPC.css">');
        GetJs("GetRaces?Theme=" + URLPar.Theme, true, BuildRaces);
        Translate(Language = "English");
    }
    else if (URLPar.URL.includes("fjallmaraton.se")) {
        document.write("");
        $("body").css("background:#24292E");
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/Fjallmara.css?2007141430">');
        location.href = URLPar.URL + "/1186#result";


        return; 
    }
    else if (URLPar._URL.includes("live.skidskytte")) {
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/SSSF_Biathlon.css?2208161400">');
        console.log("Is biathlon");
        GetJs("GetRaces", true, BuildRaces);
    }
    else if (URLPar.Theme !== null && URLPar.Theme !== undefined) {
        $('head').append('<link rel="stylesheet" type="text/css" href="/Themes/' + URLPar.Theme + '.css">');
        GetJs("GetRaces?Theme=" + URLPar.Theme, true, BuildRaces);
        Translate(Language = "English");
    } else {
        GetJs("GetRaces", true, BuildRaces);
    }
    $("body").show();
}
//När man skickar en 1 så hämtar man orginal uppsättet 0 äldre tävlinger och 2 nyare tävlingar
function BuildRaces(_data, AddOlderNewRaces = 1) {
    var Tod = GetDate(new Date());
    var htm = "";
    var ShowingMore = 0;
    for (var i = 0; i < _data.length; i++) {
        //Vi går igenom alla racen som kommer med  

        var Ob = _data[i];
        //console.log(Ob["Theme"]);
        if (Ob["Theme"] == null) 
        {
            Ob["Theme"] = "";
        }   
        else if (Ob["Theme"].toLowerCase() == "fjallmara" && (URLPar.Theme != "fjallmara" || URLPar.Theme != "Fjallmara" )) {
            //URLPar.Theme = "IPC";
            continue;
        }
        var isToday = "";
        var RacDate = Ob["RaceDate"].substring(0, 10);
        var RacDiff = GetDayDiff(Tod, Ob["RaceDate"].substr(0, 10));
        if ($('[data-race="' + Ob["Id"] + '"]').length > 0) {
            continue;
        } else {
            if (htm.includes('[data-race="' + Ob["Id"] + '"]')) {
                continue;
            }
        }

        if (Tod == Ob["RaceDate"].substr(0, 10)) {
            isToday = "rac-today"; //dagens race får klassen rac-today med annan bakgrundsfärg
            ShowingMore += 1;
        }
        else if (new Date(Tod) < new Date(Ob["RaceDate"].substr(0, 10))) {
            isToday = "rac-future"; //Framtida tävlingar 
            ShowingMore += 1;
        }
        else if (new Date(Tod) > new Date(Ob["RaceDate"].substr(0, 10))) {
            isToday = "rac-before"; //Tävlingare tidigare 
        }
        Ob["Place"] = IsNull(Ob["Place"], "");
        Ob["Organizer"] = IsNull(Ob["Organizer"], "");
        Ob["RaceDate"] = new Date(Ob["RaceDate"]);
        htm += ` <div class="rac-row ${isToday}" data-date="${RacDate}" data-diff="${RacDiff}" data-race=${Ob["Id"]}>
                    <div class="rac-color"></div>
                    <div class="rac-dat">
                        <span class="rac-date">${Ob["RaceDate"].getDate()}</span>
                        <span class="rac-month">${monthNames[Ob["RaceDate"].getMonth()]}</span>
                    </div>
                    <div class="rac-inf">
 <a href="${BaseURL + Ob["Id"]}">
                        <div class="rac-top">
                          <span> ${Ob["Name"]}</span>
                        </div>
                        <div class="rac-bottom">
                            <span id="rac-gli-orga"><span class="glyphicon glyphicon-home"></span><span class="rac-bot-txt" id="rac-orga">${Ob["Organizer"]}</span></span>
                            <span id="rac-gli-plac"><span class="glyphicon glyphicon-globe"></span><span class="rac-bot-txt" id="rac-orga">${Ob["Place"]}</span></span>
                        </div>
</a>
                    </div>
                </div> `; //Vi skapar en DIV för varje element 
    }
    if (AddOlderNewRaces == 0) {
        document.getElementById("rac-cont").innerHTML = htm + document.getElementById("rac-cont").innerHTML;
        
    } else {
        document.getElementById("rac-cont").innerHTML = htm;

    }
    if (ShowingMore < 5 && $('#rac-cont > div').length < 10) { //Om vi har fler än 5race i framtiden då ska vi visa gamla tävöongar 
        ShowEarlierRaces(); // DÅ ska vi visa framtida tävlingar 
        $("#racTo").hide();
    }
}
function GetDate(Inp) {
    //console.log(Inp);
    return Inp.getFullYear() + "-" + FormatDateZero(Inp.getMonth() + 1) + "-" + FormatDateZero(Inp.getDate());
}
function FormatDateZero(Inp) {

    if (Inp > 9) {
        return Inp;
    }
    return "0" + Inp;
}
//Vi får diffen mellan två datum 
function GetDayDiff(Tod, OthDat) {
    var timeDiff = (new Date(OthDat).getTime() - new Date(Tod).getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
    return diffDays;
}
//Klick flera tävlingar 
$(document).on("click touchstart", "#racUp", function () {
    ShowEarlierRaces();
});
$(document).on("click touchstart", "#racDo", function () {
    HideEarlierRaces();
});
$(document).on("click touchstart", "#racTo", function () {
    TodaysRace();
});
var lastScrollTop = 0;
$(window).on('mousewheel',
    function (e) {
        //if (e.originalEvent.deltaY > 0) {
        //    console.log("Scroll down");
        //    HideEarlierRaces();
        //} else {
        //    console.log("Scroll up");
        //    ShowEarlierRaces();
        //}

    });
var event = jQuery.Event("mousewheel");
event.deltaY = -10;
$(window).trigger(event);
function ShowEarlierRaces() {
    var PosForLastVis = 0;
    $('#rac-cont > div').each(function () {
        var innerDivId = $(this).attr('data-diff');
        PosForLastVis += 1;

        if ($(this).css('display') != "none") {

            return false;
        }
    });
    var Nsho = 0;
    $('#rac-cont > div').each(function () {
        var innerDivId = $(this).attr('data-diff');

        if (Nsho >= (PosForLastVis - 5) && Nsho < PosForLastVis) {
            $(this).css("display", "block");
        }
        else if (Nsho >= PosForLastVis) {
            if (Nsho == 1 && PosForLastVis == 1) {
                LoadEarlierRaces();
            }
            return false;
        }
        Nsho += 1;
    });
}
function LoadEarlierRaces() {
   
    var OldestRace = new Date();
    let FoundOlderRaces = false;
    $('#rac-cont > div').each(function() {
        //data-date="2019-02-02"
        if ( (new Date($(this).attr('data-date'))) < OldestRace) {
            OldestRace = new Date($(this).attr('data-date'));
            FoundOlderRaces = true;
        }
    });
    
    if (FoundOlderRaces) {
        //console.log("aa Lfreddd " + OldestRace);
        OldestRace = new Date(OldestRace.setDate(OldestRace.getDate() - 1));
        //console.log("aa Lfreddd " + OldestRace);
    }

    GetJs("GetRaces?FromDate=" + GetDate(OldestRace), true, BuildRaces, 0);
}
function HideEarlierRaces() {
    var PosForLastVis = 0;
    $('#rac-cont > div').each(function () {
        var innerDivId = $(this).attr('data-diff');
        PosForLastVis += 1;

        if ($(this).css('display') != "none") {
            return false;
        }
    });
    var Nsho = 0;
    $('#rac-cont > div').each(function () {
        var innerDivId = $(this).attr('data-diff');
        Nsho += 1;
        if ((Nsho) >= (PosForLastVis) && (Nsho - 5) < PosForLastVis && $(this).attr('data-diff') < 0) {
            $(this).hide();

        }

        //if (Nsho >= (PosForLastVis - 5) && Nsho < PosForLastVis) {
        //    $(this).css("display", "block");

        //}
        //else if (Nsho >= PosForLastVis) {
        //    return false;
        //}

    });
}
function TodaysRace() {
    $('#rac-cont > div').each(function () {
        var innerDivId = $(this).attr('data-diff');
        if (innerDivId >= 0) {
            return false;
        } else {
            $(this).hide();
        }
    });
}
;

async function ScoreBoardBuild() {
    var htmlAdd = "";
    let ht = "";
    for (var z in EventObj.Class) {
        ht =  await GetScoreRow(EventObj.Class[z]);
    
        htmlAdd += ht; //GetScoreRow(EventObj.Class[z]);
    }
    
    $("#score-view").html(htmlAdd);
    Translate();
}
async function GetScoreRow(ClassObj) {
    var Lvl = ClassObj.Level[1];
    let Ap = "GetResultlist/" + URLPar.EveID + "/" + ClassObj.ID + "?Ipos=999&Count=10&From=0&Level=1";
    var html = "";
    let res = null;
    try {
        res = await SCgetData(Ap);
    } catch (err) {
        return "";
    }
    if (res == null) {
        
        return "";
    }
    
    let ArrHead = new Array(Object.keys(Lvl.TimePos).length + 5);
    let co = 4;
    //res = JSON.parse(res);
    
    for (var k in Lvl.TimePos) {
        ArrHead[co] = k;
        co += 1;
    }
    
    let html2 = "";
    //console.log(res);
    for (var a in res.ResultList) {
        html2 += ScoreAthleteRow(Lvl.TimePos, ArrHead, res.ResultList[a]);
        
    }
    let Tims = "";
   // console.log(Lvl.TimePos);
    if (999 in Lvl.TimePos) {
        Tims += `<th class="head-runtime tbl-runtime"> ${Lvl.TimePos["999"].Name}</th>`;
    }

    for (var tp in Lvl.TimePos) {
        if (tp == undefined) {
            Tims += `<th class="head-runtime tbl-runtime"></th>`;
        }
        else if (tp != "999") {
            Tims += `<th class="head-runtime tbl-runtime"> ${Lvl.TimePos[tp].Name}</th>`;
        }
        
    }
    html = `
    <div class="score-class" id="score-cls-${ClassObj.ID}"> 
        <div>
            <span class="score-class-name">${ClassObj.Name}</span>
        </div>
        <table class="table table-condensed"> 
       
        <thead>
            <th class="head-rank tbl-rank" data-lan="rank">Rnk.</th>
            <th class="head-bib tbl-bib" data-lan="bib">strn.</th>
            <th class="head-name tbl-name" data-lan="name">namn</th>
            <th class="head-name tbl-club" data-lan="club">club</th>
            <th class="head-nation tbl-nation" data-lan="nation">nation</th>
            ${Tims}
        </thead>
        <tbody class="tbl-body">
             ${html2}
        </tbody >           
        </table>
    </div>
        `;
   
    return html;
}
function ScoreAthleteRow(TimePos, ArrHead, Athlete) {
    let Tims = "";
    let Rnk = "";
    let Num = 0;
    //console.log(Athlete);
    if ("999" in Athlete.Times) {
        Tims += GetTime(Athlete.Times[999], Athlete.Status);
        Num = 1;
    }
    for (var i = (3 + Num); i < ArrHead.length - 1; i++) {
        if (Athlete.Times == undefined) {

            Tims += `<td class="body-runtime tbl-runtime" data-bod="runtime"></td>`;
        }
        else //if (Athlete.Times in ArrHead[i]) {
        {  
            if (ArrHead[i] == 999 && Athlete.Times[ArrHead[i]] != undefined && (Athlete.Status == "OK" || Athlete.Status == "ENT")) {
                Rnk = Athlete.Times[ArrHead[i]].RankClass;
            }
            else {
                Tims += GetTime(Athlete.Times[ArrHead[i]], Athlete.Status);
            }
        }
        //else {
        //    Tims += "<td></td>";
        //}
    }
    

    let html = `<tr >
            <td  class="body-rank tbl-rank" data-bod="rank">${Rnk}</td>
            <td class="body-bib tbl-bib" data-bod="bib">${FormateStartnumber(Athlete["Startno"])}</td>
            <td class="body-name tbl-name" data-bod="name">${FormatName(Athlete["FirstName"], Athlete["LastName"])}</td>
            <td class="body-club tbl-club" data-bod="club">${Athlete["Club"]}</td>
            <td class="body-nation tbl-nation" data-bod="nation">${IsNull( Athlete["Nation"],"")}</td>
            ${Tims}
        </tr>`;
    return html;
}
function GetTime(Tim,Status) {
    let RunTime;
    let Rnk;
    if (Tim == undefined) {
        RunTime = "";
        Rnk = "";
    }
    else {

        if (Status != "OK" && Status != "ENT") {

            RunTime = "";
            Rnk = "";
        }
        else {


            RunTime = FormatTime(Tim.RunTime);
            Rnk = Tim.RankClass;
        }

    }
   // console.log(Tim.RunTime);
   // return "";
    return `<td class="body-runtime tbl-runtime" data-bod="runtime"><span class="score-ath-tim-tim"> ${RunTime} </span> <span class="score-ath-tim-rnk"> ${Rnk} </span> </td>`;
}
async function ScoreBoardSGR(ipo, Obj) {
    if (ipo.Ipos == "999") {
        if (Obj["Athletes"].Times != undefined) {
            let Cls =  EventObj.Class[Obj["Athletes"].ClassID];
            let Htm = await GetScoreRow(Cls);
            $("#score-cls-" + Cls.ID).html = Htm;
        }
    }
}

//Retunerar json objekt
function SCgetData(ajaxurl) {
    return $.ajax({
        url: BaseURL + ajaxurl,
        type: 'GET'
    });
};
;
