/*
 * $Date: 2009/12/09 10:37:00 $
 * $Revision: 1.1 $
 */

var dg_place = 0;
var months   = new Array("Jan", "Dec", "Mar", "Apr", "May", "Jun",
                         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

$(window).unload(send_game_score);

function send_game_score(type)
{
    if (dg_game_score > 0)
    {
        var score = dg_game_score;

        dg_game_score = 0;

        $.post('/game/high_score', {'score': score}, function(id)
        {
            if (type) return 0;

            if (id != 0 && dg_username != '')
            {
                place    = 0;
                dg_place = 0;

                date = new Date();

                dg_date = months[date.getMonth()] + " " +
                                 date.getDate()   + ", " +
                                 (date.getYear() + 1900);

                if (document.getElementById('place_1'))
                {

                    $('.scores').each(function()
                    {
                        place = parseInt((/place_(\d+)/).exec(this.id)[1]);

                        if (parseFloat($(this).text()) < score)
                        {
                            if (!dg_place)
                            {
                                dg_place = place;

                                if (dg_place < 20)
                                {
                                    this.id  = "place_" + (dg_place + 1);
                                    if (dg_place == 5) $(this).parent().addClass('hs_hide');
                                }
                                else
                                {
                                    $(this).parent().remove();
                                }
                            }
                            else
                            {
                                this.id = "place_" + (place + 1);
                            }
                        }
                    });

                    if (dg_place == 1)
                    {
                        $('#place_2').parent().before('<tr class="hs_new"><td class="scores" id="place_1">'+score+'</td><td><a href="/user/profile/'+dg_username+'">'+dg_username+'</a></td><td>'+dg_date+'</td></tr>');
                    }
                    else if (dg_place > 0 || place < 20)
                    {
                        if (dg_place <= 0) dg_place = place + 1;
                        var dg_class = (dg_place > 5) ? 'hs_new hs_hide' : 'hs_new';
                        $('#place_' + (dg_place - 1)).parent().after('<tr class="'+dg_class+'"><td class="scores" id="place_'+dg_place+'">'+score+'</td><td><a href="/user/profile/'+dg_username+'">'+dg_username+'</a></td><td>'+dg_date+'</td></tr>');
                        if (dg_place > 5) $('#highscore-container .hs_hide').show();
                    }

                }
                else
                {
                    $('#highscore-container table').append('<tr class="hs_new"><td class="scores" id="place_1">'+score+'</td><td><a href="/user/profile/'+dg_username+'">'+dg_username+'</a></td><td>'+dg_date+'</td></tr>')
                    dg_place = 1;
                }

                setTimeout(clear_bg, 5000);

            }
        });
    }
}

function update_game_score(xml)
{
    if (dg_is_MSIE)
    {
        var score = (/<score>(.*)?<\/score>/).exec(xml);
        if (score) dg_game_score = score[1];
    }
    else
    {
        dg_game_score = parseInt($('score', xml).text());
    }
}

function send_command_to_game(command, xml)
{
    var mc = dg_is_MSIE ? document.all.gamepreloader : document.gamepreloader;
    if (xml) mc.SetVariable(command, xml);
    mc.TCallLabel('/', command);
}

function gamepreloader_DoFSCommand(command, xml)
{
/*
    if (command != 'ScoreBroadcast')
        alert(command + ': ' + xml);
*/

    switch(command)
    {
        case 'SessionReady':
            send_command_to_game('SessionStart');
            break;

        case 'GameReady':
            send_command_to_game('GameStart');
            break;

        case 'GameBreak':
            send_command_to_game('GameContinue');
            break;

        case 'ScoreBroadcast':
            update_game_score(xml);
            break;

        case 'ScoreSubmit':
            update_game_score(xml);
            break;

        case 'CustomEvent':
            var url = $(xml).text();
            if (!(/^http:\/\//).test(url)) url = dg_gameurl;

            window.open(url);
            send_command_to_game('CustomReturn', xml);
            break;

        case 'GameEnd':
            send_game_score();
            /*send_command_to_game('GameMenu');*/
            send_command_to_game('GameStart');
            break;

        default: break;
    }
}

function hs_toggle(){$('#highscore-container .hs_hide').toggle();}
function load_game(){$('.online-ad.load').remove();$('.online-ad.play').show();}
function old_load_game(){$('.online-ad').remove();}
function playgameclick(){$('.online-ad.play').hide();$('.pregame-mini').show();}
function clear_bg(){$('#place_' + dg_place).parent().removeClass('hs_new');$('#highscore-container .hs_hide').hide();}

