1 String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,'') }
2 String.prototype.escRegExp = function(){ return this.replace(/[\\$*+?()=!|,{}\[\]\.^]/g,'\\$&') }
3 String.prototype.unescHtml = function(){ var i,t=this; for(i in e) t=t.replace(new RegExp(i,'g'),e[i]); return t }
5 var tags = tagList.split(/\s+/);
6 for (t in tags) { availhash[tags[t]] = 1 }
8 function addHandler( elt ) {
13 document.onkeyup = function (event) {
14 var e=(event||window.event) //w3||ie
21 params.elt.style.background = "#fff";
22 $("suggestionlist").style.visibility='hidden';
24 case 38: case 40: case 9: case 13: break;
26 var tagArray = params.elt.value.toLowerCase().split(' '),
27 txt=tagArray[tagArray.length-1].trim().escRegExp(), tagHash={}, t
28 for(t in tagArray) tagHash[tagArray[t]] = true;
29 var sl = $("suggestionlist");
30 if (!txt) { sl.style.visibility = 'hidden'; return; }
32 var search = tagList.match(new RegExp(("(?:^| )("+txt+"[^ ]+)"), "gi"))
34 params.elt.style.background = availhash[txt] ? "#dfd" : "#fff";
35 while(sl.childNodes.length > 0) { sl.removeChild(sl.firstChild) }
36 sl.style.visibility='visible';
39 if (!tagHash[search[i]]) {
40 var tn = document.createTextNode(search[i]);
41 var a = document.createElement("a");
44 a.onclick = function () {
45 elt.value = elt.value.replace(new RegExp(closureTxt+"$"),this.firstChild.nodeValue+" ");
47 sl.style.visibility='hidden';
54 params.elt.style.background = availhash[txt] ? "#dfd" : "#fdd";
55 sl.style.visibility='hidden';