(function($) {

    $.busybee = {
        setBusy: function(isBusy)
        {
            var obj = $(this);
            if (isBusy)
            {
                $('#spinner').show();
                $(":button").attr("disabled",true);
                $(":input").attr("disabled",true);
                $('a').live('click', function() { return false;});
            }
            else
            {
                $('#spinner').hide();
                $(":button").removeAttr("disabled");
                $(":input").removeAttr("disabled");
                $('a').die('click');
            }
        }
    }

    // Shortcut function
    setBusy = function(isBusy)
    {
        $.busybee.setBusy(isBusy);
    }

})(jQuery);




function postJSON(u,d,callBackOK,callBackError)
{
    $.postJSON(u,d,callBackOK,callBackError);
}

$.postJSON = function(u,d,callBackOK,callBackError)
{
    $.ajax({
        type: "POST",
        url: u,
        data: d,
        success: function(msg)
        {
            var r;
            try
            {
                r = JSON.parse(msg);
            }
            catch(err)
            {
                if (callBackError!=undefined)
                {
                    //alert('2');
                    callBackError("JSON Error"+err+" parsing "+msg);
                }
                return;
            }
            var returnResult = r;

            // Session has expired
            if (r.sessionexpired!=undefined)
            {
                logout();
                return;
            }
            // Session has expired

            if (callBackOK!=undefined)
            {
                callBackOK(returnResult);
            }

        },
        error: function(request,msg)
        {
            if (callBackError!=undefined)
            {
                //alert('1');
                callBackError("Sorry, but there was a remote server error.");
            }
        }
    });
}






