function preg_quote (str) {
return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:\/])/g, "\\$1");
}
// Returns true if character c is a letter or digit.
var reLetterOrDigit = /[a-zA-Z\d]+/;
function hasLetterOrDigit (s)
{
if (reLetterOrDigit.test(s)) {
return true;
}
return false;
}
var nr_lookup = Array();
var nr_ignore = "";var nr_max_links_page = 20;
var nr_min_link_space = 5;
var nr_a_style = " style=\' color: green;\'";
var nr_autolink_dic = Array();
var nr_len=0;
function nr_highlight(nr_source, nr_ignore, nr_search, nr_replace, nr_case_sensitive, nr_num_linkings){
//alert("nr_highlight called for: " + nr_search + " | to | " + nr_replace);
var nr_replaces = 0;
var nr_replacement = "";
var position = nr_min_link_space;
var rpos = -1;
var nr_rei = "i";
if (nr_case_sensitive) {
nr_rei = "";
}
function nr_handle(nr_a, nr_b, nr_c) {
if (nr_replaces >= nr_num_linkings) {
return nr_a;
}
position++;
if (nr_a.charAt(0) == '<' && nr_a.charAt(nr_a.length - 1) == '>') {
if (nr_a.indexOf("nr_autolink")) {
position = 0;
}
return nr_a;
}
if (nr_case_sensitive) {
rpos = nr_a.indexOf(nr_search);
}
else {
rpos = nr_a.toLowerCase().indexOf(nr_search.toLowerCase());
}
if (rpos >= 0) {
part1 = nr_a.substring(0, rpos); //part1 shouldn't have any character or digit
part2 = nr_a.substr(rpos, nr_search.length); //part2 should be equal to nr_search.toLowerCase()
part3 = nr_a.substr(rpos + nr_search.length); //part3 shouldn't have any character or digit
if (hasLetterOrDigit(part1.toString()) || hasLetterOrDigit(part3.toString())) {
return nr_a;
}
cmp1 = part2;
cmp2 = nr_search;
if (!nr_case_sensitive) {
cmp1 = cmp1.toLowerCase();
cmp2 = cmp2.toLowerCase();
}
if(cmp1 == cmp2) {
if (position > nr_min_link_space) {
nr_replaces++;
nr_replacement = nr_a.replace(part2, nr_replace.replace(new RegExp(preg_quote(">" + part2 + "<"), nr_rei), ">" + part2 + "<"));
return nr_replacement;
}
}
}
return nr_a;
}
var nr_regex_src = nr_ignore + '(
)|()|()|(' + preg_quote(nr_search) +'[\\W\\D\\S]{0,2})(?=[\\s<]+)|([\\w\\d]+[\\W\\D\\S]{0,2})(?=[\\s<]+)';
var nr_regex = new RegExp(nr_regex_src, nr_rei + 'g');
return {'nr_word':nr_source.replace(nr_regex, nr_handle), 'linkings':nr_replaces};
}
function nr_get_data() {
var nr_global_cnt = 0;
var nr_tag = "";
var nr_tag_iteration = 0;
var nr_tag_max_replace = 0;
var nr_tag_replaces = Array();
var nr_this_pending_replacements = 0;
for (var i in nr_autolink_dic) {
nr_this_pending_replacements = nr_autolink_dic[i]['num_linkings'];
for (t1 in nr_lookup) {
if (!nr_tag_replaces[t1]) {
nr_tag_replaces[t1] = Array();
nr_tag_replaces[t1][0] = 1;
}
nr_tag = nr_lookup[t1][0];
nr_tag_iteration = nr_lookup[t1][1];
nr_tag_replace = nr_lookup[t1][2];
var nr_tags = jQuery(nr_tag).get();
var nr_tag_i = 0;
for (t2 in nr_tags) {
if (nr_tag_replaces[t1][t2]) {
if (nr_tag_replaces[t1][t2] > nr_tag_replace) {
continue;
}
}
if (!(nr_this_pending_replacements >= 1)) {
break;
}
var nr_word = nr_tags[t2].innerHTML; nr_highlight_res = nr_highlight(nr_word, nr_ignore, i, ""+i+"", nr_autolink_dic[i]['case_sensitive'], nr_this_pending_replacements);
nr_this_pending_replacements -= nr_highlight_res['linkings'];
if (nr_highlight_res['linkings']>=1) {
//alert("Autolinked: " + i);
nr_tags[t2].innerHTML = nr_highlight_res['nr_word'];
if (nr_tag_replaces[t1][t2]) {
nr_tag_replaces[t1][t2] += nr_highlight_res['linkings'];
}
else {
nr_tag_replaces[t1][t2] = nr_highlight_res['linkings'];
}
}
nr_tag_i++;
if ((nr_tag_iteration > 0) && (nr_tag_i >= nr_tag_iteration)) {
break;
}
}
}
if (nr_global_cnt >= nr_max_links_page) {
break;
}
nr_global_cnt += 1;
}
}
nr_get_data();