﻿var AutoComplete_XMLHttpRequest = null;
var AutoComplete_Control = null;

/*** Start Global Configuration ***/
AutoComplete.prototype.Width			        = 0;	
AutoComplete.prototype.Height			        = 220;				
AutoComplete.prototype.LineHeight			    = 23;
AutoComplete.prototype.Top		                = 0;		
AutoComplete.prototype.Left		                = 0;	
AutoComplete.prototype.Position			        = "absolute";
AutoComplete.prototype.Cursor		            = "pointer";
AutoComplete.prototype.Overflow			        = "auto";									
AutoComplete.prototype.BackgroundColor	        = "Snow";		
AutoComplete.prototype.Color			        = "#6a6a6a";
AutoComplete.prototype.HighLightBackgroundColor	= "#75c5f0";		
AutoComplete.prototype.HighLightColor			= "White";
AutoComplete.prototype.FontFamily			    = "Verdana";
AutoComplete.prototype.FontSize			        = "12px";
AutoComplete.prototype.BorderColor		        = "#75c5f0";
AutoComplete.prototype.BorderWidth		        = "1px";	
AutoComplete.prototype.BorderStyle              = "solid";
AutoComplete.prototype.BorderTopWidth		    = "0px";
AutoComplete.prototype.AutoCompleHandlerURL		= "CAPTCHA/AutoComplete.ashx";
AutoComplete.prototype.StoreKeywordURL		    = "CAPTCHA/StoreKeyword.ashx";
AutoComplete.prototype.RowWidth		            = 0;
AutoComplete.prototype.Object		            = null;
AutoComplete.prototype.NodeNumber = 0;
AutoComplete.prototype.MaximumNodes = 0;

/*** End Global Configuration ***/


AutoComplete.prototype.UnSetColor = function(obj)
{
    obj.style.backgroundColor = this.BackgroundColor;
    obj.style.color = this.Color;
};

AutoComplete.prototype.SetColor = function(obj,NodeNumber)
{    
    if(this.NodeNumber!=0)
    {  
        if(obj.parentNode.childNodes[this.NodeNumber-1])
        {
            this.UnSetColor(obj.parentNode.childNodes[this.NodeNumber-1]);
        }
    }  
    obj.style.backgroundColor = this.HighLightBackgroundColor;
    obj.style.color = this.HighLightColor;     
    this.NodeNumber = Number(NodeNumber); 
    
};

AutoComplete.prototype.SetValue = function(obj)
{
    document.getElementById(AutoComplete_Control.replace("_div","")).value = obj.childNodes[0].childNodes[0].childNodes[0].childNodes[0].innerHTML;        
};
 

function AutoComplete() 
{
    
}	

AutoComplete.prototype.Fill = function(objTextBox, event, Object) 
{         
    if(event.keyCode == 40)
    {   
        this.MaximumNodes = document.getElementById(objTextBox.id + "_div").childNodes.length;
        this.NodeNumber = this.NodeNumber + 1; 
        
        if(this.NodeNumber == 1)
        {    
            this.SetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-1],this.NodeNumber);               
            this.SetValue(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-1]);                             
        }
        else if(this.NodeNumber > this.MaximumNodes)
        {     
            this.UnSetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-2]);
            this.NodeNumber = 0;
        }
        else if(this.NodeNumber>1  &&  this.NodeNumber <= this.MaximumNodes)
        {    
            this.UnSetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-2]);
            this.SetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-1],this.NodeNumber);
            this.SetValue(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-1]);           
        }
        
        return false;
    }
    if(event.keyCode == 38)
    {   
        this.MaximumNodes = document.getElementById(objTextBox.id + "_div").childNodes.length;
        if(this.NodeNumber == 1)
        {   
            this.UnSetColor(document.getElementById(objTextBox.id + "_div").childNodes[0]);            
            this.NodeNumber = this.NodeNumber -1;               
        }        
        else if(this.NodeNumber>1  &&  this.NodeNumber <= this.MaximumNodes)
        {            
            this.UnSetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-1]);
            this.SetColor(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-2],this.NodeNumber);             
            this.SetValue(document.getElementById(objTextBox.id + "_div").childNodes[this.NodeNumber-2]);            
            this.NodeNumber = this.NodeNumber - 1;  
        }        
        return false;
    }
    this.NodeNumber = 0;   
    if(event.keyCode==13)
    {                 
        return false;
    }
     
    this.Object = objTextBox.getAttribute("onkeyup").toString(); 
       
    if(window.Event)
    {        
        this.Object = this.Object.split(".")[0];       
    }
    else
    {        
        if(this.Object.lastIndexOf("{")== -1)
        this.Object = this.Object.split(".")[0];
        else
        this.Object = this.Object.split("{")[1].split("}")[0].split(".")[0];        
    }
    
    if(Object!="" && Object!=null)   
    this.Object = Object;
    var obj = objTextBox;
    var objDiv = null;
    var ControlID = objTextBox.id + "_div";
    if(objTextBox.value!= "")
    {
        if(document.getElementById(ControlID))
        this.SearchResult(objTextBox.value,ControlID);
        else
        {            
            objDiv = document.createElement("div");
            objDiv.setAttribute("id",ControlID);            
            var ActualTop = this.Top + 25;            
            var ActualLeft = this.Left + 1;
            var ActualWidth = this.Width;
            if(objTextBox.style.width=="99%")
            {
                ActualWidth = ActualWidth+10;
                ActualTop = ActualTop +1;
            }
            else
                ActualWidth = ActualWidth + Number(objTextBox.style.width.replace("px","")) + 8;
                
            this.RowWidth = (ActualWidth -80)/7;
            while(obj)
            {
	            ActualLeft+= obj.offsetLeft;
	            ActualTop+= obj.offsetTop;
	            obj= obj.offsetParent;
            }
            //if(navigator.appName == "Microsoft Internet Explorer")
            //objDiv.style.height = this.Height + "px";
            //else
            //objDiv.setAttribute("style","max-height:" + this.Height + "px;");            
            objDiv.style.width = ActualWidth + "px";
            objDiv.style.top = ActualTop + "px";
            objDiv.style.left = ActualLeft + "px";
            objDiv.style.backgroundColor = this.BackgroundColor;
            //objDiv.style.overflow = this.Overflow;
            objDiv.style.position = this.Position;
            objDiv.style.fontFamily = this.FontFamily;
            objDiv.style.fontSize = this.FontSize;
            objDiv.style.color = this.Color;
            objDiv.style.cursor = this.Cursor;
            objDiv.style.borderColor =  this.BorderColor;
            objDiv.style.borderWidth = this.BorderWidth;
            objDiv.style.borderStyle = this.BorderStyle;
            objDiv.style.borderTopWidth = this.BorderTopWidth;
            document.body.appendChild(objDiv);            
            this.SearchResult(objTextBox.value,ControlID);            
            document.onclick = function(){if(document.getElementById(ControlID)) document.body.removeChild(document.getElementById(ControlID));};
        }
    }
    else
    {
        if(document.getElementById(ControlID))
        document.body.removeChild(document.getElementById(ControlID));
    }
     
};

