function toggle_container(id)
{
    var e = document.getElementById(id);
    e.className = (e.className == 'container' ? 'container container_collapsed' : 'container');
}

function refreshContainerView(id, extra_params, callback)
{
    var url = location.href.replace(/\?.*$/, '');
    url = url.replace(/#$/, '');
   
    params = 'refresh_container_view=1&view_id='+id;

    if (extra_params)
    {
        extra_params = extra_params.replace(/refresh_container_view=.*?(&|$)/, '').replace(/&$/,'');
        extra_params = extra_params.replace(/view_id=.*?(&|$)/, '').replace(/&$/,'');
        params += '&'+extra_params;
    }

    //set the indicator icon in place of the view
    var viewElement = document.getElementById(id);
    var div = document.body.appendChild(document.createElement('div'));
    div.className = 'activity-indicator';
    //:KLUDGE: use table as a strut to keep div expanded
    viewElement.innerHTML = '<table border="0" width="100%" height="100"><tr><td width="100%">&nbsp;</td></tr></table>';
    viewElement.parentNode.style.border = '1px dotted white';
    Ext.get(div).center(viewElement.parentNode);
    viewElement.parentNode.style.border = 'none';
    
    Ext.Ajax.request({
        url: url,
        params: params,
        method: 'GET',
        viewId: id,
        extraCallback: callback,
        activityDiv: div,
        callback: function(opts, success, response) {
            var element = document.getElementById(opts.viewId);
            element.innerHTML = response.responseText;
            parseScriptTags(element);
            if (opts.extraCallback) 
            {
                eval(opts.extraCallback)(response.responseText);
            }
            document.body.removeChild(opts.activityDiv);
        }
    });
}

