	
	function listboxAddAll(dest_box_id, select_box_id)
	{
		var dest_box = document.getElementById(dest_box_id);
		var select_box = document.getElementById(select_box_id);
		var n_itens = select_box.length;
	
		if(select_box.length > 0 ) {
			for(var i=0;i <  n_itens;i++) {
				var item = select_box.options[i];
				opt = document.createElement('OPTION');
				opt.value = item.value;
				opt.text = item.text;
				
				try {
					dest_box.add(opt, null);
				}
				catch(ex) {
					dest_box.add(opt);
				}
				
			}
	
			while(select_box.length > 0) {
				select_box.remove(0);
			}
		}
		dest_box.focus();
	}
	
	function listboxRemoveAll(dest_box_id, select_box_id)
	{
		var dest_box = document.getElementById(dest_box_id);
		var select_box = document.getElementById(select_box_id);
		var n_itens = dest_box.length;

		if(dest_box.length > 0 ) {
			for(var i=0;i <  n_itens;i++) {
				var item = dest_box.options[i];
				opt = document.createElement('OPTION');
				opt.value = item.value;
				opt.text = item.text;
				
				try {
					select_box.add(opt, null);
				}
				catch(ex) {
					select_box.add(opt);
				}
				
			}

			while(dest_box.length > 0) {
				dest_box.remove(0);
			}
		}
		dest_box.focus();
	}
	
	function listboxAdd(dest_box_id, select_box_id)
	{
		var dest_box = document.getElementById(dest_box_id);
		var select_box = document.getElementById(select_box_id);
		var index = select_box.selectedIndex;

		if(index >= 0) {
			var n_itens = dest_box.length;
			var item = select_box.options[index];
	
			var add = true;
			for(var i=0;i <  n_itens;i++) {
				if(dest_box.options[i].text == item.text) { add = false; }
			}
			
			if(add == true) {
				opt = document.createElement('OPTION');
				opt.value = item.value;
				opt.text = item.text;
				try {
					dest_box.add(opt, null);
				}
				catch(ex) {
					dest_box.add(opt);
				}
				select_box.remove(index);
			}
		}
		dest_box.focus();
	}
	
	function listboxRemove(dest_box_id, select_box_id) {
		
		var dest_box = document.getElementById(dest_box_id);
		var select_box = document.getElementById(select_box_id);
		var index = dest_box.selectedIndex;
	
		if(index >= 0) {
			var n_itens = select_box.length;
			var item = dest_box.options[index];
	
			var add = true;
			for(var i=0;i <  n_itens;i++) {
				if(select_box.options[i].text == item.text) { add = false; }
			}
			
			if(add == true) {
				opt = document.createElement('OPTION');
				opt.value = item.value;
				opt.text = item.text;
				try {
					select_box.add(opt, null);
				}
				catch(ex) {
					select_box.add(opt);
				}
				dest_box.remove(index);
			}
		}
		dest_box.focus();
	}
	
	function getlistelements(dest_box_id)
	{
		var dest_box = document.getElementById(dest_box_id);
		var n_itens = dest_box.length;
		var elements = new Array();
		for(var i=0;i<n_itens;i++) {
			elements[i] = dest_box.options[i].value;
		}
		
		return elements;
	}
	
	function checkOptions(dest_list_id,check_list_id,origin_list_id)
	{
		var dest_list = document.getElementById(dest_list_id);
		var check_list = document.getElementById(check_list_id);
		var origin_list = document.getElementById(origin_list_id);
		
		var dest_n_itens = dest_list.length;
		var check_n_itens = check_list.length;
		
		var itens = new Array();
		var j=0;
			
		for(var i=0;i <  dest_n_itens;i++) {
			for(var x=0;x <  check_n_itens;x++) {
				if(dest_list.options[i].text == check_list.options[x].text) {
					itens[j] = dest_list.options[i];
					j++;
				}
			}
		}
		
		for(z=0; z < j; z++) {
			item = itens[z];
			opt = document.createElement('OPTION');
			opt.value = item.value;
			opt.text = item.text;
		
			try {
				origin_list.add(opt, null);
			}
			catch(ex) {
				origin_list.add(opt);
			}
		}
		
		for(z=0; z < j; z++) { 
			item = itens[z]; 
			dest_list.remove(item);
		}
		
	}
	
	function moveUpList(listField) {
		   if ( listField.length == -1) {  // If the list is empty
		      alert("There are no values which can be moved!");
		   } else {
		      var selected = listField.selectedIndex;
		      if (selected == -1) {
		         return false;
		      } else {  // Something is selected
		         if ( listField.length == 0 ) {  // If there's only one in the list
		        	 return false;
		         } else {  // There's more than one in the list, rearrange the list order
		            if ( selected == 0 ) {
		            	return false;
		            } else {
		               // Get the text/value of the one directly above the hightlighted entry as
		               // well as the highlighted entry; then flip them
		               var moveText1 = listField[selected-1].text;
		               var moveText2 = listField[selected].text;
		               var moveValue1 = listField[selected-1].value;
		               var moveValue2 = listField[selected].value;
		               listField[selected].text = moveText1;
		               listField[selected].value = moveValue1;
		               listField[selected-1].text = moveText2;
		               listField[selected-1].value = moveValue2;
		               listField.selectedIndex = selected-1; // Select the one that was selected before
		            }  // Ends the check for selecting one which can be moved
		         }  // Ends the check for there only being one in the list to begin with
		      }  // Ends the check for there being something selected
		   }  // Ends the check for there being none in the list
		}
	
	function moveDownList(listField) {
		   if ( listField.length == -1) {  // If the list is empty
		      alert("There are no values which can be moved!");
		   } else {
		      var selected = listField.selectedIndex;
		      if (selected == -1) {
		    	  return false;
		      } else {  // Something is selected
		         if ( listField.length == 0 ) {  // If there's only one in the list
		        	 return false;
		         } else {  // There's more than one in the list, rearrange the list order
		            if ( selected == listField.length-1 ) {
		            	return false;
		            } else {
		               // Get the text/value of the one directly below the hightlighted entry as
		               // well as the highlighted entry; then flip them
		               var moveText1 = listField[selected+1].text;
		               var moveText2 = listField[selected].text;
		               var moveValue1 = listField[selected+1].value;
		               var moveValue2 = listField[selected].value;
		               listField[selected].text = moveText1;
		               listField[selected].value = moveValue1;
		               listField[selected+1].text = moveText2;
		               listField[selected+1].value = moveValue2;
		               listField.selectedIndex = selected+1; // Select the one that was selected before
		            }  // Ends the check for selecting one which can be moved
		         }  // Ends the check for there only being one in the list to begin with
		      }  // Ends the check for there being something selected
		   }  // Ends the check for there being none in the list
		}
