
function createXmlHttpRequest() {
    var xmlhttp = false;
  if( window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
  } else if(window.ActiveXObject) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlhttp;
}

var oldquery = "";
var xmlhttp = 0;
var input = 0;

function peekQuery (vid,src) {

  if (! xmlhttp) xmlhttp = createXmlHttpRequest();

  if (! xmlhttp || xmlhttp.readyState == 1 || 
      xmlhttp.readyState == 2 || xmlhttp.readyState == 3){
    return; 
  }

  var textbox = document.getElementById(vid);
  var query   = EscapeSJIS(textbox.value);

  if (query == "") {
    textbox.clearCompletionItems();
  } else if (oldquery != query) {
    xmlhttp.open("GET", src + "?KEY=" + query, true);
    xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200
      && xmlhttp.responseText != "") {
        var ary = xmlhttp.responseText.split(/\n/);
        textbox.showCompletionItems(
          ary,
          function(n) {
	        textbox.value = ary[n];
            textbox.clearCompletionItems();
        oldquery = EscapeSJIS(textbox.value); } );
      }
    }
    xmlhttp.send(null)
  }

  oldquery = query;
}

function suggestOn(iid,src) {
  var textbox = document.getElementById(iid);
  initCompletion(textbox);
  TimerID = setInterval(
    function () { peekQuery(iid,src); },
  500);
}

function suggestOff(iid) {
  clearInterval(TimerID);
  DTimerID = setInterval(
    function () {
      var textbox = document.getElementById(iid);
      textbox.clearCompletionItems();
      clearInterval(DTimerID); },
  200);
}


