function EnableButton(buttonId)
{
    var btnElement = "#" + buttonId;
    if ( ButtonIsDisabled(btnElement) )
    {
        SetButtonState(btnElement, "");
    }
}

function DisableButton(buttonId)
{
    var btnElement = "#" + buttonId;
    if (!ButtonIsDisabled(btnElement))
    {
        SetButtonState(btnElement, "disabled");
    }
}

function SetButtonSelected(buttonId, selected)
{
	var btnElement = "#" + buttonId;
	
	if (ButtonIsSelected(btnElement) != selected)
	{
		SetButtonSelectedState(btnElement, selected ? "selected" : "");		
	}
}

function ButtonIsSelected(button)
{
	var btnState = GetButtonSelectedState(button);
	return btnState.hasClass("selected");
}

function OnButtonClick(button, clickHandler)
{
    var btnElement;
    if (typeof(button) == "string")
    {
        btnElement = "#" + button;
    }
    else
    {
        btnElement = button;
    }
    
    if (!ButtonIsDisabled(btnElement))
    {
        SetButtonState(btnElement, "over");
    
        var returnValue;
        if (typeof(clickHandler) == "string")
            returnValue = eval(clickHandler);
        else
            returnValue = clickHandler();
        
        if (returnValue != undefined)
            return returnValue;
            
        return true;
    }
    return false;
}

function ButtonIsDisabled(button)
{
    var btnState = GetButtonState(button);
    return btnState.hasClass("disabled");
}

function OnButtonMouseOver(button)
{
    if (!ButtonIsDisabled(button))
    {
        SetButtonState(button, "over");
    }
}

function OnButtonMouseOut(button)
{
    if (!ButtonIsDisabled(button))
    {
        SetButtonState(button, "");
    }
}

function OnButtonMouseDown(button)
{
    if (!ButtonIsDisabled(button))
    {
        SetButtonState(button, "down");
    }
}

function GetButtonState(button)
{
	return $(button).contents().contents();
}

function SetButtonState(button, state)
{
    var btnState = GetButtonState(button);
    btnState.removeClass();
    if (state)
    {
        btnState.addClass(state);
    }
}

function GetButtonSelectedState(button)
{
	return $(button).contents();
}

function SetButtonSelectedState(button, state)
{
	var btnState = GetButtonSelectedState(button);
    btnState.removeClass();
    if (state)
    {
        btnState.addClass(state);
    }
}
