Ext.onReady(function(){

	Ext.override(Ext.form.Checkbox, {
		onRender: function(ct, position){
			Ext.form.Checkbox.superclass.onRender.call(this, ct, position);
			if(this.inputValue !== undefined){
				this.el.dom.value = this.inputValue;
			}
			//this.el.addClass('x-hidden');
			this.innerWrap = this.el.wrap({
				//tabIndex: this.tabIndex,
				cls: this.baseCls+'-wrap-inner'
			});
			this.wrap = this.innerWrap.wrap({cls: this.baseCls+'-wrap'});
			this.imageEl = this.innerWrap.createChild({
				tag: 'img',
				src: Ext.BLANK_IMAGE_URL,
				cls: this.baseCls
			});
			if(this.boxLabel){
				this.labelEl = this.innerWrap.createChild({
					tag: 'label',
					htmlFor: this.el.id,
					cls: 'x-form-cb-label',
					html: this.boxLabel
				});
			}
			//this.imageEl = this.innerWrap.createChild({
				//tag: 'img',
				//src: Ext.BLANK_IMAGE_URL,
				//cls: this.baseCls
			//}, this.el);
			if(this.checked){
				this.setValue(true);
			}else{
				this.checked = this.el.dom.checked;
			}
			this.originalValue = this.checked;
		},
		afterRender: function(){
			Ext.form.Checkbox.superclass.afterRender.call(this);
			//this.wrap[this.checked ? 'addClass' : 'removeClass'](this.checkedCls);
			this.imageEl[this.checked ? 'addClass' : 'removeClass'](this.checkedCls);
		},
		initCheckEvents: function(){
			//this.innerWrap.removeAllListeners();
			this.innerWrap.addClassOnOver(this.overCls);
			this.innerWrap.addClassOnClick(this.mouseDownCls);
			this.innerWrap.on('click', this.onClick, this);
			//this.innerWrap.on('keyup', this.onKeyUp, this);
		},
		onFocus: function(e) {
			Ext.form.Checkbox.superclass.onFocus.call(this, e);
			//this.el.addClass(this.focusCls);
			this.innerWrap.addClass(this.focusCls);
		},
		onBlur: function(e) {
			Ext.form.Checkbox.superclass.onBlur.call(this, e);
			//this.el.removeClass(this.focusCls);
			this.innerWrap.removeClass(this.focusCls);
		},
		onClick: function(e){
			if (e.getTarget().htmlFor != this.el.dom.id) {
				if (e.getTarget() !== this.el.dom) {
					this.el.focus();
				}
				if (!this.disabled && !this.readOnly) {
					this.toggleValue();
				}
			}
			//e.stopEvent();
		},
		onEnable: Ext.form.Checkbox.superclass.onEnable,
		onDisable: Ext.form.Checkbox.superclass.onDisable,
		onKeyUp: undefined,
		setValue: function(v) {
			var checked = this.checked;
			this.checked = (v === true || v === 'true' || v == '1' || String(v).toLowerCase() == 'on');
			if(this.rendered){
				this.el.dom.checked = this.checked;
				this.el.dom.defaultChecked = this.checked;
				//this.wrap[this.checked ? 'addClass' : 'removeClass'](this.checkedCls);
				this.imageEl[this.checked ? 'addClass' : 'removeClass'](this.checkedCls);
			}
			if(checked != this.checked){
				this.fireEvent("check", this, this.checked);
				if(this.handler){
					this.handler.call(this.scope || this, this, this.checked);
				}
			}
		},
		getResizeEl: function() {
			//if(!this.resizeEl){
				//this.resizeEl = Ext.isSafari ? this.wrap : (this.wrap.up('.x-form-element', 5) || this.wrap);
			//}
			//return this.resizeEl;
			return this.wrap;
		}
	});
	Ext.override(Ext.form.Radio, {
		checkedCls: 'x-form-radio-checked'
	});

});	