﻿             ////tbControlText.Attributes.Add("onkeydown", "if(event.keyCode==13){return(false);};");
                // if (!tbControlText.ReadOnly)
                //{
                ////tbControlText.Attributes.Add("onkeyup", "How2go.AutoComplete.Keyup(event.keyCode,'" + controlI + "','" + controlT + "','" + (byte)Ajax + "','" + lbAutoComplete.ClientID + "','" + imgAuto.ClientID + "'," + (!tbControlText.ReadOnly).ToString().ToLower() + ");");
                
                
//======================================================
//　　　　　　　　　     \\\|///                      
//　　　　　　　　　   \\　- -　//                   
//　   www.How2go.com  ( @ @ ) www.csharpbbs.com                    
//┏━━━━━━━━━oOOo-(_)-oOOo━━━┓          
//┃　　　　　　　　　　　　　　　　 　　┃
//┃　　　　　　　东 网 原 创 　　　　　 ┃
//┃　　　　美人草作品，请保留此信息！ 　┃
//┃　　　** csharpbbs@hotmail.com **    ┃
//┃　　　** How2go@hotmail.com **　   ┃
//┃　　　**   www.dituapi.com    **　   ┃
//┃　　　**    QICQ 351310701    **　   ┃
//┃　　　　　　　　　　　　　Dooo　     ┃
//┗━━━━━━━━━ oooD━-(　 )━━━┛
//　　　　　　　　　　 (  )　  ) /
//　　　　　　　　　　　\ (　 (_/
//　　　　　　　　　　　 \_)
//===========上海东网技术服务有限公司=============

