1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-23 16:52:26 +02:00
TableFilter/dist/TF_Modules/tf_highlightKeywords.js
2015-03-06 19:49:30 +11:00

1 line
1.2 KiB
JavaScript

function tf_HighlightWord(e,t,n,r){if(e.hasChildNodes)for(var i=0;i<e.childNodes.length;i++)tf_HighlightWord(e.childNodes[i],t,n,r);if(e.nodeType==3){var s=e.nodeValue.tf_LCase(),o=t.tf_LCase();if(s.indexOf(o)!=-1){var u=e.parentNode;if(u&&u.className!=n){var a=e.nodeValue,f=s.indexOf(o),l=tf_CreateText(a.substr(0,f)),c=a.substr(f,t.length),h=tf_CreateText(a.substr(f+t.length)),p=tf_CreateText(c),d=tf_CreateElm("span");d.className=n,d.appendChild(p),u.insertBefore(l,e),u.insertBefore(d,e),u.insertBefore(h,e),u.removeChild(e),r.highlightedNodes.push(d.firstChild)}}}}function tf_UnhighlightWord(e,t,n){var r=[];for(var i=0;i<e.highlightedNodes.length;i++){var s=e.highlightedNodes[i];if(!s)continue;var o=s.nodeValue.tf_LCase(),u=t.tf_LCase();if(o.indexOf(u)!=-1){var a=s.parentNode;if(a&&a.className==n){var f=a.previousSibling,l=a.nextSibling;if(!f||!l)continue;l.nodeValue=f.nodeValue+s.nodeValue+l.nodeValue,f.nodeValue="",s.nodeValue="",r.push(i)}}}for(var c=0;c<r.length;c++)e.highlightedNodes.splice(r[c],1)}TF.prototype.UnhighlightAll=function(){if(this.highlightKeywords&&this.searchArgs!=null){for(var e=0;e<this.searchArgs.length;e++)tf_UnhighlightWord(this,this.searchArgs[e],this.highlightCssClass);this.highlightedNodes=[]}};