YAHOO.util.Event.onContentReady("customer_search", function () {

  YAHOO.CustomerAutocomplete = function() {

      var oDS = new YAHOO.util.XHRDataSource("/customer/ListNameJSON");
      oDS.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
      oDS.responseSchema = {
          resultsList : "list",
          fields : ["name", "id", "postcode"]
      };
      oDS.maxCacheEntries = 5;

      // Instantiate the AutoComplete
      var oAC = new YAHOO.widget.AutoComplete("customer_name", "customer_search_result", oDS);
      oAC.resultTypeList = false;
      oAC.forceSelection = true;
      oAC.minQueryLength = 2;
      oAC.queryDelay = .5;
      oAC.maxResultsDisplayed = 20;

      // Define an event handler to populate a hidden form field
      // when an item gets selected
      var myHiddenField = YAHOO.util.Dom.get("customer_id");
      var myHandler = function(sType, aArgs) {
          var myAC = aArgs[0]; // reference back to the AC instance
          var elLI = aArgs[1]; // reference to the selected LI element
          var oData = aArgs[2]; // object literal of selected item's result data

          // update hidden form field with the selected item's ID
          myHiddenField.value = oData.id;
          makeRequest(oData.id, oData.name, oData.postcode);
      };
      oAC.itemSelectEvent.subscribe(myHandler);

      // Event handler to set the customer id to null when no selection made
      var noSelectionHandler = function() {
        myHiddenField.value = null;
      };
      oAC.selectionEnforceEvent.subscribe(noSelectionHandler);

      return {
          oDS: oDS,
          oAC: oAC
      };
  }();

  var myResult = YAHOO.util.Dom.get("customer_enquiry_results");

  var handleSuccess = function(o){
    if(o.responseText !== undefined){
      myResult.innerHTML = o.responseText;
    }
  }

  var handleFailure = function(o){
    myResult.innerHTML = "No enquiry found.";
  }

  var callback =
  {
    success:handleSuccess,
    failure:handleFailure,
    timeout:2000
  };

  var sUrl = "/customer/enquiryList";

  function makeRequest(customerId, customerName){
    var query_string = "?customer_id=" + customerId + "&customer_name=" + customerName;
    var request = YAHOO.util.Connect.asyncRequest("GET", sUrl + query_string, callback);
  }

});
