﻿var SearchEngineVariable = 'q';

function KeyWordIncludeReferrer() {
	try {
		var ref = document.referrer.toUpperCase();
		if (ref.indexOf('GOOGLE.COM') > 0) { SearchEngineVariable = 'q'; return true; }
		if (ref.indexOf('YAHOO.COM') > 0) { SearchEngineVariable = 'p'; return true; }
		if (ref.indexOf('LOCALHOST') > 0) { SearchEngineVariable = 'q'; return true; }
	}
	catch (exception) { KeyWordProcessError('KeyWordIncludeReferrer', exception); }
	return false;
}


function KeyWordIncludeUrl() {
	var Href = document.location.href.toUpperCase();

	try {
		if (Href.indexOf('/MYFOLDERTOPROCESS/') > -1) { return true; }
		if (Href.indexOf('LOCALHOST') > -1) { return true; }
	}
	catch (exception) { KeyWordProcessError('KeyWordIncludeUrl', exception); }
	return false;
}



function KeyWordGetColor(idx) {
	var color = '#CCCCCC';

	switch (idx) {
		case 0:
			color = '#99FF99'; break;
		case 1:
			color = 'yellow'; break;
		case 2:
			color = '#FFCCFF'; break;
		case 3:
			color = '#CC99FF'; break;
		case 4:
			color = '#99CCFF'; break;
		case 5:
			color = '#FFCC99'; break;
		case 6:
			color = '#CCCCFF'; break;
		case 7:
			color = '#66CCFF'; break;
		default:
			break;
	}
	return color;
}


function KeyWordExcludePhrase(keyword) {

	var ret = false;

	switch (keyword.toUpperCase()) {
		case 'AND': return true;
		case 'OR': return true;
		case '': return true;
	}

	return false;
}



function KeyWordGetKeyWordsFromQueryString() {

	if (KeyWordIncludeReferrer() == false) { return true; }

	var keywords = new Array();
	var ref = document.referrer;
	var pair;
	var qIndex = 0;
	var qs;
	var prm;

	try {


		qIndex = ref.indexOf('?');

		if (qIndex < 1) { return keywords; }

		ref = KeyWordReplace(ref, '%22', '');

		qs = ref.substring(qIndex + 1, ref.length);

		prm = qs.split('&');

		for (i = 0; i < prm.length; i++) {

			pair = prm[i].split('=');

			temp = unescape(pair[0]).split('+');
			name = temp.join(' ');

			if (name != SearchEngineVariable) { continue; }

			temp = unescape(pair[1]).split('+');

			for (k = 0; k < temp.length; k++) {
				if (KeyWordExcludePhrase(temp[k]) == true) { continue; }
				keywords.push(temp[k]);
			}

		}

	}
	catch (exception) { KeyWordProcessError('KeyWordGetKeyWordsFromQueryString', exception); }
	return keywords;
}




function KeyWordHiLite() {

	if (KeyWordIncludeUrl() == false) { return true; }

	var Links;
	var rng;
	var before = ' <font style="color: #000000;text-decoration:none;background-color: ';
	var after = '</b> </font> ';

	try {

		keywords = KeyWordGetKeyWordsFromQueryString();

		if (keywords.length < 1) { return true; }

		Links = KeyWordGetLinks();

		for (k = 0; k < keywords.length; k++) {

			rng = document.body.createTextRange();

			for (i = 0; rng.findText(keywords[k]) != false; i++) {

				try { rng.pasteHTML(before + KeyWordGetColor(k) + ';"> <b>' + rng.text + after); }
				catch (e) { KeyWordProcessError('KeyWordHiLite Text Range', e); }
				finally { rng.collapse(false); }

			}

			rng.collapse(true);
		}

		KeyWordCleanLinks(Links);

	}
	catch (exception) { KeyWordProcessError('KeyWordHiLite', exception); }

}



function KeyWordGetLinks() {

	var Links = new Array();

	for (i = 0; i < document.body.getElementsByTagName('A').length; i++) {
		Links[i] = new Array(document.body.getElementsByTagName('A')[i].href, document.body.getElementsByTagName('A')[i].innerHTML);
	}

	return Links;
}



function KeyWordCleanLinks(Links) {
	for (i = 0; i < document.body.getElementsByTagName('A').length; i++) {
		document.body.getElementsByTagName('A')[i].href = Links[i][0];
		document.body.getElementsByTagName('A')[i].innerHTML = Links[i][1];
	}
}


function KeyWordProcessError(functionName, e) {
	if (e.description == null) {
		// alert(functionName + ' ' + e.message); 
	}
	else {
		// alert(functionName + ' ' + e.description);
	}
}

function KeyWordReplace(OrgVal, SearchVal, ReplaceVal) {
	var Val;
	var RegExp = eval("/" + SearchVal + "/g");
	if (OrgVal.indexOf(SearchVal) < 1) { return OrgVal; }
	Val = OrgVal.replace(RegExp, ReplaceVal);
	return Val;
} 

