/* CROSS-BROWSER EVENT HANDLER */
function addEvent(obj, evType, fn){
	 if (obj.addEventListener){
		 obj.addEventListener(evType, fn, true);
		 return true;
	 } else if (obj.attachEvent){
		 var r = obj.attachEvent("on"+evType, fn);
		return r;
	 } else {
		return false;
	 }
}
/* END EVENT HANDLER */

var delimiters = " \t\n:,:.%@~-+=()[]\\/<>?!#^*";

var keywords = new Array();

//keywords.push("котляров", "шадури", "михеева", "виниковецкая");
//keywords.push("зорин я.п.", бойцова м.г.", "карлова н.а.");
//keywords.push("захарова е.в.", "кошечкина н.а.", "волкова л.д.", "кириллова о.а.");
//keywords.push("жестовская с.и.", "евдокимова е.ю.", "андрейчиков а.в.");
//keywords.push("горбелик в.р.", "панфилов с.а.", "чанышев ф.з.", "дагаев с.ш".);

function dom2Context(node) {
	if (node.nodeType == 3) { //Text
		var parent = node.parentNode;
		var nodeValue = node.nodeValue;
		var text = nodeValue.toLowerCase();
		var lastIdx = 0;
		var idx = 0;
		while (text.length > 0) {
			var idx1 = 0;
			while (idx1 < text.length && delimiters.indexOf(text.charAt(idx1)) >= 0) idx1++;
			var idx2 = idx1;
			while (idx2 < text.length && delimiters.indexOf(text.charAt(idx2)) < 0) idx2++;
			if (idx1 == idx2) {
				break;
			}
			var keyword = text.substring(idx1, idx2);
			
			for (var i in keywords) {
				var kwd = keywords[i];
				if (kwd.length > keyword.length && 
					kwd.length < text.length - idx1 &&
				    kwd == text.substring(idx1, idx1 + kwd.length) &&
				    delimiters.indexOf(text.charAt(kwd.length + idx1)) >= 0) {
					idx2 = kwd.length + idx1;
					keyword = text.substring(idx1, idx2);
				}
				if (kwd == keyword) {
		            if (idx1 > 0 || lastIdx < idx) {
					   parent.insertBefore(document.createTextNode(node.nodeValue.substring(lastIdx, idx + idx1)), node);
					}
					lastIdx = idx;
					var a = document.createElement('A');
					var value = node.nodeValue.substring(lastIdx + idx1, lastIdx + idx2);
					a.href = 'http://feed1.altastat.com/refer?board=6962&q=' + value;
					a.appendChild(document.createTextNode(value));
					parent.insertBefore(a, node);
					lastIdx = (idx + idx2);
					found = true;
					break;
				}
			}
			idx += (idx2);
			text = text.substring(idx2);
		}
		if (lastIdx > 0) {
			if (lastIdx != node.nodeValue.length) {
				parent.insertBefore(document.createTextNode(node.nodeValue.substring(lastIdx)), node);
			}
			parent.removeChild(node);
		}
	} else if (node.nodeName.toLowerCase() != 'a' && node.nodeName.toLowerCase() != 'script' && node.nodeName.toLowerCase() != 'style' && node.childNodes) {
		for (var i = node.childNodes.length - 1; i >= 0; i--) {
			dom2Context(node.childNodes[i]);
		}
	}
}

function onLoad() {
	dom2Context(document.body)
}

addEvent(window, "load", onLoad);