/*	options.js
	copyleft Tancrède Bastié 2005-2008

requires:
	dom.js
	
index:
	Options([...])
		addOptions(id, [onchange], [checked])
		random()
*/

function Options() {
/*	prototype of checkable options
	prototype d'options cochables
*/
	var options = new Array;
	for (var i = 0; i < arguments.length; i++) options[i] = arguments[i];
	var checkedOptions;

	this.addOptions = function(id, onchange, checked) {
	/*	creates checkbox and labels
		créé les cases à cocher et les labels
	*/
		if (!checked) checked = true;
		for (var i = 0; i < options.length; i++) {
			var option = checkboxWithLabel(options[i], checked);
			options[i] = option.checkbox;
			if (onchange) options[i].onchange = function() { changeOption(); onchange(); }
			else options[i].onchange = changeOption;
			if (i == 0) addTo(id, option);
			else addTo(id, textNode(" "), option);
		}
		changeOption();
	}

	function changeOption() {
	/*	filter currently checked options to checkedOptions
		filtre les options cochées vers checkedOptions
	*/
		checkedOptions = new Array;
		for (var i = 0; i < options.length; i++)
			if (options[i].checked) checkedOptions.push(i);
	}

	this.random = function() {
	/*	get a checked option at random
		tire au sort une option cochée
	*/
		if (checkedOptions.length == 0) { return options.randomIndex(); }
		return checkedOptions.random();
	}
}
