var eventsOpn = Array();
$(document).ready(
        function() {

            initBetLinksBetslip();
            if ($("#cleanSlip").size() > 0) {
                $("#cleanSlip").click(deleteallbets);
            }
            if ($("a.delstringitem").size() > 0) {
                $("a.delstringitem").click(deletebetstr);
            }
            if ($("a.bankeritem").size() > 0) {
                $("a.bankeritem").click(doBanker);
            }
            if ($("#buttonSlip").size() > 0) {
                $("#buttonSlip").click(submitslip);
            }
            if ($("#checkbetid").size() > 0) {
                $("#checkbetid").focus();
            }
            editH();
            checkShow();
        }
);

function checkShow(){
    for(var i in eventsOpn ) {
        var obj = eventsOpn[i];
        if(obj!=null && obj.show==1){
            obj.setShow(0);
            showMoreBlock(obj.id);
            return;
        }
    }
}

function EventRow(id){
    this.id = id;
    this.show = 0;
    this.result = "";
    this.odd1 = 0;
    this.oddX = 0;
    this.odd2 = 0;
    this.oldOdd1 = 0;
    this.oldOddX = 0;
    this.oldOdd1 = 0;
    this.auth = "";
    this.stat = "";
    this.more = "";
    this.morelong = "";

    this.setAuth = function(val){
        this.auth = val;
    }

    this.setShow = function(val){
        this.show = val;
    }

    this.setStat = function(val){
        this.stat = val;
    }

    this.setResult = function(result){
        this.result = result;
    }

    this.set1 = function(val){
        this.oldOdd1 = (this.odd1==0)?val:this.odd1;
        this.odd1 = val;
    }

    this.setX = function(val){
        this.oldOddX = (this.oddX==0)?val:this.oddX;
        this.oddX = val;
    }

    this.set2 = function(val){
        this.oldOdd2 = (this.odd2==0)?val:this.odd2;
        this.odd2 = val;
    }

    this.setMore = function(val){
        this.more = val;
    }

    this.setMoreLong = function(val){
        this.morelong = val;
    }
}

function initBetLinksBetslip(){

    if ($("a.oddj").size() > 0) {
        $("a.oddj").unbind('click.odd');
        $("a.oddj").bind('click.odd', oddclick);
    }
    if ($("a.oddjex").size() > 0) {
        $("a.oddjex").unbind('click.odd');
        $("a.oddjex").bind('click.odd', oddclick);
    }
}
function editH(){
    var w1 = $("#topodd1").width();
    var wx = $("#topoddx").width();
    var w2 = $("#topodd2").width();
    var m = $("#topmore").width();
    $(".newLive").find("tr").each(
        function(){
            var tble = $(this).find("table.odds1x2");
            if($(tble).length>0) {
            var tb1 = $(this).find("table.odds1x2 td.odd1");
            var tbx = $(this).find("table.odds1x2 td.oddx");
            var tb2 = $(this).find("table.odds1x2 td.odd2");
            var tbm = $(this).find("table.odds1x2 td.more");

                $(tb1).css("border-right", "#ffffff 1px solid");
                $(tbx).css("border-right", "#ffffff 1px solid");

                $(tble).height($(this).height());
                $(tb1).height($(this).height());
                $(tb1).width(w1+4);
                $(tbx).width(wx+4);
                $(tb2).width(w2+4);
                if($(tbm).length){
                    $(tb2).css("border-right", "#ffffff 1px solid");
                    $(tbm).width(m+4);
                }
            }
        }
    );
}

function updateOddjLink(lnk, val, auth){
    var betdata = $(lnk).attr("betdata");

    var res = betdata.split(",");

    var newbdata = betdata.replace(res[3], " "+val);


    $(lnk).attr("isauthorized", auth);
    $(lnk).attr("betdata", newbdata);
    $(lnk).html(val);
}

