core = new function()
{
    this.get = function(url)
    {
        $('#loading').show();
        $.ajax({
            url: url,
            data: '',
            success: function () {$('#loading').hide()}
        });
    }
}


ratingTable = new function()
{
    this.getReasonType = function(uid, winner_id)
    {
        if (uid == winner_id) return 'win';
        else if (winner_id == 0) return 'draw';
        else return 'defeat';
    }
};

function drawRatingTable() {
    $('#played-games div>table>tbody').html(' ');
    if (statsList.length == 0) { //no results
        $('<td colspan="0" />').text('Значений нету').appendTo($('#played-games div>table>tbody'));
        return 0;
    }
    var row = '';
    var html='';
    var onClickContent = '';
    for (var i=0; i< statsList.length; i++) {
        var el = statsList[i];
        var reasonType = ratingTable.getReasonType(statsVars.user_id4stat, el.winner);
        onClickContent="newScriptLoad('/stats.php?game_id="+statsVars.g_id+'&req_user='+statsVars.user_id4stat+'&opp_user='+el.id+"', 'rdiag');";
        html = '<td class="tdFirst">'+(i+1)+'</td>';
        html += '<td>'+el.datime+'</td>';
        html += '<td align="left"><a href="#" onclick="'+onClickContent+'" dahint="выборка по этому игроку">'+el.login+'</a></td>';
        html += '<td>'+el.t_out+' дн.</td>';
        html += '<td>'+(el.color==0 ? '<div class="player_w">&nbsp;</div>W' : '<div class="player_b">&nbsp;</div>B')+'</td>';
        html += '<td>'+el.r_after+'</td>';
        html += '<td class="'+reasonType+'">'+translateGameReason(el.reason)+'</td>';
        html += '<td class="tdLast"><a href="/ru/replay-game/?gameuid='+el.uid+'"'
        + ' title="просмотреть ход игры"><img src="/i/black_white_v.gif" alt="veiw" style="border:0;"></a></td>';
        row = $('<tr calss="central" />');
        row.append(html);
        $('#played-games table>tbody').append(row);
    }
    return 0;
}

function toggleRatingTable(o) {
    if (typeof toggleRatingTable.show == 'undefined') {
        drawRatingTable();
        toggleRatingTable.show = false;
    }
    if (toggleRatingTable.show == false) {
        $('#played-games table').show();
        $(o).html('<div id="toggleTableSign">-</div> '+(langlink=='ru'?'Скрыть таблицу':'Hide'));
        toggleRatingTable.show = true;
    } else {
        $('#played-games table').hide();
        $(o).html('<div id="toggleTableSign">+</div> '+(langlink=='ru'?'Показать в виде таблицы':'Show as a table'));
        toggleRatingTable.show = false;
    }
    return false;
}

function updateGetstatsTable(game_type) {
    $('#genstatsTable>tbody>tr').each(function() {
        $(this).children('td').next().hide().eq(game_type-1).show();
    });
}

function updateStatsPage(button) {
    var datetime = '';
    if (button == 'next') datetime = statsList[statsList.length-1].datime;
    else if (button == 'prev') datetime = statsList[0].datime;
    button = '&' + button + '=' + datetime;
    core.get('/stats.php?game_id='+statsVars.g_id+'&req_user='+statsVars.user_id4stat+button+'&page='+statsVars.page +'&show='+statsVars.show);
    return false;
}

function translateGameReason(r) {
	lngId=(langlink=='ru'?1:2);
    var tr = {
        ''              : (lngId==1?'Зовите админа':'Call admin'), //default value
        'send_over'     : (lngId==1?'Сдался':'Gave up'),
        'mat'           : (lngId==1?'Мат':'Mate'),
        'pat'           : (lngId==1?'Пат':'Stalemate'),
        'ThreePositions': (lngId==1?'3 Позиции':'3 positions'),
        '50Moves'       : (lngId==1?'50 ходов':'50 moves'),
        'sendTimeOver'  : (lngId==1?'Закончилось время':'Timeout'),
        'sendOppTimeOver': (lngId==1?'Закончилось время у оппонента':'Оpponent timeout'),
        'time_limit'    : (lngId==1?'Закончилось время':'Timeout'),
        'tie'           : (lngId==1?'Ничья по согласию':'Tie')
    }
    return tr[r];
}

