function ja_heartbeat_initRequest() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        isIE = true;
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        return false;
    }
}

function ja_heartbeat_update(sessionId) {
    var url = "/ping;jsessionid=" + sessionId + "?" + new Date().getTime();
    var req = ja_heartbeat_initRequest();
    if (req) {
      req.onreadystatechange = function() {
          if (req.readyState == 4) {
              if (req.status == 200) {
                  //window.alert('ping!');
              }
          }
      };
      req.open("GET", url, true);
      req.send(null);
    }
}

function ja_heartbeat(delay, sessionId) {
    window.setTimeout('ja_heartbeat_update("' + sessionId + '"); ja_heartbeat(' + delay + ',"' + sessionId + '");', delay);
}