function updateHeadData(obj){
    editH();
    var id = obj.id;
    $("tr#row"+id+" span.evStatus").html(obj.stat);
    $("tr#row"+id+" .result").html(obj.result);
    $("tr#row"+id+" .evStatus").html(obj.stat);
    $("tr#row"+id+" td.more a").html(obj.more);
    $("tr#row"+id+" .moreLong a").html(obj.morelong);
    if(obj.odd1!="-" || obj.oddX!="-" || obj.odd2!="-"){
        updateOddjLink($("tr#row"+id+" .odd1 a"), obj.odd1, obj.auth);
        updateOddjLink($("tr#row"+id+" .oddx a"), obj.oddX, obj.auth);
        updateOddjLink($("tr#row"+id+" .odd2 a"), obj.odd2, obj.auth);

        $("tr#row"+id+" .odds1x2").show();
        $("tr#row"+id+" .moreLong").hide();
    }else{
        $("tr#row"+id+" .odds1x2").hide();
        $("tr#row"+id+" .moreLong").show();
    }

    //alert($("tr#row"+id).children("td.odd1"));
    //$("tr#row"+id+" td#odd1").html(obj.odd1);
    //$("tr#row"+id+" td#odd1 a b").html(obj.oddX);
    //$("tr#row"+id+" td#odd1 a b").html(obj.odd2);
}

function showMoreBlock(id){
    var table = $("tr#more"+id).parent("table");
    var block = $("tr#more"+id+" .InplayContent");
    var obj = eventsOpn[id];
    if(obj.show==0){
        loadMoreBlock(block, id);
        obj.setShow(1);
        closeUnusedBlocksExclude(id);
    }else{
        obj.setShow(0);
        loadHideMoreBlock(block, id);
    }
}

function closeUnusedBlocksExclude(id){
    for( i in eventsOpn ) {
        var obj = eventsOpn[i]
        if(obj.id!=id && obj.show==1){
            obj.setShow(0);
            $("tr#more"+obj.id).hide();
            $("tr#more"+obj.id+" .newLive").html("");
        }
    }
}

function refreshBlock(id){
    var block = $("tr#more"+id+" .InplayContent");
    loadMoreBlock(block, id);
}

function hideBlock(id){
    var block = $("tr#more"+id+" .InplayContent");
    eventsOpn[id].setShow(0);
    loadHideMoreBlock(block, id);
}

function firstLoadMoreBlock(id){
    var block = $("tr#more"+id+" .InplayContent");
    loadHideMoreBlock(block, id);
}

function loadMoreBlockTd(id){
    var block = $("tr#more"+id);
    loadMoreBlock(block, id);
}

function loadMoreBlock(block, id){
    $("tr#more"+id).show();
    var h = $(block).height();
    var tmp = getHtmlTemplate("<div class='loader'></div>", h);
    //$(block).html(tmp);
    $(block).html("<div class='loader'></div>");
    var url = "/sportsbook?do=liveeventoddsbody&id="+id+"&show=1&rnd="+Math.random();
    $(block).load(url);
}

function loadHideMoreBlock(block, id){
    $("tr#more"+id).hide();
    $(block).html("<div class='loader'></div>");
}

function getHtmlTemplate(inner, h){
    out = "<div class='row' style='height: "+h+"px'>" +
        "<div class='tm' style='text-align: center;'>"+inner+"</div>" +
        "<div class='match'></div>" +
        "<div class='odd1'></div>" +
        "<div class='oddx'></div>" +
        "<div class='odd2'></div>" +
        "</div>";
    return out;
}

function addbet( pars )
{
    $.post('slipmanager',
       {
           action: "add",
           sport:  pars[0],
           league: pars[1],
           oid:    pars[2],
           odd:    pars[3],
           brid:   pars[4]
       },
       onSuccessAdd
    );
}

function gotoLogin(pars)
{
    formObj        = document.forms.betform;
    formObj.action = urls["login"];
    $("#formDo").val("login");
    formObj.sport.value  = pars[0];
    formObj.league.value = pars[1];
    formObj.oid.value    = pars[2];
    formObj.odd.value    = pars[3];
    if (pars[4] != null) {
        formObj.brid.value   = pars[4];
        brids = pars[4].split("\|");

        if (brids[3] != null && brids[3] == 1) {
            formObj.trg.value = "10"
        } else {
            formObj.trg.value = "6"
        }
    } else {
        formObj.trg.value = "6"
    }
    formObj.submit();
}

