var mooFormWidgets = new Class({

	Implements: [Events, Options],
	options: {
		'debug': false
	},

	/* Initialisierung */
	initialize: function(node, options) {
		this.setOptions(options);
		switch(options.type){
			case 'checkbox': this.makeCheckBox(node); break;
			case 'radiobox': this.makeRadioBox(node); break;
			case 'text'    : this.makeTextField(node); break;
		}
	},

	makeTextField: function(node) {
		new Element("span.mooTextField").wraps(node).adopt(new Element('span'));
		node.setStyles({padding:'0'});
		node.setStyles({border:'none', background:'none', width: node.getWidth()-20+"px"});
	},

	makeCheckBox: function(node) {
		node.setStyle('display', 'none').addEvent('change', function(){ pImg.toggleClass('mooChecked'); });
		var pImg = new Element('img', {src:"/spacer.gif"}).addEvent('click', function(){ node.checked = node.checked?false:true; node.fireEvent('change');}).addClass(node.get('checked') ? "mooChecked":"");
		var pObj = new Element("span.mooCheckBox").wraps(node).adopt(pImg);
	},

	makeRadioBox: function(node) {
		this.cObj = {
			Chk: node,
			Img: new Element('img', {src:"/spacer.gif"}).addClass(node.get('checked') ? "mooChecked":"").addEvent('click', function(){this.cObj.Evt(this.cObj);}.bind(this)),
			Spa: new Element("span.mooRadioBox"),
			All: node.getParent('form').getElements('input[name="'+node.get('name')+'"]'),
			Evt: function(e){ if(e.Chk.checked) return; e.All.each(function(i){ i.set('checked',false); i.fireEvent('change');}); e.Chk.checked = true; e.Chk.fireEvent('change');}.bind(this),
			Lab: null
		};
		node.getParent('form').getElements('label').each(function(item){if(node.get('id') != '' && node.get('id') == item.get('for')) this.cObj.Lab = item.addEvent('click', function(){this.cObj.Evt(this.cObj);}.bind(this));}.bind(this));
		node.setStyle('display', 'none').addEvent('change', function(){if(node.checked) this.cObj.Img.addClass('mooChecked'); else this.cObj.Img.removeClass('mooChecked');}.bind(this));
		this.cObj.Spa.wraps(node).adopt(this.cObj.Img);
	}
});

