Ext.CheckBoxBar = Ext.extend(Ext.form.CheckboxGroup, {
	//additional params here

	
	//additional functions here
	setBoxes : function(param, functionParam){
		for(i in param){
			if (typeof param[i] == 'object'){
				param[i].on('check',function(thisBox,checked){
					eval(functionParam+'("'+thisBox.id+'",'+checked+')');
				//	eval(functionParam.call(thisBox.id,checked));
				});
				
			}
		}
		
	},
	
	getValue : function(){
		var ret = [];
		for(i in this.items.items){
			if (typeof this.items.items[i] == 'object'){
				if(this.items.items[i].checked==true){
					ret.push(this.items.items[i].id);
				}
			}
		}
		return ret;
	},
	//default params here
	initComponent : function(){
		Ext.CheckBoxBar.superclass.initComponent.apply(this, arguments);
		if(typeof this.initialConfig.boxFunction != 'undefined'){
			this.on('render',function(){
				this.setBoxes(this.items.items, this.initialConfig.boxFunction);
			});
		}

	}

	
});
Ext.reg('checkboxbar', Ext.CheckBoxBar);

//enable to hide items and their labels as well, from config
Ext.override(Ext.layout.FormLayout, {
	renderItem : function(c, position, target){
		if(c && !c.rendered && c.isFormField && c.inputType != 'hidden'){
			var args = [
				   c.id, c.fieldLabel,
				   c.labelStyle||this.labelStyle||'',
				   this.elementStyle||'',
				   typeof c.labelSeparator == 'undefined' ? this.labelSeparator : c.labelSeparator,
				   (c.itemCls||this.container.itemCls||'') + (c.hideLabel ? ' x-hide-label' : ''),
				   c.clearCls || 'x-form-clear-left' 
			];
			if(typeof position == 'number'){
				position = target.dom.childNodes[position] || null;
			}
			if(position){
				c.formItem = this.fieldTpl.insertBefore(position, args, true);
			}else{
				c.formItem = this.fieldTpl.append(target, args, true);
			}
			c.actionMode = 'formItem';
			c.render('x-form-el-'+c.id);
			c.container = c.formItem;
			c.actionMode = 'container';
		}else {
			Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments);
		}
	}
});
Ext.override(Ext.form.TriggerField, {
	actionMode: 'wrap',
	onShow: Ext.form.TriggerField.superclass.onShow,
	onHide: Ext.form.TriggerField.superclass.onHide
});
Ext.override(Ext.form.Checkbox, {
	actionMode: 'wrap',
	getActionEl: Ext.form.Checkbox.superclass.getActionEl
});