// delete item from slip right
function deletebet()
{
    $.post('slipmanager',
       {
         action: "del",
         betId:  $(this).attr("betId")
       },
       onSuccessDel
    );
}

// delete item from slip center
function deletebetstr()
{
    $.post('slipmanager',
       {
         action: "del",
         betId:  $(this).attr("betId")
       },
       onSuccessDelItem
    );
}

// delete noajax item from slip right
function delbet(obj)
{
    $.post('slipmanager',
       {
         action: "del",
         betId:  $(obj).attr("betId")
       },
       onSuccessDel
    );
}

function deleteallbets()
{
    $.post('slipmanager',
       {
         action: "delall"
       },
       onSuccessDelAll
    );
}

// set type to server after change select
function setTypeSlip()
{
    nType = $("#typeExpress").val();
    $.post('slipmanager',
            {
                action: "changeType",
                newType: nType
            },
            onSuccessChangeType
    );
}

// set type to slip on site after action (add, del, doBanker)
function setTypeFromXML(code, type, isLive) {
    var obj  = eval("(" + code + ")");
    if (typeof(obj[0]) != "undefined") {
        $("#typeSlip").html(' ' + obj[0]);
    } else if (isLive == 1 || isLive == "1") {
        $("#typeSlip").html(' ' + obj[1]);
    } else {
        generateListTypes(obj, type);
    }
}

// on/off banker on slip
function doBanker(obj)
{
    $.post('slipmanager',
            {
                action: "doBanker",
                betId:  obj.value,
                status: obj.checked.toString()
            },
            onSuccessDoBanker
    );
}

function showBanker()
{
    $.post('slipmanager',
            {
                action: "showBanker"
            },
            onSuccessShowBanker
    );
}

function oddclick()
{
    auth      = $(this).attr("isauthorized");
    betData   = $(this).attr("betdata");
    params    = betData.split(", ");
    if (auth == "true"){
        addbet(params);
    }else{
        gotoLogin(params);
    }
    return false;
}

function submitslip() {
    countItems = parseInt($("#buttonSlip").attr("countItems"));
    liveflag   = parseInt($("#buttonSlip").attr("liveflag"));
    if (isNaN(countItems) || !isFinite(countItems))
        countItems = 0;
    if (minCombiSize != 0 && typeof(minCombiSize) != "undefined" && minCombiSize > countItems && countItems != 1) {
        alert(minCombiErr);
        return false;
    }
    formObj        = document.forms.slipform;
    actUrl = '#';
    if (countItems > 1) {
        actUrl = urls["combibet"];
        if (liveflag == 1) {
            actUrl = urls["combibetlive"];
        }
    }
    else if (countItems == 1) {
        actUrl = urls["bet"];
        if (liveflag == 1) {
            actUrl  = urls["inplaybet"];
        }
    }
    formObj.action = actUrl;
    formObj.submit();
}

