FSite2._checkboxOnClick = function()
{
	if (this._hiddenInput.disabled)
		return;
	if (this._hiddenInput.checked)
		this.src = this._imageUnchecked;
	else
		this.src = this._imageChecked;
	this._area.focus();
	var state=this._hiddenInput.checked;
	this._hiddenInput._click();
	this._hiddenInput.checked=(state)?false:true;
}

FSite2.extendCheckbox = function(e, c, u, dc, du)
{
	if (e._image)
		return;
	// check if given element is an input element of type 'checkbox'
	if ((e.tagName != 'INPUT') || (e.type != 'checkbox'))
		throw new Error('Given element is not an input of type \'checkbox\'');
	// create img element as a replacement for given checkbox
	var replacement = document.createElement('img');
	// assign given real checkbox input and images' URLs to replacement image
	replacement._hiddenInput = e;
	replacement._imageChecked = c;
	replacement._imageUnchecked = u;
	replacement._imageDisabledChecked = dc;
	replacement._imageDisabledUnchecked = du;
	replacement._OnClick = FSite2._checkboxOnClick;
	replacement._updateState = FSite2._updateImageState;
	e._updateState = function() { this._image._updateState(); };
	e._click = e.click;
	e._image = replacement;
	e.click = function(ev) {if (!ev) ev = window.event; this._image._OnClick(ev);};
	e._onfocus = e.onfocus;
	e.onfocus = function(ev)
	{
		if (!ev) ev = window.event;
		if (this._onblur)
			this.onblur(ev);
		this._image._imageArea.focus();
	}
	e._onblur = e.onblur;
	e.onblur = function(ev)
	{
		if (!ev) ev = window.event;
		if (this._onblur)
			this.onblur(ev);
		this._image._imageArea.blur();
	}
	// insert replacement image into document
	e.parentNode.insertBefore(replacement, e);
	var imageArea = FSite2.addImageFocus(replacement, e.name.replace('[', '').replace(']', '') + '_' + e.value + '_map');
	imageArea._hiddenInput = e;
	imageArea.onfocus = function(event) {if (!event) event = window.event; if (this._hiddenInput._onfocus) this._hiddenInput._onfocus(event); };
	imageArea.onblur = function(event) {if (!event) event = window.event; if (this._hiddenInput._onblur) this._hiddenInput._onblur(event); };
	// set source and checked attributes of image according to checked attribute of given checkbox
	e._updateState();
	// hide given real checkbox
	e.style.display = 'none';
}