Namespace.register("How2go.AutoComplete");
How2go.AutoComplete=
{
	Array:new Array()
	,
	$:function(id)
	{
		return document.getElementById(id);
	}
	,
	IE:(navigator.appVersion.match(/\bMSIE\b/)=='MSIE')	
	,
	Init:function(controlId,always,dis,drop)
	{
		var ctrl=this.$(controlId);
			if (null!=ctrl)
			{
				var display='block';
					if (!dis)
					{
						display='none';	
					}
				ctrl.setAttribute('autocomplete','off');
				this.Array[controlId]='';
				var width=parseInt(ctrl.offsetWidth)-6;
				var height=parseInt(ctrl.offsetHeight);
				var parentNode=ctrl.parentNode;
				var cj=0;
				if (!this.IE)
				{
					cj=-1;
				}
				var jl=(parseInt(parentNode.offsetHeight)-height)/2;
				var ch=(parseInt(parentNode.offsetHeight)-height)/2+parseInt(height)+cj;
				//alert(ch);
				var pdiv=this.Create(ctrl,parentNode,controlId+'.Parent','div','absolute',display,width,155,888,'',ch);
				//pdiv.innerHTML='abcd';
				pdiv.style.backgroundColor='#FFFFFF';
				pdiv.style.border='#B1C3D9 1px solid';
				pdiv.style.borderTop='0px';
				pdiv.style.overflow='hidden';
				pdiv.style.padding='2px';
		
						
				if (drop)
				{
					var img=new Image();
						img.setAttribute('id',controlId+'.Drop');
						img.setAttribute('width','17px');
						img.setAttribute('height','20px');
					//var dr=	this.Create(null,parentNode,controlId+'.Drop','img','fixed',true,17,20,0,20,'');
						if (display=='block')
						{
							img.src=How2go.Path+'/images/drop_over.gif';
						}
						else
						{
							img.src=How2go.Path+'/images/drop_hover.gif';
						}
							
						img.style.marginLeft='2px';
						img.style.marginTop=jl+'px';
						//img.style.position='absolute';
						img.style.cursor='pointer';
						parentNode.appendChild(img); 
						img.onmousedown=function()
						{
							How2go.AutoComplete.Drop(controlId);
						}
						//window.open(dr.src);
				}
				
				
				var w=parseInt(width)+9;
				var h=165;
				if (this.IE)
				{
					w=parseInt(width)+11;
					var h=175;
					var iframe=this.Create(null,pdiv,controlId+'.Iframe','iframe','absolute','block',(parseInt(width)+20),180,1,-4,-4);
				}
				
				pdiv.innerHTML +="<select size=\"10\" id=\""+controlId+".Select\" style=\" position:absolute; z-index:10;margin:-5px;margin-top:0px; width:"+w+"px; height:"+h+"px;\"></select>";
				var sel=this.$(controlId+'.Select');
				if (this.IE)
				{
					ctrl.onkeyup=function()
					{
						return How2go.AutoComplete.OnkeyDown(event,controlId);
					}
				}
				else
				{
					ctrl.onkeyup=function(event)
					{
						return How2go.AutoComplete.OnkeyDown(event,controlId);
					}

				}
				sel.onchange=function()
				{
					How2go.AutoComplete.Change(controlId);	
				}
				sel.ondblclick=function()
				{
					How2go.AutoComplete.Dblclick(controlId);	
				}
				if (!always)
				{
					pdiv.onmouseover=function()
					{
						How2go.AutoComplete.Show(controlId);
					}
					pdiv.onmouseout=ctrl.onmouseout=function()
					{
						How2go.AutoComplete.Hidden(controlId);
					}
				}
			}
	}
	,
	Get:function(id)
	{
		return 	this.$(id+'.Select');
	}
	,
	OnkeyDown:function(e,controlId)
	{
		var ctrl=this.$(controlId);
		if (null!=ctrl)
		{
			if (e.keyCode==13)
			{
				if (null!=ctrl.getAttribute('Post'))
				{
					eval(ctrl.getAttribute('Post'));	
				}
				this.Dblclick(controlId);
				return false;
			}
			else
			{
				var sel=this.Get(controlId);
				if (e.keyCode==40 || e.keyCode==38)
			{
				if (sel.length>0)
				{
					if (sel.options.selectedIndex==-1)
					{
						if (e.keyCode==38)//down
						{
						sel.options[sel.length-1].selected=true;
						}
						else
						{
						sel.options[0].selected=true;
						}
					}
					else
					{
						if (e.keyCode==40)//down
						{
							if (sel.options.selectedIndex<(sel.length-1))
							{
								sel.options[parseInt(sel.options.selectedIndex)+1].selected=true;
							}
						}
						else if (e.keyCode==38)//up 
						{
							if (sel.options.selectedIndex>0)
							{
								sel.options[parseInt(sel.options.selectedIndex)-1].selected=true;
							}
						}
					}
					this.Change(controlId);
					this.Show(controlId);
				}
				else
				{
					if (null!=ctrl.getAttribute('Ajax'))
					{
						if (this.Array[controlId]!=ctrl.value && ''!=ctrl.value)
						{
							eval(ctrl.getAttribute('Ajax'));	
						}
					}
					this.Array[controlId]=ctrl.value;
				}
			 }
			}
		}
		return true;
	}
	,
	Create:function(ctrl,parentNode,id,tagName,position,display,width,height,index,left,top)
    {
         var obj=this.$(id);
            if (null!=obj)
            {
                  obj.parentNode.removeChild(obj);
            }            
           // insertBefore，parentNode_

        obj = document.createElement(tagName); 		
        parentNode.insertBefore(obj,ctrl);       
        obj.style.display=display;          
        obj.setAttribute("id",id); 
        obj.setAttribute("unselectable","on");
        obj.style.position=position;
        obj.style.width=parseInt(width)+'px';  
        obj.style.height=parseInt(height)+'px';
        obj.style.zIndex=index;  
        if (top!='')
        {
            obj.style.marginTop=parseInt(top)+'px';
        }    
        if (left!='')
        {
            obj.style.marginLeft=parseInt(left)+'px';
        } 
        return obj;
    }
	,Drop:function(id)
	{
		var ctrl=this.$(id+'.Parent');
			if (null!=ctrl)
			{
				if (ctrl.style.display=='none')
				{
					this.Show(id);	
				}
				else
				{
					this.Hidden(id);	
				}
			}
	}
	,
	Show:function(id)
	{
		var node=this.$(id);
		if (null!=node)
		{
		var ctrl=this.$(id+'.Parent');
			if (null!=ctrl)
			{
				ctrl.style.display='block';
				var img=this.$(id+'.Drop');
					if (null!=img)
					{
						img.src=How2go.Path+'/images/drop_over.gif';
					}
			}
		}
	}
	,Hidden:function(id)
	{
		var ctrl=this.$(id+'.Parent');
		if (null!=ctrl)
		{
			ctrl.style.display='none';
				var img=this.$(id+'.Drop');
					if (null!=img)
					{
						img.src=How2go.Path+'/images/drop_hover.gif';
					}
		}
	}
	,
	Change:function(id)
	{
		var ctrl=this.$(id);
		if (null!=ctrl)
		{
			ctrl.focus();
			var sel=this.$(id+'.Select');
				if (sel.options.selectedIndex!=-1)
					{
						ctrl.value=sel.options[sel.options.selectedIndex].text;	
						if (null!=ctrl.getAttribute('Change'))
						{
							eval(ctrl.getAttribute('Change'));	
						}
					}
		}
	}
	,
	Dblclick:function(id)
	{
		var ctrl=this.$(id);
		if (null!=ctrl)
		{
			ctrl.focus();
			var sel=this.$(id+'.Select');
				if (sel.options.selectedIndex!=-1)
					{
						ctrl.value=sel.options[sel.options.selectedIndex].text;	
						if (null!=ctrl.getAttribute('Dblclick'))
						{
							eval(ctrl.getAttribute('Dblclick'));	
						}
					}
		}
		this.Hidden(id);
	}
	
}
