function SelectAll(listbox) {
	for (var i=0; i<listbox.options.length; i++) {
		listbox.options[i].selected = true;
	}
}

function DeselectAll(listbox) {
	for (var i=0; i<listbox.options.length; i++) {
		listbox.options[i].selected = false;
	}
}

// This function from: http://www.devx.com/getHelpOn/10MinuteSolution/16372/1954
// With corrections and additions by Ryan Martinsen
function getListItems(txtList, selectList) {
   var optionList = document.getElementById(selectList).options;
   var data = '';
   var len = optionList.length;
   for(i=0; i<len; i++) {
      data += optionList.item(i).value;
      if (i != len -1) data += ',';
   }
   txtList.value = data;
}

// modified the above function to just get selected items
// the text returned from this will have a ',' on the end of it if the last selected item is not also the last item in the select box
function getSelectedListItems(txtList, selectList) {
   var optionList = document.getElementById(selectList).options;
   var data = '';
   var len = optionList.length;
   for(i=0; i<len; i++) {
      if(optionList.item(i).selected == true) {
         data += optionList.item(i).value;
         if (i != len -1) data += ',';
      }
   }
   txtList.value = data;
}

function checkUncheckAll(theElement) {
	var form = theElement.form;
	for(i=0; i<form.elements.length; i++){
		if(form[i].type == 'checkbox' && form[i].name != 'checkall') {
			form[i].checked = theElement.checked;
		}
	}
}

// JavaScript below by Matt Kruse
// http://www.mattkruse.com/javascript/selectbox/source.html
// See URL for license

function hasOptions(obj) {
	if (obj!=null && obj.options!=null) { return true; }
	return false;
}

function moveOptionUp(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=0; i<obj.options.length; i++) {
		if (obj.options[i].selected) {
			if (i != 0 && !obj.options[i-1].selected) {
				swapOptions(obj,i,i-1);
				obj.options[i-1].selected = true;
			}
		}
	}
}

function moveOptionDown(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
			}
		}
	}
}

function swapOptions(obj,i,j) {
	var o = obj.options;
	var i_selected = o[i].selected;
	var j_selected = o[j].selected;
	var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
	o[i] = temp2;
	o[j] = temp;
	o[i].selected = j_selected;
	o[j].selected = i_selected;
}

function removeSelectedOptions(from) { 
	if (!hasOptions(from)) { return; }
	if (from.type=="select-one") {
		from.options[from.selectedIndex] = null;
	}
	else {
		for (var i=(from.options.length-1); i>=0; i--) { 
			var o=from.options[i]; 
			if (o.selected) { 
				from.options[i] = null; 
			} 
		}
	}
	from.selectedIndex = -1; 
}

function sortSelect(obj) {
	var o = new Array();
	if (!hasOptions(obj)) { return; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
	}
	if (o.length==0) { return; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
		} 
	);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
	}
}