$(function() {
    $('#tabs').tabs();

    var options = {
        lines : {
            show : true,
            fill : true
        },
        points : {
            show : false
        },
        xaxis : {
            tickDecimals : 0,
            tickSize : 0
        }
    };

    function computeRate(array, rrdPtr) {
        return (array[(rrdPtr + 1) % array.length] - array[rrdPtr]) / 10;
    }

    function onDataReceived(data) {
        var result = data.result;
        $('#node-id')[0].innerHTML = result['node-id'];
        $('#arch')[0].innerHTML = result['arch'];
        $('#os-name')[0].innerHTML = result['os-name'];
        $('#os-version')[0].innerHTML = result['os-version'];
        $('#num-processors')[0].innerHTML = result['num-processors'];
        $('#vm-name')[0].innerHTML = result['vm-name'];
        $('#vm-version')[0].innerHTML = result['vm-version'];
        $('#vm-vendor')[0].innerHTML = result['vm-vendor'];
        $('#classpath')[0].innerHTML = result['classpath'];
        $('#library-path')[0].innerHTML = result['library-path'];
        $('#boot-classpath')[0].innerHTML = result['boot-classpath'];
        var argsHTML = "";
        var args = result['input-arguments'];
        for ( var i = 0; i < args.length; ++i) {
            if (argsHTML != "") {
                argsHTML += "<br/>";
            }
            argsHTML += "<span>" + args[i] + "</span>";
        }
        $('#input-arguments')[0].innerHTML = argsHTML;
        var sysLoad = result['system-load-averages'];
        var heapUsageInitSizes = result['heap-init-sizes'];
        var heapUsageUsedSizes = result['heap-used-sizes'];
        var heapUsageCommittedSizes = result['heap-committed-sizes'];
        var heapUsageMaxSizes = result['heap-max-sizes'];
        var nonheapUsageInitSizes = result['nonheap-init-sizes'];
        var nonheapUsageUsedSizes = result['nonheap-used-sizes'];
        var nonheapUsageCommittedSizes = result['nonheap-committed-sizes'];
        var nonheapUsageMaxSizes = result['nonheap-max-sizes'];
        var threadCounts = result['thread-counts'];
        var peakThreadCounts = result['peak-thread-counts'];
        var gcCollectionCounts = result['gc-collection-counts'];
        var gcCollectionTimes = result['gc-collection-times'];
        var netPayloadBytesRead = result['net-payload-bytes-read'];
        var netPayloadBytesWritten = result['net-payload-bytes-written'];
        var netSignalingBytesRead = result['net-signaling-bytes-read'];
        var netSignalingBytesWritten = result['net-signaling-bytes-written'];
        var ipcMessagesSent = result['ipc-messages-sent'];
        var ipcMessageBytesSent = result['ipc-message-bytes-sent'];
        var ipcMessagesReceived = result['ipc-messages-received'];
        var ipcMessageBytesReceived = result['ipc-message-bytes-received'];

        var sysLoadArray = [];
        var heapUsageInitSizesArray = [];
        var heapUsageUsedSizesArray = [];
        var heapUsageCommittedSizesArray = [];
        var heapUsageMaxSizesArray = [];
        var nonheapUsageInitSizesArray = [];
        var nonheapUsageUsedSizesArray = [];
        var nonheapUsageCommittedSizesArray = [];
        var nonheapUsageMaxSizesArray = [];
        var threadCountsArray = [];
        var peakThreadCountsArray = [];
        var gcCollectionCountsArray = [];
        var gcCollectionTimesArray = [];
        var netPayloadReadBWArray = [];
        var netPayloadWriteBWArray = [];
        var netSignalingReadBWArray = [];
        var netSignalingWriteBWArray = [];
        var ipcMessageSendRateArray = [];
        var ipcMessageBytesSendRateArray = [];
        var ipcMessageReceiveRateArray = [];
        var ipcMessageBytesReceiveRateArray = [];
        var gcChartsDiv = document.getElementById('gc-charts');
        for ( var i = 0; i < gcCollectionCounts.length; ++i) {
            gcCollectionCountsArray.push([]);
            gcCollectionTimesArray.push([]);
            var gcCollectionCountDiv = document.createElement('div');
            gcCollectionCountDiv.id = 'gc-collection-count-' + i;
            gcCollectionCountDiv.style = "jqplot-target time-chart";
            gcChartsDiv.appendChild(gcCollectionCountDiv);
            var gcCollectionTimeDiv = document.createElement('div');
            gcCollectionTimeDiv.id = 'gc-collection-time-' + i;
            gcChartsDiv.appendChild(gcCollectionTimeDiv);
        }
        var rrdPtr = result['rrd-ptr'];
        for ( var i = 0; i < sysLoad.length; ++i) {
            sysLoadArray.push([ i, sysLoad[rrdPtr] ]);
            heapUsageInitSizesArray.push([ i, heapUsageInitSizes[rrdPtr] / (1024 * 1024) ]);
            heapUsageUsedSizesArray.push([ i, heapUsageUsedSizes[rrdPtr] / (1024 * 1024) ]);
            heapUsageCommittedSizesArray.push([ i, heapUsageCommittedSizes[rrdPtr] / (1024 * 1024) ]);
            heapUsageMaxSizesArray.push([ i, heapUsageMaxSizes[rrdPtr] / (1024 * 1024) ]);
            nonheapUsageInitSizesArray.push([ i, nonheapUsageInitSizes[rrdPtr] / (1024 * 1024) ]);
            nonheapUsageUsedSizesArray.push([ i, nonheapUsageUsedSizes[rrdPtr] / (1024 * 1024) ]);
            nonheapUsageCommittedSizesArray.push([ i, nonheapUsageCommittedSizes[rrdPtr] / (1024 * 1024) ]);
            nonheapUsageMaxSizesArray.push([ i, nonheapUsageMaxSizes[rrdPtr] / (1024 * 1024) ]);
            threadCountsArray.push([ i, threadCounts[rrdPtr] ]);
            peakThreadCountsArray.push([ i, peakThreadCounts[rrdPtr] ]);
            for ( var j = 0; j < gcCollectionCounts.length; ++j) {
                gcCollectionCountsArray[j].push([ i, gcCollectionCounts[j][rrdPtr] ]);
            }
            for ( var j = 0; j < gcCollectionTimes.length; ++j) {
                gcCollectionTimesArray[j].push([ i, gcCollectionTimes[j][rrdPtr] ]);
            }
            if (i < sysLoad.length - 1) {
                netPayloadReadBWArray.push([ i, computeRate(netPayloadBytesRead, rrdPtr) ]);
                netPayloadWriteBWArray.push([ i, computeRate(netPayloadBytesWritten, rrdPtr) ]);
                netSignalingReadBWArray.push([ i, computeRate(netSignalingBytesRead, rrdPtr) ]);
                netSignalingWriteBWArray.push([ i, computeRate(netSignalingBytesWritten, rrdPtr) ]);
                ipcMessageSendRateArray.push([ i, computeRate(ipcMessagesSent, rrdPtr) ]);
                ipcMessageBytesSendRateArray.push([ i, computeRate(ipcMessageBytesSent, rrdPtr) ]);
                ipcMessageReceiveRateArray.push([ i, computeRate(ipcMessagesReceived, rrdPtr) ]);
                ipcMessageBytesReceiveRateArray.push([ i, computeRate(ipcMessageBytesReceived, rrdPtr) ]);
            }
            rrdPtr = (rrdPtr + 1) % sysLoad.length;
        }

        $.plot($('#system-load-chart'), [ {
            label : 'System Load',
            data : sysLoadArray
        } ], options);

        var gcNames = result['gc-names'];
        for ( var i = 0; i < gcCollectionCounts.length; ++i) {
            $('#gc-collection-count-' + i).addClass("time-chart");
            $.plot($('#gc-collection-count-' + i), [ {
                label : gcNames[i] + ' Collection Count',
                data : gcCollectionCountsArray[i]
            } ], options);

            $('#gc-collection-time-' + i).addClass("time-chart");
            $.plot($('#gc-collection-time-' + i), [ {
                label : gcNames[i] + ' Collection Time (ms)',
                data : gcCollectionTimesArray[i]
            } ], options);
        }

        $.plot($('#heap-usage-chart'), [ {
            label : 'Heap Usage Initial Size (MB)',
            data : heapUsageInitSizesArray
        }, {
            label : 'Heap Usage Used Size (MB)',
            data : heapUsageUsedSizesArray
        }, {
            label : 'Heap Usage Committed Size (MB)',
            data : heapUsageCommittedSizesArray
        }, {
            label : 'Heap Usage Max Size (MB)',
            data : heapUsageMaxSizesArray
        } ], options);

        $.plot($('#nonheap-usage-chart'), [ {
            label : 'Non-Heap Usage Initial Size (MB)',
            data : nonheapUsageInitSizesArray
        }, {
            label : 'Non-Heap Usage Used Size (MB)',
            data : nonheapUsageUsedSizesArray
        }, {
            label : 'Non-Heap Usage Committed Size (MB)',
            data : nonheapUsageCommittedSizesArray
        }, {
            label : 'Non-Heap Usage Max Size (MB)',
            data : nonheapUsageMaxSizesArray
        } ], options);

        $.plot($('#thread-chart'), [ {
            label : 'Thread Count',
            data : threadCountsArray
        }, {
            label : 'Peak Thread Count',
            data : peakThreadCountsArray
        } ], options);

        $.plot($('#net-payload-bandwidth'), [ {
            label : 'Payload Read Bandwidth (bytes/sec)',
            data : netPayloadReadBWArray
        }, {
            label : 'Payload Write Bandwidth (bytes/sec)',
            data : netPayloadWriteBWArray
        } ], options);

        $.plot($('#net-signaling-bandwidth'), [ {
            label : 'Signaling Read Bandwidth (bytes/sec)',
            data : netSignalingReadBWArray
        }, {
            label : 'Signaling Write Bandwidth (bytes/sec)',
            data : netSignalingWriteBWArray
        } ], options);

        $.plot($('#ipc-messages'), [ {
            label : 'IPC Messages Send Rate (messages/sec)',
            data : ipcMessageSendRateArray
        }, {
            label : 'IPC Messages Receive Rate (messages/sec)',
            data : ipcMessageReceiveRateArray
        } ], options);

        $.plot($('#ipc-message-bytes'), [ {
            label : 'IPC Message Send Bandwidth (bytes/sec)',
            data : ipcMessageBytesSendRateArray
        }, {
            label : 'IPC Message Receive Bandwidth (bytes/sec)',
            data : ipcMessageBytesReceiveRateArray
        } ], options);
    }

    function fetchData() {
        $.ajax({
            url : '/rest/nodes/' + $.getURLParam('node-id'),
            method : 'GET',
            dataType : 'json',
            success : onDataReceived
        });

        setTimeout(fetchData, 10000);
    }

    fetchData();
});