function show_hide(elementId) {
	var el = document.getElementById(elementId);

	var i = el.className.indexOf('invisible');
	if (i >= 0)
		el.className = el.className.substring(0, i)
			+ 'visible'
			+ el.className.substring(i + 9);
	else {
		i = el.className.indexOf('visible');
		if (i >= 0) {
			el.className = el.className.substring(0, i)
				+ 'invisible'
				+ el.className.substring(i + 7);
		}
		else
			el.className += (el.className == '' ? '' : ' ') + 'invisible';
	}
}

function show(elementId) {
	var el = document.getElementById(elementId);

	var i = el.className.indexOf('invisible');
	if (i >= 0)
		el.className = el.className.substring(0, i)
			+ 'visible'
			+ el.className.substring(i + 9);
	else
		if ((i = el.className.indexOf('visible')) == -1)
			el.className += (el.className == '' ? '' : ' ') + 'visible';
}

function hide(element) {
	var el;
	if (typeof(element) == 'String')
	  el = document.getElementById(elementId);
	else
		el = element;

	var i = el.className.indexOf('invisible');
	if (i == -1)
		if ((i = el.className.indexOf('visible')) >= 0)
			el.className = el.className.substring(0, i)
				+ 'invisible'
				+ el.className.substring(i + 7);
		else
			el.className += (el.className == '' ? '' : ' ') + 'invisible';
}

function plus_minus(elId)
{
	var el = document.getElementById(elId);
	var i, j, k, tag, curVal, newVal;
	for (i = 0, j = 0; i < el.childNodes.length; i++) {
		if (el.childNodes.item(i).nodeName != 'TD')
			continue;
		if (j == 0) {
			for (k = 0; k < el.childNodes.item(i).childNodes.length; k++) {
				tag = el.childNodes.item(i).childNodes.item(k);
				if (tag.nodeName == 'A') {
					curVal = tag.innerHTML;
					tag.innerHTML = newVal = (curVal == '-') ? '+' : '-';
					break;
				}
			}
		}
	}
	for (i = 0; i < el.parentNode.childNodes.length; i++) {
		if (el.parentNode.childNodes.item(i) == el) {
			for (j = i + 1; j < el.parentNode.childNodes.length; j++) {
				tag = el.parentNode.childNodes.item(j);
				if (tag.nodeName == 'TR') {
					tag.className = tag.className == 'tr-invisible' ? 'tr-visible' : 'tr-invisible';
					return;
				}
			}
		}
	}
}

function calendar_show_event(elementId)
{
	var i;
	var ch, el = document.getElementById(elementId);
	if (el) {
		for (i = 0; i < el.parentNode.childNodes.length; i++) {
			ch = el.parentNode.childNodes.item(i);
			if (ch != el && ch.className != undefined
					&& ch.className.indexOf("calendar-detail") != -1)
				hide(ch);
		}
		show(elementId);
	}
}

function input_clean(elId)
{
	var el = document.getElementById(elId);
	var i;
	if (typeof(modifiedInputs) == 'undefined') {
		modifiedInputs = [];
		modifiedInputValues = [];
	}
	for (i = 0; i < modifiedInputs.length; i++)
		if (modifiedInputs[i] == elId)
			break;
	if (modifiedInputValues[i] == undefined || el.value == modifiedInputValues[i]) {
		modifiedInputs[i] = elId;
		modifiedInputValues[i] = el.value;
		el.value = '';
	}
}

function input_revert(elId)
{
	var el = document.getElementById(elId);
	if (el.value == '' && typeof(modifiedInputs) != 'undefined') {
		var i;
		for (i = 0; i < modifiedInputs.length; i++)
			if (modifiedInputs[i] == elId)
				break;
		if (i < modifiedInputs.length)
			el.value = modifiedInputValues[i];
	}
}

function rel_external()
{
	var el = arguments[0];
	if (typeof(el) == 'undefined')
		el = document.body;
	if (el.getAttribute != undefined)
		if (el.getAttribute('rel') == 'external')
			el.setAttribute('target', '_blank');
	var i;
	if (el.childNodes)
		for (i = 0; i < el.childNodes.length; i++)
			rel_external(el.childNodes.item(i));
}
