// autocomplete initialization function

function autocompleteInit(element_id,localData,ajaxUrl,element_code,dataReference, hidden2, elemWidth) {

    $(element_id).autocomplete(localData, {
      url:ajaxUrl,
      minChars: 2,
      max: 15,
      autoFill: false,
      mustMatch: false,
      matchContains: false,
      cacheLength: 10,
      matchSubset: true,
      scrollHeight: 220,
      loadingClass:'ac_loading',
      selectFirst: true,
      dataType:'jsonp',
      extraParams:{format:'jsonp',limit:50},    
      parse:function(data){
        if(data&&data.r&&data.r.length>0){
          var parsed=[];
          for(var i=0,l=data.r.length;i<l;i++){
            var result=data.r[i];
            parsed[i]={data:result,value:result.id,result:result.fn};             
          }
          return parsed;
        }else{
           // No results - show a message.
           // $(elementId).removeClass('ac_loading');
           return [{ data: { fn: 'No match found....', c: '' }, value: '', result: '' }];
        }
      },
      formatItem:function(result){
        var listItem  = (( result.c && result.c.length > 0)? '<em>' + result.fn+'</em>' + '<p>' + result.c+'</p>' : '');          
        listItem = listItem.length > 0 ? listItem : result.fn;
        return listItem;
      },
      formatResult: function(data){       
        var inputVal = data.fn.replace(new RegExp(".*<em>([^<]*)</em>.*", "gi"), "$1");
        inputVal = (inputVal.length > 0 ? inputVal : data.fn.replace(new RegExp(".*<p>([^<]*)</p>.*", "gi"), "$1")); 
        return inputVal;
      }     
    });

    $(element_id).result(function(event, data, formatted)
    {     
      var hidden = $(element_code);
      
      if(dataReference == "flights")
      {
        hidden.val(data.c);     
      }
      else if(dataReference == "hotels")
      {
        hidden.val(data.id);
        $(hidden2).val(data.c);       
      }
    });

    $(element_id).click(function(event)
    {
      $(element_id).focus();
      $(element_id).select();       
      return false;
    });

    // if($(element_id).text().length==0) $(element_id).el.simulate("blur",{keyCode:$.simulate.VK_ESC});

    
    // $('#flights').result(function(event, data, formatted) {
    //  var hidden = $('#flights_code');    
    //      hidden.val(data.c);
    // });
    //  
  // alert(element_id +' :: '+ localData +' :: '+ ajaxUrl +' :: '+ element_code +' :: '+ dataReference +' :: '+ hidden2 +' :: '+ elemWidth);

  // $(element_id).autocomplete(localData,{
  //  url:ajaxUrl,
  //  minChars: 0,
  //  max: 1200,
  //  cachelength:0,
  //     scrollHeight: 380,
  //     delay:400,
  //  resultsEmptyClass:'wg_empty', 
  //  //autoFill: true,
  //  dataType:'jsonp',
  //  extraParams:{format:'jsonp',limit:50},
  //  instructions:'Select below or type above.',
  //  instructionsClass:'ac_instructions',
  //  width: elemWidth + 'px',
  //  loadingClass:'ac_loading',
  //  parse:function(data){
  //    if(data&&data.r&&data.r.length>0){
  //      
  //      var parsed=[];
  //      for(var i=0,l=data.r.length;i<l;i++){
  //        var result=data.r[i];
  //        parsed[i]={data:result,value:result.id,result:result.fn};             
  //      }
  //      return parsed;
  //    }else{
  //       // No results - show a message.
  //       //$(element_id).removeClass('ac_loading');
  //       return [{ data: { fn: 'No match found.', c: '' }, value: '', result: '' }];
  //    }
  //  },
  //  formatItem:function(result){
  //    var listItem  = (( result.c && result.c.length > 0)? '<em>' + result.fn+'</em>' + '<p>' + result.c+'</p>' : '');          
  //    listItem = listItem.length > 0 ? listItem : result.fn;
  //    return listItem;
  //  },
  //  formatItemValue: function (value){
  //    var inputVal = value.replace(new RegExp(".*<em>([^<]*)</em>.*", "gi"), "$1");
  //    inputVal = (inputVal.length > 0 ? inputVal : value.replace(new RegExp(".*<p>([^<]*)</p>.*", "gi"), "$1")); 
  //    return inputVal;
  //  }
  // });
  // 
  //   var callRouteHandler = function()
  //     {
  //         module.handleRouteChange();
  //     };
  // 
  // 
  // $(element_id).result(function(event, data, formatted) {
  //  var hidden = $(element_code);
  //   switch(dataReference) {
  //     case ("flights"):
  //       hidden.val(data.c);
  //       break;
  //     
  //     case ("hotels"):
  //       hidden.val(data.id);
  //          $(hidden2).val(data.c);
  //       break;
  //  }
  // });

}