// ------------------------------------------------------------------------------------------------------------------------------------------------------------
// Fügt einem Select Element eine neue Option hinzu. Dublettenprüfung erfolgt anhand des neuen VALUE Wertes
// ------------------------------------------------------------------------------------------------------------------------------------------------------------

function add_option_to_select_element(select_element, option_value, option_text) {
	var vorhanden = false;
   	for (i=0; i < select_element.options.length ; i++) {
   		if (select_element.options[i].value == option_value) {
   			vorhanden = true;
   		}
   	}
   	
    if (vorhanden == false) {
       	new_option = new Option(option_text, option_value, true, true);
       	select_element.options[select_element.options.length] = new_option;
    }
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------
// Selektiert alle Optionen eines (multiplen) SELECT Elements
// ------------------------------------------------------------------------------------------------------------------------------------------------------------

function select_all_options_from_select_element(select_element) {
	var anzahl_optionen = select_element.options.length;
	
	for (var i=0; i < anzahl_optionen ; i++) { 
		select_element.options[i].selected = true; 
	}
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------
// Entselektiert alle Optionen eines (multiplen) SELECT Elements
// ------------------------------------------------------------------------------------------------------------------------------------------------------------

function deselect_all_options_from_select_element(select_element) {
	var anzahl_optionen = select_element.options.length;
	
	for (var i=0; i < anzahl_optionen ; i++) { 
		select_element.options[i].selected = false; 
	}
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------
// Tauscht zwei Optionen eines SELCT Feldes über deren Position 'a' und 'b' im ELEMENTS Array
// ------------------------------------------------------------------------------------------------------------------------------------------------------------

function swap_options_from_select_element(select_element,a,b) {
	var option_a = select_element.options[a];
	var option_b = select_element.options[b];
	select_element.options[b] = new Option(option_a.text, option_a.value, option_a.defaultSelected, option_a.selected);
	select_element.options[a] = new Option(option_b.text, option_b.value, option_b.defaultSelected, option_b.selected);
}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------
// Bewegt alle selektierten Optionen eines SELECT Elements in die per 'mode' definierte Richtung ('up' oder 'down')
// Zuvor wird geprüft, ob so eine Bewegung überhaupt möglich ist, falls ja wird sie ausgeführt.
// ------------------------------------------------------------------------------------------------------------------------------------------------------------

function move_selected_options_from_select_element(select_element, direction) {
	var movement_possible = true;
	var anzahl_optionen   = select_element.options.length;

	for (var i=0; i < anzahl_optionen ; i++) {
		if (select_element.options[i].selected == true) {
			if (direction == 'up')   if (i-1 < 0 )               movement_possible = false;
			if (direction == 'down') if (i+1 >= anzahl_optionen) movement_possible = false;
		}
	}

	if (movement_possible == true) {
		if (direction == 'up') {
			for (var i=0; i < anzahl_optionen ; i++) {
				if (select_element.options[i].selected == true) {
					swap_options_from_select_element(select_element,i,i-1);
				}
			}
		}
		
		if (direction == 'down') {
			for (var i=(anzahl_optionen - 1); i >= 0 ; i--) {
				if (select_element.options[i].selected == true) {
					swap_options_from_select_element(select_element,i,i+1);
				}
			}
		}		
	}
}