AutoComplete.prototype.SearchResult = function(Keyword, ControlID)
{    
    if (window.XMLHttpRequest)
    AutoComplete_XMLHttpRequest = new XMLHttpRequest();
    else if (window.ActiveXObject)
    AutoComplete_XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    if (AutoComplete_XMLHttpRequest!=null)
    {
         var MethodType = "GET";
         if(navigator.appName == "Microsoft Internet Explorer")
         {
            MethodType = "POST";
         }
         AutoComplete_Control = ControlID;
         AutoComplete_XMLHttpRequest.onreadystatechange = this.SearchResult_Change;
         AutoComplete_XMLHttpRequest.open(MethodType,this.AutoCompleHandlerURL + "?Keyword=" + Keyword + "&Object=" + this.Object+"&Size="+this.RowWidth, true);
         AutoComplete_XMLHttpRequest.send(null);                  
    }    
};

AutoComplete.prototype.SearchResult_Change = function()
{
    if (AutoComplete_XMLHttpRequest.readyState==4)
    {
        if (AutoComplete_XMLHttpRequest.status==200)
        {  
            //if(AutoComplete_XMLHttpRequest.responseText!= "<div  style=\"padding-left:5px;padding-right:5px;float:right;height:10px;\" ><a href='#'>close</a></div>")
            //{
                document.getElementById(AutoComplete_Control).innerHTML = AutoComplete_XMLHttpRequest.responseText;             
                //document.getElementById(AutoComplete_Control).style.height =  document.getElementById(AutoComplete_Control).childNodes.length*23 + "px";
                //document.getElementById(AutoComplete_Control).style.display = "block";
           // }
            //else
            //{
            //    document.getElementById(AutoComplete_Control).style.display = "none";
            //}
        }
    }
};

AutoComplete.prototype.StoreKeyword = function(Keyword)
{    
    if (window.XMLHttpRequest)
    AutoComplete_XMLHttpRequest = new XMLHttpRequest();
    else if (window.ActiveXObject)
    AutoComplete_XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    if (AutoComplete_XMLHttpRequest!=null)
    {         
         var MethodType = "GET";
         if(navigator.appName == "Microsoft Internet Explorer")
         {
            MethodType = "POST";
         }
         AutoComplete_XMLHttpRequest.onreadystatechange = this.StoreKeyword_Change;
         AutoComplete_XMLHttpRequest.open(MethodType,this.StoreKeywordURL + "?Keyword=" + Keyword, true);
         AutoComplete_XMLHttpRequest.send(null);                          
    }    
};

AutoComplete.prototype.StoreKeyword_Change = function()
{
    if (AutoComplete_XMLHttpRequest.readyState==4)
    {
        if (AutoComplete_XMLHttpRequest.status==200)
        {
         
        }
    }
};

