public static File showSaveDialog(JBroFuzzWindow mWindow) {
		
		final String dirString = JBroFuzz.PREFS.get(JBroFuzzPrefs.DIRS[2].getId(), System.getProperty("user.dir"));
		
		final File dirLocation = new File(dirString);
		JFileChooser fChooser;
		try {
			if(dirLocation.exists() && dirLocation.isDirectory()) {
				fChooser = new JFileChooser(dirString);
			} else {
				fChooser = new JFileChooser();
			}
		} catch(final SecurityException sException) {
			fChooser = new JFileChooser();
			Logger.log("A security exception occured, while attempting to save as to a directory", 4);
		}
		// Set the filter for the file extension
		fChooser.setFileFilter(new JBroFuzzFileFilter());
		// Talk to the user
		final int retValue = fChooser.showSaveDialog(mWindow);
		// If there is an approval or selection
		if(retValue == JFileChooser.APPROVE_OPTION) {
			
			File returnFile = fChooser.getSelectedFile();
			Logger.log("Saving: " + returnFile.getName(), 1);
			// 
			final String filePath = returnFile.getAbsolutePath().toLowerCase();
			if( ! filePath.endsWith(".jbrofuzz") ) {
				returnFile = new File(filePath + ".jbrofuzz");
			}
			
			if( returnFile.exists() ) {
				
				final int overwrite = JOptionPane.showConfirmDialog(fChooser,
						"File already exists. Do you \nwant to replace it?",
						" JBroFuzz - Save ", JOptionPane.YES_NO_OPTION);
				
				// If the user does not want to overwrite, return null
				if( overwrite == JOptionPane.NO_OPTION) {
					return null;
				}
			}
			// Before returning the file, set the preference
			// for the parent directory
			final String parentDir = returnFile.getParent();
			if(parentDir != null) {
				JBroFuzz.PREFS.put(JBroFuzzPrefs.DIRS[2].getId(), parentDir);
			}
			
			return returnFile;
		}
		
		// If the user cancelled, return nulls
		return null;

	}