/**
* Produkt
* bestehend aus dem Input-Element, dem zugehoerigen Label
* sowie dem im Label gekapselten Tooltip
*/
var Product = Class.create();
Product.prototype = {
	/**
	* Initialisierung
	*
	* @return void
	*/
	initialize: function(elemInput, elemLabel) {
		this.input = elemInput;
		this.label = elemLabel;
		this.tooltip = this.label.next(".tooltip");
		
		Event.observe(this.label, "mousemove", this.showTooltip.bindAsEventListener(this));
		Event.observe(this.label, "mouseout", this.hideTooltip.bindAsEventListener(this));
		
		this.uncheck();
	},
	
	/**
	* Produkt "anhaken"
	*
	* @return void
	*/
	check: function() {
		this.label.removeClassName('unchecked');
		this.label.addClassName('checked');
	},
	
	/**
	* Produkt "abhaken"
	*
	* @return void
	*/
	uncheck: function() {
		this.label.removeClassName('checked');
		this.label.addClassName('unchecked');
	},
	
	/**
	 * Tooltip anzeigen
	 * @param {Object} event
	 */
	showTooltip: function(event) {
		this.tooltip.setStyle({
			left: (Event.pointerX(event) - (!Prototype.Browser.IE ? 130 : 185)) + 'px',
			top:  Event.pointerY(event) - 25 + 'px'
		});
		this.tooltip.show();
	},
	
	/**
	 * Tooltip verbergen
	 * @param {Object} event
	 */
	hideTooltip: function(event) {
		this.tooltip.hide();
	}
};

// ----------------------------------------------------------------------

/**
* Produkt
* bestehend aus dem Input-Element, dem zugehoerigen Label
* sowie dem im Label gekapselten Tooltip
*/
var Testversion = Class.create();
Testversion.prototype = {
	/**
	* Initialisierung
	*
	* @return void
	*/
	initialize: function() {
		this.radios = $$('input[type=radio].product');
		this.products = [];
		
		for (var i = 0; i < this.radios.length; i++) {
			var r = this.radios[i];
			var l = $$('label[for=' + r.id + ']');
			if (r && l[0]) {
				tmp = new Product(this.radios[i], l[0]);
				Event.observe(tmp.label, "click", this.check.bindAsEventListener(this));
				this.products.push(tmp);				
			}
		}
	},
	
	/**
	* aktuelles Produkt anhaken, alle anderen "abhaken"
	*
	* @param Event
	* @return void
	*/
	check: function(event) {
		for (var i = 0; i < this.products.length; i++) {
			Event.element(event) == this.products[i].label ? this.products[i].check() : this.products[i].uncheck();
		}
	}
};

// ----------------------------------------------------------------------

/**
 * Start, wenn Laden fertig
 */
Event.observe(window, 'load', function() {
	var tv = new Testversion();								   
});