// callback function for add action
function onSuccessAdd(xml)
{
    error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return false;
    }
    countItems  = $("countItems",  xml).text();
    type        = $("type",        xml).text();
    betId       = $("betId",       xml).text();
    sportId     = $("sportId",     xml).text();
    leagueId    = $("leagueId",    xml).text();
    evnt        = $("event",       xml).text();
    oddstype    = $("oddstype",    xml).text();
    runner      = $("runner",      xml).text();
    odd         = $("odd",         xml).text();
    totalOdd    = $("totalOdd",    xml).text();
    minStake    = $("minStake",    xml).text();
    maxStake    = $("maxStake",    xml).text();
    oid         = $("oid",         xml).text();
    brid        = $("brid",        xml).text();
    titleBanker = $("titleBanker", xml).text();
    sBankers    = $("showBankers", xml).text();
    liveFlag    = $("liveflag",    xml).text();
    showBankers = (sBankers === 'true');
    // set type slip
    //setTypeSlip(type);
    var code = $("listTypesJS", xml).text();
    setTypeFromXML(code, type, liveFlag);
    $("#totalOddSlip").text(totalOdd);
    $("#minStakeSlip").text(minStake);
    $("#maxStakeSlip").text(maxStake);
    $("#buttonSlip").attr("countitems", countItems);
    $("#buttonSlip").attr("liveflag", liveFlag);

    // template of slip's item
    tplSlipItem = '<tr id="id_@betId@_0" class="itemslip">' +
                    '<input type="hidden" value="' + sportId + '" name="sport"/>' +
                    '<input type="hidden" value="' + leagueId + '" name="league"/>' +
                    '<input type="hidden" value="' + oid + '" name="oid"/>' +
                    '<input type="hidden" value="' + brid + '" name="brid"/>' +
                    '<input type="hidden" value="' + odd + '" name="odd"/>' +
                    '<td valign="top" class="sliptborder">' +
                      '<a href="#" class="delimg" betId="@betId@"><img src="' + imgRoot + '/delslip.gif" border="0" width="9" height="12" alt="' + titleSlip + '"/></a>' +
                    '</td>' +
                    '<td colspan="2" valign="top" class="sliptborder slipevent"> ' + evnt + ' </td>' +
                    '<td valign="top" class="sliptborder bnktd">' +
                            '<input type="checkbox" onclick="doBanker(this);" id="banker_@betId@" value="@betId@" title="' + titleBanker +'"/>' +
                       '</td>' +
                '</tr>' +
                '<tr id="id_@betId@_1" class="itemslip">' +
                    '<td><img src="' + imgRoot + '/tr.gif" border="0" width="1" height="1" alt="" /><br /></td>' +
                    '<td valign="top" colspan="2" class="slipmarket"> ' + oddstype + ' </td>' +
                    '<td class="bnktd"><img src="' + imgRoot + '/tr.gif" border="0" width="1" height="1" alt="" /><br /></td>' +
                '</tr>' +
                '<tr id="id_@betId@_2" class="itemslip">' +
                    '<td class="slipbborder"><img src="' + imgRoot + '/tr.gif" border="0" width="1" height="1" alt="" /><br /></td>' +
                    '<td valign="top" class="slipbborder slipoutcome"> ' + runner + ' </td>' +
                    '<td align="right" valign="top" class="slipbborder slipodd">' + odd + '</td>' +
                    '<td class="slipbborder bnktd"><img src="' + imgRoot + '/tr.gif" border="0" width="1" height="1" alt="" /><br /></td>' +
                '</tr>';

    matchTemplate = tplSlipItem.replace(new RegExp("@betId@", "g"), betId);

    $("#bankerSlip0").before(matchTemplate);
    if (!showBankers) {
        $("td.bnktd").hide();
    }
    $('#id_' + betId + "_0 a.delimg").bind('click', deletebet);
    $("#emptySlip").hide();
    $("#headerSlip1").show();
    $("#headerSlip2").show();
    $("#bankerSlip0").show();
    if (liveFlag != 1) {
        $("#bankerSlip1").show();
    }
    $("#footerSlip0").show();
    $("#footerSlip1").show();
    $("#footerSlip2").show();
}

// callback function for delete action
function onSuccessDel(xml)
{
    error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return false;
    }
    betId      = $("betId", xml).text();
    countItems = $("countItems", xml).text();
    // delete html of removed items
    $("#id_" + betId + "_0").remove();
    $("#id_" + betId + "_1").remove();
    $("#id_" + betId + "_2").remove();
    $("#buttonSlip").attr("countitems", countItems);
    if (countItems == 0) {
        $("tr.itemslip").remove();
        $("#countBetsTr").hide();
        $("#totalOddTr").show();
        showEmptySlip();
    } else {
        // set type slip
        type     = $("type", xml).text();
        totalOdd = $("totalOdd", xml).text();
        minStake = $("minStake", xml).text();
        maxStake = $("maxStake", xml).text();
        liveFlag = $("liveflag",    xml).text();
        var code = $("listTypesJS", xml).text();
        setTypeFromXML(code, type, liveFlag);
        if (type == "0" || type == "1") {
            showTotalOdd(totalOdd);
        }
        $("#totalOddSlip").text(totalOdd);
        $("#minStakeSlip").text(minStake);
        $("#maxStakeSlip").text(maxStake);
    }
}

