var schix = 0;
var sPath = root + "Topics";

var searchDB = new Array();
var searchRef = new Array();

var checkEnter = function(e)
{ 
	// e is event object passed from function invocation
	// literal character code will be stored in this variable
	var characterCode;

	if(e && e.which){ 
		// if which property of event object is supported (NN4)
		e = e;
		// character code is contained in NN4's which property
		characterCode = e.which; 
	}
	else{
		try{
			e = event;
		}
		catch(err)
		{
			
		}
		
		// character code is contained in IE's keyCode property
		characterCode = e.keyCode; 
	}
	
        switch(characterCode)
	{
		case 13: // enter key
			exeSearch();
			return false;
			break;

		default:
			return true;
			break;
	}
}

function exeSearch() {
	var oTxt = document.getElementById("txtSearch");
	var bExact = false;
	
	if ( oTxt.value.length < 3 ) {
		alert("Be sure to specify a search string that is at least four characters long.");
		return false;
	}
	
	var sSource = "";
	var win = document.getElementById("SearchResults"); //window.open("", "searchResults", "width=200,height=350");
	
	//window.name = "Main";
					
	//win.document.open("text/html", "replace");
	win.innerHTML = searchDocs(oTxt.value,bExact);
	
	//win.document.close();
}

function searchDocs(sCriteria,bExact) {
	var sTmp = "";
	var sSearch = "";
	
	sSearch = sCriteria;
	sSearch = sSearch.toLowerCase();
	
	var arTmp = sSearch.split(" ");
	
	if ( bExact ) {
		for (var oItem in searchDB) {
			var sEntry = "" + searchDB[oItem]["Topic"] + " " + searchDB[oItem]["Title"] + " " + searchDB[oItem]["Keywords"];
			sEntry = sEntry.toLowerCase();
			
			if ( sEntry.indexOf(sSearch) > -1 && isUniqueResult(searchDB[oItem]["Url"]) && searchDB[oItem]["Status"] != "deleted" && searchDB[oItem]["Status"] != "hidden" ) {
				if (searchDB[oItem]["Url"] == "")
					sTmp += "					<div onclick=\"d.openTo('" + searchDB[oItem]["ID"] + "',true,false); showTopic('" + searchDB[oItem]["ID"] + "'); searchHighlight('" + sCriteria + "');\">" + searchDB[oItem]["Title"] + "</div>\n";
				else
					sTmp += "					<a href=\"" + searchDB[oItem]["Url"] + "\" target=\"" + searchDB[oItem]["Target"] + "\">" + searchDB[oItem]["Title"] + "</a><br />\n";
			}
		}
	}
	else {
		for (var i in arTmp) {
			for (var oItem in searchDB) {
				var sEntry = "" + searchDB[oItem]["Topic"] + " " + searchDB[oItem]["Title"] + " " + searchDB[oItem]["Keywords"];
				sEntry = sEntry.toLowerCase();
				
				if ( sEntry.indexOf(arTmp[i]) > -1 && isUniqueResult(searchDB[oItem]["Url"]) && searchDB[oItem]["Status"] != "deleted" && searchDB[oItem]["Status"] != "hidden" ) {
					if (searchDB[oItem]["Url"] == "")
						sTmp += "					<div onclick=\"d.openTo('" + searchDB[oItem]["ID"] + "',true,false); showTopic('" + searchDB[oItem]["ID"] + "'); searchHighlight('" + sCriteria + "');\">" + searchDB[oItem]["Title"] + "</div>\n";
				else
					sTmp += "					<div><a href=\"" + searchDB[oItem]["Url"] + "\" target=\"" + searchDB[oItem]["Target"] + "\">" + searchDB[oItem]["Title"] + "</a></div>\n";
				}
			}
		}
	}

	if (sTmp == "")
	{
		sTmp += "<div>There are no results to display</div>";
	}
	
	sTmp += "        </table>\n";
	
	return sTmp;
}

function showTopic(oItem) {
	for (var i=0; i < searchDB.length; i++)
	{
		if(searchDB[i]["ID"] == oItem)
		{
			document.getElementById('divBody').innerHTML = '<h1 class="TopicTitle">' + searchDB[i]["Title"] + '</h1><h2 class="TopicSubTitle">' + searchDB[i]["SubTitle"] + '</h2><hr />' + searchDB[i]["Topic"];
			break;
		}
	}
}

function showHome() {
	for (var oItem in searchDB) {
		if ( searchDB[oItem]["Status"] == "home" && document.getElementById('divBody') != null) {
			document.getElementById('divBody').innerHTML = '<h2>' + searchDB[oItem]["Title"] + '</h2><h5>' + searchDB[oItem]["SubTitle"] + '</h5><hr />' + searchDB[oItem]["Topic"];
		}
	}
}

function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");

	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
	
		if (pair[0] == variable) {
			return pair[1];
		}
	} 

	return "";
}

function isUniqueResult(oArray,sUrl) {
	var sTmp = "";
	var sSearch = "";
	sSearch = sUrl;
	sSearch = sTmp.toLowerCase();
	bSuccess = true;
	
	for (var oItem in oArray) {
		// check against the url
		sTmp = oArray[oItem]["Link"];
		
		if ( sTmp == sSearch ) {
			bSuccess = false;
		}
	}
	
	return bSuccess;
}








/*
						SEARCH WORD HIGHLIGHTER CODE
*/
/* http://www.kryogenix.org/code/browser/searchhi/ */
/* Modified 20021006 to fix query string parsing and add case insensitivity */
function highlightWord(node,word) {
	// Iterate into this nodes childNodes
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {
			highlightWord(node.childNodes[hi_cn],word);
		}
	}

	// And do this node itself
	if (node.nodeType == 3) { // text node
		tempNodeVal = node.nodeValue.toLowerCase();
		tempWordVal = word.toLowerCase();
		if (tempNodeVal.indexOf(tempWordVal) != -1) {
			pn = node.parentNode;
			if (pn.className != "searchword") {
				// word has not already been highlighted!
				nv = node.nodeValue;
				ni = tempNodeVal.indexOf(tempWordVal);
				// Create a load of replacement nodes
				before = document.createTextNode(nv.substr(0,ni));
				docWordVal = nv.substr(ni,word.length);
				after = document.createTextNode(nv.substr(ni+word.length));
				hiwordtext = document.createTextNode(docWordVal);
				hiword = document.createElement("span");
				hiword.className = "searchword";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before,node);
				pn.insertBefore(hiword,node);
				pn.insertBefore(after,node);
				pn.removeChild(node);
			}
		}
	}
}

function googleSearchHighlight() {
	if (getQueryVariable("srch") != "") {
		tmp = getQueryVariable("srch");

		words = tmp.split('%20');

	    for (w=0;w<words.length;w++) {
			highlightWord(document.getElementsByTagName("body")[0],words[w]);
		}
	}
}
function searchHighlight(tmp) {
    words = tmp.split('%20');

    for (w=0;w<words.length;w++) {
        highlightWord(document.getElementById("divBody"),words[w]);
        //highlightWord(document.getElementsByTagName("body")[0],words[w]);
    }
}

function loadDefaults() {
	var tid = getQueryVariable("tid");
	
	if (tid == "") 
	{
		showHome();
	}
	else
	{
		googleSearchHighlight();
		showTopic(tid);
	}
}

window.onload = loadDefaults;
