﻿    var liststr;        
	var strsplit = ",";
	var lists; 
    var obj;
    var suggestList = new Array();
    var selectIndex=-1;
	function GetClassName(objtxt,event)
	{
	   obj=objtxt;	   

	   if(event.keyCode==38||event.keyCode==40)
	   {
	     return false;
	   }
	   else 
	   {
	     suggestList=new Array();
	   	 setTimeout("SearchKeyWord()",1000);	   	   
	   } 
	}
	var request=null;
	function SearchKeyWord()
    {    
        var kw=document.getElementById("search_input").value;
        if(kw!="")
        {
            var ischinese=checkChinese(kw);//记录变量是否是汉字
            if(!ischinese)
            {
               if(kw.length < 2 || kw.length >12)//输入过少或过多
               return;
            }
            try  
            {// 根据浏览器的不同创建XMLHttpRequest对象   
                request = new XMLHttpRequest ();   
            } catch ( trymicrosoft )   
            {   
                try  
                {   
                    request = new ActiveXObject ( "Msxml2.XMLHTTP" );   
                } catch ( othermicrosoft )   
                {   
                    try  
                    {   
                        request = new ActiveXObject ( "Microsoft.XMLHTTP" );   
                    } catch ( failed )   
                    {   
                        request = false;   
                    }   
                }   
            }       

          if(request)
          {
             request.open("GET","/automatch.ashx?keywords="+encodeURI(kw)+"&chinese="+ischinese,true);
             request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
             request.onreadystatechange = handSearchRequest;  
             request.send(null); 
          }
        }
        else
        {       
           //document.getElementById("Skw").innerHTML="";       
        }   
 }
 function handSearchRequest() 
{ 
    if (request.readyState == 4 && request.status=="200") 
    {
        var objreques=request.responseText;
	        ShowSuggest(obj,'h6',objreques);   
    }
}
 
 //为string对象添加一个清除前后空格的属性
String.prototype.trim = function()
{
    return this.replace(new RegExp("(^[\\s]*)|([\\s]*$)", "g"), "");
};