// callback function for delete action
function onSuccessDelItem(xml)
{
    error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return false;
    }
    var betId      = $("betId", xml).text();
    var countItems = $("countItems", xml).text();
    var liveFlag   = $("liveFlag", xml).text();
    $("#buttonSlip").attr("countitems", countItems);
    // delete html of removed items
    $("#id_" + betId + "_0").remove();
    if (countItems == 0) {
        showEmptyPlaceCombi();
    } else {
        if (countItems == 1) {
            actUrl = urls["bet"];
            if (liveFlag == 1) {
                actUrl = urls["inplaybet"];
            }
            document.forms.stakeform.action = actUrl
        }
        type         = $("type", xml).text();
        var totalOdd = $("totalOdd", xml).text();
        var maxStake = $("maxStake", xml).text();
        var code     = $("listTypesJS", xml).text();
        setTypeFromXML(code, type, liveFlag);
        $("#oddval").val(totalOdd);
        var stake = parseInt($("#stake").val());
        if (stake > 0) {
            var maxwin = round(parseFloat(totalOdd) * stake, 2);
            $("#maxwin").val(maxwin);
        }
        if (type == "0" || type == "1") {
            showTotalOdd(totalOdd);
        }
        $("#maxStakeSlip").text(maxStake);
    }
}

// callback function for delete action
function onSuccessDelAll(xml)
{
    error = $("error", xml);
    $("#buttonSlip").attr("countitems", "0");
    if (error.size() > 0)
    {
        alert(error.text());
        return false;
    }
    $("tr.itemslip").remove();
	
    $("#countBetsTr").hide();
    $("#totalOddTr").show();
	
    showEmptySlip();
}

// callback function for change type slip in select
function onSuccessChangeType(xml)
{
    var error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return;
    }
    var newType  = $("newType", xml).text();
    var minStake = $("minStake", xml).text();
    var maxStake = $("maxStake", xml).text();
    totalOdd     = $("totalOdd", xml).text();
    $("#oddval").val(totalOdd);
    if (newType != "1" && newType != "0")
    {
        var countBets = $("countBets", xml).text();
        showCountBets(countBets);
    }
    else
        showTotalOdd(totalOdd);
    var stake = parseInt($("#stake").val());
    if (stake > 0)
    {
        var maxwin = round(parseFloat(totalOdd) * stake, 2);
        $("#maxwin").val(maxwin);
    }
    $("#minStakeSlip").text(minStake);
    $("#maxStakeSlip").text(maxStake);
}

function onSuccessDoBanker(xml)
{
    var error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return;
    }
    var code      = $("listTypesJS", xml).text();
    var newStatus = $("newStatus", xml).text();
    var betId     = $("betId", xml).text();
    var totalOdd  = $("totalOdd", xml).text();
    var newType   = $("newType", xml).text();
    var maxStake  = $("maxStake", xml).text();
    var actionTxt = $("actionText", xml).text();
    var liveFlag  = $("liveflag",    xml).text();
    var aid       = "#banker_" + betId;
    $("#oddval").val(totalOdd);
    $(aid).get(0).checked = (newStatus === 'true');
    $(aid).attr("title", actionTxt);
    setTypeFromXML(code, newType, liveFlag);
    if (newType != "1" && newType != "0") {
        var countBets = $("countBets", xml).text();
        showCountBets(countBets);
    } else {
        showTotalOdd(totalOdd);
    }
    var stake = parseInt($("#stake").val());
    if (stake > 0)
    {
        var maxwin = round(parseFloat(totalOdd) * stake, 2);
        $("#maxwin").val(maxwin);
    }
    $("#maxStakeSlip").text(maxStake);
}