function drawRating() {
    var count = statsList.length - 1;
    var userId4stat = statsVars.user_id4stat;
    var rMax=0, rMin=3000;
    for (i=count; i>=0; i--){
        rMax=1*(statsList[i].r_after>rMax?statsList[i].r_after:rMax);
        rMin=1*(statsList[i].r_after<rMin?statsList[i].r_after:rMin);
    }
    cntr=document.getElementById('cont');
    cntr.style.height = "120px";
    temp="";

    for (i=0; i<=count; i++) {
        xx=statsList[i].r_after;
        barColor = statsList[i].winner == userId4stat? "green":(statsList[i].winner == statsList[i].id? "red":"gray");
        temp+="<li id='bar"+i+"' dahint='"+statsList[i].opening+"' onclick='showMenuOnThisGame("+i+")' onmouseover='showCertainGame("+i+")' height='33px' style='background-color:"+barColor+";height:"+Math.round(100*(xx-rMin+10)/(rMax-rMin+10))+"px;left:"+(count-i)*7+"px;'></li>";
    }
    cntr.innerHTML=temp;
    runHintOnObj(cntr);
}

function showCertainGame(id) {
	lngId=(langlink=='ru'?1:2);
    daDiv = _o('certaingame');
    d= statsList[id].datime.split(' ');
    gameTimeOut=(statsList[id].t_out>=1? statsList[id].t_out+" дн.": (statsList[id].t_out*24 >= 1? (Math.round(statsList[id].t_out*24)+" час."): (Math.round(statsList[id].t_out*24*60)+" мин.")));
    gameReason = translateGameReason(statsList[id].reason);
    onClickContent='newScriptLoad("/stats.php?game_id='+statsVars.g_id+'&req_user='+statsVars.user_id4stat+'&opp_user='+statsList[id].id+'", "rdiag");';
    onClickContentWithMe='newScriptLoad("/stats.php?game_id='+statsVars.g_id+'&req_user='+statsVars.user_id4stat+'&opp_user='+palayerId +'", "rdiag");';
    daDiv.innerHTML = "<div style='margin:7px; border:solid 1px darkblue; padding:2px;'>("+d[0]+"), "+(lngId=='ru'?"Рейтинг: ":"Rating: ")+statsList[id].r_after+", цвет: " +(statsList[id].color==1?"W":"B")+", Оппонент: <a dahint='выборка по этому игроку' style='cursor:pointer;' onclick='"+onClickContent+"'>"+ statsList[id].login+"</a>, Причина: "+gameReason+", Таймаут: "+gameTimeOut+"<br/><a dahint='игры со мной' style='cursor:pointer;' onclick='"+onClickContentWithMe+"'>Игры со мной</a></div>"; // .format("dd/mm/yy")
    runHintOnObj(_o('certaingame'));
}

function selectGameType(g_obj, g_id, user_id) {
    a = _o("game_types").getElementsByTagName('a');
    for(i=0; i<a.length; i++){a[i].style.backgroundColor = "";}
    g_obj.style.backgroundColor="lightgrey";
    core.get('/stats.php?game_id='+g_id+'&req_user='+user_id);
}

function drawGamesOnQuery(g_id, user_id, opp_id) {
    newScriptLoad('/stats.php?game_id='+g_id+'&req_user='+user_id+'&opp_user='+opp_id+'', "rdiag");
}

function selectGameOnLoad() {
    a = _o("game_types").getElementsByTagName('a');
    aTMP = 0;
    aNameTMP = "";
    for (i=0; i<a.length; i++) {
        if(a[i].getAttribute("pts")*1>aTMP) {
            aTMP = a[i].getAttribute("pts")*1;
            aNameTMP = a[i].getAttribute("id"); // "gn"+ #
            useridTMP =a[i].getAttribute("u_id");
        }
    }
    selectGameType(_o(aNameTMP), aNameTMP.match(/\d+$/), useridTMP);
    runHintOnObj(_o("open_ip"))
}

