//
// uncompressed / commented / renamed by Chris...
//
var w="";
var pa=false;
var _oldInputFieldValue=""; // inputField value (set during call to google...)...(was ta)
var da=false;
var _currentInputFieldValue=""; // also inputField value (was g)
var G="";
var _eventKeycode=""; // event keycode... (was m)
var _highlightedSuggestionIndex=-1; // currently hightlighted suggestion index (was j)
var _highlightedSuggestionDiv=null; // currently highlisted suggestion div... (was h)
var _completeDivRows=-1; // completeDiv rows at time of keypress... (was Z)
var _completeDivDivList=null; // completeDiv div list at time of keypress (was za)
var _completeDivRows2=5; // was Ca... initially 5? not sure difference between this and _completeDivRows...
var q="";
var _divTag="div"; // Was Lb
var _spanTag="span"; // Was Bb
var _documentForm=null; // Form on html page... (was la...)
var _inputField=null; // Input field on form... (was a)
var _completeDiv=null; // document.completeDiv (was b)
var _submitButton=null; // submit button (was Xa)
var mb=null;
var X=null;
var _enString=null; // This becomes the string "en" (was ha)
var _cursorUpDownPressed=false; // Was ra...
var kc=null;
var hc=null;
var _resultCache=new Object(); // This is a cache of results from google... (was Ua)
var ca=1;
var Aa=1;
var Y=false;
var _lastKeyCode=-1; // Gets set on keyDown... Was na...
var Va=(new Date()).getTime();
var _hasXMLHTTP=false; // Gets set to true if XMLHTTP Supported (was Q)
var _xmlHttp=null; // This is the XMLHttp Object... (was k)
var _completeSearchEnString=null; // Gets set to "/complete/search/?hl=en" (was sa)
var _completeSearchString=null; // Gets set to "/complete/search" ... (was E)
var B=null;
var aa=null;
var Ba=false;
var Ka=false;
var p=60;
var _searchString=null; // Gets set to "search" in installAC (was ia)
var ya=null;
var _timeoutAdjustment=0; // timeout adjustment... (was W)... gets adjusted over time...
var a = null;
// This is the function that get's called from the google html page...
// Line from page:
// InstallAC(document.f,document.f.q,document.f.btnG,"search","en");
// document.f is the name of the form on the page...
// document.f.q is the input text box on the page...
// -> <input autocomplete="off" maxLength=256 size=55 name=q value="">
// document.f.btnG Google Search button
InstallAC=function(frm,fld,sb,pn,rl,hd,sm,ufn){
_documentForm=frm;
_inputField=fld;
_submitButton=sb;
if(!pn) {
pn="search";
}
_searchString=pn;
var Kb="en|";
var Jb="zh-CN|zh-TW|ja|ko|vi|";
if(!rl||Kb.indexOf(rl+"|")==-1) {
rl="en";
}
_enString=escapeURI(rl);
if(Jb.indexOf(_enString+"|")==-1){
// We won't pass through here...
X=true;
Y=false;
Ba=false
}else{
// but will come through here...
X=false;
if(_enString.indexOf("zh")==0) {
// not here...
Y=false;
} else {
// but here...
Y=true;
}
Ba=true
}
// hd is not defined, so becomes false...
if(!hd) {
hd=false;
}
ya=hd;
// sm not defined, so becomes the string "query"
if(!sm) {
sm="query";
}
w=sm;
// ufn is not defined...
mb=ufn;
installACPartTwo()
_inputField.readOnly = false;
}
;
// blurs focus, then sets focus again...
// This is getting aclled when we press cursor up / cursor down...
// Was Yb...
function blurThenGetFocus(){
_cursorUpDownPressed=true;
_inputField.blur();
setTimeout("setInputFieldFocus();",10);
return
}
// setup a keydown event...
// Was Fb...
function setupKeydown1(){
if(document.createEventObject) {
var y=document.createEventObject();
y.ctrlKey=true;
y.keyCode=70;
document.fireEvent("onkeydown",y)
}
}
// setup a keydown event...
// I can't figure out what calls this...
// was nc...
function setupKeydown2(vb){
var y=document.createEventObject();
y.ctrlKey=true;
y.keyCode=vb;
document.fireEvent("onkeydown",y)
}
function gc(event){}
function ic(event){}
// Was Pb
function keyDownHandler(event){
if(!event&&window.event) {
event=window.event;
}
if(event) {
_lastKeyCode=event.keyCode;
}
var a;
// We are backspacing here...
if(event&&event.keyCode==8){
if(X&&(_inputField.createTextRange && (event.srcElement==a&&(bb(_inputField)==0&&lb(_inputField)==0)))){
cc(_inputField);
event.cancelBubble=true;
event.returnValue=false;
return false
}
}
}
function mc(){}
// Was Db..
function resizeHandler(){
if(w=="url"){
setInputFieldSize()
}
setCompleteDivSize()
}
// was ba...
function setCompleteDivSize(){
if(_completeDiv){
_completeDiv.style.left=calculateOffsetLeft(_inputField)+2+"px";
_completeDiv.style.top=calculateOffsetTop(_inputField)+_inputField.offsetHeight+"px";
_completeDiv.style.width=calculateWidth() -3 +"px"
}
}
// calculate width of inputField... Note browser specific adjustments...
// Was Ja()
function calculateWidth(){
if(navigator&&navigator.userAgent.toLowerCase().indexOf("msie")==-1){
return _inputField.offsetWidth-ca*2
}else{
return _inputField.offsetWidth
}
}
// Called from InstallAC...
// was ac()
function installACPartTwo(){
if(getXMLHTTP()){
_hasXMLHTTP=true
}else{
_hasXMLHTTP=false
}
// pa init'd to false at the top of this file...
if(pa) {
_completeSearchString="complete";
} else {
_completeSearchString="/complete/"+_searchString;
}
_completeSearchEnString=_completeSearchString+"?hl="+_enString;
if(!_hasXMLHTTP){
setCookie("qu","",0,_completeSearchString,null,null)
}
addEvent(_documentForm, "submit", Fa);
//_documentForm.onsubmit = Fa;
_inputField.autocomplete="off";
_inputField.onblur=onBlurHandler;
if(_inputField.createTextRange) {
_inputField.onkeyup=new Function("return okuh(event);");
} else {
_inputField.onkeyup=okuh;
}
addEvent(_inputField, "submit", Fa);
//_inputField.onsubmit=Fa;
_currentInputFieldValue=_inputField.value;
_oldInputFieldValue=_currentInputFieldValue;
_completeDiv=document.createElement("DIV");
_completeDiv.id="completeDiv" + _inputField.id;
ca=1;
Aa=1;
_completeDiv.style.borderRight="black "+ca+"px solid";
_completeDiv.style.borderLeft="black "+ca+"px solid";
_completeDiv.style.borderTop="black "+Aa+"px solid";
_completeDiv.style.borderBottom="black "+Aa+"px solid";
_completeDiv.style.zIndex="9999999";
_completeDiv.style.paddingRight="0";
_completeDiv.style.paddingLeft="0";
_completeDiv.style.paddingTop="0";
_completeDiv.style.paddingBottom="0";
setCompleteDivSize();
_completeDiv.style.display="none";
_completeDiv.style.position="absolute";
_completeDiv.style.backgroundColor="white";
document.body.appendChild(_completeDiv);
cacheResults("",new Array(),new Array());
Gb(_completeDiv);
var s=document.createElement("DIV");
s.style.display="none";
s.style.position="absolute";
s.style.left="-10000";
s.style.top="-10000";
s.style.width="0";
s.style.height="0";
var M=document.createElement("IFRAME");
M.completeDiv=_completeDiv;
M.name="completionFrame";
M.id="completionFrame";
M.src=_completeSearchEnString;
s.appendChild(M);
document.body.appendChild(s);
if(frames&&(frames["completionFrame"]&&frames["completionFrame"].frameElement)) {
B=frames["completionFrame"].frameElement;
} else {
B=document.getElementById("completionFrame");
}
if(w=="url"){
setInputFieldSize();
setCompleteDivSize()
}
window.onresize=resizeHandler;
document.onkeydown=keyDownHandler;
setupKeydown1()
}
function addEvent(obj, evType, fn)
{
if (obj.addEventListener)
{
obj.addEventListener(evType, fn, false);
return true;
}
else if (obj.attachEvent)
{
var r = obj.attachEvent("on"+evType, fn);
return r;
}
else
{
return false;
}
}
// Was Ob
function onBlurHandler(event){
if(!event&&window.event) {
event=window.event;
}
if(!_cursorUpDownPressed){
hideCompleteDiv();
// check if tab pressed...
if(_lastKeyCode==9){
_lastKeyCode=-1
}
}
_cursorUpDownPressed=false
}
okuh=function(e){
_eventKeycode=e.keyCode;
aa=_inputField.value;
Oa()
}
;
// Was Xb...
function setSubmitButtonFocus(){
_submitButton.focus()
}
// Was sfi..
setInputFieldFocus=function(){
_inputField.focus()
}
;
// strip CR from string...
// was Wb
function stripCRFromString(va){
for(var f=0,oa="",zb="\n\r"; f<va.length; f++) {
if (zb.indexOf(va.charAt(f))==-1) {
oa+=va.charAt(f);
} else {
oa+=" ";
}
}
return oa
}
// Find span value with className = dc...
// Was Qa
function findSpanValueForClass(i,dc){
var ga=i.getElementsByTagName(_spanTag);
if(ga){
for(var f=0; f<ga.length; ++f){
if(ga[f].className==dc){
var value=ga[f].innerHTML;
if(value==" ") {
return"";
} else{
var z=stripCRFromString(value);
return z
}
}
}
}else{
return""
}
}
// Return null if i undefined...
// otherwise return value of span cAutoComplete...
// was U
function valueOfCAutoComplete(i){
if(!i) {
return null;
}
return findSpanValueForClass(i,"cAutoComplete")
}
// Return null if i undefined...
// otherwise return value of span dAutoComplete...
// was wa
function valueOfDAutoComplete(i){
if(!i) {
return null;
}
return findSpanValueForClass(i,"dAutoComplete")
}
// Was F
function hideCompleteDiv(){
document.getElementById("completeDiv" + _inputField.id).style.display="none"
}
// Was cb
function showCompleteDiv(){
document.getElementById("completeDiv" + _inputField.id).style.display="inline";
setCompleteDivSize()
}
// This is a result caching mechanism...
// was Ma
function cacheResults(is,cs,ds){
_resultCache[is]=new Array(cs,ds)
}
// We get the following javascript code dynamically returned from google:
// sendRPCDone(frameElement, "fast bug", new Array("fast bug track", "fast bugs", "fast bug", "fast bugtrack"), new Array("793,000 results", "2,040,000 results", "6,000,000 results", "7,910 results"), new Array(""));
sendRPCDone=function(fr,is,cs,ds,pr){
if(_timeoutAdjustment>0) {
_timeoutAdjustment--;
}
var lc=(new Date()).getTime();
if(!fr) {
fr=B;
}
cacheResults(is,cs,ds);
var b=fr.completeDiv;
b.completeStrings=cs;
b.displayStrings=ds;
b.prefixStrings=pr;
displaySuggestedList(b,b.completeStrings,b.displayStrings);
Pa(b,valueOfCAutoComplete);
if(_completeDivRows2>0) {
b.height=16*_completeDivRows2+4;
} else {
hideCompleteDiv();
}
}
function Oa(){
// 38 is up cursor key, 40 is down cursor key...
if(_eventKeycode==40||_eventKeycode==38) {
blurThenGetFocus();
}
var N=lb(_inputField);
var v=bb(_inputField);
var V=_inputField.value;
if(X&&_eventKeycode!=0){
if(N>0&&v!=-1) {
V=V.substring(0,v);
}
if(_eventKeycode==13||_eventKeycode==3){
var d=_inputField;
if(d.createTextRange){
var t=d.createTextRange();
t.moveStart("character",d.value.length);
t.select()
} else if (d.setSelectionRange){
d.setSelectionRange(d.value.length,d.value.length)
}
} else {
if(_inputField.value!=V) {
selectEntry(V)
}
}
}
_currentInputFieldValue=V;
if(handleCursorUpDownEnter(_eventKeycode)&&_eventKeycode!=0) {
Pa(_completeDiv,valueOfCAutoComplete)
}
}
function Fa(e)
{
if (document.getElementById("completeDiv" + _inputField.id).style.display == "inline")
{
hideCompleteDiv();
if (e && e.preventDefault)
e.preventDefault();
else
false;
}
else
return true;
}
function xb(eb) {
da=true;
if(!_hasXMLHTTP){
setCookie("qu","",0,_completeSearchString,null,null)
}
hideCompleteDiv();
if(eb=="url"){
var R="";
if(_highlightedSuggestionIndex!=-1&&h) {
R=valueOfCAutoComplete(_highlightedSuggestionDiv);
}
if(R=="") {
R=_inputField.value;
}
if(q=="") {
document.title=R;
} else {
document.title=q;
}
var Tb="window.frames['"+mb+"'].location = \""+R+'";';
setTimeout(Tb,10);
return false
} else if(eb=="query"){
//_documentForm.submit();
return true
}
}
newwin=function(){
window.open(_inputField.value);
hideCompleteDiv();
return false
}
;
idkc=function(e){
if(Ba){
var Ta=_inputField.value;
if(Ta!=aa){
_eventKeycode=0;
Oa()
}
aa=Ta;
setTimeout("idkc()",10)
}
}
;
setTimeout("idkc()",10);
// Go read about encodeURIComponent here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsmthencodeuricomponent.asp
// Basically converts a string to a valid uri... (spaces become %20, etc, etc..)
// this function was nb...
function escapeURI(La){
if(encodeURIComponent) {
return encodeURIComponent(La);
}
if(escape) {
return escape(La)
}
}
// Was yb
// If Mb is 0, will return 150...
// If Mb is 3, will return 250...
// If Mb is 4, will return 450...
// If Mb is X, will return 850...
function recalculateTimeout(Mb){
var H=100;
for(var o=1; o<=(Mb-2)/2; o++){
H=H*2
}
H=H+50;
return H
}
// This function sets itself up and gets called over and over (timeout driven)
// was idfn...
mainLoop=function(){
if(_oldInputFieldValue!=_currentInputFieldValue){
if(!da){
var Za=escapeURI(_currentInputFieldValue);
var ma=_resultCache[_currentInputFieldValue];
if(ma){
// Found in our cache...
Va=-1;
sendRPCDone(B,_currentInputFieldValue,ma[0],ma[1],B.completeDiv.prefixStrings)
}else{
_timeoutAdjustment++;
Va=(new Date()).getTime();
x.fetchData();
}
_inputField.focus()
}
da=false
}
_oldInputFieldValue=_currentInputFieldValue;
setTimeout("mainLoop()",recalculateTimeout(_timeoutAdjustment));
return true
}
;
// Call mainLoop() after 10 milliseconds...
setTimeout("mainLoop()",10);
// This is onMouseDown function...
var Cb=function(){
selectEntry(valueOfCAutoComplete(this));
q=valueOfDAutoComplete(this);
da=true;
Fa()
}
;
// on mouseover...
var pb=function(){
if(_highlightedSuggestionDiv) {
setStyleForElement(_highlightedSuggestionDiv,"aAutoComplete");
}
setStyleForElement(this,"bAutoComplete")
}
;
// On Mouse out...
var ec=function(){
setStyleForElement(this,"aAutoComplete")
}
;
// Called when cursor up/down pressed... selects new entry in completeDiv...
// was Na
function highlightNewValue(C){
// fix here
// var i;
// for (i = 0; i <= _completeDivDivList.item.length; i++)
// {
// setStyleForElement(_completeDivDivList.item(i),"aAutoComplete");
// }
_currentInputFieldValue=G;
selectEntry(G);
q=G;
if(!_completeDivDivList||_completeDivRows<=0) {
return;
}
showCompleteDiv();
if(C>=_completeDivRows){
C=_completeDivRows-1
}
if(_highlightedSuggestionIndex!=-1&&C!=_highlightedSuggestionIndex){
setStyleForElement(_highlightedSuggestionDiv,"aAutoComplete");
_highlightedSuggestionIndex=-1
}
if(C<0){
_highlightedSuggestionIndex=-1;
_inputField.focus();
return
}
_highlightedSuggestionIndex=C;
_highlightedSuggestionDiv=_completeDivDivList.item(C);
setStyleForElement(_highlightedSuggestionDiv,"bAutoComplete");
_currentInputFieldValue=G;
q=valueOfDAutoComplete(_highlightedSuggestionDiv);
selectEntry(valueOfCAutoComplete(_highlightedSuggestionDiv))
}
// Was Eb
// returns false if cursor up / cursor down or enter pressed...
function handleCursorUpDownEnter(eventCode){
if(eventCode==40){
highlightNewValue(_highlightedSuggestionIndex+1);
return false
}else if(eventCode==38){
highlightNewValue(_highlightedSuggestionIndex-1);
return false
}else if(eventCode==13||eventCode==3){
return false
}
return true
}
// Pa(completeDiv,H)
// This function gets called for every keypress I make...
function Pa(localCompleteDiv,ib){
var localInputField=_inputField;
var T=false;
_highlightedSuggestionIndex=-1;
// This becomes the rows in our suggestion list...
var J=localCompleteDiv.getElementsByTagName(_divTag);
// # of rows in list...
var O=J.length;
_completeDivRows=O;
_completeDivDivList=J;
_completeDivRows2=O;
G=_currentInputFieldValue;
if(_currentInputFieldValue==""||O==0||_lastKeyCode == 13){
hideCompleteDiv()
}else{
showCompleteDiv()
}
var Ab="";
if(_currentInputFieldValue.length>0){
var f;
var o;
// My prefixStrings was always an empty array...
// So local variable T never would be set to true...
// And the local variable Ab would remain empty...
for(var f=0; f<O; f++){
for(o=0; o<localCompleteDiv.prefixStrings.length; o++){
var Ib=localCompleteDiv.prefixStrings[o]+_currentInputFieldValue;
if(Y||ib(J.item(f)).toUpperCase().indexOf(Ib.toUpperCase())==0) {
Ab=localCompleteDiv.prefixStrings[o];
T=true;
break
}
}
if(T){
break
}
}
}
if(T) {
_highlightedSuggestionIndex=f;
}
for(var f=0; f<O; f++) {
setStyleForElement(J.item(f),"aAutoComplete");
}
if (T)
{
q=_currentInputFieldValue;
_highlightedSuggestionIndex=-1;
_highlightedSuggestionDiv=null
}
return;
}
// Called as:
// calculateOffsetLeft(_inputField)
// was ob
function calculateOffsetLeft(r){
return Ya(r,"offsetLeft")
}
// Called as:
// calculateOffsetTop(_inputField)
// Was Qb...
function calculateOffsetTop(r){
return Ya(r,"offsetTop")
}
function Ya(r,attr){
var kb=0;
while(r){
kb+=r[attr];
r=r.offsetParent
}
return kb
}
// Sets cookie...
// (was called qa...)
function setCookie(name,value,Ra,hb,fb,Sb){
var Nb=name+"="+value+(Ra?";expires="+Ra.toGMTString():"")+(hb?";path="+hb:"")+(fb?";domain="+fb:"")+(Sb?";secure":"");
document.cookie=Nb
}
// Was Ha
function setInputFieldSize(){
var xa=document.body.scrollWidth-220;
xa=0.73*xa;
_inputField.size=Math.floor(xa/6.18)
}
function lb(n){
var N=-1;
if(n.createTextRange){
var fa=document.selection.createRange().duplicate();
N=fa.text.length
}else if(n.setSelectionRange){
N=n.selectionEnd-n.selectionStart
}
return N
}
function bb(n){
var v=0;
if(n.createTextRange){
var fa=document.selection.createRange().duplicate();
fa.moveEnd("textedit",1);
v=n.value.length-fa.text.length
}else if(n.setSelectionRange){
v=n.selectionStart
}else{
v=-1
}
return v
}
function cc(d){
if(d.createTextRange){
var t=d.createTextRange();
t.moveStart("character",d.value.length);
t.select()
} else if(d.setSelectionRange) {
d.setSelectionRange(d.value.length,d.value.length)
}
}
function jc(Zb,Ea){
if(!Ea)Ea=1;
if(pa&&pa<=Ea){
var Ia=document.createElement("DIV");
Ia.innerHTML=Zb;
document.getElementById("console").appendChild(Ia)
}
}
// Ex: setStyleForElement(document.createElement("DIV"), "aAutoComplete");
// was l
function setStyleForElement(c,name){
db();
c.className=name;
if(Ka){
return
}
switch(name.charAt(0)){
case "m":
c.style.fontSize="13px";
c.style.fontFamily="arial,sans-serif";
c.style.wordWrap="break-word";
break;
case "l":
c.style.display="block";
c.style.paddingLeft="3";
c.style.paddingRight="3";
c.style.height="16px";
c.style.overflow="hidden";
break;
case "a":
c.style.backgroundColor="white";
c.style.color="black";
if(c.displaySpan){
c.displaySpan.style.color="green"
}
break;
case "b":
c.style.backgroundColor="#3366cc";
c.style.color="white";
if(c.displaySpan){
c.displaySpan.style.color="white"
}
break;
case "c":
//c.style.width=p+"%";
c.style.cssFloat="left";
break;
case "d":
c.style.cssFloat="right";
//c.style.width=100-p+"%";
if(w=="query"){
c.style.fontSize="10px";
c.style.textAlign="right";
c.style.color="green";
c.style.paddingTop="3px"
}else{
c.style.color="#696969"
}
break
}
}
function db(){
p=65;
if(w=="query"){
var wb=110;
var Sa=calculateWidth();
var tb=(Sa-wb)/Sa*100;
p=tb
}else{
p=65
}
if(ya){
p=99.99
}
}
function Gb(i){
db();
var Ub="font-size: 13px; font-family: arial,sans-serif; word-wrap:break-word; ";
var Vb="display: block; padding-left: 3; padding-right: 3; height: 16px; overflow: hidden; ";
var bc="background-color: white; ";
var qb="background-color: #3366cc; color: white ! important; ";
var ub="display: block; margin-left: 0%; width: "+p+"%; float: left; ";
var Ga="display: block; margin-left: "+p+"%; ";
if(w=="query"){
Ga+="font-size: 10px; text-align: right; color: green; padding-top: 3px; "
}else{
Ga+="color: #696969; "
}
D(".mAutoComplete",Ub);
D(".lAutoComplete",Vb);
D(".aAutoComplete *",bc);
D(".bAutoComplete *",qb);
D(".cAutoComplete",ub);
D(".dAutoComplete",Ga);
setStyleForElement(i,"mAutoComplete")
}
// Called from sendRPCResponse...
// i = fr.completeDiv
// cs = list of comlete strings...
// Hb = list of results...
// was rb
function displaySuggestedList(i,cs,Hb){
while(i.childNodes.length>0) {
i.removeChild(i.childNodes[0]);
}
// For each element in our list, we create:
// <DIV (u) - mousedown/mouseover/mouseout aAutoComplete>
// <SPAN (ka) lAutoComplete>
// <SPAN (ua) cAutoComplete>
// bug tracking
// </SPAN (ua)>
// <SPAN (ea) dAutoComplete>
// 500,000 results
// </SPAN (ea)>
// </SPAN>
// </DIV (u)>
for(var f=0; f<cs.length; ++f){
var u=document.createElement("DIV");
setStyleForElement(u,"aAutoComplete");
u.onmousedown=Cb;
u.onmouseover=pb;
u.onmouseout=ec;
var ka=document.createElement("SPAN");
setStyleForElement(ka,"lAutoComplete");
var ua=document.createElement("SPAN");
ua.innerHTML=cs[f]; // the text for the suggested result...
var ea=document.createElement("SPAN");
setStyleForElement(ea,"dAutoComplete");
setStyleForElement(ua,"cAutoComplete");
u.displaySpan=ea;
if(!ya) {
ea.innerHTML=Hb[f]; // the text for # results for suggested result...
}
ka.appendChild(ua);
if (Hb[f] != "")
ka.appendChild(ea);
u.appendChild(ka);
i.appendChild(u)
}
}
function D(name,gb){
if(Ka){
var I=document.styleSheets[0];
if(I.addRule){
I.addRule(name,gb)
}else if(I.insertRule){
I.insertRule(name+" { "+gb+" }",I.cssRules.length)
}
}
}
// Was function jb...
// returns an XMLHttp object... gets it in an IE/Mozilla friendly way..
function getXMLHTTP(){
var A=null;
try{
A=new ActiveXObject("Msxml2.XMLHTTP")
}catch(e){
try{
A=new ActiveXObject("Microsoft.XMLHTTP")
} catch(oc){
A=null
}
}
if(!A && typeof XMLHttpRequest != "undefined") {
A=new XMLHttpRequest()
}
return A
}
// Select suggested entry...
// wa is the value to set the inputfield to...
// was S
function selectEntry(Wa){
_inputField.value=HtmlDecode(Wa);
aa=Wa
}
function HtmlDecode(s)
{
var out = "";
if (s==null) return;
var l = s.length;
for (var i=0; i<l; i++)
{
var ch = s.charAt(i);
if (ch == '&')
{
var semicolonIndex = s.indexOf(';', i+1);
if (semicolonIndex > 0)
{
var entity = s.substring(i + 1, semicolonIndex);
if (entity.length > 1 && entity.charAt(0) == '#')
{
if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X')
ch = String.fromCharCode(eval('0'+entity.substring(1)));
else
ch = String.fromCharCode(eval(entity.substring(1)));
}
else
{
switch (entity)
{
case 'quot': ch = String.fromCharCode(0x0022); break;
case 'amp': ch = String.fromCharCode(0x0026); break;
case 'lt': ch = String.fromCharCode(0x003c); break;
case 'gt': ch = String.fromCharCode(0x003e); break;
case 'nbsp': ch = String.fromCharCode(0x00a0); break;
case 'iexcl': ch = String.fromCharCode(0x00a1); break;
case 'cent': ch = String.fromCharCode(0x00a2); break;
case 'pound': ch = String.fromCharCode(0x00a3); break;
case 'curren': ch = String.fromCharCode(0x00a4); break;
case 'yen': ch = String.fromCharCode(0x00a5); break;
case 'brvbar': ch = String.fromCharCode(0x00a6); break;
case 'sect': ch = String.fromCharCode(0x00a7); break;
case 'uml': ch = String.fromCharCode(0x00a8); break;
case 'copy': ch = String.fromCharCode(0x00a9); break;
case 'ordf': ch = String.fromCharCode(0x00aa); break;
case 'laquo': ch = String.fromCharCode(0x00ab); break;
case 'not': ch = String.fromCharCode(0x00ac); break;
case 'shy': ch = String.fromCharCode(0x00ad); break;
case 'reg': ch = String.fromCharCode(0x00ae); break;
case 'macr': ch = String.fromCharCode(0x00af); break;
case 'deg': ch = String.fromCharCode(0x00b0); break;
case 'plusmn': ch = String.fromCharCode(0x00b1); break;
case 'sup2': ch = String.fromCharCode(0x00b2); break;
case 'sup3': ch = String.fromCharCode(0x00b3); break;
case 'acute': ch = String.fromCharCode(0x00b4); break;
case 'micro': ch = String.fromCharCode(0x00b5); break;
case 'para': ch = String.fromCharCode(0x00b6); break;
case 'middot': ch = String.fromCharCode(0x00b7); break;
case 'cedil': ch = String.fromCharCode(0x00b8); break;
case 'sup1': ch = String.fromCharCode(0x00b9); break;
case 'ordm': ch = String.fromCharCode(0x00ba); break;
case 'raquo': ch = String.fromCharCode(0x00bb); break
case 'frac14': ch = String.fromCharCode(0x00bc); break;
case 'frac12': ch = String.fromCharCode(0x00bd); break;
case 'frac34': ch = String.fromCharCode(0x00be); break;
case 'iquest': ch = String.fromCharCode(0x00bf); break;
case 'Agrave': ch = String.fromCharCode(0x00c0); break;
case 'Aacute': ch = String.fromCharCode(0x00c1); break;
case 'Acirc': ch = String.fromCharCode(0x00c2); break;
case 'Atilde': ch = String.fromCharCode(0x00c3); break;
case 'Auml': ch = String.fromCharCode(0x00c4); break;
case 'Aring': ch = String.fromCharCode(0x00c5); break;
case 'AElig': ch = String.fromCharCode(0x00c6); break;
case 'Ccedil': ch = String.fromCharCode(0x00c7); break;
case 'Egrave': ch = String.fromCharCode(0x00c8); break;
case 'Eacute': ch = String.fromCharCode(0x00c9); break;
case 'Ecirc': ch = String.fromCharCode(0x00ca); break;
case 'Euml': ch = String.fromCharCode(0x00cb); break;
case 'Igrave': ch = String.fromCharCode(0x00cc); break;
case 'Iacute': ch = String.fromCharCode(0x00cd); break;
case 'Icirc': ch = String.fromCharCode(0x00ce ); break;
case 'Iuml': ch = String.fromCharCode(0x00cf); break;
case 'ETH': ch = String.fromCharCode(0x00d0); break;
case 'Ntilde': ch = String.fromCharCode(0x00d1); break;
case 'Ograve': ch = String.fromCharCode(0x00d2); break;
case 'Oacute': ch = String.fromCharCode(0x00d3); break;
case 'Ocirc': ch = String.fromCharCode(0x00d4); break;
case 'Otilde': ch = String.fromCharCode(0x00d5); break;
case 'Ouml': ch = String.fromCharCode(0x00d6); break;
case 'times': ch = String.fromCharCode(0x00d7); break;
case 'Oslash': ch = String.fromCharCode(0x00d8); break;
case 'Ugrave': ch = String.fromCharCode(0x00d9); break;
case 'Uacute': ch = String.fromCharCode(0x00da); break;
case 'Ucirc': ch = String.fromCharCode(0x00db); break;
case 'Uuml': ch = String.fromCharCode(0x00dc); break;
case 'Yacute': ch = String.fromCharCode(0x00dd); break;
case 'THORN': ch = String.fromCharCode(0x00de); break;
case 'szlig': ch = String.fromCharCode(0x00df); break;
case 'agrave': ch = String.fromCharCode(0x00e0); break;
case 'aacute': ch = String.fromCharCode(0x00e1); break;
case 'acirc': ch = String.fromCharCode(0x00e2); break;
case 'atilde': ch = String.fromCharCode(0x00e3); break;
case 'auml': ch = String.fromCharCode(0x00e4); break;
case 'aring': ch = String.fromCharCode(0x00e5); break;
case 'aelig': ch = String.fromCharCode(0x00e6); break;
case 'ccedil': ch = String.fromCharCode(0x00e7); break;
case 'egrave': ch = String.fromCharCode(0x00e8); break;
case 'eacute': ch = String.fromCharCode(0x00e9); break;
case 'ecirc': ch = String.fromCharCode(0x00ea); break;
case 'euml': ch = String.fromCharCode(0x00eb); break;
case 'igrave': ch = String.fromCharCode(0x00ec); break;
case 'iacute': ch = String.fromCharCode(0x00ed); break;
case 'icirc': ch = String.fromCharCode(0x00ee); break;
case 'iuml': ch = String.fromCharCode(0x00ef); break;
case 'eth': ch = String.fromCharCode(0x00f0); break;
case 'ntilde': ch = String.fromCharCode(0x00f1); break;
case 'ograve': ch = String.fromCharCode(0x00f2); break;
case 'oacute': ch = String.fromCharCode(0x00f3); break;
case 'ocirc': ch = String.fromCharCode(0x00f4); break;
case 'otilde': ch = String.fromCharCode(0x00f5); break;
case 'ouml': ch = String.fromCharCode(0x00f6); break;
case 'divide': ch = String.fromCharCode(0x00f7); break;
case 'oslash': ch = String.fromCharCode(0x00f8); break;
case 'ugrave': ch = String.fromCharCode(0x00f9); break;
case 'uacute': ch = String.fromCharCode(0x00fa); break;
case 'ucirc': ch = String.fromCharCode(0x00fb); break;
case 'uuml': ch = String.fromCharCode(0x00fc); break;
case 'yacute': ch = String.fromCharCode(0x00fd); break;
case 'thorn': ch = String.fromCharCode(0x00fe); break;
case 'yuml': ch = String.fromCharCode(0x00ff); break;
case 'OElig': ch = String.fromCharCode(0x0152); break;
case 'oelig': ch = String.fromCharCode(0x0153); break;
case 'Scaron': ch = String.fromCharCode(0x0160); break;
case 'scaron': ch = String.fromCharCode(0x0161); break;
case 'Yuml': ch = String.fromCharCode(0x0178); break;
case 'fnof': ch = String.fromCharCode(0x0192); break;
case 'circ': ch = String.fromCharCode(0x02c6); break;
case 'tilde': ch = String.fromCharCode(0x02dc); break;
case 'Alpha': ch = String.fromCharCode(0x0391); break;
case 'Beta': ch = String.fromCharCode(0x0392); break;
case 'Gamma': ch = String.fromCharCode(0x0393); break;
case 'Delta': ch = String.fromCharCode(0x0394); break;
case 'Epsilon': ch = String.fromCharCode(0x0395); break;
case 'Zeta': ch = String.fromCharCode(0x0396); break;
case 'Eta': ch = String.fromCharCode(0x0397); break;
case 'Theta': ch = String.fromCharCode(0x0398); break;
case 'Iota': ch = String.fromCharCode(0x0399); break;
case 'Kappa': ch = String.fromCharCode(0x039a); break;
case 'Lambda': ch = String.fromCharCode(0x039b); break;
case 'Mu': ch = String.fromCharCode(0x039c); break;
case 'Nu': ch = String.fromCharCode(0x039d); break;
case 'Xi': ch = String.fromCharCode(0x039e); break;
case 'Omicron': ch = String.fromCharCode(0x039f); break;
case 'Pi': ch = String.fromCharCode(0x03a0); break;
case ' Rho ': ch = String.fromCharCode(0x03a1); break;
case 'Sigma': ch = String.fromCharCode(0x03a3); break;
case 'Tau': ch = String.fromCharCode(0x03a4); break;
case 'Upsilon': ch = String.fromCharCode(0x03a5); break;
case 'Phi': ch = String.fromCharCode(0x03a6); break;
case 'Chi': ch = String.fromCharCode(0x03a7); break;
case 'Psi': ch = String.fromCharCode(0x03a8); break;
case 'Omega': ch = String.fromCharCode(0x03a9); break;
case 'alpha': ch = String.fromCharCode(0x03b1); break;
case 'beta': ch = String.fromCharCode(0x03b2); break;
case 'gamma': ch = String.fromCharCode(0x03b3); break;
case 'delta': ch = String.fromCharCode(0x03b4); break;
case 'epsilon': ch = String.fromCharCode(0x03b5); break;
case 'zeta': ch = String.fromCharCode(0x03b6); break;
case 'eta': ch = String.fromCharCode(0x03b7); break;
case 'theta': ch = String.fromCharCode(0x03b8); break;
case 'iota': ch = String.fromCharCode(0x03b9); break;
case 'kappa': ch = String.fromCharCode(0x03ba); break;
case 'lambda': ch = String.fromCharCode(0x03bb); break;
case 'mu': ch = String.fromCharCode(0x03bc); break;
case 'nu': ch = String.fromCharCode(0x03bd); break;
case 'xi': ch = String.fromCharCode(0x03be); break;
case 'omicron': ch = String.fromCharCode(0x03bf); break;
case 'pi': ch = String.fromCharCode(0x03c0); break;
case 'rho': ch = String.fromCharCode(0x03c1); break;
case 'sigmaf': ch = String.fromCharCode(0x03c2); break;
case 'sigma': ch = String.fromCharCode(0x03c3); break;
case 'tau': ch = String.fromCharCode(0x03c4); break;
case 'upsilon': ch = String.fromCharCode(0x03c5); break;
case 'phi': ch = String.fromCharCode(0x03c6); break;
case 'chi': ch = String.fromCharCode(0x03c7); break;
case 'psi': ch = String.fromCharCode(0x03c8); break;
case 'omega': ch = String.fromCharCode(0x03c9); break;
case 'thetasym': ch = String.fromCharCode(0x03d1); break;
case 'upsih': ch = String.fromCharCode(0x03d2); break;
case 'piv': ch = String.fromCharCode(0x03d6); break;
case 'ensp': ch = String.fromCharCode(0x2002); break;
case 'emsp': ch = String.fromCharCode(0x2003); break;
case 'thinsp': ch = String.fromCharCode(0x2009); break;
case 'zwnj': ch = String.fromCharCode(0x200c); break;
case 'zwj': ch = String.fromCharCode(0x200d); break;
case 'lrm': ch = String.fromCharCode(0x200e); break;
case 'rlm': ch = String.fromCharCode(0x200f); break;
case 'ndash': ch = String.fromCharCode(0x2013); break;
case 'mdash': ch = String.fromCharCode(0x2014); break;
case 'lsquo': ch = String.fromCharCode(0x2018); break;
case 'rsquo': ch = String.fromCharCode(0x2019); break;
case 'sbquo': ch = String.fromCharCode(0x201a); break;
case 'ldquo': ch = String.fromCharCode(0x201c); break;
case 'rdquo': ch = String.fromCharCode(0x201d); break;
case 'bdquo': ch = String.fromCharCode(0x201e); break;
case 'dagger': ch = String.fromCharCode(0x2020); break;
case 'Dagger': ch = String.fromCharCode(0x2021); break;
case 'bull': ch = String.fromCharCode(0x2022); break;
case 'hellip': ch = String.fromCharCode(0x2026); break;
case 'permil': ch = String.fromCharCode(0x2030); break;
case 'prime': ch = String.fromCharCode(0x2032); break;
case 'Prime': ch = String.fromCharCode(0x2033); break;
case 'lsaquo': ch = String.fromCharCode(0x2039); break;
case 'rsaquo': ch = String.fromCharCode(0x203a); break;
case 'oline': ch = String.fromCharCode(0x203e); break;
case 'frasl': ch = String.fromCharCode(0x2044); break;
case 'euro': ch = String.fromCharCode(0x20ac); break;
case 'image': ch = String.fromCharCode(0x2111); break;
case 'weierp': ch = String.fromCharCode(0x2118); break;
case 'real': ch = String.fromCharCode(0x211c); break;
case 'trade': ch = String.fromCharCode(0x2122); break;
case 'alefsym': ch = String.fromCharCode(0x2135); break;
case 'larr': ch = String.fromCharCode(0x2190); break;
case 'uarr': ch = String.fromCharCode(0x2191); break;
case 'rarr': ch = String.fromCharCode(0x2192); break;
case 'darr': ch = String.fromCharCode(0x2193); break;
case 'harr': ch = String.fromCharCode(0x2194); break;
case 'crarr': ch = String.fromCharCode(0x21b5); break;
case 'lArr': ch = String.fromCharCode(0x21d0); break;
case 'uArr': ch = String.fromCharCode(0x21d1); break;
case 'rArr': ch = String.fromCharCode(0x21d2); break;
case 'dArr': ch = String.fromCharCode(0x21d3); break;
case 'hArr': ch = String.fromCharCode(0x21d4); break;
case 'forall': ch = String.fromCharCode(0x2200); break;
case 'part': ch = String.fromCharCode(0x2202); break;
case 'exist': ch = String.fromCharCode(0x2203); break;
case 'empty': ch = String.fromCharCode(0x2205); break;
case 'nabla': ch = String.fromCharCode(0x2207); break;
case 'isin': ch = String.fromCharCode(0x2208); break;
case 'notin': ch = String.fromCharCode(0x2209); break;
case 'ni': ch = String.fromCharCode(0x220b); break;
case 'prod': ch = String.fromCharCode(0x220f); break;
case 'sum': ch = String.fromCharCode(0x2211); break;
case 'minus': ch = String.fromCharCode(0x2212); break;
case 'lowast': ch = String.fromCharCode(0x2217); break;
case 'radic': ch = String.fromCharCode(0x221a); break;
case 'prop': ch = String.fromCharCode(0x221d); break;
case 'infin': ch = String.fromCharCode(0x221e); break;
case 'ang': ch = String.fromCharCode(0x2220); break;
case 'and': ch = String.fromCharCode(0x2227); break;
case 'or': ch = String.fromCharCode(0x2228); break;
case 'cap': ch = String.fromCharCode(0x2229); break;
case 'cup': ch = String.fromCharCode(0x222a); break;
case 'int': ch = String.fromCharCode(0x222b); break;
case 'there4': ch = String.fromCharCode(0x2234); break;
case 'sim': ch = String.fromCharCode(0x223c); break;
case 'cong': ch = String.fromCharCode(0x2245); break;
case 'asymp': ch = String.fromCharCode(0x2248); break;
case 'ne': ch = String.fromCharCode(0x2260); break;
case 'equiv': ch = String.fromCharCode(0x2261); break;
case 'le': ch = String.fromCharCode(0x2264); break;
case 'ge': ch = String.fromCharCode(0x2265); break;
case 'sub': ch = String.fromCharCode(0x2282); break;
case 'sup': ch = String.fromCharCode(0x2283); break;
case 'nsub': ch = String.fromCharCode(0x2284); break;
case 'sube': ch = String.fromCharCode(0x2286); break;
case 'supe': ch = String.fromCharCode(0x2287); break;
case 'oplus': ch = String.fromCharCode(0x2295); break;
case 'otimes': ch = String.fromCharCode(0x2297); break;
case 'perp': ch = String.fromCharCode(0x22a5); break;
case 'sdot': ch = String.fromCharCode(0x22c5); break;
case 'lceil': ch = String.fromCharCode(0x2308); break;
case 'rceil': ch = String.fromCharCode(0x2309); break;
case 'lfloor': ch = String.fromCharCode(0x230a); break;
case 'rfloor': ch = String.fromCharCode(0x230b); break;
case 'lang': ch = String.fromCharCode(0x2329); break;
case 'rang': ch = String.fromCharCode(0x232a); break;
case 'loz': ch = String.fromCharCode(0x25ca); break;
case 'spades': ch = String.fromCharCode(0x2660); break;
case 'clubs': ch = String.fromCharCode(0x2663); break;
case 'hearts': ch = String.fromCharCode(0x2665); break;
case 'diams': ch = String.fromCharCode(0x2666); break;
default: ch = ''; break;
}
}
i = semicolonIndex;
}
}
out += ch;
}
return out;
}