// ------------------------------------------------------------------
function DoSelectionList(src_name, pstrLeftItems)
{
	var dest = document.getElementById(src_name);
	var option_count_to = dest.length;
	var to_values = "";
	
	// pass on the number of selections
	var actual = document.Form1.elements[pstrLeftItems];
	actual.value = option_count_to;

	// walk through the 'to'-selectionlist for making a 'comma-seperatedlist' of all the options in 'to'-selectionlist.
	for (var i=0; i < option_count_to; i++)
	{
		// when there is more then één option in the 'to'-selectionlist, put a tab behind it.
		if (i > 0)
			to_values += "|";

		// add the option to the 'comma-seperatedlist'.
		//to_values += dest.options[i].value;
		to_values += "(" + dest.options[i].text + "," + dest.options[i].value + ")";
	}
	actual.value = to_values;
//alert(actual.name + ":\n" + actual.value);
}
// ------------------------------------------------------------------
function moveUp(src_name, src_hidden_name)
{
	var src = document.getElementById(src_name);
	var actual = document.forms[0].elements[src_hidden_name];
	
	if (src.selectedIndex > 0)
	{
		var tmpText = src[src.selectedIndex].text;
		var tmpValue = src[src.selectedIndex].value;
		
		src[src.selectedIndex].text = src[src.selectedIndex - 1].text;
		src[src.selectedIndex].value = src[src.selectedIndex - 1].value;

		src[src.selectedIndex-1].text = tmpText;
		src[src.selectedIndex-1].value = tmpValue;

		// adjust the selected value
		src.selectedIndex = src.selectedIndex - 1;

		// order the hiddent list
		updateSelectedValues(src_name, src_hidden_name);
	}
}
// ------------------------------------------------------------------
function moveDn(src_name, src_hidden_name)
{
	var src = document.getElementById(src_name);
	var actual = document.forms[0].elements[src_hidden_name];
	
	if (src.selectedIndex < src.length - 1)
	{
		var tmpText = src[src.selectedIndex].text;
		var tmpValue = src[src.selectedIndex].value;
		
		src[src.selectedIndex].text = src[src.selectedIndex + 1].text;
		src[src.selectedIndex].value = src[src.selectedIndex + 1].value;

		src[src.selectedIndex + 1].text = tmpText;
		src[src.selectedIndex + 1].value = tmpValue;

		// adjust the selected value
		src.selectedIndex = src.selectedIndex + 1;

		// order the hiddent list
		updateSelectedValues(src_name, src_hidden_name);
	}
}
// ------------------------------------------------------------------
function updateSelectedValues(src_name, src_hidden_name)
{
	var src = document.getElementById(src_name);
	var actual = document.forms[0].elements[src_hidden_name];
	var values = "";

	
	// walk through the 'src'-selectionlist for making a 'comma-seperatedlist' of 
	// all the options in 'src'-selectionlist.
	for (var i = 0; i < src.length; i++)
	{
		// when there is more then one option in the 'src'-selectionlist, put a tab behind it.
		if (values.length > 0)
			values += "|";

		// add the option to the 'comma-seperatedlist'.
		values += "(" + src.options[i].text + "," + src.options[i].value + ")";
	}
	actual.value = values;
}
// ------------------------------------------------------------------
function setSelectedValues(src_name, dest_name, src_hidden_name, dest_hidden_name)
{
//alert("src=" + src_name + "\ndest=" + dest_name)
//alert("src_hidden=" + src_hidden_name + "\ndest_hidden=" + dest_hidden_name)

	updateSelectedValues(src_name, src_hidden_name);
	updateSelectedValues(dest_name, dest_hidden_name);

/*
	var left = document.forms[0].elements[src_hidden_name];
	alert(left.name + ":\nvalue=" + left.value);

	var right = document.forms[0].elements[dest_hidden_name];
	alert(right.name + ":\nvalue=" + right.value);
*/
}
// ------------------------------------------------------------------
function moveSelected(src_name, dest_name)
{
	var src = document.getElementById(src_name);
	var dest = document.getElementById(dest_name);

	// has something been selected?
	if (src.selectedIndex == -1)
		return;

	var index = 0;
	var selected_src_options = new Array();

	// which options are selected within the 'src'-selectionlist.
	for (var i = src.length-1; i > -1; i--)
	{
		// option selected?
		if (src.options[i].selected && src.options[i].title != "disabled")
		{
			// make a new 'OPTION'-object
			var new_option = document.createElement("option");
			new_option.text = src.options[i].text;
			new_option.value = src.options[i].value;
			
			// add the selected option from the 'src'-selectionlist to the 'dest'-selectionlist.
			dest.options.add(new_option);
			
			// add it to the list of selected options.
			selected_src_options[index++] = i;
		}
	}

	// solution for Internet Explorer. When the number of selected options is bigger than 
	// what can be shown on screen!
	if (index > src.size)
	{
		src.click();
	}	

	// delete the selected option(s) from the 'src'-selectionlist.
	for (var i = 0; i < index; i++)
	{
		src.remove(selected_src_options[i]);
	}

}
// ------------------------------------------------------------------
function moveAll(src_name, dest_name)
{
	var src = document.getElementById(src_name);
	var dest = document.getElementById(dest_name);
	var src_length = src.length;
		
	// calculate the number of (to do) to be selected options within the 'src'-selectionlist.
	for (var i = 0; i < src_length; i++)
	{
		if (src.options[0].title != "disabled")
		{
			// make a new 'OPTION'-object
			var new_option = document.createElement("option");
			new_option.text = src.options[0].text;
			new_option.value = src.options[0].value;
			
			// add the selected option from the 'src'-selectionlist to the 'dest'-selectionlist.
			dest.options.add(new_option);
			
			src.remove(0);
		}
	}
}