if ( !helperApp || !helperApp.executable || !helperApp.exists() ) { 
if ( !helperApp || !helperApp.executable || !helperApp.executable.exists() ) { 
    onOK: function() {        // Verify typed app path, if necessary.        if ( this.dialogElement( "openUsing" ).selected ) {            var helperApp = this.helperAppChoice();            if ( !helperApp || !helperApp.executable || !helperApp.exists() ) {                // Show alert and try again.                var msg = this.replaceInsert( this.getString( "badApp" ), 1, this.dialogElement( "appPath" ).value );                var svc = Components.classes[ "@mozilla.org/embedcomp/prompt-service;1" ]                            .getService( Components.interfaces.nsIPromptService );                svc.alert( this.mDialog, this.getString( "badApp.title" ), msg );                // Disable the OK button.                this.mDialog.document.documentElement.getButton( "accept" ).disabled = true;                // Select and focus the input field if input field is not disabled                var path = this.dialogElement( "appPath" );                if ( !path.disabled ) {                    path.select();                    path.focus();                }                // Clear chosen application.                this.chosenApp = null;                // Leave dialog up.                return false;            }        }        // Remove our web progress listener (a progress dialog will be        // taking over).        this.mLauncher.setWebProgressListener( null );        // saveToDisk and launchWithApplication can return errors in        // certain circumstances (e.g. The user clicks cancel in the        // "Save to Disk" dialog. In those cases, we don't want to        // update the helper application preferences in the RDF file.        try {            var needUpdate = this.updateMIMEInfo();            if ( this.dialogElement( "saveToDisk" ).selected )                this.mLauncher.saveToDisk( null, false );            else                this.mLauncher.launchWithApplication( null, false );            // Update user pref for this mime type (if necessary). We do not            // store anything in the mime type preferences for the ambiguous            // type application/octet-stream.            if ( needUpdate &&                 this.mLauncher.MIMEInfo.MIMEType != "application/octet-stream" )            {                this.updateHelperAppPref();            }        } catch(e) { }        // Unhook dialog from this object.        this.mDialog.dialog = null;        // Close up dialog by returning true.        return true;    },
5459	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5459/570912b643a12a5193de12d8e56abaaab269ff34/nsHelperAppDlg.js/clean/embedding/components/ui/helperAppDlg/nsHelperAppDlg.js