﻿// JScript File
var searchfield ;
var sugbox;
var hoveredSuggestion = -1;


var suggestions = new Array();
var searchValue;
var timeoutIndex=0;

//function stopRKey(evt) {
//  var evt = (evt) ? evt : ((event) ? event : null);
//  var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
//  if ((evt.keyCode == 13) 
//  && (node.id=="inputProductText")
//  )  
//  {return false;}
//}

//document.onkeypress = stopRKey; 

function Search(_event)
{
    clearTimeout(timeoutIndex);
    timeoutIndex = setTimeout("popupRelatedProducts("+_event+")", 400);
}

function popupRelatedProducts(kc)
{
    searchfield = document.getElementById("inputProductText");
    sugbox = document.getElementById("searchsuggestionsDiv");


    searchfield.onblur = function() {setTimeout(hideSugbox, 250);};
     searchfield.setAttribute('autocomplete', 'off');
     
    if(kc != 38 && kc != 40)// Not up arrow and down arrow
        searchValue = searchfield.value; // Save the current search field value

    if(searchfield.value != '' && kc != 13 && kc != 27 && kc != 38 && kc != 40) // Key code 13 is the enter key and 27 is the escape key
        {
            /*if(document.getElementById("byModelNumber").checked)
            {
                controls_ProductSearchControl.GetModelNumberList(searchfield.value, CallBack_GetModelNumberList); 
            }
            else
            {*/
                controls_ProductSearchControl.GetProductList(searchfield.value, CallBack_GetProductList); 
            //}
        }

    if((searchfield.value == '' || kc == 27) && sugbox.style.display == 'block')
        sugbox.style.display = 'none';
      
}


function CallBack_GetProductList(response)
{   
    suggestions = response.value;
    if(response.value!=null)
    {
        if(response.value.length == 0)
            hideSugbox();

        else
            showSugbox();
    }
}
function CallBack_GetModelNumberList(response)
{
    suggestions = response.value;
    if(response.value!=null)
    {
        if(response.value.length == 0)
            hideSugbox();

        else
            showSugbox(true);
    }
}


function showSugbox(isModelNumber)
{
     // Output the suggestions in HTML code
     sugbox.innerHTML = '';
     for (var i=0; i<suggestions.length; i++) 
     {
        //sugbox.innerHTML += '<a href="/search/?search=' + suggestions[i] + '" style="width:' + (searchfield.offsetWidth-6) + 'px;" onmouseover="hoverSuggestion(' + i + ')" class="searchsuggestions">' + suggestions[i] + '</a>';
        if(isModelNumber)
        {
            sugbox.innerHTML += '<a href=/SearchResult.aspx?ModelNumber='+EncodeSpace(suggestions[i])+' onmouseover="hoverSuggestion(' + i + ')" class="searchsuggestions" onclick="WriteToTextBox('+ i +')">' + suggestions[i] + '</a>';
        }
        else
        {
            sugbox.innerHTML += '<a href=/SearchResult.aspx?ProductName='+EncodeSpace(suggestions[i])+' onmouseover="hoverSuggestion(' + i + ')" class="searchsuggestions" onclick="WriteToTextBox('+ i +')">' + suggestions[i] + '</a>';
        }
     }
     // not required:
     //sugbox.style.top = (searchfield.offsetTop + searchfield.offsetHeight + 10) + 'px';
     //sugbox.style.left = searchfield.offsetLeft + 10 + 'px'
     //sugbox.style.width = (searchfield.offsetWidth *3) + 'px';

     sugbox.style.display = 'block';
}

function hideSugbox()
{
   sugbox.style.display = 'none';
}


function hoverSuggestion(sug) {

 for(var i=0; i<suggestions.length; i++)
  sugbox.getElementsByTagName('a')[i].className = 'searchsuggestions';

 if(sug != -1) {
  sugbox.getElementsByTagName('a')[sug].className = 'hoveredSsearchsuggestions';
  hoveredSuggestion = sug;
 }

}

function WriteToTextBox(i)
{
    searchfield.value = suggestions[i];
    hideSugbox();
}

function searchKeyDown(kc) 
{
     if(sugbox!=null)
     {
         if(sugbox.style.display == 'block') 
         {

              if(kc != 38 && kc != 40)
              {
                 hoveredSuggestion = -1;
              }

              if(kc == 38 && hoveredSuggestion != -1) 
              { // Key code 38 is the up arrow key
                   hoveredSuggestion--;
                   hoverSuggestion(hoveredSuggestion);
                   searchfield.value = suggestions[hoveredSuggestion];
                   searchValue = suggestions[hoveredSuggestion];
              }

              if(kc == 40 && hoveredSuggestion < suggestions.length-1) 
              { // Key code 40 is the down arrow key
                   hoveredSuggestion++;
                   hoverSuggestion(hoveredSuggestion);
                   searchfield.value = suggestions[hoveredSuggestion];
                   searchValue = suggestions[hoveredSuggestion];
              }

              if(kc == 38 && hoveredSuggestion == -1)
              {
                   searchfield.value = searchValue; // Recall the old search value
              }
          }
          
          if(kc == 13)
          {
               setTimeout("location.href='/SearchResult.aspx?ProductName='+EncodeSpace(searchfield.value);", 10);
          }  
      }
 } 



function SearchButtonClientClick()
{
    searchfield = document.getElementById("inputProductText");
    /*if(document.getElementById("byModelNumber").checked)
    {
        location.href='SearchResult.aspx?ModelNumber='+EncodeSpace(searchfield.value);
    }
    else
    {*/
        location.href='/SearchResult.aspx?ProductName='+EncodeSpace(searchfield.value);

    //}
    return false;
}
function EncodeSpace(name)
{
    name = name.replace(/ /g,"+");
    name = name.replace(new RegExp(/\//g), "^forwardSlash;");
    name = name.replace(/</g, "^lt;");
    name = name.replace(/>/g, "^gt;");
    return name;
}






