var kaHttpRequest = false;
var kaOldSessionId = '';
var keepalivetimer='';
var connectionproblemvisible=0;

if (typeof kaDebug == 'undefined')            {  var kaDebug = false;}
if (typeof kaServerPage == 'undefined')       {  var kaServerPage = '/libraries/session/session.php';}
if (typeof kaInterval == 'undefined')         {  var kaInterval = 60;}
if (typeof kaRefreshMessage == 'undefined')   {  var kaRefreshMessage = 'refreshing'; }
if (typeof kaOkMessage == 'undefined')        {  var kaOkMessage = 'alive'; }
if (typeof kaExpiredMessage == 'undefined')   {  var kaExpiredMessage = 'expired'; }
if (typeof kaErrorMessage == 'undefined')     {  var kaErrorMessage = 'error'; }
if (typeof kaStatusElementID == 'undefined')  {  var kaStatusElementID = 'session';}


kaAjax('POST', kaServerPage, '', kaStatusElementID);
keepalivetimer=setInterval("kaAjax('POST', kaServerPage, '', kaStatusElementID)", kaInterval * 1000);

function kaAjax(httpRequestMethod, url, parameters, target)
{
  kaHttpRequest = false;
//  document.getElementById(target).innerHTML = kaRefreshMessage
  if (window.XMLHttpRequest)
  { // For Mozilla, Safari, Opera, IE7+
    kaHttpRequest = new XMLHttpRequest();
    if (kaHttpRequest.overrideMimeType)
    {
      kaHttpRequest.overrideMimeType('text/plain');
      //Change MimeType to match the data type of the server response.
      //Examples: "text/xml", "text/html", "text/plain"
    }
  }
  else if (window.ActiveXObject)
  { // For IE6
    try
    {
      kaHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        kaHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {}
    }
  }
  if (!kaHttpRequest)
  {
//  alert('Giving up :( Cannot create an XMLHTTP instance');
    return false;
  }
  kaHttpRequest.onreadystatechange = function() {updateElement(target);};
  if (httpRequestMethod == 'GET')
  {
    var ser = Math.round(Math.random()*1000000); // Anti-caching random number
    kaHttpRequest.open('GET', url + '?' + parameters + '&random=' + ser, true);
    kaHttpRequest.send(null);
  }
  else if (httpRequestMethod == 'POST')
  {
    kaHttpRequest.open('POST', url, true);
    kaHttpRequest.setRequestHeader('Content-Type',
      'application/x-www-form-urlencoded');
    kaHttpRequest.send(parameters);
  }
  else
  {
//  alert('Sorry, unsupported HTTP method');
  }
}

function updateElement(target)
{
  if (kaHttpRequest.readyState == 4)
  {
    if (kaHttpRequest.status == 200)
    {
      if (kaOldSessionId == '')
      {
        kaOldSessionId = kaHttpRequest.responseText;
      }
      eval(kaHttpRequest.responseText);
    }
    else
    {
       clearInterval(keepalivetimer);
       if (connectionproblemvisible==0)
       {
          connectionproblemvisible=1;
          ConnectionProblem();
       }
    }
  }
}
