﻿// 搜索
var id;
var xmlHttp;
try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e)
{
    try{
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e2)
    {
        xmlHttp=false;
    }
}
if(!xmlHttp && typeof XMLHttpRequest!='undefined')
{
    xmlHttp=new XMLHttpRequest();
}
function callServerKey(post_src)//src:搜索请求路径
{
    var keys=document.getElementById("txtKeys").value;
    if(keys.length>0)
    {
       var url=post_src+"?keys="+escape(keys);
        xmlHttp.open("GET",url,true);
        xmlHttp.onreadystatechange=ShowList;
        xmlHttp.send(null);
    }
}
function ShowList()
{
    if(xmlHttp.readyState<4)
    {
        //代表检查尚未结束，继续等待
    }
    if(xmlHttp.readyState==4)
    {
        var info=xmlHttp.responseText;
        onEnterKey(info);//显示搜索结果
     }
}
function onFocus()
{
	var t=document.getElementById("txtKeys");
	if(t.value.substring(0,3)=="请输入")
	{
		t.value="";
	}
	document.getElementById("hdid").value="";
}
function onEnter(Post_Src,src,searchPage)//判断用户所按按键，决定是否提交搜索或者选择行,type=1：以cookie的形式提交查询，0以url形式提交查询
{
	var theEvent = window.event || arguments.callee.caller.arguments[0];
    var code = theEvent.keyCode || theEvent.which;
    var tbody = document.getElementById("tbKeyCodes");
    var curRowIndex = 0;
    if(code ==13)//回车则提交搜索
    {
        openSearch(src,searchPage);
    }
    else//判断用户选择的是上下选择键还是输入了文字
    {
	    if (tbody != null && tbody.rows.length >= 1)
	    {
	       var et = null;
	       for (var i = 0 ; i < tbody.rows.length ; i ++)
	       {
	           et = tbody.rows[i];
	           if (et.className=="suggest_link_over")
	           {
	                  curRowIndex = i;
	                  break;
	           }
	       }
	        if (code == 38)
	        { // 上箭头
	            tbody.rows[curRowIndex].className = "suggest_link";
	            if (curRowIndex == 0)
	            {
	                selectedRow(tbody.rows[tbody.rows.length-1])
	            }
	             else
	            {
	                 selectedRow(tbody.rows[curRowIndex - 1]);
	            }
	        }
	       else if (code == 40)
	       { // 下箭头
	            tbody.rows[curRowIndex].className = "suggest_link";
	            if (curRowIndex == tbody.rows.length-1)
	            {
	                 selectedRow(tbody.rows[0]);
	            }
	            else
	            {
	                selectedRow(tbody.rows[curRowIndex + 1]);
	            }
	        }
	        else
	        {
	        	callServerKey(Post_Src);//如果不是方向选择键，则继续提交搜索
	        }
	  	}
	  	else
	  	{
	  	    if(code!=38||code!=40)
	  	    {
    	  		callServerKey(Post_Src);//如果行为空及没有匹配的搜索，继续查询
    	  	}
	  	} 
  	} 
}
/// 获取控件的位置
function getElementPos() 
{
    var el=document.getElementById("txtKeys");
    var ua = navigator.userAgent.toLowerCase();
    var isOpera = (ua.indexOf('opera') != -1);
    var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

    if(el.parentNode === null || el.style.display == 'none')
    {
        return false;
    }
    var parent = null;
    var pos = [];
    var box;
    if(el.getBoundingClientRect) //IE
    {
        box = el.getBoundingClientRect();
        var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
        var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
        return {x:box.left + scrollLeft, y:box.top + scrollTop};
    }
    else if(document.getBoxObjectFor) // gecko
    {
    	box = document.getBoxObjectFor(el);
        var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
        var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
        pos = [box.x - borderLeft, box.y - borderTop];
    }
    else // safari & opera
    {
        pos = [el.offsetLeft, el.offsetTop];
        parent = el.offsetParent;
        if (parent != el) 
        {
            while (parent)
           {
                pos[0] += parent.offsetLeft;
                pos[1] += parent.offsetTop;
                parent = parent.offsetParent;
            }
        }
        if (ua.indexOf('opera') != -1|| ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))
        {
            pos[0] -= document.body.offsetLeft;
            pos[1] -= document.body.offsetTop;
        }
    }
    if (el.parentNode)
    {
         parent = el.parentNode;
    }
    else
    {
       parent = null;
    }
    while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
    {
        pos[0] -= parent.scrollLeft;
        pos[1] -= parent.scrollTop;
        if (parent.parentNode) 
        {
             parent = parent.parentNode;
        }
        else
        {
             parent = null;
        }
   }
   return {x:pos[0], y:pos[1]};
}
function onEnterKey(info)
{
  	if(info!='undefined')
  	{
	     var a=getElementPos();//获得div显示坐标
	  	 var c=document.getElementById("divShowList");
	  	 c.innerHTML=info;//加载搜索提示
	  	 c.style.display="block";
  	}
}
 function onBlurH()//当搜索输入框失去焦点时隐藏提示
  {
  	 var c=document.getElementById("divShowList");
  	 c.innerHTML="";
  	 c.style.display="none";
  	 var searchText=document.getElementById("txtKeys");
  	 if(searchText.value=="")
  	 {
  	    searchText.value="请输入您要查找的内容";
  	 }
  }
 function rowOver(div_value)//用户移动光标到提示行
 {
	div_value.className='suggest_link_over';
 }
 
 function selectedRow(div_value)//用户选择了行
 {
	div_value.className='suggest_link_over';
	document.getElementById("txtKeys").value=div_value.firstChild.childNodes[0].nodeValue;
	document.getElementById("hdid").value=div_value.id;
 }
function rowOut(div_value)//光标离开行
{
    div_value.className='suggest_link';
}
function openSearch(src,searchPage)//提交搜索SRC:提交目的地,type=1:以cookie的形式提交查询，type=0:以url的形式提交查询
{
    var t=document.getElementById("txtKeys").value;
    var id=document.getElementById("hdid").value;
    var re=/(\w)|([\u4e00-\u9fa5])/g;
    var regId =/\d/g;
    var Eturl="";
    
     var frm = getNewSubmitForm();
     createNewFormElement(frm, "K",escape(t));
 
    //var frm=document.getElementById("form1");
    if(!re.test(t)||t.substring(0,3)=="请输入")
    {
    	alert("请输入搜索关键词!");
    	document.getElementById("txtKeys").focus();
        return;
    }
    else
    {
       if(regId.test(id))
	   {
	         Eturl=src+id+".html";
	         frm.action=Eturl;
	         frm.submit();
      }
	  else//未选择搜索帮助，直接跳转，分词
      {
          if(t.length>50)//关键词过长
          {
              alert("您搜索的关键词过长，请适当缩短关键词长度！");
              document.getElementById("txtKeys").focus();
              return;
          }
          else
          {
        	  frm.action=searchPage;
        	  frm.submit();
    	  }
      }
   }
}
function getNewSubmitForm(){
 var submitForm = document.createElement("FORM");
 document.body.appendChild(submitForm);
 submitForm.method = "get";
 return submitForm;
}

//helper function to add elements to the form
function createNewFormElement(inputForm, elementName, elementValue){
 var newElement = document.createElement("<input name='"+elementName+"' type='hidden'>");
 inputForm.appendChild(newElement);
 newElement.value = elementValue;
 return newElement;
}