function popupWindow(url, name, features) {
	var w = window.open(url, name, features);
	if (w) w.focus();
}

function showHelp(topic) {
	popupWindow('Go.jsp?To=HELP&Topic=' + topic, 'help', 'width=450,height=520,scrollbars=yes');
}

function showInfo(topic) {
	popupWindow('Go.jsp?To=INF&Topic=' + topic, 'info', 'width=530,height=300,scrollbars=yes');
}

/* -------------------------------------------------------------------------------- */

function submitForm(element, page, action) {
	if (! element.disabled) handleSubmit(element.form, page, action);
	return true;
}

function submitFormOnReturn(element, page, action) {
	// Unfortunately this only works in IE ...
	if (window.event && window.event.keyCode == 13) {
		return submitForm(element, page, action);
	}
	return false;
}

function handleSubmit(form, page, action) {
	form.elements['To'].value = page;
	form.elements['Action'].value = action;
	form.submit();
	disableForm(form);
}

function setImage(id, image) {
	var el = document.getElementById(id);
	if (el) el.src = image;
}

function showHide(id, show) {
	var el = document.getElementById(id);
	if (el) el.style.display = show ? '' : 'none';
}

function getValue(id) {
	var el = document.getElementById(id);
	return el ? el.value : '';
	return value;
}

function setValue(id, value) {
	var el = document.getElementById(id);
	if (el) el.value = value;
}

function setButtonText(id, txt) {
	setText(id, txt);
}

function setText(id, txt) {
	var el = document.getElementById(id);
	if (el) el.innerHTML = txt;
}

function enableElement(id, enable) {
	var el = document.getElementById(id);
	if (el) {
		el.disabled = ! enable;
		if (el.tagName == 'BUTTON') el.className = enable ? '' : 'disabled';
	}
}

// TODO: use a function name that better matches the implementation ...
function updateElement(id, enable, value) {
	var el = document.getElementById(id);
	if (el) {
		if (el.disabled == enable) {
			el.disabled = ! el.disabled;
			el.value = value;
		}
	}
}

function getSelectedMenuItem(id) {
	var menu = document.getElementById(id);
	return menu ? menu.options[menu.selectedIndex].value : null;
}

function selectMenuItem(id, value) {
	var menu = document.getElementById(id);
	if (menu) {
		menu.options[menu.selectedIndex].selected = false;
		menu.selectedIndex = -1;
		for (i = 0; i < menu.options.length; i++) {
			if (menu.options[i].value == value) {
				menu.options[i].selected = true;
				menu.selectedIndex = i;
				break;
			}
		}
	}
}

function disableForm(form) {
	for (i = 0; i < form.elements.length; i++) {
		form.elements[i].disabled = true;
		if (form.elements[i].tagName == 'BUTTON') form.elements[i].className = 'disabled';
	}
}

/* -------------------------------------------------------------------------------- */

function initFocus(form) {
	var el = firstTextField(document.forms[form]);
	if (el) setFocusOnElement(el);
}

function setFocus(id) {
	setFocusOnElement(document.getElementById(id));
}

function setFocusOnElement(el) {
	if (el) {
		// must be visible, but how can we check that?
		el.focus(); el.select();
	}
}

function firstTextField(form) {
	var element = null;
	var nodes = form.getElementsByTagName('input');
	if (nodes) {
		for (i = 0; i < nodes.length; i++) {
			var node = nodes.item(i);
			if ((node.type == 'text' || node.type == 'password') && ! node.disabled) {
				element = node;
				break;
			}
		}
	}
	return element;
}

/* -------------------------------------------------------------------------------- */

function setCheck(form, val) {
	for (i = 0; i < form.elements.length; i++) {
		if (form.elements[i].name.substring(0, 3) == "chk") form.elements[i].checked = val;
	}
}

// Functions for manipulation of HTML SELECT (Lists) objects

function AddField() {
   sel = document.frmSettings.lstSelFlds;
   av = document.frmSettings.lstAvFlds;
   for (i=0; i<av.options.length; i++) 
   {
	if (av.options[i].selected) 
	{
	opt = new Option(av.options[i].text, av.options[i].value, false, false);
	sel.options[sel.length] = opt;
	av.options[i] = null;i--;
	}
   }
}

function deletefromstring(stringvar, List){
	var jetzt = stringvar.value;

   for (i=0; i<List.options.length; i++) 
   {
		if (List.options[i].selected) 
		{
		label = List.options[i].value;
		jetzt = jetzt.replace("-"+label+"-", "");	
		}
   }
	stringvar.value=jetzt;
}

function appendtostring(stringvar, List){
	var jetzt = stringvar.value;

   for (i=0; i<List.options.length; i++) 
   {
		if (List.options[i].selected) 
		{
		label = List.options[i].value;
		jetzt = jetzt +"-"+label+"-";
		}
   }
	stringvar.value=jetzt;

}


function MoveListItem(fromList, toList) {
   for (i=0; i<fromList.options.length; i++) 
   {
	if (fromList.options[i].selected) 
	{
	opt = new Option(fromList.options[i].text, fromList.options[i].value, false, false); 
	toList.options[toList.length] = opt;
	fromList.options[i] = null;i--;
	}
   }
}

function MoveListItemUp(sel) {
   for (i=1; i<sel.options.length; i++) 
   {
	if (sel.options[i].selected)
	{
	opt = new Option(sel.options[i-1].text, sel.options[i-1].value, false, false);
	sel.options[i-1].text = sel.options[i].text;
	sel.options[i-1].value = sel.options[i].value;
	sel.options[i-1].selected = true;

	sel.options[i].text = opt.text;
	sel.options[i].value = opt.value;
	sel.options[i].selected = false;break;
	}
   }
}

function MoveListItemDown(sel) {
   for (i=(sel.options.length-2);i>=0; i--) 
   {
	if (sel.options[i].selected)
	{
	opt = new Option(sel.options[i + 1].text, sel.options[i + 1].value, false, false);
	sel.options[i + 1].text = sel.options[i].text;
	sel.options[i + 1].value = sel.options[i].value;
	sel.options[i + 1].selected = true;

	sel.options[i].text = opt.text;
	sel.options[i].value = opt.value;
	sel.options[i].selected = false;break;
	}
   }
}

function getListString(sel) {
   tmpStr = "";
   for (i=0; i<sel.options.length; i++) 
   {
	tmpStr = tmpStr + sel.options[i].value;
	if (i<sel.options.length-1) tmpStr = tmpStr + ", ";
   }
   return tmpStr;
}


