- updateSuggestions()
-}}
- else if (e.type == "keypress") { lastEdit = h.tags.value }
-}
-
-function makeTag(parent, tag, js) {
- parent.appendChild(document.createTextNode(" "+ tag))
-}
-
-function updateSuggestions() {
- while (h.suggest.hasChildNodes()) h.suggest.removeChild(h.suggest.firstChild)
- if(!getCurrentTag() || !currentTag.text) {
- hideSuggestions(); return false
- }
- var tagArray = h.tags.value.toLowerCase().split(' '),
- txt=currentTag.text.trim().escRegExp(), tagHash={}, t
- for(t in tagArray) tagHash[tagArray[t]] = true;
-
- var search = tagList.match(new RegExp(("(?:^| )("+txt+"[^ ]+)"), "gi"))
- if(search){
- var i;
- for (i=0; i<search.length; i++) {
- var tl = search[i].trim()
- if(tagHash[tl]) continue // do not suggest already typed tag
- suggestions[suggestions.length] = makeTag(h.suggest, tl, 'complete')
- suggestions.length++
- }}
- if (suggestions.length > 0) { showSuggestions() }
- else { hideSuggestions(); }
-}
-
-function getCurrentTag() {
- if(h.tags.value == lastEdit) return true // no edit
- if(h.tags == '') return false
- currentTag = {}
- var tagArray=h.tags.value.toLowerCase().split(' '), oldArray=lastEdit.toLowerCase().split(' '), currentTags = [], matched=false, t,o
- for (t in tagArray) {
- for (o in oldArray) {
- if(typeof oldArray[o] == 'undefined') { oldArray.splice(o,1); break }
- if(tagArray[t] == oldArray[o]) { matched = true; oldArray.splice(o,1); break; }
+ var tagArray = params.elt.value.toLowerCase().split(' '),
+ txt=tagArray[tagArray.length-1].trim().escRegExp(), tagHash={}, t
+ for(t in tagArray) tagHash[tagArray[t]] = true;
+ var sl = $("suggestionlist");
+ if (!txt) { sl.style.visibility = 'hidden'; return; }
+
+ var search = tagList.match(new RegExp(("(?:^| )("+txt+"[^ ]+)"), "gi"))
+ if(search){
+ params.elt.style.background = availhash[txt] ? "#dfd" : "#fff";
+ while(sl.childNodes.length > 0) { sl.removeChild(sl.firstChild) }
+ sl.style.visibility='visible';
+ var i;
+ for (i in search) {
+ if (!tagHash[search[i]]) {
+ var tn = document.createTextNode(search[i]);
+ var a = document.createElement("a");
+ var elt = params.elt;
+ var closureTxt = txt;
+ a.onclick = function () {
+ elt.value = elt.value.replace(new RegExp(closureTxt+"$"),this.firstChild.nodeValue+" ");
+ elt.focus();
+ sl.style.visibility='hidden';
+ };
+ a.appendChild(tn);
+ sl.appendChild(a);
+ }
+ }
+ } else {
+ params.elt.style.background = availhash[txt] ? "#dfd" : "#fdd";
+ sl.style.visibility='hidden';
+ }