/* this will intiate guided suggest on control start */

function trim(str, chars) {
  //alert("in trim");
  return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
  chars = chars || "\\s";
  return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

var hashResults = new Array();
function emptyHash() { hashResults = new Array(); }
YAHOO.example.RemoteCustomRequest1 = function() {
    // Use an XHRDataSource
    var oDS1 = new YAHOO.util.XHRDataSource(queryUrl);
    // Set the responseType
    oDS1.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
  oDS1.maxCacheEntries = 0;  
  oDS1.connXhrMode = 'ignoreStaleResponses';  
    // Define the schema of the JSON results
    oDS1.responseSchema = {
    resultsList : "autnresponse.responsedata.autn_hit",
        fields : ["autn_content.DOCUMENT.KEYWORDS","autn_content.DOCUMENT.URL"]//,
    //metaFields : { totalRecords : "autnresponse.responsedata.autn_numhits"  }
    };

    var oAC1 = new YAHOO.widget.AutoComplete("search_input_field", "gsAcList", oDS1);
  oAC1.maxResultsDisplayed = noOfCounts;  
  oAC1.minQueryLength = launchKeys;  
  oAC1.autoHighlight = false; 
  oAC1.highlightClassName = "selected";  //class name for selected list
  oAC1.useIFrame = true;  
  oAC1.allowBrowserAutocomplete = false;  


    // Throttle requests sent
    oAC1.queryDelay = 0.1;
    //oAC1.queryDelay = 0.5; // change this if want delay in sending request
    // The webservice needs additional parameters
    oAC1.generateRequest = function(sQuery) {
  emptyHash();
  //alert("'"+sQuery+"'");
  sQuery = decodeURIComponent(sQuery);
  sQuery = trim(sQuery,"");
  sQuery = trim(sQuery,",");
  //alert("1'"+sQuery+"'");
  //sQuery = sQuery.replace(new RegExp("[ ]+$", "g"), "");
    //alert("++"+one+"++");
  //alert(decodeURIComponent(sQuery));
  //alert("'"+sQuery.length+"'");
  if (sQuery.length >= 2)
  {
        //return "?f="+searchIn+"&r="+noOfCounts+"&db="+ database +"&q=" + escape(sQuery) ;
    return "?f="+searchIn+"&r="+noOfCounts+"&db="+ database +"&langtype="+langType+"&q=" + encodeURIComponent(sQuery)+ "&sort=" + sorting_order+"&matchlangtype="+matchLangType+"&language="+Language ;
  }
  else
  {
        return "?r=0&db="+ database +"&langtype="+langType+"&q=" + sQuery + "&sort=" + sorting_order+"&matchlangtype="+matchLangType+"&language="+Language;
  }
    };

  function fnCallback(e, args) {handleSelect(args);}; 
  oAC1.formatResult = function(oResultData, sQuery, sResultMatch) {      
     var s=(oResultData+"").replace(/^(\d+),.*$/,"$1");
     if(hashResults[s]==1) { return ''; }
     hashResults[s]=1;
     
     if (isNaN(sQuery))
     {
     var query = sQuery.toLowerCase();   
     }
     else
     {
     var query = sQuery;   
     }
     var result = oResultData[0];   
     
     /*if (isNaN(result))
     {
     var resultMatchIndex = result.toLowerCase().indexOf(query);   
     }
     else
     {
     var resultMatchIndex = result.indexOf(query);  
     }*/


    if (isNaN(result))
    {
      var resultMatchIndex = result.toLowerCase().indexOf(query);   
      if (resultMatchIndex == 0)
      {
      }
      else
      {
        for (i=0;i<result.length ;i++ )
        { 
          if (result.substring((resultMatchIndex-1),resultMatchIndex)!=" " && query.substring(0,1) != " ")
          {
          var resultMatchIndex1 = result.toLowerCase().indexOf(query,(resultMatchIndex+1)); 
          resultMatchIndex = resultMatchIndex1;   
          i = result.length;
          /*if (i > 1)
          {
          i = resultMatchIndex;
          }*/
          }
          else
          {
          i = result.length;
          }
        }
      }
    }
    else
    {
    result=result.toString();
    query=query.toString();
    var resultMatchIndex = result.indexOf(query);  
    }

     var displayresult;
     if(resultMatchIndex > -1) {   
       displayresult = highlightMatch(result, query, resultMatchIndex);   
     }   
     else {   
       displayresult = result;   
     }
      return displayresult;   
     };   
        
     // Helper function for the formatter   
     var highlightMatch = function(full, snippet, matchindex) {   
         return full.substring(0, matchindex) +    
                 "<span class='match'>" +    
                 full.substr(matchindex, snippet.length) +    
                 "</span>" +   
                 full.substring(matchindex + snippet.length);   
     };   
  /*var hideNav = function ()
  {
    hideSubMenus();
  };*/
  oAC1.itemSelectEvent.subscribe(fnCallback);
  //oAC1.containerExpandEvent.subscribe(hideNav);
    
    return {
        oDS1: oDS1,
        oAC1: oAC1
    };
}();

/* this will intiate from handleSelect to decode and re-encode url*/
function furl(curl) 
{
  if (curl.indexOf('?f=')!=-1)
    {
      var index = curl.indexOf('?f=');
      var prefix = curl.substring(0,index+3);
      var val = curl.substring(index+3);
      var array=val.split('&'); 
      var suffix='';
      for(var i=0;i<array.length;i++)
      {
        if(i<array.length-1)
        { 
          suffix=suffix+encodeURIComponent(decodeURIComponent(array[i]))+'&';
        }
        else
        {
          suffix=suffix+encodeURIComponent(decodeURIComponent(array[i]));
        }
      }
      return prefix+suffix;
    }
    else
    {   
      return curl;
    }
}
/* this will intiate guided suggest on control end */

/* function to handle guided search selected starts */
function handleSelect(args)
{
//alert("VALUE in Cookie is " + Get_Cookie('ckcTxtSearch'));
Set_Cookie('ckcTxtSearch',frm.search_input_field.value);
//alert("VALUE NOW SET in Cookie is " + Get_Cookie('ckcTxtSearch'));
window.location.href= furl(args[2][1]);
//window.location.href= "/sites/corporate/en/products-services/VC_20AUG/products-offer/relays_and_timers/relays_and_timers.page";
}
/* function to handle guided search selected ends */
