function initfunc( csvay, scroot) {
  window.csv = csvay;
  window.scroot = scroot;
};

function update_values() {
  $SCRIPT_ROOT = window.scroot ;
    $.getJSON($SCRIPT_ROOT+"/_stuff",
        function(data) {
            window.glob_tabvar = data;
        });
    };

var source = new EventSource('/_logs');

source.onmessage = function(event) {
    var feed = jQuery.parseJSON( event.data );
    create_log_table(feed);
};

function pad_2(number)
{
     return (number < 10 ? '0' : '') + number;
}

function create_log_table(obj_json) {
    tableBody = document.getElementById("tab_body")
    var tr = document.createElement('TR')
    var time = document.createElement('TD')
    var chan = document.createElement('TD')
    var level = document.createElement('TD')
    var scrpt = document.createElement('TD')
    var src = document.createElement('TD')
    var pdate = document.createElement('TD')
    var nam = document.createElement('TD')
    var msage = document.createElement('TD')

    var chansplit = obj_json.channel.split('.');
    var parsedmess = obj_json.data.split(';');

    if( chansplit[1] == "INFO" ){
        tr.className = "info";
    }
    else if ( chansplit[1] == "WARNING" ){
        tr.className = "warning";
    }
    else if ( chansplit[1] == "CRITICAL"){
        tr.className = "danger"
    }

    source_link = document.createElement("A");
    if (parsedmess[1] == "slexy.org"){
        soruce_url = "http://"+parsedmess[1]+"/view/"+parsedmess[3].split(".")[0];
    }
    else{
        source_url = "http://"+parsedmess[1]+"/"+parsedmess[3].split(".")[0];
    }
    source_link.setAttribute("HREF",source_url);
    source_link.setAttribute("TARGET", "_blank")
    source_link.appendChild(document.createTextNode(parsedmess[1]));

    src.appendChild(source_link);

    var now = new Date();
    var timepaste = pad_2(now.getHours()) + ":" + pad_2(now.getMinutes()) + ":" + pad_2(now.getSeconds());

    time.appendChild(document.createTextNode(timepaste));
    chan.appendChild(document.createTextNode(chansplit[0]));
    level.appendChild(document.createTextNode(chansplit[1]));

    scrpt.appendChild(document.createTextNode(parsedmess[0]));
    pdate.appendChild(document.createTextNode(parsedmess[2]));
    nam.appendChild(document.createTextNode(parsedmess[3]));

    var iconspan = document.createElement('SPAN');
    if (parsedmess[4].split(" ")[0] == "Detected"){
        iconspan.className = "glyphicon glyphicon-eye-open";
    }
    else if (parsedmess[4].split(" ")[0] == "Checked"){
        iconspan.className = "glyphicon glyphicon-thumbs-up";
    }
    iconspan.innerHTML = "&nbsp;";
    msage.appendChild(iconspan);
    var message = parsedmess[4].split(" ");
    message.shift();

    msage.appendChild(document.createTextNode(message.join(" ")));

    tr.appendChild(time)
    tr.appendChild(chan);
    tr.appendChild(level);
    tr.appendChild(scrpt);
    tr.appendChild(src);
    tr.appendChild(pdate);
    tr.appendChild(nam);
    tr.appendChild(msage);

    if (tr.className == document.getElementById("checkbox_log_info").value && document.getElementById("checkbox_log_info").checked  == true) {
           tableBody.appendChild(tr); 
       }
    if (tr.className == document.getElementById("checkbox_log_warning").value && document.getElementById("checkbox_log_warning").checked == true) {
        tableBody.appendChild(tr);
    }
    if (tr.className == document.getElementById("checkbox_log_critical").value && document.getElementById("checkbox_log_critical").checked == true) {
        tableBody.appendChild(tr);
    };

    var sel = document.getElementById("log_select")
    if (tableBody.rows.length > sel.options[sel.options.selectedIndex].value){
        while (tableBody.rows.length != sel.options[sel.options.selectedIndex].value){
            tableBody.deleteRow(0);
        }
    }
}

