
// Main Move Method:
function MoveASPNetListMenuValues(availableListbox, selectedListbox, hiddenHTMLInput, bSelected) {
	if (bSelected)
		move(availableListbox, selectedListbox);
	else
		move(selectedListbox, availableListbox);

	RefreshASPNetMenuHiddenField(selectedListbox, hiddenHTMLInput);
}

// Build the Hidden form field w/ comma delimited values.  Must be run @ page startup to init values.
function RefreshASPNetMenuHiddenField(listbox, hiddenHTMLInput) {
	
	//Clear Hidden Field:
	hiddenHTMLInput.value = "";
	
	// For each value in the listbox passed in, rebuild the value of the hidden field:
	for	(i = 0;	i <	listbox.options.length; i++)
		hiddenHTMLInput.value += "," + listbox.options[i].value;
	
	// Cut off the last comma:
	if (hiddenHTMLInput.value.length != 0) hiddenHTMLInput.value = hiddenHTMLInput.value.substr(1, hiddenHTMLInput.value.length - 1);
}

// ------------------------------------------------------------------------------------
//<!-- Original:  Phil Webb (phil@philwebb.com) -->
//<!-- Web Site:  http://www.philwebb.com -->

//<!-- This script and many more are available free online at -->
//<!-- The JavaScript Source!! http://javascript.internet.com -->

function move(fbox,	tbox) {
	var	arrFbox	= new Array();
	var	arrTbox	= new Array();
	var	arrLookup =	new	Array();
	var	i;
	
	for	(i = 0;	i <	tbox.options.length; i++) {
		arrLookup[tbox.options[i].text]	= tbox.options[i].value;
		arrTbox[i] = tbox.options[i].text;
	}
	
	var	fLength	= 0;
	var	tLength	= arrTbox.length;
	
	for(i =	0; i < fbox.options.length;	i++) {
	arrLookup[fbox.options[i].text]	= fbox.options[i].value;
		if (fbox.options[i].selected &&	fbox.options[i].value != "") {
			arrTbox[tLength] = fbox.options[i].text;
			tLength++;
		}
		else {
			arrFbox[fLength] = fbox.options[i].text;
			fLength++;
		}
	}
	
	arrFbox.sort();
	arrTbox.sort();
	fbox.length	= 0;
	tbox.length	= 0;
	var	c;
	
	for(c =	0; c < arrFbox.length; c++)	{
		var	no = new Option();
		no.value = arrLookup[arrFbox[c]];
		no.text	= arrFbox[c];
		fbox[c]	= no;
	}
	for(c =	0; c < arrTbox.length; c++)	{
		var	no = new Option();
		no.value = arrLookup[arrTbox[c]];
		no.text	= arrTbox[c];
		tbox[c]	= no;
	}
}