/* $Id: ajax_index.js 3061 2007-05-29 20:49:35Z danez $ */
// fields
var ajax_fieldIds = new Array(
"speedDown",
"speedUp",
"speedTotal",
"cons",
"freeSpace",
"loadavg"
);
var ajax_idCount = ajax_fieldIds.length;
var ajax_fieldIdsXfer = new Array(
"xferGlobalTotal",
"xferGlobalMonth",
"xferGlobalWeek",
"xferGlobalDay",
"xferUserTotal",
"xferUserMonth",
"xferUserWeek",
"xferUserDay"
);
var ajax_idCountXfer = ajax_fieldIdsXfer.length;
//
var silentEnabled = 0;
var titleChangeEnabled = 0;
var pageTitle = "torrentflux-b4rt";
var goodLookingStatsEnabled = 0;
var goodLookingStatsSettings = null;
var bottomStatsEnabled = 0;
var queueActive = 0;
var xferEnabled = 0;
var usersEnabled = 0;
var usersHideOffline = 0;
var userList = "";
var transferListEnabled = 0;
var sortTableEnabled = 0;
var driveSpaceBarStyle = "tf";
var bandwidthBarsEnabled = 0;
var bandwidthBarsStyle = "tf";
var imgSrcDriveSpaceBlank = "themes/default/images/blank.gif";
var imgHeightDriveSpaceBlank = 12;
var indexTimer = null;
var updateTimeLeft = 0;
/**
* ajax_initialize
*
* @param timer
* @param delim
* @param sEnabled
* @param tChangeEnabled
* @param pTitle
* @param glsEnabled
* @param glsSettings
* @param bsEnabled
* @param qActive
* @param xEnabled
* @param uEnabled
* @param uHideOffline
* @param tEnabled
* @param sortEnabled
* @param dsBarStyle
* @param bwBarsEnabled
* @param bwBarsStyle
*/
function ajax_initialize(timer, delim, sEnabled, tChangeEnabled, pTitle, glsEnabled, glsSettings, bsEnabled, qActive, xEnabled, uEnabled, uHideOffline, tEnabled, sortEnabled, dsBarStyle, bwBarsEnabled, bwBarsStyle) {
ajax_updateTimer = timer;
ajax_txtDelim = delim;
silentEnabled = sEnabled;
titleChangeEnabled = tChangeEnabled;
pageTitle = pTitle;
goodLookingStatsEnabled = glsEnabled;
bottomStatsEnabled = bsEnabled;
queueActive = qActive;
xferEnabled = xEnabled;
usersEnabled = uEnabled;
usersHideOffline = uHideOffline;
transferListEnabled = tEnabled;
sortTableEnabled = sortEnabled;
driveSpaceBarStyle = dsBarStyle;
bandwidthBarsEnabled = bwBarsEnabled;
bandwidthBarsStyle = bwBarsStyle;
// url + params
ajax_updateUrl = "index.php?iid=index";
ajax_updateParams = "&ajax_update=1";
if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
ajax_updateParams += '1';
else
ajax_updateParams += '0';
ajax_updateParams += usersEnabled;
ajax_updateParams += transferListEnabled;
// gls
if (goodLookingStatsEnabled == 1)
goodLookingStatsSettings = glsSettings.split(":");
// state
ajax_updateState = 1;
// http-request
ajax_httpRequest = ajax_getHttpRequest();
// start update-thread
updateTimeLeft = ajax_updateTimer / 1000;
ajax_pageUpdate();
}
/**
* page ajax-update
*
*/
function ajax_pageUpdate() {
var obj = document.getElementById("span_update");
if (ajax_updateState == 1) {
if (updateTimeLeft > 0) {
if (silentEnabled == 0) {
if (obj) obj.innerHTML = "Next AJAX-Update in " + String(updateTimeLeft) + " seconds";
} else {
if (obj) obj.innerHTML = "AJAX-Update enabled";
}
updateTimeLeft--;
}
else if (updateTimeLeft == 0) {
updateTimeLeft = -1;
if (silentEnabled == 0) {
if (obj) obj.innerHTML = "Update in progress...";
}
if ((titleChangeEnabled == 1) && (silentEnabled == 0)) {
document.title = "Update in progress... - "+ pageTitle;
}
setTimeout("ajax_update();", 100);
}
indexTimer = setTimeout("ajax_pageUpdate();", 1000);
} else {
if (obj) obj.innerHTML = "AJAX-Update disabled";
}
}
/**
* process XML-response
*
* @param content
*/
function ajax_processXML(content) {
alert(content);
}
/**
* process text-response
*
* @param content
*/
function ajax_processText(content) {
var aryCount = 1;
if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
aryCount++;
if (usersEnabled == 1)
aryCount++;
if (transferListEnabled == 1)
aryCount++;
if (aryCount == 1) {
// update
ajax_updateContent(content, "", "", "");
} else {
var tempAry = content.split("|");
// transfer-list
var transferList = "";
if (transferListEnabled == 1)
transferList = tempAry.pop();
// users
var users = "";
if (usersEnabled == 1)
users = tempAry.pop();
// xfer
var statsXfer = "";
if ((bottomStatsEnabled == 1) && (xferEnabled == 1))
statsXfer = tempAry.pop();
// update
ajax_updateContent(tempAry.pop(), statsXfer, users, transferList);
}
// timer
updateTimeLeft = ajax_updateTimer / 1000;
}
/**
* update page contents from response
*
* @param statsServerStr
* @param statsXferStr
* @param usersStr
* @param transferListStr
*/
function ajax_updateContent(statsServerStr, statsXferStr, usersStr, transferListStr) {
var statsServer = statsServerStr.split(ajax_txtDelim);
// page-title
if (titleChangeEnabled == 1) {
var newTitle = "";
for (i = 0; i < 5; i++) {
newTitle += statsServer[i] + "|";
}
newTitle += statsServer[5]+ " - " + pageTitle;
document.title = newTitle;
}
// good looking stats
if (goodLookingStatsEnabled == 1) {
for (i = 0; i < ajax_idCount; i++) {
if (goodLookingStatsSettings[i] == 1)
document.getElementById("g_" + ajax_fieldIds[i]).innerHTML = statsServer[i];
}
}
// drivespace-bar
var dSpace = statsServer[10];
document.getElementById("barFreeSpace").innerHTML = statsServer[4];
document.getElementById("barDriveSpacePercent").innerHTML = (100 - dSpace);
document.getElementById("barDriveSpace1").style.width = dSpace + "%";
document.getElementById("barDriveSpace2").style.width = (100 - dSpace) + "%";
if (driveSpaceBarStyle == "xfer") {
// set color
var dsbCol = 'rgb(';
dsbCol += parseInt(255 - 255 * ((100 - dSpace) / 100));
dsbCol += ',' + parseInt(255 * ((100 - dSpace) / 100));
dsbCol += ',0)';
document.getElementById("barDriveSpace2").style.backgroundcolor = dsbCol;
}
// bandwidth-bars
if (bandwidthBarsEnabled == 1) {
// up
var upPer = statsServer[9];
document.getElementById("barSpeedUpPercent").innerHTML = upPer;
document.getElementById("barSpeedUp").innerHTML = statsServer[1];
document.getElementById("barSpeedUp1").style.width = upPer + "%";
document.getElementById("barSpeedUp2").style.width = (100 - upPer) + "%";
// down
var downPer = statsServer[8];
document.getElementById("barSpeedDownPercent").innerHTML = downPer;
document.getElementById("barSpeedDown").innerHTML = statsServer[0];
document.getElementById("barSpeedDown2").style.width = (100 - downPer) + "%";
document.getElementById("barSpeedDown1").style.width = downPer + "%";
if (bandwidthBarsStyle == "xfer") {
// set color
// up
var bwbCol = 'rgb(';
bwbCol += parseInt(255 - 255 * ((100 - upPer) / 150));
bwbCol += ',' + parseInt(255 * ((100 - upPer) / 150));
bwbCol += ',0)';
document.getElementById("barSpeedUp1").style.backgroundcolor = bwbCol;
// down
bwbCol = 'rgb(';
bwbCol += parseInt(255 - 255 * ((100 - downPer) / 150));
bwbCol += ',' + parseInt(255 * ((100 - downPer) / 150));
bwbCol += ',0)';
document.getElementById("barSpeedDown1").style.backgroundcolor = bwbCol;
}
}
// bottom stats
if (bottomStatsEnabled == 1) {
for (i = 0; i < ajax_idCount; i++) {
document.getElementById("b_" + ajax_fieldIds[i]).innerHTML = statsServer[i];
}
// running + queued
if (queueActive == 1) {
document.getElementById("running").innerHTML = statsServer[ajax_idCount];
document.getElementById("queued").innerHTML = statsServer[ajax_idCount + 1];
}
// xfer
if (xferEnabled == 1) {
var statsXfer = statsXferStr.split(ajax_txtDelim);
for (i = 0; i < ajax_idCountXfer; i++) {
document.getElementById(ajax_fieldIdsXfer[i]).innerHTML = statsXfer[i];
}
}
}
// users
if (usersEnabled == 1) {
if (userList != usersStr) {
userList = usersStr;
if (usersHideOffline == 0) {
var allUsers = usersStr.split("+");
// online
var onlineUsers = allUsers[0].split(ajax_txtDelim);
var onlineUsersCount = onlineUsers.length;
var htmlString = "";
for (i = 0; i < onlineUsersCount; i++) {
htmlString += ''+onlineUsers[i]+'
';
}
document.getElementById("usersOnline").innerHTML = htmlString;
// offline
var offlineUsers = allUsers[1].split(ajax_txtDelim);
var offlineUsersCount = offlineUsers.length;
htmlString = "";
for (i = 0; i < offlineUsersCount; i++) {
htmlString += ''+offlineUsers[i]+'
';
}
document.getElementById("usersOffline").innerHTML = htmlString;
} else {
// online
var onlineUsers = usersStr.split(ajax_txtDelim);
var onlineUsersCount = onlineUsers.length;
var htmlString = "";
for (i = 0; i < onlineUsersCount; i++) {
htmlString += ''+onlineUsers[i]+'
';
}
document.getElementById("usersOnline").innerHTML = htmlString;
}
}
}
// transfer-list
if (transferListEnabled == 1) {
// update content
document.getElementById("transferList").innerHTML = transferListStr;
// re-init sort-table
if (sortTableEnabled == 1)
sortables_init();
}
}
/**
* unload
*/
function ajax_unload() {
if(indexTimer) window.clearTimeout(indexTimer);
}