/************************************************************************************/
/* @TITLE
/*	jslib::SelectBox
/*
/* @SYNOPSIS
/*	<script type="text/javascript" src="/jslib/SelectBox.js">
/*
/* @DESCRIPTION
/*	Dieses JavaScript-Modul enthält Funktionen zum handlichen und unkomplizierten
/*	Umgang mit SelectBoxen in der DHTML-Entwicklung.
/*
/* @AUTHOR
/*	Marcus Bloch
/*
/* @COPYRIGHT
/*	Copyright 2004-2005 by CHAMAELEON AG (http://www.chamaeleon.de) - Oktober 2005
/*************************************************************************************/

function getSelectText(id){
	/********************************************************************************
	/* @TITLE
	/*	Text aus einer SelectBox auslesen
	/*
	/* @DESCRIPTION
	/*	Die Methode gibt den Wert des Option-Textes des derzeit ausgewählten
	/*	Option-Elements der mit @name eindeutig bezeichneten SelectBox zurück.
	/*
	/* @PARAM name
	/*	Eindeutiger Bezeichner der SelectBox oder SelectBox selbst
	/*
	/* @SYNOPSIS
	/*	var txt = getSelectText("type");
	/********************************************************************************/
	var sBox = getElement(id);
	if(sBox.options) {
		if (sBox.selectedIndex != -1) {
			return sBox.options[sBox.selectedIndex].text;
		} else {
			return "";
		}
	}
	throw new Error("getSelectText(): Element '" + id + "' is obviously no select box and contains the value '" + sBox.value + "'.");
}


function deleteOptions(name, remainder){
	/********************************************************************************
	/* @TITLE
	/*	Option-Einträge einer SelectBox löschen
	/*
	/* @DESCRIPTION
	/*	Diese Methode löscht die Option-Elemente der bezeichneten/übergebenen SelectBox
	/*	mit Ausnahme eines mittels @remainder bestimmten Restmenge. Letztere definiert
	/*	sich im Internet Explorer anders als in anderen Browsern.
	/*
	/* @PARAM name
	/*	Eindeutiger Bezeichner der SelectBox oder SelectBox selbst
	/* @PARAM remainder
	/*	Die Anzahl der übrig zu lassenden Option-Einträge
	/*
	/* @SYNOPSIS
	/*	deleteOptions("mySelectBox", 1);
	/********************************************************************************/
	var sBox = getElement(name);
	while (sBox.length > (remainder || 0)) {
		sBox.remove(sBox.length-1);
	}
}


function refillSelection(name, values, remaining){
	/********************************************************************************
	/* @TITLE
	/*	SelectBox neu aufbauen
	/*
	/* @DESCRIPTION
	/*	Diese Methode löscht zunächst alle Option-Einträge und baut dann aus dem
	/*	übergebenen @values-Array die Option-Liste wieder auf.
	/*
	/* @PARAM name
	/*	Eindeutiger Bezeichner der SelectBox oder SelectBox selbst
	/* @PARAM values
	/*	Array of Arrays. Jeder Eintrag von @values ist ein zweielementiges Array, dessen
	/*	erstes Feld [0] den Wert des Option-Attributs 'value' bestimmt. Das zweite Feld [1]
	/*	belegt den Option-Text. (<option value="myValue">myText</option>).
	/*
	/* @SYNOPSIS
	/*	var values = Array();
	/*	values.push(Array(0, "nein"));
	/*	values.push(Array(1, "ja"));
	/*	refillSelection("mySelectBox", values);
	/********************************************************************************/
	var sBox = getElement(name);
	deleteOptions(sBox, remaining);
	for(var i = 0; i < values.length; i++){
		createOption(sBox, values[i][0], values[i][1]);
	}
}


function createOption(name, value, txt, before){
	/********************************************************************************
	/* @TITLE
	/*	Option-Element erzeugen
	/*
	/* @DESCRIPTION
	/*	Hier wird ein neues Option-Element erzeugt, belegt und zurück gegeben.
	/*
	/* @PARAM name
	/*	Name der Selectbox, der die Option hinzuzufügen ist
	/* @PARAM value
	/*	Der Wert des 'value'-Attributs des Option-Elements
	/* @PARAM txt
	/*	Der Option-Text (<option value="myValue">myText</option>)
	/* @PARAM before
	/*	(optional) Option-Element bzw. Wert des Option-Elements, vor dem das neue
	/*	Option-Element einzufügen ist. Standardmäßig wird das neue Option-Element
	/*	ans Ende angehängt.
	/*
	/* @SYNOPSIS
	/*	createOption("mySelectBox", "0", "nein");
	/********************************************************************************/
	var sBox = getElement(name);
	var opt = document.createElement("option");
	opt.text = txt;
	opt.value = value;
	if (typeof(before) == "string") {
		before = findNamedElementInCollection(sBox.options, before, "value");
	}
	sBox.add(opt, before || undefined);
}
