function findObj(idStr) {
	if (document.getElementById != null) {
		return document.getElementById(idStr);
	} else {
		return document.all[idStr];
	}
}
function createOption(valueStr, textStr) {
	var rez; 
	
	rez = document.createElement("OPTION");
	rez.value = valueStr;
	rez.text = textStr;
	return rez;
}
function valuesElemSetVal4Send(num) {
	var hiddenElement;
	var selectElement;
	var valueStr = "";
	var i;
	
	hiddenElement = findObj("values_elem_hidden" + num);
	selectElement = findObj("values_elem_select" + num);
	for (i = 0; i < selectElement.options.length; i++) {
		if (valueStr.length > 0) valueStr += "\n";
		valueStr += selectElement.options[i].text;
	}
	hiddenElement.value = valueStr;
}
function valuesElemAddVal(num) {
	var textElement;
	var selectElement;
	
	textElement = findObj("values_elem_text" + num);
	selectElement = findObj("values_elem_select" + num);
	if (textElement.value != null 
			&& /\S/.test(textElement.value)) {
		selectElement.options[selectElement.options.length] 
				= createOption("", textElement.value);
		textElement.value = "";
		valuesElemSetVal4Send(num);
	}
}
function valuesElemRemoveVal(num) {
	var selectElement;
	var optionElement;

	selectElement = findObj("values_elem_select" + num);
	if (selectElement.selectedIndex >= 0) {
		optionElement = selectElement.options[selectElement.selectedIndex];
		selectElement.options[selectElement.selectedIndex] = null;
		valuesElemSetVal4Send(num);
	}
}
function valuesElemEditVal(num) {
	var textElement;
	var selectElement;
	var optionElement;

	textElement = findObj("values_elem_text" + num);
	selectElement = findObj("values_elem_select" + num);
	if (selectElement.selectedIndex >= 0) {
		optionElement = selectElement.options[selectElement.selectedIndex];
		textElement.value = optionElement.text;
		selectElement.options[selectElement.selectedIndex] = null;
		valuesElemSetVal4Send(num);
	}
}
var controlsCount = 0;
function createExtListControl(addCaption, deleteCaption, name, values) {
	var valuesStr = "";
	var valuesOpt = "";
	var i;
	var num = ++controlsCount;
	
	for (i = 0; i < values.length; i++) {
		valuesStr += values[i];
		if (i < values.length - 1) {
			valuesStr += "\n";
		}
		
		valuesOpt += "<option>" + values[i] + "</option>";
	}
	
	return    "<table cellspacing='0' cellpadding='2' border='0'>"
			+ "<tr>"
	    	+ "<td><input id='values_elem_hidden" + num + "' type='hidden' "
			+ "           name='" + name + "' value='" + valuesStr + "'>"
			+ "<input id='values_elem_text" + num + "' type='text' "
			+ "       style='width: 200px;'></td>"
			+ "<td>&nbsp;</td>"
			+ "</tr>"
			+ "<tr>"
			+ "<td><select id='values_elem_select" + num + "' size='5' "
			+ "            style='width: 200px;' "
			+ "            onDblClick='valuesElemEditVal(" + num + ");'>"
			+ valuesOpt
			+ "</select></td>"
			+ "<td valign='top'>"
			+ "<input id='values_elem_add_button" + num + "' type='button' value='"
			+ addCaption 
			+ "' onClick='valuesElemAddVal(" + num + ");'><br>"
			+ "<input id='values_elem_remove_button" + num + "' type='button' value='"
			+ deleteCaption
			+ "' onClick='valuesElemRemoveVal(" + num + ");'>"
			+ "</td>"
			+ "</tr>"
			+ "</table>";
}
