var xmlHttp = createXmlHttpRequestObject();  
 
// retrieves the XMLHttpRequest object 
function createXmlHttpRequestObject()  
{  
  // will store the reference to the XMLHttpRequest object 
  var xmlHttp; 
  // if running Internet Explorer 
  if(window.ActiveXObject) 
  { 
    try 
    { 
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch (e)  
    { 
      xmlHttp = false; 
    } 
  } 
  // if running Mozilla or other browsers 
  else 
  { 
    try  
    { 
      xmlHttp = new XMLHttpRequest(); 
    } 
    catch (e)  
    { 
      xmlHttp = false; 
    } 
  } 
  // return the created object or display an error message 
  if (!xmlHttp) 
  alert("Error creating the XMLHttpRequest object."); 
  else  
    return xmlHttp; 
} 
 
// make asynchronous HTTP request using the XMLHttpRequest object  
function process_click(rowid) 
    { 
      // proceed only if the xmlHttp object isn't busy 
      if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) 
      { 
        xmlHttp.open("GET", "/apanel/click_counter.php?id=" + rowid, true);   
        xmlHttp.onreadystatechange = handleServerResponse_forclick; 
        xmlHttp.send(null); 
      } 
      else 
        // if the connection is busy, try again after one second   
        setTimeout('process_click()', 1000); 
    } 
 

// executed automatically when a message is received from the server 
function handleServerResponse_forclick()  
    { 
      // move forward only if the transaction has completed 
      if (xmlHttp.readyState == 4)  
      { 
        // status of 200 indicates the transaction completed successfully 
        if (xmlHttp.status == 200)  
        { 
         // restart sequence 
          setTimeout('process_click()', 1000); 
        }  
        // a HTTP status different than 200 signals an error 
        else  
        { 
          alert("There was a problem accessing the server: " + xmlHttp.statusText); 
        } 
      } 
    } 
  