jQuery.fn.Maennchen = function(options) {
	var defaults = {
		anzahl: 10,
		initial: -1
	};
	var options         = jQuery.extend(defaults, options);
	var elements        = null;

	// create Maennchen
	elements = jQuery(this);
	elements.data('auswahl', options.initial);
	
	if (elements.data('onchange') == undefined)
	{
		elements.data('onchange', options.onchange);
	}
	else
	{
		options.onchange = elements.data('onchange');
	}
	
	if (jQuery('.maennchen', this).length == 0)
	{
		this.each(function() {
			for (var i = 1; i <= options.anzahl; i++)
			{
				jQuery(this).append('<div class="maennchen empty" id="maennchen' + i + '">&nbsp;</div>');
			}
		});
	}

	update(options.initial);

	if ((options.initial != -1) && (options.onchange != undefined))
	{
		options.onchange(options.initial);
	}
	
	
	function update(value)
	{
		var _value = value;
		if (_value == null)
		{
			_value = elements.data('auswahl');
		}
		
		for (var i = 1; i <= options.anzahl; i++)
		{
			if (i <= _value)
			{
				jQuery('#maennchen' + i).attr("class", "maennchen filled");
			}
			else
			{
				jQuery('#maennchen' + i).attr("class", "maennchen empty");
			}
		}
	} // !update()

	
	jQuery('.maennchenblock').mouseout(function(){
		update();
	});
	jQuery('.maennchen').hover(function(){
		var idx      = parseInt(jQuery(this).attr("id").replace("maennchen", ""));
		update(idx);
	});

	jQuery('.maennchen').click(function(){
		var idx = parseInt(jQuery(this).attr("id").replace("maennchen", ""));
		elements.data('auswahl', idx);

		if (options.onchange != undefined)
		{
			options.onchange(idx);
		}
		
		update();
	});
	
	
	function setValue(value)
	{
		elements.data('auswahl', value);
		update();
	} // !setValue()

}

/*
 * Globale Funktion
 * Als Methode der Klasse Maennchen definieren? Weiß (noch) nicht wie.
 * jQ luft ja immer ueber eine Elementmenge? B.S.
 */
function updateMaennchenDisplay() {
		// alert('Maennchen.updateDisplay');
		var selectedValue = jQuery('.maennchenauswahl').find("option:selected").val();

		var options = {
			initial: selectedValue,
			onchange : function(wert)
			{
				//alert(wert);
				jQuery(".maennchenauswahl option[value='" + wert + "']").attr("selected", "selected");
			}
		};
		jQuery('.maennchenblock').Maennchen(options);

		jQuery('.maennchenauswahl').change(function()
		{
			var val = jQuery(this).find("option:selected").val();
			//alert('change');
			var options = {
				initial: val
			};
			jQuery('.maennchenblock').Maennchen(options);
		});
}
