function GetRadioValue(r) {
	for (var i = 0; i < r.length; i++) {
		if (r[i].checked) {
			return r[i].value;
		}
	}
}

function SetRadioValue(r, text) {
	for (var i = 0; i < r.length; i++) {
		if (r[i].value == text) {
			r[i].checked = true;
			return true;
		}
	}
}

function GetSelectValue(s) {
	for (var i = 0; i < s.length; i++) {
		if (s.options[i].selected) {
			return s.options[i].value;
		}
	}
}

function GetSelectText(s) {
	for (var i = 0; i < s.length; i++) {
		if (s.options[i].selected) {
			return s.options[i].text;
		}
	}
}

function SetSelectText(s, text) {
	for (var i = 0; i < s.length; i++) {
		s.options[i].selected = ((s.options[i].text == text) || (text == null) ? true : false);
	}
	return true;
}

function SetSelectValue(s, value) {
	for (var i = 0; i < s.length; i++) {
		s.options[i].selected = ((s.options[i].value == value) || (value == null) ? true : false);
	}
	return true;
}

function AddSelectOption(s, value, text) {
	s.options[s.length] = new Option(value, text);
	return true;
}

function DeleteSelectOption(s, value) {
	for (var i = 0; i < s.length; i++) {
		if (s.options[i].value == value) {
			s.options[i] = null;
			return true;
		}
	}
	return false;
}

function DeleteSelectCurrent(s) {
	//for (var i = 0; i < s.length; i++) {
	for (var i = s.length - 1; i >= 0; i--) {
//		alert(i);
		if (s.options[i].selected) {
			s.options[i] = null;
		}
	}
	return true;
}

function SelectToSelect(fromSelect, toSelect) {
	var added = new Array()
	var remaining = new Array()
	var addedIndex = 0
	var remainingIndex = 0

	// Initialize the added array with values already in toSelect.
	for (var i = 0; i < toSelect.options.length; i++) {
		added[i] = new Option (toSelect.options[i].text, toSelect.options[i].value);
		addedIndex++;
	}

	// Append selected values to the added array and append unselected values to the remaining array.
	for (var i = 0; i < fromSelect.options.length; i++) {
		if (fromSelect.options[i].selected) {
			added[addedIndex] = new Option (fromSelect.options[i].text, fromSelect.options[i].value);
			addedIndex++;
		}
		else if (!inArray(added, fromSelect.options[i].value)) {
			remaining[remainingIndex] = new Option (fromSelect.options[i].text, fromSelect.options[i].value);
			remainingIndex++;
		}
	}

	// Sort added and remaining arrays.
	added.sort(compareText);
	remaining.sort(compareText);

	// Clear the select objects.
	fromSelect.options.length = 0;
	toSelect.options.length = 0;

	// Populate the toSelect with the added array.
	for (var i = 0; i < addedIndex; i++) {
		toSelect.options[i] = added[i];
	}

	// Populate the fromSelect with the remaining array.
	for (var i = 0; i < remainingIndex; i++) {
		fromSelect.options[i] = remaining[i];
	}
}

function SelectsToSelect(singleSelect, fromSelect, toSelect, delim) {
	var added = new Array()
	var addedIndex = 0
	var singleText = GetSelectText(singleSelect);
	var singleValue = GetSelectValue(singleSelect);

	// Initialize the added array with values already in toSelect.
	for (var i = 0; i < toSelect.options.length; i++) {
		added[i] = new Option (toSelect.options[i].text, toSelect.options[i].value);
		addedIndex++;
	}

	// Append selected values to the added array and append unselected values to the remaining array.
	for (var i = 0; i < fromSelect.options.length; i++) {
		if (fromSelect.options[i].selected) {
			added[addedIndex] = new Option (singleText + delim + fromSelect.options[i].text, singleValue + delim + fromSelect.options[i].value);
			addedIndex++;
		}
	}

	// Sort added and remaining arrays.
	added.sort(compareText);

	// Clear the select objects.
	toSelect.options.length = 0;
	fromSelect.selectedIndex = 0;

	// Populate the toSelect with the added array.
	for (var i = 0; i < addedIndex; i++) {
		toSelect.options[i] = added[i];
	}
}

function inArray(arr, s) {
	for (i = 0; i < arr.length; i++) {
		if (s == arr[i].value) {
			return true;
		}
	}
	return false;
}

function compareText (option1, option2) {
  return option1.text < option2.text ? -1 :
    option1.text > option2.text ? 1 : 0;
}
function compareValue (option1, option2) {
  return option1.value < option2.value ? -1 :
    option1.value > option2.value ? 1 : 0;
}
function compareTextAsFloat (option1, option2) {
  var value1 = parseFloat(option1.text);
  var value2 = parseFloat(option2.text);
  return value1 < value2 ? -1 :
    value1 > value2 ? 1 : 0;
}
function compareValueAsFloat (option1, option2) {
  var value1 = parseFloat(option1.value);
  var value2 = parseFloat(option2.value);
  return value1 < value2 ? -1 :
    value1 > value2 ? 1 : 0;
}
function sortSelect (select, compareFunction) {
  if (!compareFunction)
    compareFunction = compareText;
  var options = new Array (select.options.length);
  for (var i = 0; i < options.length; i++)
    options[i] =
      new Option (
        select.options[i].text,
        select.options[i].value,
        select.options[i].defaultSelected,
        select.options[i].selected
      );
  options.sort(compareFunction);
  select.options.length = 0;
  for (var i = 0; i < options.length; i++)
    select.options[i] = options[i];
}