function onSuccessShowBanker(xml)
{
    var error = $("error", xml);
    if (error.size() > 0)
    {
        alert(error.text());
        return;
    }
    var sBankers    = $("showBankers", xml).text();
    var showBankers = (sBankers === 'true');
    var bankersText = $("bankersText", xml).text();
    var code        = $("listTypesJS", xml).text();
    var newType     = $("newType", xml).text();
    var maxStake    = $("maxStake", xml).text();
    var totalOdd    = $("totalOdd", xml).text();
    var liveFlag    = $("liveflag", xml).text();
    if (showBankers) {
        $("#btSlipHead1").show();
        $("td.bnktd").show();
        $("#plcmb1").attr("colspan", 7);
        $("#plcmb2").attr("colspan", 7);
        $("#btslip1").show();
        $("#btslip2").attr("colspan", 4);
        $("#emptySlip td").attr("colspan", 4);
        $("#btslip3").show();
        $("#headerSlip2 td").attr("colspan", 4);
        $("#btslip4").attr("colspan", 4);
        $("#bankerSlip0 td").attr("colspan", 4);
        $("#bankerSlip1 td").attr("colspan", 4);
        $("#footerSlip1 td").attr("colspan", 4);
        $("#footerSlip2 td").attr("colspan", 4);
    }
    else
    {
        $("#btSlipHead1").hide();
        $("td.bnktd").hide();
        $("#plcmb1").attr("colspan", 6);
        $("#plcmb2").attr("colspan", 6);
        $("#btslip1").hide();
        $("#btslip2").attr("colspan", 3);
        $("#emptySlip td").attr("colspan", 3);
        $("#btslip3").hide();
        $("#headerSlip2 td").attr("colspan", 3);
        $("#bankerSlip0 td").attr("colspan", 3);
        $("#bankerSlip1 td").attr("colspan", 3);
        $("#btslip4").attr("colspan", 3);
        $("#footerSlip1 td").attr("colspan", 3);
        $("#footerSlip2 td").attr("colspan", 3);
        if (newType != "1" && newType != "0")
        {
            var countBets = $("countBets", xml).text();
            showCountBets(countBets);
        }
        else
            showTotalOdd(totalOdd);
        $("td.bnktd input").each(
            function()
            {
                this.checked = false;
            }
        );
        var stake = parseInt($("#stake").val());
        if (stake > 0)
        {
            var maxwin = round(parseFloat(totalOdd) * stake, 2);
            $("#maxwin").val(maxwin);
        }
        $("#maxStakeSlip").text(maxStake);
    }
    $("#withBankerText").text(bankersText);
    setTypeFromXML(code, newType, liveFlag);
}
function showEmptySlip()
{
    $("#headerSlip1").hide();
    $("#headerSlip2").hide();
    $("#bankerSlip0").hide();
    $("#bankerSlip1").hide();
    $("#footerSlip0").hide();
    $("#footerSlip1").hide();
    $("#footerSlip2").hide();
    $("#emptySlip").show();
}

function showEmptyPlaceCombi()
{
    $("#placecombibet").hide();
    $("#placeBetMsg").text(emptyBet);
}

function showCountBets(countBets)
{
    $("#countBetsSlip").text(countBets);
    $("#countBetsTr").show();
    $("#totalOddTr").hide();
}

function showTotalOdd(totalOdd)
{
    $("#totalOddSlip").text(totalOdd);
    $("#totalOddTr").show();
    $("#countBetsTr").hide();
}

function generateListTypes(obj, type)
{
    typeSlipContent = '<select class="selecttext" style="width:110px;" name="typeExpress" id="typeExpress" onchange="setTypeSlip();">';
    for (key in obj) {
        typeSlipContent += '<option value="' + key + '">' + obj[key] + '</option>';
    }
    typeSlipContent += '</select>';
    $("#typeSlip").html(typeSlipContent);
    $("#typeExpress").val(type);
}

