var isKHTML=navigator.appVersion.match(/Konqueror|Safari|KHTML/);var isOpera=navigator.userAgent.indexOf('Opera')>-1;var isIE=!isOpera&&navigator.userAgent.indexOf('MSIE')>1;var isMoz=!isOpera&&!isKHTML&&navigator.userAgent.indexOf('Mozilla/5.')==0;Object.extend(Event,{KEY_PAGE_UP:33,KEY_PAGE_DOWN:34,KEY_END:35,KEY_HOME:36,KEY_INSERT:45,KEY_SHIFT:16,KEY_CTRL:17,KEY_ALT:18});var Ulink=new Object();Ulink={INX:'autocomplete_index',inst:new Array(),name:'',key:'',sixtyFour:function(d){var b64='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';var h=b64.substr(d&63,1);while(d>63){d>>=6;h=b64.substr(d&63,1)+h;};return h;},getWindowHeight:function(){var h=0;if(typeof(window.innerHeight)=='number'){h=window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){h=document.documentElement.clientHeight;}else if(document.body&&document.body.clientHeight){h=document.body.clientHeight;};return parseInt(h);},getStyle:function(e){if(!isKHTML&&document.defaultView&&document.defaultView.getComputedStyle){return document.defaultView.getComputedStyle(e,null);}else if(e.currentStyle){return e.currentStyle;}else{return e.style;}},getInt:function(s){var i=parseInt(s);return isNaN(i)?0:i;},style:{highlight:'ulink_autocomplete_current',wait:'ulink_autocomplete_waiting'},findPopup:function(v){var e=Event.element(v);while(e.parentNode&&!e.ULINK_AC)
e=e.parentNode;return e.parentNode?e:null;},isSelectable:function(e){return(e.nodeType==1)&&(e.getAttribute('onselect'));},findSelectable:function(v,p){var e=Event.element(v);while(e.parentNode&&(e!=p)&&(!Ulink.isSelectable(e))){e=e.parentNode;};return(e.parentNode&&(e!=p))?e:null;},processA:function(e,o){var isAJAXHref=e.getAttribute('ajaxHref');if(!Element.hasClassName(e,'usual')){var url;if(isAJAXHref){url=e.getAttribute('ajaxHref');}else{url=e.getAttribute('href');};o.request(url);}},click:function(v){var e=Event.element(v);var p=Ulink.findPopup(v);if(p){var s=Ulink.findSelectable(v,p);if(s){p.ULINK_AC.i=s.getAttribute(Ulink.INX);p.ULINK_AC.select();}else{while(e.parentNode&&(e!=p)&&(!e.tagName||e.tagName.toUpperCase()!='A'))
e=e.parentNode;if(e.parentNode&&(e!=p)){Ulink.processA(e,p.ULINK_AC,v);}}}else{Ulink.inst.each(function(i){if(i.text!=e&&i.pop!=e)setTimeout(i.hide.bind(i),10);});}},mouseover:function(v){var p=Ulink.findPopup(v);if(p){var s=Ulink.findSelectable(v,p);if(s){p.ULINK_AC.highlight(s.getAttribute(Ulink.INX));};}},init:function(){var p=document.createElement('div');p.className=Ulink.style.wait;var s=p.style;s.display='inline';s.position='absolute';s.width=s.height='0px';document.body.appendChild(p);},dispose:function(){Ulink.inst.each(function(i){i.dispose();});}};Event.observe(window,'load',Ulink.init);Event.observe(window,'unload',Ulink.dispose);Ulink.AutoComplete=Class.create();Ulink.AutoComplete.prototype={visible:false,complete:false,initialize:function(text,f,options){text=$(text);if((text==null)||(f==null)||(typeof(f)!="function"))
return;text.setAttribute('autocomplete','off');this.txtBox=this.text=text;this.keydownX=this.keydown.bindAsEventListener(this);this.prepareX=this.prepare.bind(this);Event.observe(this.text,'keydown',this.keydownX);Event.observe(this.text,'dblclick',this.prepareX);this.options=options||{};this.options.frequency=this.options.frequency||0.4;this.options.minChars=this.options.minChars||1;this.timeout=0;this.getURL=f;this.buf=document.createElement('div');var p=document.createElement('div');p.ULINK_AC=this;Element.addClassName(p,'ulink_autocomplete');var ps=p.style;ps.position='absolute';ps.top='-999px';ps.height='auto';Element.hide(p);document.body.appendChild(p);this.update=p;this.i=-1;this.items=[];Ulink.inst.push(this);if(Ulink.inst.length==1){Event.observe(document,'click',Ulink.click);Event.observe(document,'mouseover',Ulink.mouseover);}},dispose:function(){Event.stopObserving(this.text,'keydown',this.keydownX);Event.stopObserving(this.text,'dblclick',this.prepareX);this.children=this.req=this.buf=this.iefix=this.update=this.update.ULINK_AC=this.text=this.getURL=null;Ulink.inst=Ulink.inst.without(this);if(!Ulink.inst.length){Event.stopObserving(document,'click',Ulink.click);Event.stopObserving(document,'mouseover',Ulink.mouseover);}},page:function(name){var s=document.getElementsByClassName(name);var e=s.first();if(e&&e.tagName&&e.tagName.toUpperCase()=='A'){Ulink.processA(e,this);};},keydown:function(event){var keyCode=event.keyCode;if((keyCode==Event.KEY_UP)||(keyCode==Event.KEY_DOWN)){if(this.complete){(keyCode==Event.KEY_UP)?this.up():this.down();this.show();};Event.stop(event);return;};if((keyCode==Event.KEY_PAGE_UP)||(keyCode==Event.KEY_PAGE_DOWN)){if(this.complete){(keyCode==Event.KEY_PAGE_UP)?this.page('page_up'):this.page('page_down');};Event.stop(event);return;};if(keyCode==Event.KEY_ESC){this.hide();Event.stop(event);return;};switch(keyCode){case Event.KEY_TAB:case Event.KEY_LEFT:case Event.KEY_RIGHT:case Event.KEY_END:case Event.KEY_HOME:case Event.KEY_INSERT:case Event.KEY_SHIFT:case Event.KEY_CTRL:case Event.KEY_ALT:return;case Event.KEY_RETURN:if(this.visible){this.select();return;};default:if(this.timeout!=0)
clearTimeout(this.timeout);this.timeout=setTimeout(this.prepare.bind(this),this.options.frequency*1000);this.hide();}},select:function(){if(this.getCurrentEntry()){var stat=this.getCurrentEntry().getAttribute('onselect');try{eval(stat);}catch(e){};this.hide();}},getCurrentEntry:function(){return this.children?this.children[this.i]:null;},highlight:function(i){if(!this.complete)
return;Element.removeClassName(this.getCurrentEntry(),Ulink.style.highlight);this.i=i;Element.addClassName(this.getCurrentEntry(),Ulink.style.highlight);},up:function(){if(this.i>-1)
this.highlight(this.i-1);},down:function(){if(this.i<this.children.length)
this.highlight(this.i+1);},preRequest:function(){return this.text.value.length>=this.options.minChars;},prepare:function(){this.request();},request:function(url){if(this.preRequest()){if(url){if(url.charAt(0)=='&')url=this.getURL()+url;if((url.indexOf(location.href)==0)&&(url.charAt(location.href.length)=='&'))
url=this.getURL()+url;this.onLoading(true);}else{url=this.getURL();this.onLoading();};url=encodeURI(url);this.req=new Ajax.Updater(this.buf,url,{method:'get',onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)});}},onFailure:function(transport){},onLoading:function(){this.complete=false;this.i=-1;if(!arguments[0]){this.hide();this.update.innerHTML='';};this.startIndicator();},onComplete:function(){setTimeout(this.updateContent.bind(this,arguments[0]),10);},renderResp:function(resp){var tmp="";if(resp.body.set.items.length>0){this.items=resp.body.set.items;for(var i=0;i<this.items.length;i++){tmp+=this.renderItem(this.items[i]);}
tmp+="<span style='width:100%;text-align:right;'>";tmp+=this.getPageInfo(resp);tmp+=this.getPrePage(resp);tmp+=this.getNextPage(resp);tmp+="</span>";}
return tmp;},getPageInfo:function(resp){return resp.body.set.segIndex+"/"+resp.body.set.segCount+"&nbsp;&nbsp;";},getNextPage:function(resp){if(parseInt(resp.body.set.segIndex)<parseInt(resp.body.set.segCount)){return"<a href='"+this.getURL()+"&page="+(parseInt(resp.body.set.segIndex)+1)+"' class='page_down'>\u4e0b\u4e00\u9875</a>";}else{return"";}},getPrePage:function(resp){if(parseInt(resp.body.set.segIndex)>1){return"<a href='"+this.getURL()+"&page="+(parseInt(resp.body.set.segIndex)-1)+"' class='page_up'>\u4e0a\u4e00\u9875</a>";}else{return"";}},renderItem:function(item){return"<div onselect=\"$('"+this.text.id+"').value='"+item.properties[0].value+"';\">"+item.properties[1].value+"</div>";},updateContent:function(){var tx=this.req.transport;var t=((this.req==null)||(tx==arguments[0]));if(t){var xml=tx.responseXml;var resp=new Response();resp.resolve(xml);this.complete=true;if(this.req.responseIsSuccess()){this.update.innerHTML=this.renderResp(resp);}else{this.update.innerHTML='<h1 align="center">'+
tx.status+' '+
(tx.statusText?tx.statusText:'')+'</h1>';};this.buf.innerHTML='';this.i=-1;this.children=new Array();var s=0;for(var i=0;i<Ulink.name.length;i++)
s+=Ulink.name.charCodeAt(i);$A(this.update.getElementsByTagName('a')).each(function(a){if(!Element.hasClassName(a,'usual')){a.onclick=function(){return false;};};});$A(this.update.getElementsByTagName('*')).each(function(c){if(Ulink.isSelectable(c)){c.setAttribute(Ulink.INX,this.children.length);Element.addClassName(c,'ulink_autocomplete_selectable');this.children.push(c);}}.bind(this));this.down();this.show();this.stopIndicator();}},offset:function(){var o=0;if(isMoz||isKHTML||(isIE&&(document.compatMode!='BackCompat'))){var bl='border-left-width';var br='border-right-width';var pl='padding-left';var pr='padding-right';var f=new Function('e','p','return Ulink.getInt(Element.getStyle(e, p));');o=f(this.update,bl)+
f(this.update,br)+
f(this.update,pl)+
f(this.update,pr);};return o;},fixIEOverlapping:function(){var f;if(!(f=this.iefix)){f=document.createElement('iframe');f.src='javascript:false;';var fs=f.style;fs.position='absolute';fs.margin=fs.padding='0px';Element.hide(f);document.body.appendChild(f);this.iefix=f;};Position.clone(this.update,f);f.style.zIndex=1;this.update.style.zIndex=2;Element.show(f);},show:function(){Element.show(this.update);var ph=this.update.offsetHeight;Element.hide(this.update);var pos=Position.cumulativeOffset(this.text);var tt=pos[1];var th=this.text.offsetHeight;var tl=pos[0];if(this.options.width){var tw=this.options.width;}else{var tw=this.text.offsetWidth;}
var wh=Ulink.getWindowHeight();var pt;var of;if((Position.page(this.text)[1]+th+ph<=wh)||(tt-ph<0)){pt=tt+th;of=th;}else{pt=tt-ph;of=-ph;};tw=tw-this.offset();Element.setStyle(this.update,{top:pt+'px',left:tl+'px',width:tw+'px',height:'auto'});Element.show(this.update);if(isIE)
this.fixIEOverlapping();this.visible=true;},hide:function(){if(this.visible){Element.hide(this.update);if(isIE)
Element.hide(this.iefix);this.visible=false;}},startIndicator:function(){Element.addClassName(this.text,Ulink.style.wait);if(this.options.indicator)
Element.show(this.options.indicator);},stopIndicator:function(){Element.removeClassName(this.text,Ulink.style.wait);if(this.options.indicator)
Element.hide(this.options.indicator);}};var AutoAssist=Ulink.AutoComplete;var AutoAssist=Ulink.AutoComplete;