function Radio(buttons, defaultButtonId) {

	for (var i in buttons) {
		buttons[i].originalAction = buttons[i].action;
		buttons[i].action = function(n) {
			return function() {
				switchStates(n);
			}
		}(i);
	}
	
	var currentButtonId = this.currentButtonId = defaultButtonId;
	var originalOnMouseOut = buttons[defaultButtonId].button.onmouseout;
	var originalOnMouseOver = buttons[defaultButtonId].button.onmouseover;
	buttons[defaultButtonId].button.onmouseout = buttons[defaultButtonId].button.onmousedown;
	buttons[defaultButtonId].button.onmouseover = buttons[defaultButtonId].button.onmousedown;
	buttons[defaultButtonId].action();
	buttons[defaultButtonId].button.onmousedown();
	
	function switchStates(newButtonId) {
		if (currentButtonId == newButtonId) return;
		
		buttons[newButtonId].originalAction();
		
		buttons[currentButtonId].button.onmouseout = originalOnMouseOut;
		buttons[currentButtonId].button.onmouseover = originalOnMouseOver;
		buttons[currentButtonId].button.onmouseout();
		
		originalOnMouseOut = buttons[newButtonId].button.onmouseout;
		originalOnMouseOver = buttons[newButtonId].button.onmouseover;
		buttons[newButtonId].button.onmouseout = buttons[newButtonId].button.onmousedown;
		buttons[newButtonId].button.onmouseover = buttons[newButtonId].button.onmousedown;
		buttons[newButtonId].button.onmousedown();

		currentButtonId = newButtonId;
	}

}
