var req;
var monT;
var monBusy;
var monBars = new Array();
var monFlags = new Array();
var monSrvs = new Array();
var monInfs = new Array();
var monRanks;
if (document.images) {
  monT = new Image(1,1);
  monT.src="/images/t.gif";
  monBusy = new Image(16,16);
  monBusy.src="/images/symbols/load1.gif";
  monBars['b1'] = new Image(20,20);
  monBars['b1'].src="/images/symbols/b1.gif";
  monBars['b2'] = new Image(20,20);
  monBars['b2'].src="/images/symbols/b2.gif";
  monFlags['CH'] = 42;
  monFlags['US'] = 0;
  monFlags['USA'] = 0;
  monFlags['SEAL'] = 0;
  monFlags['MEC'] = 21;
  monFlags['MECSF'] = 21;
  monFlags['GE'] = 168;
  monFlags['GER'] = 168;
  monFlags['EU'] = 126;
  monFlags['UKR'] = 147;
  monFlags['Spetz'] = 105;
  monFlags['SAS'] = 189;
  monFlags['GB'] = 189;
  monFlags['Chinsurgent'] = 63;
  monFlags['CHinsurgent'] = 63;
  monFlags['MEInsurgent'] = 84;
  monSrvs['svr1'] = new Image(13,13);
  monSrvs['svr1'].src="/images/symbols/svr1.gif";
  monSrvs['svr2'] = new Image(13,13);
  monSrvs['svr2'].src="/images/symbols/svr2.gif";
  monSrvs['svr3'] = new Image(13,13);
  monSrvs['svr3'].src="/images/symbols/svr3.gif";
  monInfs['voip'] = new Image(15,15);
  monInfs['voip'].src="/images/symbols/voip.gif";
  monInfs['pwd'] = new Image(13,15);
  monInfs['pwd'].src="/images/symbols/password.gif";
  monRanks = new Image(352,16);
  monRanks.src="/images/ranks/small.gif";
}
function checkServers() {
  var doc = top.window.document;
  doc.getElementById('busyServersList').style.display = 'none';
  doc.getElementById('refreshServersList').style.display = '';
  doc.getElementById('busyBuddiesList').style.display = 'none';
  doc.getElementById('refreshBuddiesList').style.display = '';
  var list = doc.getElementById("dataServersList").getElementsByTagName("TBODY")[0];
  var allRows = list.getElementsByTagName('tr');
  var srvToLoad = 0;
  for(i=1; i<allRows.length; i++) {
    if(allRows[i].cells.length > 5) {
      // Check map if exist
      srvId = "" + allRows[i].id;
      if((allRows[i].cells[5].innerHTML == '') && (srvId.length > 0)) {
        srvToLoad = srvId.substring(7);
        break;
      }
    }
  }
  if(srvToLoad != 0) {
    updateServer(srvToLoad);
  }
}
function showPlayer(statsid,id) {
  var newWindow;
  if(statsid == 1) {
    newWindow = window.open(getStatsUrl(statsid) + '/player.php?id=' + id, 'player');
    newWindow.focus();
  }else if(statsid == 2) {
    newWindow = window.open(getStatsUrl(statsid) + '/player.php?id=' + id, 'player');
    newWindow.focus();
  }else if(statsid == 3) {
    newWindow = window.open(getStatsUrl(statsid) + '/player.php?id=' + id, 'player');
    newWindow.focus();
  }
  return;
}
function getStatsUrl(statsid) {
  if(statsid == 1) {
    return 'http://www.bfstats.info';
  }else if(statsid == 2) {
    return 'http://dc.bfstats.info';
  }else if(statsid == 3) {
    return 'http://pr.bfstats.info';
  }
  return 'http://www.bfstats.info';
}
// AJAX loading indicator - generator GIF - URL: http://www.ajaxload.info/
function initRequest() {
  var xmlHttp;
  if (window.XMLHttpRequest) {
    try {xmlHttp = new XMLHttpRequest();}
    catch (e) {xmlHttp = null;}
  }else{
    if (window.ActiveXObject) {
      try {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}
      catch (e) {xmlHttp = null;}
    }
  }
  return xmlHttp;
}
function parseBuddies(responseXML) {
  var doc = top.window.document;
  doc.getElementById('busyBuddiesList').style.display = 'none';
  doc.getElementById('refreshBuddiesList').style.display = '';
  doc.getElementById('refreshServer').style.display = '';
  doc.getElementById('refreshServersList').style.display = '';
  var list = doc.getElementById("dataBuddiesList").getElementsByTagName("TBODY")[0];
  var listBuddies = responseXML.getElementsByTagName("buddies");
  var i, objRow;
  var allRows = list.getElementsByTagName('tr');
  for(i=allRows.length-1; i>1; i--) {
    allRows[i].parentNode.removeChild(allRows[i]);
  }
  if(listBuddies.length > 0) {
    listObjs = listBuddies[0].getElementsByTagName("buddy");
    for(i=0; i<listObjs.length; i++) {
      objRow = listObjs[i];
      row = doc.createElement("TR");
      if(objRow.getAttribute('serverid') != '') {
        row.onclick = new Function('selectServer(' + objRow.getAttribute('serverid') + ')')
        if(i % 2) {
          row.onmouseover = function(){this.className='MON_S'};
          row.onmouseout = function(){this.className='MON_1'};
        }else{
          row.onmouseover = function(){this.className='MON_S'};
          row.onmouseout = function(){this.className='MON_2'};
        }
      }
      if(i % 2) {
        row.className = 'MON_1';
      }else{
        row.className = 'MON_2';
      }
      td = doc.createElement("TD");
      if(objRow.getAttribute('my') == '1') {
        td.className = 'MON_L';
      }else{
        td.className = 'MON_LI';
      }
      td.width = 140;
      td.innerHTML = objRow.getAttribute('name');
      row.appendChild(td);
      td = doc.createElement("TD");
      if(objRow.getAttribute('my') == '1') {
        td.className = 'MON_L';
      }else{
        td.className = 'MON_LI';
      }
      td.width = 150;
      td.innerHTML = objRow.getAttribute('servername');
      row.appendChild(td);
      list.appendChild(row);
    }
  }
}
function updateBuddiesList() {
  var doc = top.window.document;
  doc.getElementById('refreshBuddiesList').style.display = 'none';
  doc.getElementById('refreshServer').style.display = 'none';
  doc.getElementById('refreshServersList').style.display = 'none';
  var d = new Date();
  doc.getElementById('busyBuddiesList').style.display = '';
  var urlLink = '/monitor/getBuddies.php?nick=' + doc.monitor.player.value + '&time=' + d.getTime();
  req = initRequest();
  if(req != null) {
    req.onreadystatechange = function () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          refreshAd();
          parseBuddies(req.responseXML);
        } else {
          top.window.document.getElementById('busyBuddiesList').style.display = 'none';
          top.window.document.getElementById('refreshBuddiesList').style.display = '';
          if (req.status == 204) {
            // Error
          }
        }
      }
    };
    req.open("GET", urlLink, true);
    req.send(null);
  }
}
function parseServer(responseXML) {
  var doc = top.window.document;
  doc.getElementById('busyServer').style.display = 'none';
  doc.getElementById('refreshServer').style.display = '';
  doc.getElementById('refreshBuddiesList').style.display = '';
  doc.getElementById('refreshServersList').style.display = '';
  var listServer = responseXML.getElementsByTagName("server");
  var list, listXML, i, objRow, objCell, allRows, row, td;
  if (listServer.length > 0) {
    list = doc.getElementById("dataMapsList").getElementsByTagName("TBODY")[0];
    allRows = list.getElementsByTagName('tr');
    for(i=allRows.length-1; i>=0; i--) {
      allRows[i].parentNode.removeChild(allRows[i]);
    }
    list = doc.getElementById("dataTeam1List").getElementsByTagName("TBODY")[0];
    allRows = list.getElementsByTagName('tr');
    for(i=allRows.length-1; i>0; i--) {
      allRows[i].parentNode.removeChild(allRows[i]);
    }
    list = doc.getElementById("dataTeam2List").getElementsByTagName("TBODY")[0];
    allRows = list.getElementsByTagName('tr');
    for(i=allRows.length-1; i>0; i--) {
      allRows[i].parentNode.removeChild(allRows[i]);
    }
    sStatus = listServer[0].getElementsByTagName("status")[0].getAttribute('value');
    sInfo = listServer[0].getElementsByTagName("info")[0];
    if(sInfo.getAttribute('mapimg')) {
      doc.getElementById('sInfoWeb').innerHTML = '<img src="http://monitor.bfstats.info/images/maps/' + sInfo.getAttribute('mapimg') + '"/>';
    } else {
      if(sInfo.getAttribute('web')) {
        doc.getElementById('sInfoWeb').innerHTML = '<a class="MONW" href="http://' + sInfo.getAttribute('web') + '" target="serverweb">' + sInfo.getAttribute('web') + '</a>';
      }else{
        doc.getElementById('sInfoWeb').innerHTML = '&nbsp;';
      }
    }
    if(sInfo.getAttribute('logo')) {
      doc.getElementById('sInfoLogo').innerHTML = '<a class="MON" href="' + getStatsUrl(sInfo.getAttribute('statsid')) + '/server.php?id=' + sInfo.getAttribute('subid') + '" target="serverstats"><img src="' + sInfo.getAttribute('logo') + '" border="0" width="400" height="100"></a>';
    }else{
      doc.getElementById('sInfoLogo').innerHTML = '&nbsp;';
    }
    doc.getElementById('sInfoStats').innerHTML = '<a class="MON" href="' + getStatsUrl(sInfo.getAttribute('statsid')) + '/server.php?id=' + sInfo.getAttribute('subid') + '" target="serverstats">STATS</a>';
    doc.getElementById('sInfoName').innerHTML = sInfo.getAttribute('name');
    doc.getElementById('sInfoIpPort').innerHTML = sInfo.getAttribute('ip') + ':' + sInfo.getAttribute('port');
    // Search row with this ID
    var srvId = sInfo.getAttribute('id');
    var row = doc.getElementById("server_" + srvId);
    if(sStatus == 1) {
      sPlayers = listServer[0].getElementsByTagName("players")[0];
      sMap = listServer[0].getElementsByTagName("map")[0];
      sPassword = listServer[0].getElementsByTagName("password")[0];
      sVoip = listServer[0].getElementsByTagName("voip")[0];
      sTLimit = listServer[0].getElementsByTagName("timelimit")[0];
      sAddInfo = listServer[0].getElementsByTagName("addinfo")[0];
      sTeam1 = listServer[0].getElementsByTagName("team1")[0];
      sTeam2 = listServer[0].getElementsByTagName("team2")[0];
      if(row != null) {
        objCell = row.cells[1];
        clearCell(objCell);
        addImageInf(doc, objCell, 'voip', sVoip.getAttribute('value'));
        addImageInf(doc, objCell, 'pwd', sPassword.getAttribute('value'));
        objCell = row.cells[2];
        clearCell(objCell);
        addImageSrvPlay(doc, objCell, sPlayers.getAttribute('count'), sPlayers.getAttribute('max'));
        objCell = row.cells[4];
        objCell.innerHTML = sPlayers.getAttribute('count') + '/' + sPlayers.getAttribute('max');
        objCell = row.cells[5];
        objCell.innerHTML = sMap.getAttribute('name');
        objCell = row.cells[7];
        if(sAddInfo.getAttribute('value') == 1) {
          sAddTeam1 = sAddInfo.getElementsByTagName("teaminfo1")[0];
          sAddTeam2 = sAddInfo.getElementsByTagName("teaminfo2")[0];
          objCell.innerHTML = sAddTeam1.getAttribute('tickets') + ':' + sAddTeam2.getAttribute('tickets');
          addImageBar(doc, doc.getElementById('sTeam1Bar'), sAddTeam1.getAttribute('tickets'), sAddTeam1.getAttribute('defaulttickets'), 78, 10);
          addImageBar(doc, doc.getElementById('sTeam2Bar'), sAddTeam2.getAttribute('tickets'), sAddTeam2.getAttribute('defaulttickets'), 78, 10);
          doc.getElementById('sTeam1Info').innerHTML = sAddTeam1.getAttribute('tickets') + ' / ' + sAddTeam1.getAttribute('defaulttickets');
          doc.getElementById('sTeam2Info').innerHTML = sAddTeam2.getAttribute('tickets') + ' / ' + sAddTeam2.getAttribute('defaulttickets');
        }else{
          objCell.innerHTML = '?:?';
          doc.getElementById('sTeam1Info').innerHTML = '&nbsp;';
          doc.getElementById('sTeam2Info').innerHTML = '&nbsp;';
        }
        objCell = row.cells[9];
        if(sAddInfo.getAttribute('value') == 1) {
          sNextMap = listServer[0].getElementsByTagName("nextmap")[0];
          objCell.innerHTML = sNextMap.getAttribute('name');
        }else{
          objCell.innerHTML = '';
        }
        objCell = row.cells[6];
        clearCell(objCell);
        addImageFlag(doc, objCell, sTeam1.getAttribute('tag'));
        objCell = row.cells[8];
        clearCell(objCell);
        addImageFlag(doc, objCell, sTeam2.getAttribute('tag'));
        doc.getElementById('sTeam1Name').innerHTML = sTeam1.getAttribute('name').toUpperCase();
        clearCell(doc.getElementById('sTeam1Flag'));
        addImageFlag(doc, doc.getElementById('sTeam1Flag'), sTeam1.getAttribute('tag'));
        doc.getElementById('sTeam2Name').innerHTML = sTeam2.getAttribute('name').toUpperCase();
        clearCell(doc.getElementById('sTeam2Flag'));
        addImageFlag(doc, doc.getElementById('sTeam2Flag'), sTeam2.getAttribute('tag'));
      }
      // Players list
      var listTeam1 = doc.getElementById("dataTeam1List").getElementsByTagName("TBODY")[0];
      var listTeam2 = doc.getElementById("dataTeam2List").getElementsByTagName("TBODY")[0];
      sTeamPlayers1 = sTeam1.getElementsByTagName("player");
      doc.getElementById('sTeam1Name').innerHTML = sTeam1.getAttribute('name').toUpperCase() + '  (' + sTeamPlayers1.length + ')';
      for(i=0; i<sTeamPlayers1.length; i++) {
        objRow = sTeamPlayers1[i];
        row = doc.createElement("TR");
        row.id = 'team1_' + objRow.getAttribute('id');
        if(objRow.getAttribute('id') != '') {
          row.onclick = new Function('showPlayer(' + objRow.getAttribute('sid') + ',' + objRow.getAttribute('id') + ')')
          if(i % 2) {
            row.onmouseover = function(){this.className='MON_S'};
            row.onmouseout = function(){this.className='MON_1'};
          }else{
            row.onmouseover = function(){this.className='MON_S'};
            row.onmouseout = function(){this.className='MON_2'};
          }
        }
        if(i % 2) {
          row.className = 'MON_1';
        }else{
          row.className = 'MON_2';
        }
        td = doc.createElement("TD");
        td.className = 'MON_C';
        td.width = 16;
        addImageRank(doc, td, objRow.getAttribute('r'));
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDL';
        }else{
          td.className = 'MON_L';
        }
        td.width = 159;
        td.innerHTML = objRow.getAttribute('n');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('s');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('k');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('d');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('p');
        row.appendChild(td);
        listTeam1.appendChild(row);
      }
      sTeamPlayers2 = sTeam2.getElementsByTagName("player");
      doc.getElementById('sTeam2Name').innerHTML = sTeam2.getAttribute('name').toUpperCase() + '  (' + sTeamPlayers2.length + ')';
      for(i=0; i<sTeamPlayers2.length; i++) {
        objRow = sTeamPlayers2[i];
        row = doc.createElement("TR");
        row.id = 'team1_' + objRow.getAttribute('id');
        if(objRow.getAttribute('id') != '') {
          row.onclick = new Function('showPlayer(' + objRow.getAttribute('sid') + ',' + objRow.getAttribute('id') + ')')
          if(i % 2) {
            row.onmouseover = function(){this.className='MON_S'};
            row.onmouseout = function(){this.className='MON_1'};
          }else{
            row.onmouseover = function(){this.className='MON_S'};
            row.onmouseout = function(){this.className='MON_2'};
          }
        }
        if(i % 2) {
          row.className = 'MON_1';
        }else{
          row.className = 'MON_2';
        }
        td = doc.createElement("TD");
        td.className = 'MON_C';
        td.width = 16;
        addImageRank(doc, td, objRow.getAttribute('r'));
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDL';
        }else{
          td.className = 'MON_L';
        }
        td.width = 159;
        td.innerHTML = objRow.getAttribute('n');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('s');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('k');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('d');
        row.appendChild(td);
        td = doc.createElement("TD");
        if(objRow.getAttribute('b') == '1') {
          td.className = 'MON_BDC';
        }else{
          td.className = 'MON_C';
        }
        td.width = 30;
        td.innerHTML = objRow.getAttribute('p');
        row.appendChild(td);
        listTeam2.appendChild(row);
      }
      // Server info
      doc.getElementById('sInfoJoin').innerHTML = '<a class="MON" href="qbfstart://' + sInfo.getAttribute('ip') + ':' + sInfo.getAttribute('port') + '">JOIN</a>';
      doc.getElementById('sInfoMap').innerHTML = sMap.getAttribute('name') + ' (' + sMap.getAttribute('size') + ')';
      doc.getElementById('sTimeLimit').innerHTML = sec2time(sTLimit.getAttribute('value'));
      if(sAddInfo.getAttribute('value') == 1) {
        sTActual = sAddInfo.getElementsByTagName("timeactual")[0];
        doc.getElementById('sInfoTimeActual').innerHTML = sec2time(sTLimit.getAttribute('value') - sTActual.getAttribute('value'));
        list = doc.getElementById("dataMapsList").getElementsByTagName("TBODY")[0];
        listXML = sAddInfo.getElementsByTagName("maplist")[0].getElementsByTagName("map");
        for(i=0; i<listXML.length; i++) {
          objRow = listXML[i];
          row = doc.createElement("TR");
          row.id = 'map_' + objRow.getAttribute('id');
          if(sMap.getAttribute('name').toLowerCase() == objRow.getAttribute('name').toLowerCase()) {
            row.className = 'MON_SN';
          }else{
            if(i % 2) {
              row.className = 'MON_1';
            }else{
              row.className = 'MON_2';
            }
          }
          td = doc.createElement("TD");
          td.className = 'MON_L';
          td.width = 200;
          td.innerHTML = objRow.getAttribute('name');
          row.appendChild(td);
          row.appendChild(td);
          list.appendChild(row);
        }
        addImageBar(doc, doc.getElementById('sTimeBar'), sTActual.getAttribute('value'), sTLimit.getAttribute('value'), 100, 20);
      }else{
        doc.getElementById('sInfoTimeActual').innerHTML = '&nbsp;';
        doc.getElementById('sTeam1Info').innerHTML = '&nbsp;';
        doc.getElementById('sTeam2Info').innerHTML = '&nbsp;';
        addImageBar(doc, doc.getElementById('sTeam1Bar'), 0, 100, 78, 10);
        addImageBar(doc, doc.getElementById('sTeam2Bar'), 0, 100, 78, 10);
        addImageBar(doc, doc.getElementById('sTimeBar'), 0, 100, 100, 20);
      }
    }else{
      setServerOffline(row);
      var listTeam1 = doc.getElementById("dataTeam1List").getElementsByTagName("TBODY")[0];
      var listTeam2 = doc.getElementById("dataTeam2List").getElementsByTagName("TBODY")[0];
      allRows = listTeam1.getElementsByTagName('tr');
      for(i=allRows.length-1; i>0; i--) {
        allRows[i].parentNode.removeChild(allRows[i]);
      }
      allRows = listTeam2.getElementsByTagName('tr');
      for(i=allRows.length-1; i>0; i--) {
        allRows[i].parentNode.removeChild(allRows[i]);
      }
      doc.getElementById('sInfoJoin').innerHTML = '[offline]';
      doc.getElementById('sInfoMap').innerHTML = '&nbsp;';
      doc.getElementById('sTimeLimit').innerHTML = '&nbsp;';
      doc.getElementById('sInfoTimeActual').innerHTML = '&nbsp;';
      doc.getElementById('sTeam1Info').innerHTML = '&nbsp;';
      doc.getElementById('sTeam2Info').innerHTML = '&nbsp;';
      doc.getElementById('sTeam1Name').innerHTML = '&nbsp;';
      doc.getElementById('sTeam2Name').innerHTML = '&nbsp;';
      addImageFlag(doc, doc.getElementById('sTeam1Flag'), sTeam1.getAttribute('tag'));
      addImageFlag(doc, doc.getElementById('sTeam2Flag'), sTeam2.getAttribute('tag'));
      clearCell(doc.getElementById('sTeam1Flag'));
      clearCell(doc.getElementById('sTeam2Flag'));
      addImageBar(doc, doc.getElementById('sTeam1Bar'), 0, 100, 78, 10);
      addImageBar(doc, doc.getElementById('sTeam2Bar'), 0, 100, 78, 10);
      addImageBar(doc, doc.getElementById('sTimeBar'), 0, 100, 100, 20);
    }
    doc.getElementById('refreshServer').innerHTML = '(<a class="MON" href="javascript:selectServer(' + srvId + ')">refresh</a>)';
  }
}
function selectServer(id) {
  var doc = top.window.document;
  var row = doc.getElementById("server_" + id);
  if((row != null) && 
     (doc.getElementById('refreshServersList').style.display != 'none')) {
    //(doc.getElementById('refreshServer').style.display != 'none') && 
    doc.getElementById('refreshServer').style.display = 'none';
    doc.getElementById('refreshServersList').style.display = 'none';
    doc.getElementById('refreshBuddiesList').style.display = 'none';
    doc.getElementById('busyServer').style.display = '';
    setServerLoading(row);
    var d = new Date();
    var urlLink = '/monitor/getServer.php?id=' + id + '&nick=' + doc.monitor.player.value + '&time=' + d.getTime();
    req = initRequest();
    if(req != null) {
      req.onreadystatechange = function () {
        if (req.readyState == 4) {
          if (req.status == 200) {
            refreshAd();
            parseServer(req.responseXML);
            updateBuddiesList();
          } else {
            top.window.document.getElementById('busyServer').style.display = 'none';
            top.window.document.getElementById('refreshServer').style.display = '';
            if (req.status == 204) {
              // Error
            }
          }
        }
      };
      req.open("GET", urlLink, true);
      req.send(null);
    }
  }
}
function parseUpdateServer(responseXML) {
  var doc = top.window.document;
  doc.getElementById('busyServersList').style.display = 'none';
  doc.getElementById('refreshServersList').style.display = '';
  doc.getElementById('refreshServer').style.display = '';
  doc.getElementById('refreshBuddiesList').style.display = '';
  var listServer = responseXML.getElementsByTagName("server");
  var row, td, img, allCells, objCell;
  if (listServer.length > 0) {
    sStatus = listServer[0].getElementsByTagName("status")[0].getAttribute('value');
    sInfo = listServer[0].getElementsByTagName("info")[0];
    // Search row with this ID
    var srvId = sInfo.getAttribute('id');
    var row = doc.getElementById("server_" + srvId);
    var rowIndex = row.rowIndex;
    if(row != null) {
      if(sStatus == 1) {
        sPassword = listServer[0].getElementsByTagName("password")[0];
        sVoip = listServer[0].getElementsByTagName("voip")[0];
        sPlayers = listServer[0].getElementsByTagName("players")[0];
        sMap = listServer[0].getElementsByTagName("map")[0];
        sTeam1 = listServer[0].getElementsByTagName("team1")[0];
        sTeam2 = listServer[0].getElementsByTagName("team2")[0];
        sAddInfo = listServer[0].getElementsByTagName("addinfo")[0];
        objCell = row.cells[1];
        clearCell(objCell);
        addImageInf(doc, objCell, 'voip', sVoip.getAttribute('value'));
        addImageInf(doc, objCell, 'pwd', sPassword.getAttribute('value'));
        objCell = row.cells[2];
        clearCell(objCell);
        addImageSrvPlay(doc, objCell, sPlayers.getAttribute('count'), sPlayers.getAttribute('max'));
        objCell = row.cells[4];
        objCell.innerHTML = sPlayers.getAttribute('count') + '/' + sPlayers.getAttribute('max');
        objCell = row.cells[5];
        objCell.innerHTML = sMap.getAttribute('name');
        objCell = row.cells[7];
        if(sAddInfo.getAttribute('value') == 1) {
          sAddTeam1 = sAddInfo.getElementsByTagName("teaminfo1")[0];
          sAddTeam2 = sAddInfo.getElementsByTagName("teaminfo2")[0];
          objCell.innerHTML = sAddTeam1.getAttribute('tickets') + ':' + sAddTeam2.getAttribute('tickets');
        }else{
          objCell.innerHTML = '?:?';
        }
        objCell = row.cells[9];
        if(sAddInfo.getAttribute('value') == 1) {
          sNextMap = listServer[0].getElementsByTagName("nextmap")[0];
          objCell.innerHTML = sNextMap.getAttribute('name');
        }else{
          objCell.innerHTML = '';
        }
        objCell = row.cells[6];
        clearCell(objCell);
        addImageFlag(doc, objCell, sTeam1.getAttribute('tag'));
        objCell = row.cells[8];
        clearCell(objCell);
        addImageFlag(doc, objCell, sTeam2.getAttribute('tag'));
      }else{
        setServerOffline(row);
      }
    }
    //Search other server for read
    var list = doc.getElementById("dataServersList").getElementsByTagName("TBODY")[0];
    var allRows = list.getElementsByTagName('tr');
    var srvToLoad = 0;
    rowIndex++;
    for(i=rowIndex; i<allRows.length; i++) {
      if(allRows[i].cells.length > 5) {
        // Check map if exist
        srvId = "" + allRows[i].id;
        if((allRows[i].cells[5].innerHTML == '') && (srvId.length > 0)) {
          srvToLoad = srvId.substring(7);
          break;
        }
      }
    }
    if(srvToLoad != 0) {
      updateServer(srvToLoad);
    }
  }
}
function updateServer(id) {
  var doc = top.window.document;
  var row = doc.getElementById("server_" + id);
  if(row != null) {
    doc.getElementById('refreshServersList').style.display = 'none';
    doc.getElementById('refreshServer').style.display = 'none';
    doc.getElementById('refreshBuddiesList').style.display = 'none';
    doc.getElementById('busyServersList').style.display = '';
    setServerLoading(row);
    var d = new Date();
    var urlLink = '/monitor/getServer.php?id=' + id + '&nick=' + doc.monitor.player.value + '&time=' + d.getTime();
    req = initRequest();
    if(req != null) {
      req.onreadystatechange = function () {
        if (req.readyState == 4) {
          if (req.status == 200) {
            parseUpdateServer(req.responseXML);
          } else {
            if (req.status == 204) {
              // Error
            }
          }
        }
      };
      req.open("GET", urlLink, true);
      req.send(null);
    }
  }
}
function parseServers(responseXML) {
  var doc = top.window.document;
  doc.getElementById('busyServersList').style.display = 'none';
  doc.getElementById('refreshServersList').style.display = '';
  doc.getElementById('refreshServer').style.display = '';
  doc.getElementById('refreshBuddiesList').style.display = '';
  var list = doc.getElementById("dataServersList").getElementsByTagName("TBODY")[0];
  var listMods = responseXML.getElementsByTagName("servers");
  var i, j, objRow, objCell, objSrvRow, needRefresh, listObjs, listSrvObjs;
  var srvToLoad = 0;
  if(listMods.length > 0) {
    listObjs = listMods[0].getElementsByTagName("mod");
    for(i=0; i<listObjs.length; i++) {
      listSrvObjs = listObjs[i].getElementsByTagName("server");
      for(j=0; j<listSrvObjs.length; j++) {
        objSrvRow = listSrvObjs[j];
        if(objSrvRow.getAttribute('refresh') == '1') {
          needRefresh = true;
        }else{
          needRefresh = false;
        }
        objRow = doc.getElementById('server_' + objSrvRow.getAttribute('id'));
        if(objRow) {
          if(needRefresh && (srvToLoad == 0)) {
            srvToLoad = objSrvRow.getAttribute('id');
          }
          objCell = objRow.cells[1];
          clearCell(objCell);
          addImageInf(doc, objCell, 'voip', objSrvRow.getAttribute('voip'));
          addImageInf(doc, objCell, 'pwd', objSrvRow.getAttribute('password'));
          objCell = objRow.cells[2];
          clearCell(objCell);
          addImageSrvPlay(doc, objCell, objSrvRow.getAttribute('playerscount'), objSrvRow.getAttribute('playersmax'));
          if(objSrvRow.getAttribute('map') == '') {
            setServerOffline(objRow);
          }else{
            objCell = objRow.cells[4];
            objCell.innerHTML = objSrvRow.getAttribute('playerscount') + '/' + objSrvRow.getAttribute('playersmax');
            objCell = objRow.cells[5];
            objCell.innerHTML = objSrvRow.getAttribute('map');
            objCell = objRow.cells[7];
            objCell.innerHTML = objSrvRow.getAttribute('team1tick') + ':' + objSrvRow.getAttribute('team2tick');
            objCell = objRow.cells[9];
            objCell.innerHTML = objSrvRow.getAttribute('nextmap');
            objCell = objRow.cells[6];
            clearCell(objCell);
            addImageFlag(doc, objCell, objSrvRow.getAttribute('team1name'));
            objCell = objRow.cells[8];
            clearCell(objCell);
            addImageFlag(doc, objCell, objSrvRow.getAttribute('team2name'));
          }
        }
      }
    }
    if(srvToLoad != 0) {
      updateServer(srvToLoad);
    }
  }
}
function updateServersList() {
  var doc = top.window.document;
  doc.getElementById('refreshServersList').style.display = 'none';
  doc.getElementById('refreshServer').style.display = 'none';
  doc.getElementById('refreshBuddiesList').style.display = 'none';
  var d = new Date();
  doc.getElementById('busyServersList').style.display = '';
  var urlLink = '/monitor/getServers.php?time=' + d.getTime();
  req = initRequest();
  if(req != null) {
    req.onreadystatechange = function () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          parseServers(req.responseXML);
        } else {
          top.window.document.getElementById('busyServersList').style.display = 'none';
          top.window.document.getElementById('refreshServersList').style.display = '';
          if (req.status == 204) {
            // Error
          }
        }
      }
    };
    req.open("GET", urlLink, true);
    req.send(null);
  }
}
function setServerLoading(row) {
  setServerInfo(row, 'loading data...');
}
function setServerOffline(row) {
  setServerInfo(row, '[server is OFFLINE]');
}
function setServerInfo(row, info) {
  row.cells[4].innerHTML = '';
  row.cells[5].innerHTML = info;
  clearCell(row.cells[6]);
  row.cells[7].innerHTML = '';
  clearCell(row.cells[8]);
  row.cells[9].innerHTML = '';
}
function sec2time(sec) {
  min = parseInt(sec/60);
  sec = sec - (min*60);
  if(min<10) min = '0' + min;
  if(sec<10) sec = '0' + sec;
  return min + ':' + sec;
}
function clearCell(objCell) {
  while (objCell.firstChild)  {
    objCell.removeChild(objCell.firstChild);
  }
}
function addImageRank(doc, objCell, imgRank) {
  if(imgRank>=0) {
    img = doc.createElement('img');
    img.src = monT.src;
    img.className = 'ranks rank'+imgRank;
    objCell.appendChild(img);
  }
}
function addImageFlag(doc, objCell, imgName) {
  if((imgName != null) && (imgName != '')) {
    img = doc.createElement('img');
    img.src = monT.src;
    img.className = 'monitor flag'+monFlags[imgName];
    img.title = imgName;
    objCell.appendChild(img);
  }
}
function addImageSrv(doc, objCell, idx) {
  if(monSrvs['svr'+idx]) {
    img = doc.createElement('img');
    img.src = monSrvs['svr'+idx].src;
    if(idx==3) {
      img.alt = "Server is almost full";
    }else{
      img.alt = "Server is free for play";
    }
    objCell.appendChild(img);
  }
}
function addImageInf(doc, objCell, infName, infValue) {
  if((infValue != null) && (infValue == '1') && monInfs[infName]) {
    img = doc.createElement('img');
    img.src = monInfs[infName].src;
    objCell.appendChild(img);
  }
}
function addImageSrvPlay(doc, objCell, pCount, pMax) {
  var tCount = 0;
  var tMax = 0;
  try {tCount=parseInt(pCount);}
  catch(e) {tCount = 0;}
  try {tMax=parseInt(pMax);}
  catch(e) {tMax = 0;}
  if(tMax > 0){
    if(tCount >= (0.9 * tMax)) {
      addImageSrv(doc, objCell, 3);
    }else if(tCount >= (0.5 * tMax)) {
      addImageSrv(doc, objCell, 2);
    }else if(tCount > 0) {
      addImageSrv(doc, objCell, 1);
    }
  }
}
function addImageBar(doc, objCell, pAct, pMax, pWidth, pHeight) {
  var tAct = 0;
  var tMax = 0;
  try {tAct=parseInt(pAct);}
  catch(e) {tCount = 0;}
  try {tMax=parseInt(pMax);}
  catch(e) {tMax = 0;}
  clearCell(objCell);
  if(tMax > 0) {
    if(tAct > tMax) {
      tAct = tMax;
    }
    var tPoint = pWidth / pMax;
    var tBreak = tPoint * tAct;
    if(tBreak > 1) {
      img = doc.createElement('img');
      img.src = monBars['b1'].src;
      img.width = tBreak;
      img.height = pHeight;
      objCell.appendChild(img);
    }else{
      tBreak = 0;
    }
    img = doc.createElement('img');
    img.src = monBars['b2'].src;
    img.width = pWidth - tBreak;
    img.height = pHeight;
    objCell.appendChild(img);
  }
}
function refreshAd() {
  var currentTime = new Date();
  //adg.location = "/monitor/adg.php?t=" + currentTime.getTime();
}
