/**
 * Search v1.0
 * @author
 * (c) 2008 Adam Schwartz - http://polymath.mit.edu
 *
 * @license
 * Licensed under the MIT Licencse
 * http://www.opensource.org/licenses/mit-license.php
 * This is distributed WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @dependencies
 * stringutils.js 
 */

var Search = {
	conduct: function (e) {
		var keynum;
		if(window.event) {
			keynum = e.keyCode;
		} else if(e.which) {
			keynum = e.which;
		}
		if (keynum == 13) {	//enter
			var stringToSearch = StringUtils.htmlspecialchars($('searchInput').value);
			this.searchSearchableDivs(stringToSearch);
			$('searchInput').value = "";
		}
		if (keynum == 38) {	//up
			
		}
	},
	searchSearchableDivs: function (string) {
		var searchQuery = string;
		var outputContainer = $('searchResults');
		outputContainer.innerHTML = "";
		N_Srch_Rslts = 0;
		var allDivs = document.body.getElementsByTagName("DIV");
		for (l=0; l<allDivs.length; l++) {
			if (ClassManipulation.hasClass(allDivs[l], "searchable")) {
				this.searchDiv(searchQuery, allDivs[l]);
			}
		}
		outputContainer.innerHTML = "<center><b>" + N_Srch_Rslts.toString() + " results found for \"" + searchQuery + "\"</b></center>" + outputContainer.innerHTML;
		Tabber.show($('searchContents'));
	},
	searchDiv: function (string, obj) {
		var searchString = StringUtils.removeHTMLtags(obj.innerHTML);
		var pos = searchString.search(new RegExp(string, "i"));
		if (pos != -1) {
			N_Srch_Rslts++;
			var snippet = Search.generateSnippet(searchString, pos, string);
			var outputContainer = $('searchResults');
			var title = obj.parentNode.id;
			outputContainer.innerHTML += "<br/><b>" + N_Srch_Rslts.toString() + ". </b>"
									   + "<a class='searchResultLink'" + "href='#tab=" + title + "' " + "onclick='Tabber.openTab(\"" + title + "\")'>" + title + "</a>"
									   + "<br/><i>" + snippet + "</i><br/>";
		}
	},
	generateSnippet: function (searchString, pos, string) {
		var start = 0;
		var end = 100;
		if (pos > 50) {
			start = pos - 50;
			end = pos + 50;
		}
		var snippet = searchString.substring(start, end);
		snippet = StringUtils.convertSpaces(snippet);
		if (start != 0) {
			var spacePos = snippet.search(" ");
			if (spacePos != -1) {
				snippet = snippet.substr(spacePos);
			}
		}
		var spacePos2 = snippet.lastIndexOf(" ");
		if (spacePos2 != -1) {
			snippet = snippet.substring(0, spacePos2);
		}
		snippet = StringUtils.htmlspecialchars(snippet);
		snippet = snippet.replace(new RegExp(string, "gi"), "<span class='highlighted'>"+string+"</span>");
		if (start != 0) { snippet = "... " + snippet; }
		return snippet + " ...";
	}
}