//this code makes the qstat box appear/disappear
var qstatUpdater;
document.observe("dom:loaded", function() {
Event.observe('players','click',function(e){
  if( qstatUpdater == null ) 
    qstatUpdater = new Ajax.PeriodicalUpdater('qstat_inner','qstat.php',{frequency:60});
  else
    qstatUpdater.start();
  new Effect.Appear('black',{from:0,to:0.8});
  new Effect.Appear('qstat');
});
Event.observe('qstat','click',function(e){
  qstatUpdater.stop();
  updateQstat();
  new Effect.Fade('black',{from:0.8,to:0});
  new Effect.Fade('qstat');
});
});

//this code updates the map name/players list when qstat is closed
updateQstat = function() {
  data = $('qstat_inner').innerHTML.split("\n");
  data.shift(); // get rid of header line
  stats = data.shift();
  qstat_ip = trim(stats.substring(0,21));
  if(trim(stats.substring(20))=='no response' ) {
    qstat_playercount = '...';
    qstat_map = 'changing maps';
  } else {
    qstat_playercount = trim(stats.substring(20,27));
    qstat_map = trim(stats.substring(28)).split(' ')[0];
  }

  qstat_players = new Array();
  while(line = data.shift()) {
    tmpname = line.substring(21);
    if(tmpname != 'Visit www.nom-nom-nom.us' && trim(tmpname) != '' ) qstat_players.push('<span class="playername">'+trim(tmpname).unescapeHTML()+'</span>');
  }
  
  $('mapname').update(qstat_map);
  $('players').update('Players ('+qstat_playercount+'): '+qstat_players.join(', '));
}

//adds trim() functionality
function trim(str, chars) {
  return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}