﻿var setbkcolor = false;var markanchor = false;var anchored = null;var anchororder = null;var maxlevel = 80;function skipQuote1(str, p){var	quote;var slash;do {quote = str.indexOf('\'', p);if (quote == -1) return -1;slash = str.indexOf('\\', p);if (slash != -1 && slash < quote) {p = slash + 1;continue;}return quote;} while(p != -1);return p;}function skipTag(str, p){do {var rightarrow = str.indexOf('>', p);if (rightarrow == -1)return -1;var quote2 = str.indexOf('\"', p);if (quote2 != -1 && quote2 < rightarrow) {p = skipQuote(str, quote2 + 1) + 1;continue;}return rightarrow;} while(p != -1);return p;}function indexOfWord(str, keyword, p, n){var q = str.toUpperCase().indexOf(keyword.toUpperCase(), p);var r = q + keyword.length;var ch = /\w/;if( q == -1 ) return -1;if( q != 0 && ch.test(str.charAt(q-1)) && ch.test(str.charAt(q)) || r != str.length && ch.test(str.charAt(r-1)) && ch.test(str.charAt(r)) ) return indexOfWord(str, keyword, r, n);var leftarrow = str.indexOf('<', p);if (leftarrow != -1 && leftarrow < q) {var rightarrow = skipTag(str, leftarrow+1);if (rightarrow != -1 && n > 0 ) {return indexOfWord(str, keyword, rightarrow+1, n-1);} else return -1;}return q;}function render(str, colors, tp2){var color;var tp = anchororder[tp2-1];if (colors instanceof Array) color = colors[tp%colors.length];else color = colors;if (anchored != null && !anchored[tp]) {anchored[tp] = true;str = str.anchor("keyword"+(tp));}if (!setbkcolor) return str.fontcolor(color);else return '<span style="background-color:' + color + '">' + str + '</span>'}function setColor(obj, keywords, colors){var text = obj.innerHTML;var flag = new Array(text.length);var matched = new Array(keywords.length);var i,j;for(j=0; j<flag.length; j++) flag[j] = 0;for(i=0; i<keywords.length; i++){if(keywords[i].length == 1 && keywords[i].charCodeAt(0)>0xff) {var sub_matched = false;for(j=0; j<i; j++) if(matched[j] && keywords[j].indexOf(keywords[i], 0) != -1){sub_matched = true;break;}if(sub_matched) continue;for(j=1; j<text.length-1; j++) {if ((flag[j-1] || flag[j+1]) && text.charAt(j) == keywords[i]) {flag[j] = i+1;sub_matched = true;}}if (text.length>=2 && flag[text.length-2] && text.charAt(text.length-1) == keywords[i]) {flag[text.length-1] = i+1;sub_matched = true;}if (text.length>=2 && flag[1] && text.charAt(0) == keywords[i]) {flag[0] = i+1;sub_matched = true;}if(sub_matched) continue;}var p = 0, q = 0;matched[i] = false;while( (q = indexOfWord(text, keywords[i], p, maxlevel)) != -1){for(j=q; j<q+keywords[i].length; j++) flag[j] = i+1;p = q + 1;matched[i] = true;}}var result = "";var bg = 0;var tp = flag[0];var i;for(i=0; i<text.length; i++) {if(flag[i] == tp) continue;else {if (tp != 0) result += render(text.substr(bg, i - bg), colors, tp);else result += text.substr(bg, i - bg);tp = flag[i];bg = i;}}if (tp != 0) result += render(text.substr(bg, i - bg), colors, tp);else result += text.substr(bg, i - bg);obj.innerHTML = result;}function _setAllColor(root, classname, keywords, color) {for (var i = 0; i < root.childNodes.length; ++i) {var obj = root.childNodes[i];if (obj.className==classname) {setColor(obj, keywords, color)} else if (obj.hasChildNodes()) {_setAllColor(obj, classname, keywords, color);}}}function setAllColor(classname, keywords, color) {if ( anchororder == null ){anchororder = new Array(keywords.length);for (var i = 0; i < anchororder.length; ++i) {anchororder[i] = i;}}for(var i=0; i<keywords.length; i++){var k = i;for(var j=k+1; j<keywords.length; j++) if(keywords[k].length < keywords[j].length) k = j;var temp = keywords[k];keywords[k] = keywords[i];keywords[i] = temp;var temp2 = anchororder[k];anchororder[k] = anchororder[i];anchororder[i] = temp2;}_setAllColor(document.documentElement, classname, keywords, color);}function setAllBkColor(classname, keywords, color, makeanchor) {setbkcolor = true;if (anchored == null && makeanchor == true) {anchored = new Array(keywords.length);for (var i = 0; i < anchored.length; ++i) {anchored[i] = false;}}setAllColor(classname, keywords, color);setbkcolor = false;}