function showMenuOnThisGame(gameID) {
    try {deleteGameMenu()}
    catch(e){}
    if(!_o('menu_on_game')){
        div = document.createElement("div");
        div.id = "menu_on_game";
        s = div.style;
        s.margin = "5px";
        s.width = "280px";
        s.backgroundColor = "lightgrey";
        s.border = "solid 1px";
        s.position = "absolute";
        s.top = "400px";
        s.left = "300px";
        s.padding = "3px";
        // temp vars
        winLocation = '"http://'+document.domain + "/ru/replay-game/?gameuid="+statsList[gameID].uid+'"';
        onClickContent='newScriptLoad("/stats.php?game_id='+statsVars.g_id
        +'&req_user='+statsVars.user_id4stat+'&opp_user='+statsList[gameID].id+'", "rdiag");'; // 4  games sample
        url4PlayerStat = '"http://'+document.domain + "/ru/stat/"+statsList[gameID].id+'.html"';
        urlInvitePlayer = '"http://'+document.domain + "/ru/play/new/&create_for="+statsList[gameID].id+'"';

        innerTMP = "<b><a style='float:right;margin:5px; cursor:pointer;' "
        + "onclick='deleteGameMenu()'>X</a><a style='float:left;margin:2px;'>Игрок "+statsList[gameID].login+"</a></b><br />";
        innerTMP +="<p><a onclick='window.location.href="+urlInvitePlayer+"'>Пригласить игрока на игру</a></p>";
        innerTMP +="<p><a onclick='window.location.href="+url4PlayerStat+"'>Смотреть профиль игрока</a></p>";
        innerTMP +="<p><a class='clickable' onclick='"+onClickContent+"'>Выборка игр с этим игроком</a></p>";
        innerTMP +="<p><a class='clickable' onclick='window.location.href="+winLocation+"'>Просмотреть эту игру </a></p>";
        div.innerHTML = innerTMP;
        document.getElementsByTagName('body')[0].appendChild(div);
    }
}

function reloadRatePage() { 
    $('.loading').css('display', 'block');
    var lang_link = $('.r_page_next').attr('lang');
    $('#users_rate').load('/'+lang_link+'/rate/ajax/');
    if (GetCookie('rate_online')=="yes"){
        rb_value="Показать всех игроков";
    }else{
        rb_value="Только игроки онлайн"; 
    }
    $('#rate_online_text').html(rb_value);
    $('.loading').css('display', 'none');
}

function loadinigPosition() {
    var x  = $("#users_rate").offset().left + $("#users_rate").width()/2;
    var y  = $("#users_rate").offset().top + $("#users_rate").height()/2;   
    $('.loading').css('top', y);
    $('.loading').css('left', x);
}


// Jquery functions 
$(document).ready(function(){
    
    
    $('#rate_game_id').bind('change', function (){
        var nowid = parseInt($(this).val());
        SetCookie("game_id", nowid ,300);
        SetCookie("rate_rebuild", '1', 300);
        loadinigPosition();
        reloadRatePage();
        return false;
    });
   
    
    $('#rate_user_score').bind('change', function (){
        var val =  $(this).val();
        SetCookie("rate_user_score", val ,300);
        SetCookie("rate_rebuild", '1', 300);
        loadinigPosition();
        reloadRatePage();
        return false;
    });
    
    
    
    $('#rate_online_button').bind('click', function (){
        if (GetCookie('rate_online')=="yes"){
            var cookVal="no";
        }else{
            var cookVal="yes"
        }
        SetCookie("rate_online", cookVal ,300);
        SetCookie("rate_rebuild", '1' , 300);
        var lang_link = $('#r_page_next').attr('lang');
        loadinigPosition();
        reloadRatePage();
        return false;
    });
    

});   

