rem: var msg = bundle.GetStringFromName("nv_done") + " (" + elapsed + " secs)"; dump( msg + "\n" ); 
add: var msg = bundle.GetStringFromName("nv_done"); msg = msg.replace(/%elapsed%/, elapsed); 
context:   onStateChange : function(channel, state)  {    if(!throbberElement)      throbberElement = document.getElementById("navigator-throbber");    if(!statusMeter)      statusMeter = document.getElementById("statusbar-icon");    if(!stopButton)      stopButton = document.getElementById("stop-button");    if(!stopMenu)      stopMenu = document.getElementById("menuitem-stop");    if (state & Components.interfaces.nsIWebProgressListener.flag_start) {      if(state & Components.interfaces.nsIWebProgressListener.flag_is_network) {        // Remember when loading commenced.        startTime = (new Date()).getTime();        // Turn progress meter on.        statusMeter.setAttribute("mode","undetermined");        throbberElement.setAttribute("busy", true);        // XXX: These need to be based on window activity...            stopButton.setAttribute("disabled", false);        stopMenu.setAttribute("disabled", false);        // Initialize the progress stuff...        statusMeter.setAttribute("mode","undetermined");        useRealProgressFlag = false;        totalRequests = 0;        finishedRequests = 0;      }      if (state & Components.interfaces.nsIWebProgressListener.flag_is_request) {        totalRequests += 1;      }    }    else if (state & Components.interfaces.nsIWebProgressListener.flag_stop) {      if (state & Components.interfaces.nsIWebProgressListener.flag_is_request) {        finishedRequests += 1;        if (!useRealProgressFlag) {          this.onProgress(null, finishedRequests, totalRequests);        }      }      if(state & Components.interfaces.nsIWebProgressListener.flag_is_network) {        // Record page loading time.        var elapsed = ( (new Date()).getTime() - startTime ) / 1000;        var msg = bundle.GetStringFromName("nv_done") + " (" + elapsed + " secs)";        dump( msg + "\n" );        defaultStatus = msg;        UpdateStatusField();        //window.XULBrowserWindow.setDefaultStatus(msg);        //this.setDefaultStatus(msg);        this.setOverLink(msg);        // Turn progress meter off.        statusMeter.setAttribute("mode","normal");        statusMeter.value = 0;  // be sure to clear the progress bar        statusMeter.progresstext = "";        throbberElement.setAttribute("busy", false);        // XXX: These need to be based on window activity...        stopButton.setAttribute("disabled", true);        stopMenu.setAttribute("disabled", true);      }    }    else if (state & Components.interfaces.nsIWebProgressListener.flag_transferring) {      if (state & Components.interfaces.nsIWebProgressListener.flag_is_document) {        var ctype=channel.contentType;          if (ctype != "text/html") {          useRealProgressFlag = true;        }        statusMeter.setAttribute("mode", "normal");      }      if (state & Components.interfaces.nsIWebProgressListener.flag_is_request) {        if (!useRealProgressFlag) {          this.onProgress(null, finishedRequests, totalRequests);        }      }    }  },
meta: 5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/5872/6213a03b87236acba4dfdf6ea86f6454a80cd5f1/navigator.js/buggy/suite/browser/navigator.js