FSite2._radioOnClick = function()
{
	if (this._hiddenInput.disabled)
		return;
	var radiosArray = this._hiddenInput.form[this._hiddenInput.name];
	for (var i = 0; i < radiosArray.length; i++)
	{
		radiosArray[i].checked = false;
		if (radiosArray[i]._image)
		{
			radiosArray[i]._image.src = radiosArray[i]._image._imageUnchecked.src;
			radiosArray[i]._image.style.height = radiosArray[i]._image._imageUnchecked.height + 'px';
			radiosArray[i]._image.style.width = radiosArray[i]._image._imageUnchecked.width + 'px';
		}
	}
	this.src = this._imageChecked.src;
	this.style.height = this._imageChecked.height + 'px';
	this.style.width = this._imageChecked.width + 'px';
	this._hiddenInput._click();
	this._hiddenInput.checked=true;
	this._area.focus();
}

FSite2._radioArrowKeys = function(event)
{
	if (this._image._hiddenInput.checked)
	{
		if ((event.keyCode == 37) || (event.keyCode == 38))
		{
			var radiosArray = this._image._hiddenInput.form[this._image._hiddenInput.name];
			var k = -1;
			for (i = 0; i < radiosArray.length; i++)
				if ((radiosArray[i] == this._image._hiddenInput) && i) {
					k = i - 1; break;
				}
			if (k >= 0)
				radiosArray[k]._image._OnClick();
		}
		else if ((event.keyCode == 39) || (event.keyCode == 40))
		{
			var radiosArray = this._image._hiddenInput.form[this._image._hiddenInput.name];
			var k = -1;
			for (i = 0; i < radiosArray.length; i++)
				if ((radiosArray[i] == this._image._hiddenInput) && (i < radiosArray.length - 1)) {
					k = i + 1; break;
				}
			if (k >= 0)
				radiosArray[k]._image._OnClick();
		}
	}
}

FSite2.extendRadio = function(e, c, u, dc, du)
{
	if (e._image)
		return;
	if ((e.tagName != 'INPUT') || (e.type != 'radio'))
		throw new Error('Given element is not an input of type \'radio\'');
	var replacement = document.createElement('img');
	replacement._hiddenInput = e;
	replacement._imageChecked = new Image();
	replacement._imageChecked.src = c;
	replacement._imageUnchecked = new Image();
	replacement._imageUnchecked.src = u;
	if (dc && du)
	{
		replacement._imageDisabledChecked = new Image();
		replacement._imageDisabledChecked.src = dc;
		replacement._imageDisabledUnchecked = new Image();
		replacement._imageDisabledUnchecked.src = du;
	}
	replacement._OnClick = FSite2._radioOnClick;
	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);
	imageArea = FSite2.addImageFocus(replacement, e.name.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); };
	imageArea._onkeydown = imageArea.onkeydown;
	imageArea._radioArrowKeys = FSite2._radioArrowKeys;
	imageArea.onkeydown = function(event) {
		if (!event) var event = window.event;
		this._onkeydown(event);
		this._radioArrowKeys.apply(this, new Array(event));
	}
	e._updateState();
	e.style.display = 'none';
}