//显示下拉信息
//objInputText：输入框的控件对象，distagname：显示符合条件的数据div的id名称，hitListValue：提示列表字符串
function ShowSuggest(objInputText,distagname,hitListValue)
{
    objInputText.onkeyup = ControlSuggest;    
    objInputText.onblur = RemoveSuggest;   
    var oldValue = objInputText.parentNode.getElementsByTagName(distagname)[0];
    var dateTableIndex=1; //数据表的索引，从0开始
	
	 if(hitListValue==null){
		hitListValue=""; 
	 }
	 suggestList=hitListValue.split(",");
	 
     CreateSuggest();//输入一个字时加载下拉框。
     
    //对提示框的控制
    function ControlSuggest()
    {        
            var theEvent=window.event||arguments.callee.arguments[0];
            var keycode = theEvent.keyCode;
             
            if(keycode == 40)
            {//向下
                ChangeSelection(false);
                return ;
            }
            
            if(CheckSuggest())
            {
                if(keycode==8)
                {
                 SearchKeyWord();
                }
                if(keycode == 38)
                {//向上
                    ChangeSelection(true);
                    return ;
                }
                
                if(keycode == 13)
                {//回车
                    RemoveSuggest();
                    return ;
                }
                
                if(keycode == 46)
                {//del
                    DeleteSuggest();
                    objInputText.value = oldValue.innerText;
                    oldValue.innerText = "";
                    return ;
                }
                
                if((keycode >= 16 && keycode <= 36) || (keycode >= 41 && keycode <= 47))
                {
                    return;
                }
            
            CreateSuggest();
        }
    }
    
    //删除提示前对文本做相关操作
    function RemoveSuggest()
    {
        if(CheckSuggest())
        {
            var panelSuggest = document.getElementById("divSuggestPanel");
            var ifrm=document.getElementById("suggest_iframe");
            if( function(){ CheckActiveElement(panelSuggest)} || event.keyCode == 13)
            {
                //var selectIndex = Number(inputIndex.value);
                if(selectIndex >= 0)
                {
                    var tb = panelSuggest.getElementsByTagName("table")[dateTableIndex];
                    if(tb)
                    {
                    try
                    {
                    objInputText.value = tb.rows[selectIndex].cells[0].title;
                    if(document.all)//判断浏览器
                    document.getElementById('search_submit').click();
                    else
                    {
                      var evt=document.createEvent("MouseEvents"); 
                      evt.initEvent("click",true,true); 
                      document.getElementById('search_submit').dispatchEvent(evt); 
                    }
                    }catch(Error){}
                    }
                }
            }
            else
            {
                objInputText.value = oldValue.innerText;
            }
            
            panelSuggest.style.display="none";
            ifrm.style.display="none";
            oldValue.innerText = "";         
        }
        else
        {
            return ;
        }        
    }
    
    //删除提示的方法，不对文本做任何操作
    function DeleteSuggest()
    {
        //if(CheckSuggest())
        //{
            var panelSuggest = document.getElementById("divSuggestPanel");
            var ifrm=document.getElementById("suggest_iframe");
            panelSuggest.style.display="none";
            ifrm.style.display="none";
        //}
    }
    
    //加载提示框
    function CreateSuggest()
    {
        //提示框存在，而且文本框值与上次的输入不同时，才进行下面的加载工作
        if(CheckSuggest())
        {
                DeleteSuggest();
        }
        
        if(CheckSuggest() && objInputText.value.trim().length ==0)
        {//提示框存在,但是文本框没有内容,这时删除提示框
            DeleteSuggest();
            oldValue.innerText = "";
            return ;
        }
        
        //如果输入为空格，就退出
        if(objInputText.value.trim().length == 0)
        {
            return ;
        } 
        
        //从数据源中取数据
        //var suggestList = GetSuggestList();
        
        if(typeof suggestList == "undefined"||hitListValue=="")
        {//对传入的数组进行判断，为空或者列表为0就退出
            DeleteSuggest();                                  //开始的输入有提示，后面的输入可能没有提示，所以数据源为空时要尝试删除提示
            oldValue.innerText = "";
            return ;
        }
        
        oldValue.innerText = objInputText.value;              //以上条件都符合，根据数据源来创建数据
        
        selectIndex=-1;
        var suggest = "";                                     //根据数据源来写div提示信息
        //suggest += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr bgcolor=\"#3C83C9\"><td align=left>&nbsp;<b><font color=white>请选择</font></b></td><td align=right><img src=\"closeimg.gif\"</td></tr></table>";
        suggest += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"display:none;\"><tr><td></td></tr></table>";
        suggest += "<table>";
        
        for(var nIndex = 0; nIndex < suggestList.length; nIndex++)
        {
            suggest += "<tr onmouseover=\" for(var n=0;n<this.parentNode.rows.length;n++){this.parentNode.rows[n].className='suggest_link';};this.className='suggest_link_over';\" onmouseout=\"this.className='suggest_link';\" onmousedown=\"selectIndex = this.rowIndex;\"><td title='"+suggestList[nIndex].split("|")[0]+"'>";
            suggest += "<span style=\"float:left;padding-left:2px\">"+fontColor(suggestList[nIndex].split("|")[0],document.getElementById("search_input").value)+"</span>";
            suggest += "<span style=\"float:right;padding-right:2px;color:#009933;\">约&nbsp;"+suggestList[nIndex].split("|")[1]+"结果</span></td></tr>";
        }
        suggest += "</table>";
        
        var panelSuggest=document.getElementById("divSuggestPanel");
        var ifrm=document.getElementById("suggest_iframe");//ifrm
        panelSuggest.style.display="block";
        panelSuggest.style.width = objInputText.clientWidth+5 + "px";      //设置对象的宽度，与文本框宽度相同
        panelSuggest.style.top =  (GetPosition()[0] + objInputText.offsetHeight + 1) + "px";
        panelSuggest.style.left = GetPosition()[1] + "px";
        panelSuggest.innerHTML = suggest;
        ifrm.style.display="block";
        ifrm.style.width=panelSuggest.offsetWidth;
        ifrm.style.height=panelSuggest.offsetHeight;
        ifrm.style.top=50+"px";
        ifrm.style.left=panelSuggest.offsetLeft;
        
    } 
    
    //更换选项
    function ChangeSelection(isup)
    {
        //按向下创建提示
        if(!CheckSuggest() && objInputText.value.trim().length !=0 && !isup)
        {//文本框有内容,提示不存在,向下
            CreateSuggest();
            return;
        }
                
        if(CheckSuggest())
        {
            var panelSuggest = document.getElementById("divSuggestPanel");          //得到提示框
            var tb = panelSuggest.getElementsByTagName("table")[dateTableIndex]; 
            var maxIndex = tb.rows.length - 1; 
            //var maxIndex = tb.rows.length;                                     //提示信息的最大索引
            var startIndex=0;
            if(isup)
            {//向上
                if(selectIndex >= startIndex)                                                //索引不能为负
                {
                    tb.rows[selectIndex].className = "suggest_link";
                    selectIndex--;
                    if(selectIndex >= startIndex)
                    {
                        tb.rows[selectIndex].className = "suggest_link_over";
                    }
                }
            }
            else
            {
                if(selectIndex < maxIndex)                                          //大于等于最大索引就不做任何操作
                {
                    if(selectIndex >= startIndex)
                    {
                        tb.rows[selectIndex].className = "suggest_link";
                    }
                    selectIndex++;
                    tb.rows[selectIndex].className = "suggest_link_over";
                }
            }
            
            //inputIndex.value = selectIndex;
            if(selectIndex >= startIndex)
            {
            try
            {
                objInputText.value = tb.rows[selectIndex].cells[0].title;
                }catch(Error){};
            }
            else
            {
                objInputText.value = oldValue.innerText;
            }
        }
        
    }
    
    //判断活动对象是否为obj对象的从属对象
    function CheckActiveElement(obj)
    {
        var isAe = false;
        var objtemp = document.activeElement;
        while(objtemp != null)
        {
            if(objtemp == obj)
            {
                isAe = true;
                break;
            }
            objtemp = objtemp.parentNode;
        }
        return isAe;
    }
    
    //检查提示框是否存在
    function CheckSuggest()
    {
        var panelSuggest = document.getElementById("divSuggestPanel");
        if(panelSuggest && panelSuggest.style.display=="none")
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    
    //获取文本框的位置
    function GetPosition()
    {
        var top = 0,left = 0;
        var obj = objInputText;
        do 
        {
            top += obj.offsetTop;         //距离顶部
            left += obj.offsetLeft;       //距离左边
        }
        while (obj = obj.offsetParent);
            //alert( left);
        var arr = new Array();
        arr[0] = top;
        arr[1] = left;
        return arr; 
    }
    
    //得到提示数据
    function GetSuggestList()
    {
        var intIndex=0;suggestList = new Array();
		
        var dataoptions = suggestListValue;
        var inputtxt = objInputText.value;
        for(var n = 0; n < dataoptions.length; n++)
        {
            if(dataoptions[n].indexOf(inputtxt) > -1)
            {
                suggestList[intIndex++] = dataoptions[n];
            }
        }
        return suggestList;
    }
  
}

function getAbsolutePosition(obj){//获取某个控件在body的绝对位置
   var position = new Object();
   var top = 0,left = 0;
   do 
	{
		top += obj.offsetTop;         //距离顶部
		left += obj.offsetLeft;       //距离左边
	}
	while (obj = obj.offsetParent);
		//alert( left);
   position.x = left;
   position.y = top;
   return position;
}

        function fontColor(value,words)
        {
            var strH = "";
            if (value != null && words)
            {
                strH = value;
                strH=strH.replace(words,"<font color=\"#009933\">" + words + "</font>");
            }
            return strH;
        }
        //判断是否是汉字
        function checkChinese(str)
        {
            var re=/^[\u4E00-\u9FA5\uF900-\uFA2D]*$/;
            if(re.test(str))
            {return true;}
            else{return false;}
        }