﻿
var KeywordHelper={Interval:500,Fields:{},RegField:function(field,exclusivefields)
{with(KeywordHelper)
{var fid=$ID(field);if(Fields[fid]==null)
{var p=$C("div",{id:fid+"Panel",className:"Keywords"});with(p.style)
{position="absolute";width="200px";display="none";}
document.body.appendChild(p);field.setAttribute("autocomplete","off");LMGR.Reg(field,LMGR.KEYUP,KeywordHelper.OnKeyUp);LMGR.Reg(field,LMGR.DOUBLECLICK,KeywordHelper.OnKeyUp);LMGR.Reg(document,LMGR.CLICK,KeywordHelper.OnClosePanel,fid,[field,p]);field.onkeypress=function(e){if($E(e).keyCode==9)KeywordHelper.OnClosePanel(e,fid);}
Fields[fid]=[field,0,p];}}},OnKeyUp:function(e)
{with(KeywordHelper)
{var id=$ID($E_T(e));if(e.keyCode==40||e.keyCode==38)
return OnSelectItem(id,e.keyCode-39);var f=Fields[id];clearTimeout(f[1]);if(f[0].value.IsBlank())
return OnClosePanel(null,id);f[1]=setTimeout(function(){KeywordHelper.LoadKeywords(id);},Interval);}},OnSelectItem:function(id,dir)
{with(KeywordHelper)
{var f=Fields[id];var ks=f[2].getElementsByTagName("div");var p=-1;for(var i=0;i<ks.length;i++)
if(ks[i].className=="ListItemSelected")
{p=i;break;}
p+=dir;if(p<0)
p=ks.length-1;else if(p>ks.length-1)
p=0;for(var i=0;i<ks.length;i++)
if(i==p)
OnItemOver(ks[i],id);else
OnItemOut(ks[i]);}},LoadKeywords:function(id)
{with(KeywordHelper)
{var f=Fields[id];clearTimeout(f[1]);f[1]=0;AJAX.Load("/AJAX_Info.aspx?type=Keywords","GET",[["keyword",f[0].value.Trim()]],function(msg){KeywordHelper.OnKeywordsLoaded(msg,id);});}},OnKeywordsLoaded:function(keywords,id)
{var f=KeywordHelper.Fields[id];f[2].innerHTML="";var kws=eval(keywords);if(kws.length==0)
{KeywordHelper.OnClosePanel(null,id);}
else
{for(var i=0;i<kws.length;i++)
f[2].appendChild(KeywordHelper._buildItem(kws[i],id));$XY(f[2],f[0],0,f[0].offsetHeight);f[2].style.display="";}},_buildItem:function(i,id)
{var z=$C("div",{className:"ListItem"})
z.innerHTML="<table cellpadding=0 cellspacing=0 width=100%><tr><th>"+i[0]+"</th><td>"+i[1]+" 结果</td></tr></table>";z.onmouseover=function(e){KeywordHelper.OnItemOver($E(e));};z.onmouseout=function(e){KeywordHelper.OnItemOut($E(e));};z.onclick=function(e){KeywordHelper.OnItemSelect($E(e),id);};return z;},OnItemOver:function(e,id)
{if(id)
KeywordHelper.OnItemSelect(e,id);KeywordHelper._getItem(e).className="ListItemSelected";},OnItemOut:function(e)
{KeywordHelper._getItem(e).className="ListItem";},OnItemSelect:function(e,id)
{KeywordHelper.Fields[id][0].value=KeywordHelper._getItem(e).getElementsByTagName("table")[0].rows[0].cells[0].innerHTML;if(!e.tagName)
KeywordHelper.OnClosePanel(e,id);},_getItem:function(e)
{var c=e.tagName?e:$E_T(e);while(c.tagName.toUpperCase()!="DIV")
c=c.parentNode;return c;},OnClosePanel:function(e,id)
{with(KeywordHelper)
Fields[id][2].style.display="none";}}