function create_queue_table() {
    document.getElementById("queueing").innerHTML = "";
    var Tablediv = document.getElementById("queueing")
    var table = document.createElement('TABLE')
    table.className = "table table-bordered table-hover table-striped";
    var tableHead = document.createElement('THEAD')
    var tableBody = document.createElement('TBODY')

    table.appendChild(tableHead);
    table.appendChild(tableBody);
    var heading = new Array();
    heading[0] = "Queue Name"
    heading[1] = "Amount"
    var tr = document.createElement('TR');
    tableHead.appendChild(tr);

    for (i = 0; i < heading.length; i++) {
        var th = document.createElement('TH')
        th.width = '100';
        th.appendChild(document.createTextNode(heading[i]));
        tr.appendChild(th);
    }

    for(i = 0; i < (glob_tabvar.row1).length;i++){
        var tr = document.createElement('TR')
        for(j = 0; j < (glob_tabvar.row1[i]).length; j++){
            var td = document.createElement('TD')
            td.appendChild(document.createTextNode(glob_tabvar.row1[i][j]));
            tr.appendChild(td)
        }
        tableBody.appendChild(tr);
    }
    Tablediv.appendChild(table);
}

$(document).ready(function () {
    var data = [];
    var data2 = [];
    var tmp_tab = [];
    var tmp_tab2 = [];
    var curves_labels = [];
    var curves_labels2 = [];
    var x = new Date();
    
    for (i = 0; i < glob_tabvar.row1.length; i++){
        if (glob_tabvar.row1[i][0].substring(0,4) != "word"){
            tmp_tab.push(0);
            curves_labels.push(glob_tabvar.row1[i][0]);
        }
        else {
            tmp_tab2.push(0);
            curves_labels2.push(glob_tabvar.row1[i][0]);
        }
    }
    tmp_tab.unshift(x);
    tmp_tab2.unshift(x);
    curves_labels.unshift("date");
    curves_labels2.unshift("date");
    data.push(tmp_tab);
    data2.push(tmp_tab2);
    
    var g = new Dygraph(document.getElementById("Graph"), data,
    {
    labels: curves_labels,
    drawPoints: false,
    showRoller: true,
    rollPeriod: 30,
    labelsKMB: true,
    logscale: true,
    //drawGapEdgePoints: true,
    //legend: "always",
    //connectSeparatedPoints: true,
    stackedGraph: true,
    fillGraph: true,
    includeZero: true,
    });
    
    var g2 = new Dygraph(document.getElementById("Graph2"), data2,
    {
    labels: curves_labels2,
    drawPoints: false,
    showRoller: true,
    rollPeriod: 30,
    labelsKMB: true,
    logscale: true,
    //drawGapEdgePoints: true,
    //legend: "always",
    //connectSeparatedPoints: true,
    stackedGraph: true,
    fillGraph: true,
    includeZero: true,
    });


    var interval = 1000;   //number of mili seconds between each call
    var refresh = function() {
        
        $.ajax({
            url: "",
            cache: false,
            success: function(html) {
                $('#server-name').html(html);
                setTimeout(function() {
                    var x = new Date();
                    var tmp_values = [];
                    var tmp_values2 = []; 
                    refresh();
                    update_values();
                    create_queue_table();
                   
                    
                    for (i = 0; i < (glob_tabvar.row1).length; i++){
                        if (glob_tabvar.row1[i][0].substring(0,4) != "word"){
                            tmp_values.push(glob_tabvar.row1[i][1]);
                        }
                        else {
                            tmp_values2.push(glob_tabvar.row1[i][1]);
                        }
                    }
                    tmp_values.unshift(x);
                    data.push(tmp_values);
                    
                    tmp_values2.unshift(x);
                    data2.push(tmp_values2);

                    if (data.length > 1800) {
                        data.shift();
                        data2.shift();
                    }
                    g.updateOptions( { 'file': data } );
                    g2.updateOptions( { 'file': data2 } );
                    
                    
                   // TagCanvas.Reload('myCanvas');

                }, interval);
            }
        });
    };

    refresh();

     var ultag = document.getElementById("ultag");
     for (i=0;i<curves_labels.length;i++){
         var li = document.createElement('li');
         var a = document.createElement('a');
         a.innerHTML = curves_labels[i];
         a.style.fontSize = glob_tabvar.row1[i][1];
         li.appendChild(a);
         ultag.appendChild(li);
    }


    try {
      var options = {
      weight:true,
      weightMode:"both",
      noMouse:true,
      textColour: '#2E9AFE'
      }
      TagCanvas.Start('myCanvas','',options);
      TagCanvas.SetSpeed('myCanvas', [0.05, -0.15]);
    } catch(e) {
      // something went wrong, hide the canvas container
      document.getElementById('myCanvasContainer').style.display = 'none';
    }

});