var XMLHttpRequestObject = createXMLHttpRequestObject();
var suggestions = 0;

function createXMLHttpRequestObject()
{
  var XMLHttpRequestObject = false;
  
  try
  {
    XMLHttpRequestObject = new XMLHttpRequest();
  }
  catch(e)
  {
    var aryXmlHttp = new Array(
                               "MSXML2.XMLHTTP",
                               "Microsoft.XMLHTTP",
                               "MSXML2.XMLHTTP.6.0",
                               "MSXML2.XMLHTTP.5.0",
                               "MSXML2.XMLHTTP.4.0",
                               "MSXML2.XMLHTTP.3.0"
                               );
    for (var i=0; i<aryXmlHttp.length && !XMLHttpRequestObject; i++)
    {
      try
      {
        XMLHttpRequestObject = new ActiveXObject(aryXmlHttp[i]);
      } 
      catch (e) {}
    }
  }
  
  if (!XMLHttpRequestObject)
  {
    alert("Error: failed to create the XMLHttpRequest object.");
  }
  else 
  {
    return XMLHttpRequestObject;
  }
}

function postData(dataSource, divID)
{
  if(XMLHttpRequestObject)
  {
    XMLHttpRequestObject.open("POST", dataSource);
    XMLHttpRequestObject.setRequestHeader("Method", "POST " + dataSource + " HTTP/1.1");
	  XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	  /*
    XMLHttpRequestObject.setRequestHeader("Content-Type", "text/xml; charset=big5");
    */
    
    XMLHttpRequestObject.onreadystatechange = function()
    {
      try
      {
        if (XMLHttpRequestObject.readyState == 4 &&
            XMLHttpRequestObject.status == 200)
        {
          var objDiv = document.getElementById(divID);
          objDiv.innerHTML = XMLHttpRequestObject.responseText;
        }
      }
      catch(e){}
    }
    
    dataSource += "&parm="+new Date().getTime();
    try
    {
      XMLHttpRequestObject.send(dataSource);
    }
    catch(e){}
  }
}

function getData(dataSource, divID)
{
  if(XMLHttpRequestObject)
  {
    dataSource += "&parm="+new Date().getTime();
    XMLHttpRequestObject.open("GET", dataSource);
    XMLHttpRequestObject.onreadystatechange = function()
    {
      try
      {
        if (XMLHttpRequestObject.readyState == 4 &&
            XMLHttpRequestObject.status == 200)
        {
          var objDiv = document.getElementById(divID);
          objDiv.innerHTML = XMLHttpRequestObject.responseText;
        }
      }
      catch(e){}
    }
    try
    {
      XMLHttpRequestObject.send(null);
    }
    catch(e){}
  }
}

function hide_div(divID)
{
  var objDiv = document.getElementById(divID);
  objDiv.style.visibility = "hidden";
}

function show_div(divID)
{
  var objDiv = document.getElementById(divID);
  objDiv.style.visibility = "visible";
}

function handleOnMouseOver(idSelf)
{
  idSelf.className = "highlight";
}

function handleOnMouseOut(idSelf)
{
  idSelf.className = "";
}

function escapes_str(str)
{
  if(encodeURIComponent)
  {
    return encodeURIComponent(str);
  }

  if(escape) 
  {
    return escape(str);
  }
}

function checkFunction(keyEvent, divID, dataSource)
{
  keyEvent = (keyEvent) ? keyEvent: window.event;
  input = (keyEvent.target) ? keyEvent.target : keyEvent.srcElement;
  
  if (keyEvent.type == "keyup")
  {
    var objDiv = document.getElementById(divID);
    objDiv.innerHTML = "<div></div>";
    if (input.value)
    {
      /* qry is the $_GET[] variable for dataSource */
      show_div(divID);
      dataSource += "?search="+escapes_str(input.value)+"&urlProcess="+dataSource+"&targetDiv="+divID;
      getData(dataSource, divID);
    }
    else
    {
      hide_div(divID);
    }
  }
}