﻿

var loadingboxname = null;
var searchboxvar = null;
var xmlhttp;
var masterOverride = false;
var runSearch = true;
var moveType = 0;
var currentDiv = 0;
var firstItem = false;
var selectionMode = false;
var mouseMode = false;

function setOver(divName, divNumber)
{
    if(document.getElementById('HoldingDiv' + (currentDiv).toString()) != null)
    {
   
        if(divName != ("HoldingDiv" + (currentDiv.toString())))
        {
            document.getElementById('HoldingDiv' + (currentDiv).toString()).className = 'search-box-item';
        }
        else
        {
            currentDiv = 0;
        }
    
        currentDiv = divNumber;
    
        document.getElementById(divName).className = 'search-box-item-selected';
   }
    
    mouseMode = true;
    runSearch = false;
    selectionMode = false;
}


function setOut(newCurrentDiv)
{
    selectionMode = true;
    mouseMode = false;
    firstItem = true;
    if(document.getElementById('HoldingDiv' + newCurrentDiv) != null)
    {
        document.getElementById('HoldingDiv' + newCurrentDiv).className = 'search-box-item';
    }
    currentDiv = 0;
}



function searching(objectname, searchboxname)
{

    if(!masterOverride){
    document.getElementById('searchboxholder').style.visibility = 'visible';
    document.getElementById(objectname).innerHTML = '<div class="search-box-item">User Typing</div>';
    loadingboxname = objectname;
    searchboxvar = searchboxname;
      
    if(document.getElementById(searchboxvar).value == '' || document.getElementById(searchboxvar).value.length < 3)
    {
        document.getElementById('searchboxholder').style.visibility = 'hidden';
    }

    firstItem = true;
    runSearch=true;
    currentDiv = 0;
    
       var ac = this;
       this.textbox = document.getElementById(searchboxvar);
       this.textbox.onkeydown = function( e ) {
        e = e || window.event;
        switch( e.keyCode ) {
            case 38: //Up Key Pressed
                runSearch = false;
                moveType = 1;
                currentDiv = currentDiv - 1;
                selectionMode = true;
                break;
            case 40: //Down Key Pressed
                runSearch = false;
                moveType = 2;
                currentDiv = currentDiv + 1;
                selectionMode = true;
                break;
           case 13:
                 //We do not want to do anything as this is handles by .Net in a asyncronous postback.
                 break;
           case 27:
                 runSearch = false;
                 firstItem = true;
                 document.getElementById('HoldingDiv' + (currentDiv).toString()).className = 'search-box-item';
                 currentDiv = 0;
                 selectionMode = false;
                 
        }
    }
}
}


var timerobject = null;

function startSearch(objectname, searchboxname)
{



    if(!masterOverride){
    
       if(runSearch){
      
    
    loadingboxname = objectname;
    searchboxvar = searchboxname;
    
    
    
    if(timerobject != null)
    {
        window.clearTimeout(timerobject);
    }
    
    

    searching(objectname, searchboxvar);
    
    // __doPostBack('header$SearchPanel1$SearchUpdate','');  document.getElementById('" + loadingboxname + "').innerHTML = '<div class=\"search-box-item\"><img src=\"images/ajaxloader.gif\"/><div>Searching</div></div>'
    
    timerobject = setTimeout("doAjaxSearch()",400);
    }
    else
    {
    
        var ac = this;
        this.textbox     = document.getElementById(searchboxname);
        this.div         = document.getElementById('MainContent');
        this.list        = this.div.getElementsByTagName('div');
        this.pointer     = null;
    
        if(selectionMode && mouseMode != true)
        {
    
        //The current div should never be set to anything below 0 however just to ensure that this is the case lets do a quick check
        if(currentDiv < 0)
        {
            currentDiv = 0;
        }
    
        if(moveType == 1) //Up Key Pressed
        {
            
           
                document.getElementById('HoldingDiv' + (currentDiv + 1).toString()).className = 'search-box-item';                
                document.getElementById('HoldingDiv' + (currentDiv).toString()).className = 'search-box-item-selected';
            //urlpath
               
            
            
            
            moveType = 0;
        
        }
        else if(moveType == 2) //Down Key Pressed
        {
        
            if(firstItem)
            {
                firstItem = false;
                document.getElementById('HoldingDiv0').className = 'search-box-item-selected';
                currentDiv = currentDiv - 1;
            }
            else
            {
                if(document.getElementById('HoldingDiv' + (currentDiv).toString()) != null)
                {
                    document.getElementById('HoldingDiv' + (currentDiv).toString()).className = 'search-box-item-selected';
                }
                else
                {
                    currentDiv = currentDiv - 1;
                }
                if( document.getElementById('HoldingDiv' + (currentDiv - 1).toString()) != null)
                {            
                    document.getElementById('HoldingDiv' + (currentDiv - 1).toString()).className = 'search-box-item';                
                }
                else
                {
                    currentDiv = currentDiv - 1;
                }
            }
            
            
        
            //Since we have now prcessed out move type (Up or Down) we want to set it back to zero so that the next time a key is pressed     
            //it wont get mistaken for one of our navigation keys
            moveType = 0;
        }
    }
    
    //We have now processed out non-search action so we want to re-enable the search incase the next keypress is not one of our reserved keys.
    //If it is one of our reserved keys then we set the runSearch variable to false.
    runSearch = true;
    
    
        
    
        
    
    
    }
}



}

function urlDecode(str){
    str=str.replace(new RegExp('\\+','g'),' ');
    return unescape(str);
}
function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}

    
    function doAjaxSearch()
    {
        document.getElementById(loadingboxname).innerHTML = '<div class=\"search-box-item\"><img src=\"/images/ajaxloader.gif\"/><div>Searching</div></div>';
        xmlhttp=null;

        if (window.XMLHttpRequest)
          {// code for all new browsers
          xmlhttp=new XMLHttpRequest();
          }
        else if (window.ActiveXObject)
          {// code for IE5 and IE6
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
            if (xmlhttp!=null)
              {

                xmlhttp.onreadystatechange=state_Change;
                
                if(document.getElementById(searchboxvar).value.length > 2)
                {
                var params = "request=" + urlEncode(document.getElementById(searchboxvar).value);
                
                xmlhttp.open("POST", "/ajaxsearch.aspx", true); 
                //Send the proper header information along with the request
                xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xmlhttp.setRequestHeader("Content-length", params.length);
                xmlhttp.setRequestHeader("Connection", "close");
                
                xmlhttp.send(params);
                }
              }
        else
          {
          alert("Your browser does not support XMLHTTP.");
          }
    }
    
   function state_Change()
    {
    if (xmlhttp.readyState==4)
      {// 4 = "loaded"
      if (xmlhttp.status==200)
        {
            //Data retrieved - use.
            
            document.getElementById(loadingboxname).innerHTML = xmlhttp.responseText;
        }
      else
        {
        //alert("Problem retrieving XML data");
        document.getElementById(loadingboxname).innerHTML = '<div class=\"search-box-item\"><div>Search Aborted</div></div>';
        }
      }
    }
    



