﻿        var TimeOut = 200;
    
        var lastKeyPress = new Date();
        
        var arrAutocompleteText = {};
        var arrAutocompleteID = {};
        var arrSelectedItems = {};
        var arrItemMax = {};
        
        String.prototype.trim = function() 
        {
	        return this.replace(/^\s+|\s+$/g,"");
        }
        
        function AutocompleteKeyPress(elementName, url, e)
        {
        
            if(e.which == 40) 
            {
                if(arrSelectedItems[elementName] < arrItemMax[elementName])
                {
                    if(arrSelectedItems[elementName] > 0)
                    {
                        AutocompleteDehighlight(elementName, arrSelectedItems[elementName]);
                    }
                

                    arrSelectedItems[elementName] = arrSelectedItems[elementName] + 1;

                    AutocompleteHighlight(elementName, arrSelectedItems[elementName]); 
                }

            }
            else if (e.which == 38 )
            {
                if(arrSelectedItems[elementName] > 1)
                {
                    AutocompleteDehighlight(elementName, arrSelectedItems[elementName]);

                    arrSelectedItems[elementName] = arrSelectedItems[elementName] - 1;

                    AutocompleteHighlight(elementName, arrSelectedItems[elementName]); 
                }
            }
            else if (e.which == 13)
            {
                AutocompleteSelect(elementName, arrSelectedItems[elementName]);
            }
            else
            {

                var tempString = new String(url);
                
                if(document.getElementById(elementName).value.length > 2)
                {
                
                    tempString = tempString.replace(/###QUERY/,document.getElementById(elementName).value);
                    url = tempString.replace(/###ELEMENT/, elementName);
                    
                    setTimeout("AutocompleteDoQuery('" + url + "')",200);
                }
                else
                {
                    document.getElementById(elementName + 'Results').style.display = "none";
                }
                
                document.getElementById('hid' + elementName).value = 0;
            }
        }
        
        function AutocompleteDoQuery(url)
        {
            returnfunction = AutocompleteReturned;
            loadurl(url);
        }
        
        function AutocompleteReturned(xml)
        {
            try //Internet Explorer
              {
                xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async="false";
                xmlDoc.loadXML(xml);
              }
            catch(e)
              {
                  try //Firefox, Mozilla, Opera, etc.
                  {
                    parser=new DOMParser();
                    xmlDoc=parser.parseFromString(xml,"text/xml");
                  }
                  catch(e)
                  {
                    alert(e.message);
                    return;
                  }
            }

            

                dropDownContent = '';
                items = 0;
                elementName = '';
                
                name = new String();
                ID = new String();
                
                for(var i = 0; i < xmlDoc.firstChild.childNodes.length; i++) 
                {              
                    if(xmlDoc.firstChild.childNodes[i].nodeName == "Element")
                    {
                       elementName = (xmlDoc.firstChild.childNodes[i].firstChild.nodeValue);
                    }
                }
                
                for(var i = 0; i < xmlDoc.firstChild.childNodes.length; i++)
                {              
                    if(xmlDoc.firstChild.childNodes[i].nodeName == "Item")
                    {
                    
                        items++;
                                                    
                        for(var j = 0; j < xmlDoc.firstChild.childNodes[i].childNodes.length; j++)
                        {
                            if(xmlDoc.firstChild.childNodes[i].childNodes[j].nodeName == 'Name')
                            {   
                                name = xmlDoc.firstChild.childNodes[i].childNodes[j].firstChild.nodeValue;
                                
                                name = name.trim();
                                                              
                                arrAutocompleteText[elementName + items] = name;
                                                                
                            }
                            
                            if(xmlDoc.firstChild.childNodes[i].childNodes[j].nodeName == 'ID')
                            {                                
                                ID = xmlDoc.firstChild.childNodes[i].childNodes[j].firstChild.nodeValue;                             
                                
                                ID = ID.trim();
                                
                                arrAutocompleteID[elementName + items] = ID;
                            }     
                                                   
                      
                        }
                        
                        
                        dropDownContent = dropDownContent + "<div class=\"controlRoundTextResult\" id=\"" + elementName + "Result" + items + "\" onmouseover=\"javascript:AutocompleteHighlight('" + elementName + "'," + items + ")\" onmouseout=\"javascript:AutocompleteDehighlight('" + elementName + "'," + items + ")\" onclick=\"javascript:AutocompleteSelect('" + elementName + "'," + items + ")\" >";
                        dropDownContent = dropDownContent + name;
                        dropDownContent = dropDownContent + "</div>";      
                                                    
                        arrSelectedItems[elementName] = 0;
                        
                    }
                    

                }
                
                arrItemMax[elementName] = items;
                
                if(items > 0)
                {                   
                    document.getElementById(elementName + 'Results').style.display = "block";
                    document.getElementById(elementName + 'Results').innerHTML = dropDownContent;
                }
                else
                {
                    document.getElementById(elementName + 'Results').style.display = "none";
                }
             

        }
        
        function AutocompleteHighlight(element, item)
        {
            arrSelectedItems[element] = item;
        
            document.getElementById(elementName + 'Result' + item).style.backgroundColor = '#3355ff';
            document.getElementById(elementName + 'Result' + item).style.color = '#ffffff';
        }
        
        function AutocompleteDehighlight(element, item)
        {
            document.getElementById(elementName + 'Result' + item).style.backgroundColor = '#ffffff';
            document.getElementById(elementName + 'Result' + item).style.color = '#333333';
        }
        
        function AutocompleteSelect(element, item)
        {
            document.getElementById(elementName).value = arrAutocompleteText[element + item];
            document.getElementById(elementName + 'Results').style.display = "none";
            document.getElementById('hid' + elementName).value = arrAutocompleteID[element + item];
        }