// Collection of methods to perform an Ajax request and display results as HTML in a DIV. This
// Javascript works with the following HTML:
//
// <form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
// <textarea id="mytextarea1"></textarea>
// <textarea id="mytextarea2"></textarea>
// <br>
// <input type="button" name="button" value="Submit" onclick="javascript:get(this.parentNode);">
// <input type="submit" name="button" value="Normal Submit Button">
// </form>
// <br><br>
// Server-Response:<br>
// <hr>
// <span name="defaultIDForSpan" id="defaultIDForSpan"></span>
// <hr>
// <script>
// function get(obj) {
//   var poststr = "mytextarea1=" + encodeURI( document.getElementById("mytextarea1").value ) +
//                 "&mytextarea2=" + encodeURI( document.getElementById("mytextarea2").value );
//   makePOSTRequest('defaultIDForSpan', 'Web?action=whatever', poststr);
// }
// </script>
//
// The word 'defaultIDForSpan' above can be changed to anything else to allow multiple ajax searches within
// a page. 

var http_request = new Array(); // Support multiple simultaneous http requests within page using hashtable.
function makePOSTRequest(ajaxSearchResultsID, url, parameters) {
  http_request[ajaxSearchResultsID] = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari, IE7, ...
    http_request[ajaxSearchResultsID] = new XMLHttpRequest();
    if (http_request[ajaxSearchResultsID].overrideMimeType) {
      // set type accordingly to anticipated content type
      //http_request[ajaxSearchResultsID].overrideMimeType('text/xml');
      http_request[ajaxSearchResultsID].overrideMimeType('text/html');
    }
  } else if (window.ActiveXObject) { // IE 5, 6.
    try {
      http_request[ajaxSearchResultsID] = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request[ajaxSearchResultsID] = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request[ajaxSearchResultsID]) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }
  http_request[ajaxSearchResultsID].onreadystatechange = function() { alertContents(ajaxSearchResultsID); }
  http_request[ajaxSearchResultsID].open('POST', url + '&id=' + ajaxSearchResultsID, true);
  http_request[ajaxSearchResultsID].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request[ajaxSearchResultsID].setRequestHeader("Content-length", parameters.length);
  http_request[ajaxSearchResultsID].setRequestHeader("Connection", "close");
  http_request[ajaxSearchResultsID].send(parameters);
}

function alertContents(ajaxSearchResultsID) {
//  alert('Response called with ajaxSearchResultsID=' + ajaxSearchResultsID);
  if (http_request[ajaxSearchResultsID].readyState == 4) {
    if (http_request[ajaxSearchResultsID].status == 200) {
      var results = http_request[ajaxSearchResultsID].responseText;
      if (document.getElementById(ajaxSearchResultsID)) {
        document.getElementById(ajaxSearchResultsID).innerHTML = results;
      }
      // Also hide the 'white-out' loader if it exists.
      var loaderDiv = document.getElementById('loader_' + ajaxSearchResultsID);
      if (loaderDiv) {
        loaderDiv.style.display = 'none';
      }
    } else {
//      alert('There was a problem with the request.');
    }
  }
//  alert('Response ended okay');
}

/*
  If the code "<!-- ajaxSearchResultsID=defaultIDForSpan -->" is in the page then
  extracts and returns the value.
function extractSearchResultsID(htmlPage) {
  var ajaxSearchResultsID = wordBetween(htmlPage, 'ajaxSearchResultsID=', '-->');
  if (ajaxSearchResultsID == '') {
    ajaxSearchResultsID = 'defaultIDForSpan';
  }
  return ajaxSearchResultsID;
}

function wordBetween(message, start, end) {
  var startPosition = message.indexOf(start);
  if (startPosition == -1) {
    return '';
  }
  message = message.substring(startPosition, message.length);
  var endPosition = message.indexOf(end);
  if (endPosition == -1) {
    return '';
  }
  return message.substring(start.length, endPosition).trim();
}
*/

