var GSDebug = {
    tmr:false,
    init: function() {
        var dv = $('<div class="gs-debug-wrap"><div class="gs-debug-bar"><ul><li onclick="GSDebug.getLog(\'sql\')">SQL</li><li onclick="GSDebug.getLog(\'request\')">REQUEST</li><li onclick="GSDebug.getLog(\'system\')">SYSTEM</li><li onclick="GSDebug.getLog(\'timers\')">TIMERS</li><li onclick="GSDebug.getLog(\'inc\')">INCLUDES</li><li onclick="GSDebug.getLog(\'templates\')">TEMPLATES</li></ul></div><div class="gs-debug-init">debug</div></div>');
        dv.appendTo('body');
        $('.gs-debug-init').click(function(){
            var bar = $('.gs-debug-wrap');
            if(bar.css('top') == '-30px')
                dv.animate({
                    top:0
                });
            else
            {
                $('.gs-debug-data').remove();
                dv.animate({
                    top:-30
                });
            }
        });
    },
    getLog: function(tp) {
        if(GSDebug.tmr)
            clearInterval(GSDebug.tmr);
        $('.gs-debug-data').remove();
        $.ajax({
            data:{
                type:tp
            },
            url:'/admin/ajax/Core/log',
            success:function(text){
                var json = jQuery.parseJSON(text);
                var tbl = $('<table class="gs-debug-data" width="100%" cellpadding=0 cellspacing=0></table>');
                $('.gs-debug-wrap').append(tbl);
                for(var i = 0; i < json.length; i++) {
                    var tr = $('<tr data-row="'+ json[i].id+'" style="display:none"></tr>');
                    switch(tp) {
                        case 'sql':
                            tr.append($('<td>'+json[i].method+'</td>')).
                            append($('<td>'+json[i].query+'</td>')).
                            append($('<td>'+json[i].rows+'</td>')).
                            append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'request':
                            tr.append($('<td>'+json[i].k+'</td>')).append($('<td>'+json[i].v+'</td>'));
                            break;
                        case 'system':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'inc':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'timers':
                            tr.append($('<td>'+json[i].name+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'templates':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                    }
                    tbl.append(tr);
                    tr.fadeIn('slow');
                }
                GSDebug.tmr = setInterval(function(){
                    GSDebug.testLog(tp);
                }, 5000);
            }
        });
},
testLog:function(tp) {
    $.ajax({
        data:{
            type:tp
        },
        url:'/admin/ajax/Core/log',
        success:function(text){
            var json = jQuery.parseJSON(text);
            var tbl = $('.gs-debug-data tr');
            for(var i = 0; i < json.length; i++) {
                var add = true;
                tbl.each(function() {
                    var row_id = $(this).attr('data-row');
                    //console.log(row_id, json[i].id, $(this).data(), $(this));
                    if(row_id == json[i].id)
                        add = false;
                });
                if(add) {
                    var tr = $('<tr data-row="'+ json[i].id+'" style="display:none"></tr>');
                    switch(tp) {
                        case 'sql':
                            tr.append($('<td>'+json[i].method+'</td>')).
                            append($('<td>'+json[i].query+'</td>')).
                            append($('<td>'+json[i].rows+'</td>')).
                            append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'request':
                            tr.append($('<td>'+json[i].k+'</td>')).append($('<td>'+json[i].v+'</td>'));
                            break;
                        case 'system':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'inc':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'timers':
                            tr.append($('<td>'+json[i].name+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                        case 'templates':
                            tr.append($('<td>'+json[i].sub+'</td>')).append($('<td>'+json[i].inc+'</td>')).append($('<td>'+json[i].time+'</td>'));
                            break;
                    }
                    $('.gs-debug-data').prepend(tr);
                    tr.fadeIn('slow');
                }
            }
        }
    });
}
}
