var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
  var xmlHttp;
  if(window.ActiveXObject)
  {
    try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { xmlHttp = false; }
  }
  else
  {
    try { xmlHttp = new XMLHttpRequest(); }
    catch (e) { xmlHttp = false; }
  }
  
  if (!xmlHttp) alert("Error creating the XMLHttpRequest object.");
  else return xmlHttp;
}

function minus(value)
{
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
    xmlHttp.open("GET", "/rate.php?action=minus&name=" + value, true);
    xmlHttp.onreadystatechange = handleServerResponse;
    xmlHttp.send(null);
  }
  else setTimeout('minus(value)', 1000);
}

function plus(value)
{
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
    xmlHttp.open("GET", "/rate.php?action=plus&name=" + value, true);
    xmlHttp.onreadystatechange = handleServerResponse;
    xmlHttp.send(null);
  }
  else setTimeout('plus(value)', 1000);
}

function handleServerResponse()
{
  if (xmlHttp.readyState == 4)
  {
    if (xmlHttp.status == 200)
    {
      xmlResponse = xmlHttp.responseXML;
      xmlDocumentElement = xmlResponse.documentElement;
	  valArray = xmlDocumentElement.getElementsByTagName("val");
	  qidArray = xmlDocumentElement.getElementsByTagName("qid");
	  val=valArray.item('0').firstChild.data;
	  qid=qidArray.item('0').firstChild.data;
      document.getElementById('q_' + qid).innerHTML = '' + val + '';
    } 
    else // a HTTP status different than 200 signals an error
    {
      alert("There was a problem accessing the server: " + xmlHttp.statusText);
    }
  }
}