Subversion Repositories SmartDukaan

Rev

Rev 10582 | Blame | Compare with Previous | Last modification | View Log | RSS feed


function spliturl(url)
{
 fullpath = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?"));
 params =fullpath.split('<?=base_url()?>');
 getparams = url.split('?');
 var output = new Array();
 output[0] = params[1]; //data controller to parameters
 output[1] = getparams[1];//get input
 output[2]=fullpath; //full url expcept get input
 return output;
}

function autoComplete(){    
  var outp = document.getElementById("search-result"); 
  var oldins;
  var posi = -1;
  var words = new Array();
  var input;
  var key;
  microAjaxAutoComplete();
  function microAjaxAutoComplete(){
    var qstr = document.getElementById("autocomplete").value;
    var autoCompleteItems = 10;
    var acItems;
    if(qstr.length > 2){
     microAjax(base_url+'home/autosuggest/'+encodeURIComponent(qstr),function(data){
      data = JSON.parse(data);
      var results = data;
          acItems = results;  
        init(acItems);
        if(acItems.length == 0){
           clearOutput();
         }
     });     
    }else if(qstr.length < 2){
      clearOutput(); 
    }
  }

function setVisible(visi)
{
  var x = document.getElementById("search");
  var t = document.getElementById("autocomplete");
}
function init(suggestions)
{ 
  lookAt(suggestions);
  setVisible("hidden");
  document.onkeydown = keygetter; //needed for Opera...
  document.onkeyup = keyHandler;
}
function lookAt(suggestions)
{
   var ins = document.getElementById("autocomplete").value;
    if (posi > -1);
   else if (ins.length > 1)
   {
    words = suggestions;
     if (words.length > 0)
     {
        clearOutput();
        for (var i=0;i < words.length; ++i){
          addWord(words[i], words[i]);
        }
        
        setVisible("visible");
        input = document.getElementById("autocomplete").value;
     }
     else
     {
        setVisible("hidden");
        posi = -1;
     }
   }
   else
   {
    setVisible("hidden");
    posi = -1;
   }
   oldins = ins;
}
/* This method is used to display the final result to the page in the form of dropdown.*/
function addWord(word,urlFragment)
{  
  var valu = document.getElementById("autocomplete").value;
   var sp = document.createElement("div");
   var anchor = document.createElement("a");
   var url = base_url+'search?q='+encodeURIComponent(urlFragment);
       anchor.setAttribute('href',url);
       anchor.setAttribute('class',"anchorHighlight");
       anchor.setAttribute('onclick',"setValue("+urlFragment+")");
   var regEx = new RegExp(valu, "ig");   
   var tempValu='<span class="highlight">'+ valu +'</span>'; /* In order to highlight the enterd text by user */
     word = word.replace(regEx, tempValu);
     anchor.innerHTML= word;
     sp.appendChild(anchor);
     sp.onmouseover = mouseHandler;
     sp.onmouseout = mouseHandlerOut;
     sp.onclick = mouseClick;
   outp.appendChild(sp);
}
function clearOutput()
{
  while (outp.hasChildNodes())
  {
    noten=outp.firstChild;
    outp.removeChild(noten);
  }
   posi = -1;
}

function setColor (_posi, _color, _forg)
{
   outp.childNodes[_posi].style.background = _color;
   outp.childNodes[_posi].style.color = _forg;
}
function keygetter(event)
{
  if (!event && window.event) 
      event = window.event;
  if (event)
      key = event.keyCode;
  else
      key = event.which;
}
function keyHandler(event)
{
  if (document.getElementById("search").style.visibility == "visible")
  {
     var textfield = document.getElementById("autocomplete");
     if (key == 40)//key down
     { 
        if (words.length > 0 && posi <= words.length-1)
        {
          if (posi >=0)
            setColor(posi, "#fff", "black");
          else 
             input = textfield.value;
             setColor(++posi, "blue", "white");
             textfield.value = outp.childNodes[posi].firstChild.nodeValue;
        }
      }
      else if (key == 38)
      { //Key up
        if (words.length > 0 && posi >= 0)
         {
           if (posi >=1)
           {
              setColor(posi, "#fff", "black");
              setColor(--posi, "blue", "white");
              textfield.value = outp.childNodes[posi].firstChild.nodeValue;
           }
           else
           {
              setColor(posi, "#fff", "black");
              textfield.value = input;
              textfield.focus();
              posi--;
           }
         }
        }
         else if (key == 27)
         { // Esc
            textfield.value = input;
            setVisible("hidden");
            posi = -1;
            oldins = input;
          }
          else if (key == 8) 
          { // Backspace
            posi = -1;
            oldins=-1;
          } 
              }
   }
    var mouseHandler=function()
    {
      for (var i=0; i < words.length; ++i){
        setColor (i, "white", "black");       
      }
      //this.style.background = "blue";
      this.style.color= "white";
     };
     var mouseHandlerOut=function()
     {
       this.style.background = "white";
       this.style.color= "black";
     };
     var mouseClick=function()
     {
        document.getElementById("autocomplete").value = this.firstChild.nodeValue;
        setVisible("hidden");
        posi = -1;
        oldins = this.firstChild.nodeValue;
     };
  }
  

function searchTrigger(){
    var val = document.getElementById('autocomplete').value;
    if(val.length >= 3){
     window.location = base_url+'search?q='+ val;
    }
    
  }

function setValue(value){
  document.getElementById('autocomplete').value = value;
}