﻿// JSCRIPT Hashtable implementation
var Hashtable = (function () {
	function _1(_2) { return (typeof _2 === "undefined"); }; function _3(_4) { return (typeof _4 === "function"); }; function _5(_6) { return (typeof _6 === "string"); }; function _7(_8, _9) { return _3(_8[_9]); }; function _a(_b) { return _7(_b, "equals"); }; function _c(_d) { return _7(_d, "hashCode"); }; function _e(_f) {
		if (_5(_f)) { return _f; } else {
			if (_c(_f)) {
				var _10 = _f.hashCode(); if (!_5(_10)) { return _e(_10); }
				return _10;
			} else { if (_7(_f, "toString")) { return _f.toString(); } else { return String(_f); } } 
		} 
	}; function _11(_12, _13) { return _12.equals(_13); }; function _14(_15, _16) { if (_a(_16)) { return _16.equals(_15); } else { return _15 === _16; } }; function _17(o1, o2) { return o1 === o2; }; function _1a(arr, _1c, _1d, _1e, _1f) {
		var _20; for (var i = 0, len = arr.length; i < len; i++) { _20 = arr[i]; if (_1f(_1c, _1d(_20))) { return _1e ? [i, _20] : true; } }
		return false;
	}; function _23(arr, idx) { if (_7(arr, "splice")) { arr.splice(idx, 1); } else { if (idx === arr.length - 1) { arr.length = idx; } else { var _26 = arr.slice(idx + 1); arr.length = idx; for (var i = 0, len = _26.length; i < len; i++) { arr[idx + i] = _26[i]; } } } }; function _29(kv, _2b) { if (kv === null) { throw new Error("null is not a valid " + _2b); } else { if (_1(kv)) { throw new Error(_2b + " must not be undefined"); } } }; var _2c = "key", _2d = "value"; function _2e(key) { _29(key, _2c); }; function _30(_31) { _29(_31, _2d); }; function _32(_33, _34, _35) { this.entries = []; this.addEntry(_33, _34); if (_35 !== null) { this.getEqualityFunction = function () { return _35; }; } }; function _36(_37) { return _37[0]; }; function _38(_39) { return _39[1]; }; _32.prototype = { getEqualityFunction: function (_3a) { if (_a(_3a)) { return _11; } else { return _14; } }, searchForEntry: function (key) { return _1a(this.entries, key, _36, true, this.getEqualityFunction(key)); }, getEntryForKey: function (key) { return this.searchForEntry(key)[1]; }, getEntryIndexForKey: function (key) { return this.searchForEntry(key)[0]; }, removeEntryForKey: function (key) {
		var _3f = this.searchForEntry(key); if (_3f) { _23(this.entries, _3f[0]); return true; }
		return false;
	}, addEntry: function (key, _41) { this.entries[this.entries.length] = [key, _41]; }, size: function () { return this.entries.length; }, keys: function (_42) { var _43 = _42.length; for (var i = 0, len = this.entries.length; i < len; i++) { _42[_43 + i] = this.entries[i][0]; } }, values: function (_46) { var _47 = _46.length; for (var i = 0, len = this.entries.length; i < len; i++) { _46[_47 + i] = this.entries[i][1]; } }, containsKey: function (key) { return _1a(this.entries, key, _36, false, this.getEqualityFunction(key)); }, containsValue: function (_4b) { return _1a(this.entries, _4b, _38, false, _17); } 
	}; function _4c() { }; _4c.prototype = []; function _4d(_4e) { return _4e[0]; }; function _4f(_50, _51, _52) { return _1a(_50, _51, _4d, true, _52); }; function _53(_54, _55) {
		var _56 = _54[_55]; if (_56 && (_56 instanceof _4c)) { return _56[1]; }
		return null;
	}; function _57(_58, _59) {
		var _5a = []; var _5b = {}; _58 = _3(_58) ? _58 : _e; _59 = _3(_59) ? _59 : null; this.put = function (key, _5d) { _2e(key); _30(_5d); var _5e = _58(key); var _5f = _53(_5b, _5e); if (_5f) { var _60 = _5f.getEntryForKey(key); if (_60) { _60[1] = _5d; } else { _5f.addEntry(key, _5d); } } else { var _61 = new _4c(); _61[0] = _5e; _61[1] = new _32(key, _5d, _59); _5a[_5a.length] = _61; _5b[_5e] = _61; } }; this.get = function (key) {
			_2e(key); var _63 = _58(key); var _64 = _53(_5b, _63); if (_64) { var _65 = _64.getEntryForKey(key); if (_65) { return _65[1]; } }
			return null;
		}; this.containsKey = function (key) {
			_2e(key); var _67 = _58(key); var _68 = _53(_5b, _67); if (_68) { return _68.containsKey(key); }
			return false;
		}; this.containsValue = function (_69) {
			_30(_69); for (var i = 0, len = _5a.length; i < len; i++) { if (_5a[i][1].containsValue(_69)) { return true; } }
			return false;
		}; this.clear = function () { _5a.length = 0; _5b = {}; }; this.isEmpty = function () { return _5a.length === 0; }; this.keys = function () {
			var _6c = []; for (var i = 0, len = _5a.length; i < len; i++) { _5a[i][1].keys(_6c); }
			return _6c;
		}; this.values = function () {
			var _6f = []; for (var i = 0, len = _5a.length; i < len; i++) { _5a[i][1].values(_6f); }
			return _6f;
		}; this.remove = function (key) { _2e(key); var _73 = _58(key); var _74 = _53(_5b, _73); if (_74) { if (_74.removeEntryForKey(key)) { if (_74.size() === 0) { var _75 = _4f(_5a, _73, _74.getEqualityFunction(key)); _23(_5a, _75[0]); delete _5b[_73]; } } } }; this.size = function () {
			var _76 = 0; for (var i = 0, len = _5a.length; i < len; i++) { _76 += _5a[i][1].size(); }
			return _76;
		};
	}; return _57;
})();

