// Show stats in real-time at TrashMail.net
// (C) FERRARO Ltd., 2007-2008 Stuttgart, Germany
// Credits:
//  http://www.w3schools.com/ajax/ajax_source.asp for the
//   AJAX example source code.
// - Martin Webb at http://www.irt.org for his comma function,
//   modified and renamed here as space.

// Global variables
var gl_xml_http;
var gl_wait = 3; // Seconds to wait to refresh

function space(number)
{
  number = '' + number;
  // Check if number is already smaller than or equal than 3 digits.
  if (number.length <= 3)
    return (number);

  var mod = number.length % 3;
  var output = (mod > 0 ? (number.substring(0, mod)) : '');

  for (i = 0 ; i < Math.floor(number.length / 3); i++)
    {
      if ((mod == 0) && (i == 0))
	output += number.substring(mod + 3 * i, mod + 3 * i + 3);
      else
	output += ' ' + number.substring(mod + 3 * i, mod + 3 * i + 3);
    }
  return (output);
}

function state_changed() 
{ 
  if (gl_xml_http.readyState == 4)
    { 
      var resp = gl_xml_http.responseText;
      document.getElementById("spam_total").innerHTML = space(resp.split(':', 1));
      // Get stats per minute
      var tmp = resp.substr(resp.indexOf(':') + 1);
      var tmp2 = tmp.substr(tmp.indexOf(':') + 1);
      document.getElementById("spam_per_sec").innerHTML = tmp2.substr(0, tmp2.indexOf(':'));
      // Show stats again every 4 seconds
      var t = setTimeout("show_stats();", gl_wait * 1000);
    }
}

// Microsoft uses its own name for the XMLHttpRequest function
function get_gl_xml_http_object()
{
  var gl_xml_http = null;
  try
    {
      // Firefox, Opera 8.0+, Safari
      gl_xml_http = new XMLHttpRequest();
    }
  catch (e)
    {
      // Internet Explorer
      try
	{
	  gl_xml_http = new ActiveXObject("Msxml2.XMLHTTP");
	}
      catch (e)
	{
	  gl_xml_http = new ActiveXObject("Microsoft.XMLHTTP");
	}
    }
  return (gl_xml_http);
}

function show_stats()
{
  gl_xml_http = get_gl_xml_http_object();
  if (gl_xml_http == null)
    {
      alert ("Your web browser does not support AJAX!");
      return;
    }
  // Use relative path for security reasons or browser will do
  // permission denied for XMLHttpRequest.open(...) method.
  var url="/stats";
  gl_xml_http.onreadystatechange = state_changed;
  gl_xml_http.open("GET", url, true);
  gl_xml_http.send(null);
} 
