﻿// aspx   AutoComplete 
var menuFocusIndex;
function getDivPosition( obj )//获取位置信息 新div的
{ 
	var top = 0,left = 0;
	do 
	{
		top += obj.offsetTop;
		left += obj.offsetLeft;
	}
	while ( obj = obj.offsetParent );      
	var arr = new Array();      
	arr[0] = top;
	arr[1] = left;       
	return arr;    
}

function $(id)
{
	return document.getElementById(id);
}


function SelectKeywords(text,nameSpace,type,selltype,Method)
{	
	var e=getEvent().keyCode;
	text=text.trim();
	if(text!="")
	{
		if(e!=40&&e!=38&&e!=13)
		{
			SearchList(text,nameSpace,type,selltype,Method);	
		}
		else
		{
			KeysUpDown(e);
		}
	}
	else
	{		
		if(document.getElementById("div_Buildings")!=null)
		{
			document.getElementById("div_Buildings").style.display="none";
		}
	}
}

function SearchList(text,nameSpace,type,selltype,Method)
{
	nameSpace.GetSearchList(text,type,selltype,Method);
}

function BindKeywords(response)
{
	if(response!=null)
	{
		var ds=response.value;
		if(ds!=null&&typeof(ds)=="object"&&ds.Tables!=null)
		{
			var div=$("div_Buildings");
			if(div==null)
			{
				var tb_keys=($("tb_keys")==null?$("tb_Name"):$("tb_keys"));
				
				createMenu(tb_keys,"div_Buildings");
				div=$("div_Buildings");
			}
			var innertext="";
			for(var i=0;i<ds.Tables[0].Rows.length;i++)
			{
				var name=ds.Tables[0].Rows[i].ki_words;
				innertext+="<table class=\"table1\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" id=\"menuItem"+(i+1)+"\" onmouseover=\"forceMenuItem( "+(i+1)+");\" width=\"100%\" onclick=\"givNumber("+(i+1)+",1)\"><tr><td id=\"td_Text"+(i+1)+"\" align=\"left\">" + name + "</td></tr></table>";
			}
			menuFocusIndex=0;
			if(innertext!="")
			{
				div.style.display="";
				div.innerHTML=innertext;
				//div.innerHTML+='<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" style="color:#000000;font-size:12px;"><tr><td style=\"text-align:right;color:blue\"><a onclick="hide()">关闭</a></td></tr></table>';
			}			
			else
			{
				div.style.display="none";
			}
		}
	}
}

function createMenu( textBox, menuid )//创建新div
{ 
	if( document.getElementById( menuid ) == null )
	{
		var left_new=getDivPosition( textBox )[1]
		var top_new=getDivPosition( textBox )[0];          
		var newControl = document.createElement("div"); //创建层      
		newControl.id = menuid;        
		document.body.appendChild( newControl );       
		newControl.style.position = "absolute"; 
		newControl.style.border = "solid 1px #000000";
		newControl.style.backgroundColor = "#FFFFFF";
		newControl.style.width = textBox.clientWidth +2+ "px"; //绝对宽度
		newControl.style.left = left_new + 1 + "px";           //位置
		newControl.style.zIndex = 1;
		newControl.style.top = (top_new + textBox.clientHeight ) + "px";  //注意，将此高度加2是为了解决JS出现的非自然因素…        
		return newControl;
	}
	else
	{
		return document.getElementById( menuid );
	}
}

function KeysUpDown(keyNumber)
{			
	if($("div_Buildings")!=null&&$("div_Buildings").style.display=="")
	{
		if(keyNumber =='40') //向下 
		{
			if(menuFocusIndex == 10)
			{
				return true;
			}
			else if (menuFocusIndex == null) //当焦点在文本框中间时，按向下跳到第一个主体。
			{
				forceMenuItem( 1 );
				givNumber(1,0);
			}
			else
			{
				forceMenuItem( menuFocusIndex+1 ); //焦点增加1
				givNumber(menuFocusIndex,0);
			} 
		}
		else if(keyNumber == '38')//向上
		{
			if(menuFocusIndex == 1)
			{
				forceMenuItem(menuFocusIndex-1); //当焦点在第一个主体时，按向上让它回到文本框。
			}
			else
			{
				forceMenuItem(menuFocusIndex-1); //焦点减少1
				givNumber(menuFocusIndex,0);
			} 

		}
		if(keyNumber =='13')
		{
			if(menuFocusIndex==null||menuFocusIndex==0)
			{
				return false;
			}
			else
			{
				hide();
			}
		}
	}
}

function givNumber(index,type)
{
	var text=document.getElementById("td_Text"+index).innerHTML;
	var tb_keys=($("tb_keys")==null?$("tb_Name"):$("tb_keys"));
	tb_keys.value=text;
	if(type==1)
	{
		$("div_Buildings").style.display="none";
	}
}

function forceMenuItem(index)
{
	var lastMenuItem = document.getElementById( "menuItem" + menuFocusIndex )
	if ( lastMenuItem != null )
	{
		//将上一个变白
		lastMenuItem.style.backgroundColor="white";       
		lastMenuItem.className = "table1";
	}
	var menuItem = document.getElementById( "menuItem" + index );
	if ( menuItem == null )
	{
	    var tb_keys=($("tb_keys")==null?$("tb_Name"):$("tb_keys"));
		tb_keys.focus(); 
	}
	else 
	{
		menuItem.style.backgroundColor = "#5555CC";
		menuItem.className = "table2";
		menuFocusIndex = index;
	}
}

function hide()
{
	document.getElementById("div_Buildings").style.display="none";
}

String.prototype.trim= function()  
{   
	return this.replace(/(^\s*)|(\s*$)/g, "");  
}

function getEvent() //同时兼容ie和ff的写法
{  
    if(document.all)   
    {
        return window.event;     //如果是IE，直接返回大家熟悉的event
    }
    func=getEvent.caller;  // getEvent为函数名

    //一直循环判断有没有拿到事件，没有再找上一个Caller，知道找到事件（对应IE的event） 

    while(func!=null)
    {  
        var arg0=func.arguments[0];
        if(arg0)
        {
            if((arg0.constructor==Event  || arg0.constructor ==MouseEvent)  || (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)) //判断是不是事件绿色部分为事件名，具体情况具体分析，比如键盘事件就是KeybroadEvent
            {  
                return arg0; //返回事件
            }
        }
        func=func.caller; //上一个Caller
    }
    return null;
}
