Commit RELEASE-NOTES line for the wgCategories js variable I added some time ago.
[lhc/web/wiklou.git] / js2 / mwEmbed / jquery / plugins / jquery.highlight.js
1 /*
2 highlight v1
3
4 Highlights arbitrary terms.
5 <http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
6 MIT license.
7
8 Johann Burkard
9 <http://johannburkard.de>
10 <mailto:jb@eaio.com>
11 */
12 $(function() {
13 jQuery.highlight = document.body.createTextRange ?
14
15 /*
16 Version for IE using TextRanges.
17 */
18 function(node, te) {
19 var r = document.body.createTextRange();
20 r.moveToElementText(node);
21 for (var i = 0; r.findText(te); i++) {
22 r.pasteHTML('<span class="highlight">' + r.text + '<\/span>');
23 r.collapse(false);
24 }
25 }
26
27 :
28
29 /*
30 (Complicated) version for Mozilla and Opera using span tags.
31 */
32 function(node, te) {
33 var pos, skip, spannode, middlebit, endbit, middleclone;
34 skip = 0;
35 if (node.nodeType == 3) {
36 pos = node.data.toUpperCase().indexOf(te);
37 if (pos >= 0) {
38 spannode = document.createElement('span');
39 spannode.className = 'highlight';
40 middlebit = node.splitText(pos);
41 endbit = middlebit.splitText(te.length);
42 middleclone = middlebit.cloneNode(true);
43 spannode.appendChild(middleclone);
44 middlebit.parentNode.replaceChild(spannode, middlebit);
45 skip = 1;
46 }
47 }
48 else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
49 for (var i = 0; i < node.childNodes.length; ++i) {
50 i += $.highlight(node.childNodes[i], te);
51 }
52 }
53 return skip;
54 }
55
56 ;
57 });
58
59 jQuery.fn.removeHighlight = function() {
60 return this.find("span.highlight").each(function() {
61 this.parentNode.replaceChild(this.firstChild, this).normalize();
62 });
63 };