| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- // polyfills for IE<9
 
- (function(fn) {
 
- 	if (!fn.map) {
 
- 		fn.map = function(f/*, thisArg */) {
 
- 			if (this === void 0 || this === null)
 
- 				throw new TypeError();
 
- 			var t = Object(this);
 
- 			var len = t.length >>> 0;
 
- 			if (typeof f !== "function")
 
- 				throw new TypeError();
 
- 			var res = new Array(len);
 
- 			var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
 
- 			for (var i = 0; i < len; i++) {
 
- 				if (i in t)
 
- 					res[i] = f.call(thisArg, t[i], i, t);
 
- 			}
 
- 			return res;
 
- 		}
 
- 	}
 
- 	if (!fn.forEach) {
 
- 		fn.forEach = function (f/*, thisArg */) {
 
- 			if (this === void 0 || this === null)
 
- 				throw new TypeError();
 
- 			var t = Object(this);
 
- 			var len = t.length >>> 0;
 
- 			if (typeof f !== "function")
 
- 				throw new TypeError();
 
- 			var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
 
- 			for (var i = 0; i < len; i++) {
 
- 				if (i in t)
 
- 					f.call(thisArg, t[i], i, t);
 
- 			}
 
- 		}
 
- 	}
 
- })(Array.prototype);
 
- var jssearch = {
 
- 	/**
 
- 	 * the actual words finally used to query (set by last search call)
 
- 	 */
 
- 	queryWords: [],
 
- 	search: function(query) {
 
- 		var words = jssearch.tokenizeString(query);
 
- 		var result = {};
 
- 		jssearch.queryWords = words.map(function(i) { return i.t; });
 
- 		// do not search when no words given
 
- 		if (!words.length) {
 
- 			return result;
 
- 		}
 
- //		result = jssearch.searchForWords(words);
 
- //		if ($.isEmptyObject(result)) {
 
- 			words = jssearch.completeWords(words);
 
- 			jssearch.queryWords = words.map(function(i) { return i.t; });
 
- 			result = jssearch.searchForWords(words);
 
- //		}
 
- 		var res = [];
 
- 		for (var i in result) {
 
- 			res.push(result[i]);
 
- 		}
 
- 		res.sort(function(a,b) { return b.weight - a.weight; });
 
- 		return res;
 
- 	},
 
- 	searchForWords: function(words) {
 
- 		var result = {};
 
- 		words.forEach(function(word) {
 
- 			if (jssearch.index[word.t]) {
 
- 				jssearch.index[word.t].forEach(function(file) {
 
- 					if (result[file.f]) {
 
- 						result[file.f].weight *= file.w * word.w;
 
- 					} else {
 
- 						result[file.f] = {
 
- 							file: jssearch.files[file.f],
 
- 							weight: file.w * word.w
 
- 						};
 
- 					}
 
- 				});
 
- 			}
 
- 		});
 
- 		return result;
 
- 	},
 
- 	completeWords: function(words) {
 
- 		var result = [];
 
- 		words.forEach(function(word) {
 
- 			if (!jssearch.index[word.t] && word.t.length > 2) {
 
- 				// complete words that are not in the index
 
- 				for(var w in jssearch.index) {
 
- 					if (w.substr(0, word.t.length) === word.t) {
 
- 						result.push({t: w, w: 1});
 
- 					}
 
- 				}
 
- 			} else {
 
- 				// keep existing words
 
- 				result.push(word);
 
- 			}
 
- 		});
 
- 		return result;
 
- 	},
 
- 	tokenizeString: function(string)
 
- 	{
 
- 		if (console) {
 
- 			console.log('Error: tokenizeString should have been overwritten by index JS file.')
 
- 		}
 
- 		return [{t: string, w: 1}];
 
- 	}
 
- };
 
 
  |