function gup(name) {
	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
	var results = regex.exec(window.location.href);
	return results == null ? "" : results[1];
}

(function ($) {
	$.fn.extend({
		pager: function (options) {
			var defaults = {
				pageIndex: 0,
				itemsPerPage: 0,
				totalItemCount: 0,
				onPageClick: null
			};
			var options = $.extend(defaults, options);

			return this.each(function () {
				var obj = $(this);
				if (options.totalItemCount > options.itemsPerPage) {
					obj.empty().append(renderPager(options.pageIndex, options.totalItemCount, options.itemsPerPage));

					if ($.isFunction(options.onPageClick))
						options.onPageClick(options.pageIndex);

					var clickHandler = function()
					{
						$("li a", obj).click(function (evt) {
							evt.preventDefault();
							var activePage = $(this).attr("href");
							if ($.isFunction(options.onPageClick)) {
								obj.empty().append(renderPager(activePage, options.totalItemCount, options.itemsPerPage));
								clickHandler();
								options.onPageClick(activePage);
							}
						});
					};
					clickHandler();
				}
				else {
					if ($.isFunction(options.onPageClick)) {
						options.onPageClick(options.pageIndex);
					}
				}
			});
		}
	});

	function renderPager(pageIndex, totalItemCount, itemsPerPage) {
		if (itemsPerPage == 0)
			return "";

		
		var pageCount = parseInt((totalItemCount % itemsPerPage == 0) ? (totalItemCount / itemsPerPage) : (totalItemCount / itemsPerPage + 1));
		var startPoint = 1; //pageIndex - 2;
		var endPoint = pageCount; //pageIndex + 2;

		if (pageIndex < 5) {
			startPoint = 1;
			endPoint = pageCount; /*(pageCount > 5) ? 5 : pageCount;*/
		}
/*
		if (endPoint > pageCount) {
			var minus = endPoint - pageCount;
			startPoint = startPoint - minus;
			endPoint = endPoint - minus;
		}
*/
		var $pager = $('<ul class="pager"></ul>');
		for (var page = startPoint; page <= endPoint; page++) {
			if ((page - 1) != pageIndex) {
				var currentButton = $('<li><a href="' + (page - 1) + '">' + page + '</a></li>');
			}
			else {
				var currentButton = $('<li class="sel"><span>' + page + '</span></li>');
			}
			currentButton.appendTo($pager);
		}
		return $pager;
	}
})(jQuery);

$(document).ready(function () {
	$(".top-select select").change(function () {
		var urlVal = $("option:selected", $(this)).val();
		if (urlVal.length > 5)
			window.location.href = urlVal;
	});

	$(".lb, div.col3 p").click(function () {
		$("#LightText").show();
	});
	$("#LightText .close").click(function () {
		$("#LightText").hide();
	});
})

function validateInput(inputObj, regex) {
	if (inputObj == null || inputObj.length == 0) return true;

	var result = true;
	if (inputObj.is("input[type=checkbox]")) {
		result = inputObj.is(":checked");
	}
	else if (inputObj.is("select")) {
		var val = $.trim(inputObj.val());
		result = val != "";
	}
	else {
		var val = $.trim(inputObj.val());
		if (regex == null || regex == undefined) {
			result = val.length > 0;
		}
		else {
			result = regex.test(val) && val.length > 0;
		}
	}
	return result;
}
