﻿

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(divName) != null) {

        if (divName != (divName)) {
            document.getElementById(divName).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(newCurrentDiv) != null)
    {
        document.getElementById(newCurrentDiv).className = 'search-box-item';
    }
    currentDiv = 0;
}



function searching(objectname, searchboxname, holdername, user)
{

    if(!masterOverride){
        document.getElementById(holdername).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(holdername).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 9:

                   // Tab
                   if (user == 'true') {
                       var selectedDiv = document.getElementById('HoldingDiv_u' + (currentDiv).toString());
                       if (selectedDiv != null && selectedDiv.className == 'search-box-item-selected')
                       {
                           var newUser = selectedDiv.getAttribute("urlpath");
                           document.location.href = newUser;
                       }
                       document.getElementById(searchboxvar).focus();
                   }

                   break;

               case 13:

                   // Enter
                   if (user == 'true') {


                       var selectedDiv = document.getElementById('HoldingDiv_u' + (currentDiv).toString());

                       if (selectedDiv != null && selectedDiv.className == 'search-box-item-selected') {

                           var newUser = selectedDiv.getAttribute("urlpath");

                           document.location.href = newUser;
                       }


                       document.getElementById(searchboxvar).focus();

                   } else {
                       var selectedDiv = document.getElementById('HoldingDiv_n' + (currentDiv).toString());

                       if (selectedDiv != null && selectedDiv.className == 'search-box-item-selected') {

                           var newUser = selectedDiv.getAttribute("urlpath");

                           document.location.href = newUser;
                       }
                       else {

                           __doPostBack('QuickSearch', '');
                       }
                   }

                   //__doPostBack('QuickSearch', '');

                   break;
               case 27:
                   runSearch = false;
                   firstItem = true;
                   if (user == 'true') {
                       document.getElementById('HoldingDiv_u' + (currentDiv).toString()).className = 'search-box-item';
                   }
                   else {
                   document.getElementById('HoldingDiv_n' + (currentDiv).toString()).className = 'search-box-item';
                   
                   }
                   currentDiv = 0;
                   selectionMode = false;

           }
       }
}
}


var timerobject = null;

function startSearch(objectname, searchboxname, holdername, user, objecttype, objectid)
{



    if(!masterOverride){
    
       if(runSearch){
      
    
    loadingboxname = objectname;
    searchboxvar = searchboxname;
    
    
    
    if(timerobject != null)
    {
        window.clearTimeout(timerobject);
    }



    searching(objectname, searchboxvar, holdername, user);
    
    // __doPostBack('header$SearchPanel1$SearchUpdate','');  document.getElementById('" + loadingboxname + "').innerHTML = '<div class=\"search-box-item\"><img src=\"images/ajaxloader.gif\"/><div>Searching</div></div>'


    var doSearchString = "doAjaxSearch(" + user + "," + objecttype + "," + objectid + ")";


    timerobject = setTimeout(doSearchString, 400);
    }
    else
    {

        var holdingDivApp = "_n";

        if (user == 'true') {
            holdingDivApp = "_u";
        }
        
        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' + holdingDivApp + (currentDiv + 1).toString()).className = 'search-box-item';
            document.getElementById('HoldingDiv' + holdingDivApp + (currentDiv).toString()).className = 'search-box-item-selected';
            //urlpath
               
            
            
            
            moveType = 0;
        
        }
        else if(moveType == 2) //Down Key Pressed
        {
        
            if(firstItem)
            {
                firstItem = false;

                document.getElementById('HoldingDiv' + holdingDivApp + '0').className = 'search-box-item-selected';
                currentDiv = currentDiv - 1;
            }
            else
            {
                if (document.getElementById('HoldingDiv' + holdingDivApp + (currentDiv).toString()) != null)
                {
                    document.getElementById('HoldingDiv' + holdingDivApp + (currentDiv).toString()).className = 'search-box-item-selected';
                }
                else
                {
                    currentDiv = currentDiv - 1;
                }
                if (document.getElementById('HoldingDiv' + holdingDivApp + (currentDiv - 1).toString()) != null)
                {
                    document.getElementById('HoldingDiv' + holdingDivApp + (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(user, objecttype, objectid)
    {
        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) + '&user=' + user + "&objecttype=" + objecttype + "&objectid=" + objectid;
                
                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);

                firstItem = true; currentDiv = 0; mouseMode = false;
                
                }
              }
        else
          {
          alert("Your browser does not support XMLHTTP.");
          }
    }

    function encodeMyHtml(value) {
        var encodedHtml = escape(value);
        encodedHtml = encodedHtml.replace('/\//g', "%2F");
        encodedHtml = encodedHtml.replace('/\?/g', "%3F");
        encodedHtml = encodedHtml.replace('/=/g', "%3D");
        encodedHtml = encodedHtml.replace('/&/g', "%26");
        encodedHtml = encodedHtml.replace('/@/g', "%40");
        return encodedHtml;
    } 

    
   function state_Change()
    {
    if (xmlhttp.readyState==4)
      {// 4 = "loaded"
      if (xmlhttp.status==200)
        {
            //Data retrieved - use.
            if (xmlhttp.responseText.indexOf('<!--LOGINPAGE-->') != -1) {
                document.location.href = 'login.aspx?redirect=' + encodeMyHtml(parent.document.URL);
            } else {
                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>';
        }
      }
    }
    




