
var Handrit = {
    enhanceTable: function() {
	
	}
};

function changeTab(num, prefix) {
	for (var i = 0; true; i++) {
		if (!document.getElementById(prefix + i)) {
			break;
		}
		if (i != num && $(prefix + i).visible()) {
			$(prefix + i).hide();
			$(prefix + i + "_tab").className = 'unSelectedTab';
		}
		$(prefix + i).className = 'tabItem';
	}
	$(prefix + num).show();
	$(prefix + num + "_tab").className = 'selectedTab';
	window.location.hash = prefix;
}

function switchTab(tabName, tabGroupName, skipChangeLocation) {
	var tabId = "tb_" + tabName;
	if (!$(tabId)) {
		return;
	}
	var tabList = document.getElementsByClassName("tb_" + tabGroupName);
	for (var i = 0; i < tabList.length; i++) {
		var tab = tabList[i];
		if (tab.id != tabId) {
			$(tab.id).hide();
			$(tab.id.substring(3) + "_tab").className = 'unSelectedTab';
		}
		$(tab.id).className = 'tb_' + tabGroupName + ' tabItem';
	}
	$(tabId).show();
	$(tabName + "_tab").className = 'selectedTab';
	if (!skipChangeLocation) {
		window.location.hash = tabName;
	}
	currentTabName = tabName;
}

function selectTab(tabGroupName) {
	var hash = window.location.hash;
	if (hash) {
		switchTab(hash.substring(1), tabGroupName);
	}
}

function selectLetter(tabName, defaultLetter) {
	var hash = window.location.hash;
	if (hash) {
		var hash = hash.substring(1);
		var index = hash.indexOf('_');
		var letter = hash;
		if (index != -1) {
			letter = hash.substring(index + 1);
		}
		if (letter) {
			showLetter(tabName, letter, true);
		} else {
			showLetter(tabName, defaultLetter, true);
		}
	} else {
		showLetter(tabName, defaultLetter, true);
	}
}

function hideLetterBlocks(type) {
	var elems = $$("div.lb_" + type);
	for (var i = 0; i < elems.length; i++) {
		elems[i].hide();
	}
}

function showLetter(type, letter, skipChangeLocation) {
	if (!$("index_" + type)) {
		return;
	}
	$("lb_wait").removeClassName("hidden");
	if ($("index_" + type)) {
		$("index_" + type).removeClassName("hidden");
	}
	$("lb_wait").show();
	hideLetterBlocks(type);
	var id = "lb_" + type + "_" + letter.toLowerCase();
	if ($(id)) {
		if (!$(id).loaded) {
			url = browsePath + "&letter=" + letter;
			new Ajax.Request(url, { method: 'get',
				onSuccess: function(transport) {
					$(id).update(transport.responseText);
					$("lb_wait").hide();
					$(id).removeClassName("hidden");
					$(id).show();
					$(id).loaded = true;
				}
			});
		} else {
			$("lb_wait").hide();
			$(id).show();
		}
	}
	if (!skipChangeLocation) {
		var hash;
		if (typeof currentTabName != 'undefined') {
			hash = currentTabName + "_" + letter;
		} else {
			hash = letter;
		}
		window.location.hash = hash;
	}
	var indexButtonList = $("index_" + type).childElements();
	for (var i = 0; i < indexButtonList.length; i++) {
		var elem = $("letter_" + letter.toLowerCase());
		if ($(indexButtonList[i]) == elem) {
			indexButtonList[i].addClassName("sel");
		} else {
			indexButtonList[i].removeClassName("sel");
		}
	}
}

function tickAll(inElemId) {
	var elemList = $(inElemId).getElementsByTagName('input');
	for (var i = 0; i < elemList.length; i++) {
		if (elemList[i].type == "checkbox") {
			elemList[i].checked = true;
		}
	}
}

function focusAttention(elemId) {
	new Effect.Highlight(elemId, { startcolor: '#00FF00' });
}

function checkPasswords() {
	var passwordField = document.getElementById("newPassword");
	var confirmField = document.getElementById("newPasswordRepeat");
	var submitButton = document.getElementById("changePassword");
	if (!confirmField.value 
			|| confirmField.value == "" ) {
		passwordField.className = "pw_normal";
		confirmField.className = "pw_normal";
		submitButton.disabled = true;
	} else if (passwordField.value != confirmField.value) {
		passwordField.className = "pw_invalid";
		confirmField.className = "pw_invalid";
	} else {
		passwordField.className = "pw_valid";
		confirmField.className = "pw_valid";
		submitButton.disabled = false;
	}
}

function loadEnhancements() {
	enhanceElements('a.locus');
	enhanceElements('a.preview');
	enhanceElements('span.glyph');
}

function enhanceElements(className) {
	var elemArr = $$(className);
	for (var i = 0; i < elemArr.length; i++) {
		var elem = elemArr[i];
		var elemId = elem.id.substring(0, elem.id.lastIndexOf('_')) + "_x";
		var popup = $(elemId);
		elem.popup = popup;
		$(elem).observe('mouseover', showEnhancementItem.bindAsEventListener(elem));
	}
}

function showEnhancementItem(event) {
	var elem = this;
	var popup = elem.popup;
	popup.style.display='block';
	var offset = elem.offsetHeight;
	popup.clonePosition(elem, {setWidth:false, setHeight:false, offsetTop:offset});
	elem.moveHandler = mouseMoving.bindAsEventListener(elem);
	$(document).observe('mousemove', elem.moveHandler);
}

function mouseMoving(event) {
	var elem = Event.element(event);
	var linkItem = this;
	var popup = linkItem.popup;
	if (elem == popup 
			|| elem == linkItem
			|| elem.descendantOf(popup)) {
		// Mouse is still over the element.
	} else {
		popup.style.display='none';
		Event.stopObserving(document, 'mousemove', linkItem.moveHandler);
	}
}

