diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Action.js 1.0/chrome/content/Action.js
--- 0.96.8c/chrome/content/Action.js	2012-10-03 09:47:02.000000000 -0400
+++ 1.0/chrome/content/Action.js	2010-03-23 21:42:46.000000000 -0400
@@ -8,8 +8,7 @@ screengrab.SaveAction = function() {}
 screengrab.SaveAction.prototype = {
 	doAction: function(canvas) {
 		var msg = document.getElementById("screengrab-strings").getString("SaveAsMessage");
-//	        var picker = new screengrab.ImageFilePicker(screengrab.prefs.defaultFileName() + "." + screengrab.prefs.format(), msg, screengrab.prefs.formatMimeType());
-	        var picker = new screengrab.ImageFilePicker(screengrab.prefs.defaultFileName(), msg, screengrab.prefs.formatMimeType());
+        var picker = new screengrab.ImageFilePicker(screengrab.prefs.defaultFileName() + "." + screengrab.prefs.format(), msg, screengrab.prefs.formatMimeType());
         	var file = picker.getFile();
 		var dataUrl = canvas.toDataURL(file.mimeType, screengrab.prefs.formatQuality(file.mimeType));
         	file.saveDataUrl(dataUrl, true);
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Browser.js 1.0/chrome/content/Browser.js
--- 0.96.8c/chrome/content/Browser.js	2012-02-16 02:10:16.000000000 -0500
+++ 1.0/chrome/content/Browser.js	2010-03-23 21:56:06.000000000 -0400
@@ -6,12 +6,10 @@ screengrab.Browser = function(win) {
 	this.htmlWin = win.content.window;
 }
 screengrab.Browser.physicalDimensions = function() {
-	return new screengrab.Box(
-		window.screenX,
+	return new screengrab.Box(window.screenX,
 	        window.screenY,
 		window.outerWidth,
-		window.outerHeight
-	);
+									 window.outerHeight);
 }
 screengrab.Browser.viewportAbsoluteDimensions = function() {
 	var win = window.top.getBrowser().selectedBrowser;
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Capture.js 1.0/chrome/content/Capture.js
--- 0.96.8c/chrome/content/Capture.js	2012-02-16 02:11:22.000000000 -0500
+++ 1.0/chrome/content/Capture.js	2012-10-13 23:26:52.000000000 -0400
@@ -8,12 +7,34 @@ screengrab.CaptureViewPort = function(br
 		embeddedCapture.capture(function() {
 			onCaptured(canvas);
 		}, browser);
+		htmlDoc.clear(); // This is from Alexander's code. see Document.js
+
+	    
 	} else {
 		var htmlDoc = browser.getDocument();
 		htmlDoc.setAllFlashOpaque();
 		var canvas = browser.getFilledCanvas(dimensions);
 		htmlDoc.undo();
 		onCaptured(canvas);
+		htmlDoc.clear(); // This is from Alexander's code. see Document.js
+	}
+}
+
+screengrab.CaptureWindow = function(browser, dimensions, onCaptured) {
+	window.setTimeout(function() {
+		var dataUrl = screengrab.Java.capture(dimensions);
+		var canvas = browser.getCanvas();
+		var context = browser.prepareCanvas(canvas, dimensions);
+		var img = new Image();
+		img.onload = function() {
+			try {
+				context.drawImage(img, 0, 0);
+				context.restore();
+				onCaptured(canvas);
+			} catch (error) {
+				sg.error(error);
+			}
 	}
-	htmlDoc.clear();
+		img.src = dataUrl;
+	}, 100);
 }
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Clipboard.js 1.0/chrome/content/Clipboard.js
--- 0.96.8c/chrome/content/Clipboard.js	2012-02-19 03:26:22.000000000 -0500
+++ 1.0/chrome/content/Clipboard.js	2012-10-20 11:46:50.000000000 -0400
@@ -6,7 +6,15 @@ screengrab.Clipboard = {
         image.setAttribute("src", dataUrl);
         var body = window.content.document.getElementsByTagName("html")[0];
         body.appendChild(image);
+        
+        //setTimeout(this.copyImage(image, body, document, callbackWhenDone), 200);
+        
+        //SDM Alexandar's code cals it this way. 
+        // I don't know the difference yet so I'll keep it.
+        // copyImage returned a function which would seem to be an ok argument to settimeout
+        // Is it really necessary to write code in this manner? Some private scope issue?
         setTimeout(function() { screengrab.Clipboard.copyImage(image, body, document, callbackWhenDone); }, 200);
+
     },
     
     copyImage : function(image, body, documenty, callbackWhenDone) {
@@ -10,6 +18,7 @@ screengrab.Clipboard = {
     },
     
     copyImage : function(image, body, documenty, callbackWhenDone) {
+//        return function () {
             documenty.popupNode = image;
             try {
                 goDoCommand('cmd_copyImageContents');
@@ -20,5 +29,6 @@ screengrab.Clipboard = {
             if (callbackWhenDone) {
                 callbackWhenDone();
             }
+//        };
     }
 }
\ No newline at end of file
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Document.js 1.0/chrome/content/Document.js
--- 0.96.8c/chrome/content/Document.js	2012-02-16 02:16:16.000000000 -0500
+++ 1.0/chrome/content/Document.js	2012-10-14 02:24:42.000000000 -0400
@@ -93,6 +94,13 @@ screengrab.Document.prototype = {
         this.undos.undo();
     },
 
+//SDM
+// undos was explicitly allocated as an undoset
+// this would seem to orphan it. 
+// maybe it get GC'd anyway and this ensures we can't reuse it (but why would it get reused?)
+// I need a better understanding of this.
+
+// This is from Alexander's code. see Capture.js
 	clear : function() {
 	    this.doc = null;
 	    this.undos = null;
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/EmbeddedCapture.js 1.0/chrome/content/EmbeddedCapture.js
--- 0.96.8c/chrome/content/EmbeddedCapture.js	2012-02-19 03:42:56.000000000 -0500
+++ 1.0/chrome/content/EmbeddedCapture.js	2012-10-14 00:05:18.000000000 -0400
@@ -2,13 +2,19 @@
 screengrab.EmbeddedCapture = function(htmlDoc, captureBox, context) {
 	this.context = context;
 	this.captureBox = captureBox;
-
 	// only get the embeds that are in the area to capture
+
+//	var toCopy = htmlDoc.getAllEmbeddedDimensions()
+//                   .filter(function(element) {
+//				   	   return element.intersects(captureBox)
+//					});
+
+//SDM Alexander's code splits this up nicer but would otherwise seem to do the same thing
+
 	var boxesToGrab = htmlDoc.getAllEmbeddedDimensions();
 
-	var toCopy = boxesToGrab.filter(function(element) {
-	   	   return element.intersects(captureBox)
-	});
+	var toCopy = boxesToGrab.filter(function(element) { return element.intersects(captureBox) } );
+
 
 	var regions = new Array();
 	var viewportDimensions = screengrab.Browser.viewportAbsoluteDimensions();
@@ -22,7 +28,6 @@ screengrab.EmbeddedCapture = function(ht
 		regions = regions.concat(split);
     	});
 	this.regions = regions;
-	boxesToGrab = new Array();
 }
 screengrab.EmbeddedCapture.prototype = {
 	capture: function(onFinish, htmlWindow) {
@@ -60,9 +65,14 @@ screengrab.EmbeddedCapture.prototype = {
 		            // scroll to region, snap it and save it
 				sg.debug("Scrolling to [" + box.x + "," + box.y + "]");
 				win.scrollTo(box.x, box.y);
+				//setTimeout(doJavaCopy, sg.prefs.javaScrollWaitTime());
+				//SDM more of Alexander defining a function. Still don't get it
 				setTimeout(function() { doJavaCopy(); }, sg.prefs.javaScrollWaitTime());
+
 			} else {
 				// slight delay to allow everything to get into place
+				//setTimeout(doJavaCopy, 10);
+				//SDM more of Alexander defining a function. Still don't get it
 				setTimeout(function() { doJavaCopy(); }, 10);
 			}
         	}
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/File.js 1.0/chrome/content/File.js
--- 0.96.8c/chrome/content/File.js	2012-09-21 14:24:48.000000000 -0400
+++ 1.0/chrome/content/File.js	2012-10-21 00:02:42.000000000 -0400
@@ -42,7 +42,7 @@ screengrab.File.prototype = {
 		persist.progressListener = {
 			onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
 				if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) == Components.interfaces.nsIWebProgressListener.STATE_STOP) {
-					screengrab.debug("Saved.");
+					sg.debug("Saved.");
 					if (callback) callback();
                 }
 			}
@@ -86,6 +86,22 @@ screengrab.File.named = function(name, m
 	nsFile.initWithPath(name);
 	return new screengrab.File(nsFile, mimeType);
 }
+
+screengrab.File.sanitizeName = function(name) {
+	//var replaceChar = "";
+
+	//SDM I am allowing comma and square brackets
+
+	//var fileNameRegEx = new RegExp('[/\:/*/?""<>|]', 'g');
+	//var fileNameRegEx = new RegExp('[<>|]', 'g');
+
+	// Here's Alexander's that he added to Prefs.js: name.replace(/[\/\\\:\*\?\'\"\<\>\|]/g, replaceChar);
+	
+	var nn = new String ( name.replace(/[\/:*?<>""|]/g, "") );
+   
+	return nn;
+}
+
 screengrab.ImageFilePicker = function(defaultFileName, message, selected) {
     this.defaultFileName = defaultFileName;
     this.message = message;
@@ -99,9 +116,28 @@ screengrab.ImageFilePicker.prototype = {
 
 		fp.init(window, this.message, Components.interfaces.nsIFilePicker.modeSave);
 		fp.defaultString = this.defaultFileName;
+        
+        //sg.debug("Opening File Picker...");
+        
+        if ( sg.prefs.useBrowserDownloadDir() ) 
+        {
+		if ( sg.prefs.browserDownloadDir() ) 
+		{
+			var folder = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+
+			folder.initWithPath(sg.prefs.browserDownloadDir());
+
+			fp.displayDirectory = folder;
+
+			//sg.debug(sg.prefs.browserDownloadDir());
+		} 
+        } 
+
+        
 		fp.appendFilter("PNG", "*.png;*.gnp");
-		fp.appendFilter("JPG", "*.jpg;*jpeg");
-		fp.defaultExtension = 'png';
+        fp.appendFilter("JPG", "*.jpg;*.jpeg");
+        //SDM Alexander added this but I don't think I want it (or similar).
+        //fp.defaultExtension = 'png';
 		if (this.selected == "image/png") {
 			fp.filterIndex = 0;
 		} else {
@@ -113,7 +149,7 @@ screengrab.ImageFilePicker.prototype = {
 			this.file =  fp.file;
 			this.type = "image/png";
 			this.mimeOptions = "";
-			if (fp.filterIndex == 1) {
+            if (fp.filterIndex > 0) {
 				this.type = "image/jpeg";
 			}
 		}
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Grab.js 1.0/chrome/content/Grab.js
--- 0.96.8c/chrome/content/Grab.js	2010-03-23 21:58:18.000000000 -0400
+++ 1.0/chrome/content/Grab.js	2012-10-14 06:47:34.000000000 -0400
@@ -8,6 +8,7 @@ screengrab.Grab = function(target, captu
 				action.doAction(canvas);
 			});
 		});
+		screengrab.prefs.incGrabCount();
 	} catch (error) {
 		screengrab.error(error);
 	}
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Header.js 1.0/chrome/content/Header.js
--- 0.96.8c/chrome/content/Header.js	2012-07-23 10:16:38.000000000 -0400
+++ 1.0/chrome/content/Header.js	2012-10-21 14:03:20.000000000 -0400
@@ -2,6 +2,7 @@
  * @author andy
  */
 
+//SDM Alexander's code added the next two var keywords
 var screengrab = {};
 var sg = screengrab;
 screengrab.ScriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Java.js 1.0/chrome/content/Java.js
--- 0.96.8c/chrome/content/Java.js	2012-03-08 00:20:36.000000000 -0500
+++ 1.0/chrome/content/Java.js	2012-10-21 14:03:14.000000000 -0400
@@ -22,9 +22,28 @@ screengrab.Java = {
         }
         return array;
     },
-
+//    //SDM Alexander's version omits this function. 
+//    //Because base64 is omnipresent now, or because it can be found automatically?
+//    getClass: function(className, jar) {
+//        try {
+//			var jarCl = this.clForJar[jar];
+//			if (jarCl == null) {
+//				screengrab.debug("Creating class loader for " + jar);
+//		        var id = "{02450954-cdd9-410f-b1da-db804e18c671}";
+//		        var ext = Components.classes["@mozilla.org/extensions/manager;1"].getService(Components.interfaces.nsIExtensionManager).getInstallLocation(id).getItemLocation(id);
+//				var file = new java.io.File(ext.path + "/jars/" + jar).getAbsoluteFile();
+//	            jarCl = java.net.URLClassLoader.newInstance(this.newArray("java.net.URL", file.toURL()));
+//				this.clForJar[jar] = jarCl;
+//			}
+//            var aClass = java.lang.Class.forName(className, true, jarCl);
+//            screengrab.debug("Returning " + aClass.getName());
+//            return aClass;
+//        } catch (e) {
+//            screengrab.error(this.getStackTrace(e));
+//        }
+//        return null;
+//    },
 	isAvailable: function() {
-return false;
 		try {
 			new java.lang.Integer(1);
 		} catch (error) {
@@ -40,10 +59,14 @@ return false;
 		}
 		return true;
 	},
-
 	capture: function(box) {
 		screengrab.debug(box);
+//		//SDM Alexander's version doesn't seem to need to open the jar explicitly. 
+// 		//Because base64 is omnipresent now, or because it can be found automatically?
+//		//It seems far cleaner, assuming it works
+//		//var clazz = this.getClass("Base64$OutputStream", "base64.jar");
 		var clazz = new Object();
+		
 		var baos = new java.io.ByteArrayOutputStream();
 		var constructor = clazz.getConstructor(this.newArray("java.lang.Class", java.lang.Class.forName("java.io.OutputStream")));
 		var b64os = constructor.newInstance(this.newArray("java.io.OutputStream", baos));
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Log4js.js 1.0/chrome/content/Log4js.js
--- 0.96.8c/chrome/content/Log4js.js	2010-03-23 21:42:46.000000000 -0400
+++ 1.0/chrome/content/Log4js.js	2012-10-13 17:16:44.000000000 -0400
@@ -18,7 +18,11 @@ try {
 		jsConsoleAppender.setLayout(new screengrab.log4js.MozStackLayout(false));
 		
 		logger.addAppender(new screengrab.log4js.FirefoxConsoleAppender(logger));
-		//logger.addAppender(new screengrab.log4js.FirefoxFileAppender(logger, screengrab.prefs.loggerFileName()));
+
+		//SDM slightly hidden feature. log if log name is set AND loggging is on (so you can console log without file log)
+		if (loggingEnabled && screengrab.prefs.loggerFileName()) { 
+			logger.addAppender(new screengrab.log4js.FirefoxFileAppender(logger, screengrab.prefs.loggerFileName()));
+		}
 		logger.addAppender(jsConsoleAppender);
 		screengrab.debug = function(msg) {
 			if (loggingEnabled) {
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Prefs.js 1.0/chrome/content/Prefs.js
--- 0.96.8c/chrome/content/Prefs.js	2012-03-07 23:36:04.000000000 -0500
+++ 1.0/chrome/content/Prefs.js	2012-10-21 14:41:02.000000000 -0400
@@ -21,41 +21,58 @@ screengrab.prefs = {
 	
 	PNG : "png",
 	JPEG : "jpeg",
+	JPG  : "jpg",
 	
 	extensionPrefix : "extensions.screengrab.",
 	
-	includeTimeStampInFilename : "includeTimeStampInFilename",
-	imageFormat : "imageFormat",
-	imageQuality : "jpgImageQuality",
-	enableLogging : "enableLogOutput",
-	numberofGrabsTaken : "numberOfGrabs",
-	showIconInStatusBar: "showIconInStatusBar",
-	showInContextMenu : "showInContextMenu",
-	loggerPref : "loggerFilename",
-	showFileInDownloadsPref : "showFileInDownloads",
-	useBrowserDownloadDirPref : "useBrowserDownloadDir",
-	toolbarAddedOncePref : "toolbarAddedOnce",
+	prefPrependDateStampInFilename  : "PrependDateStampInFilename",
+	prefPrependTimeStampInFilename  : "PrependTimeStampInFilename",
+	prefAppendDecUTCStampInFilename : "AppendDecUTCStampInFilename",
+	prefAppendHexUTCStampInFilename : "AppendHexUTCStampInFilename",
+
+	prefImageFormat  : "ImageFormat",
+	prefImageQuality : "ImageQuality",
+
+	prefShowIconInStatusBar   : "ShowIconInStatusBar",
+	prefShowInContextMenu     : "ShowInContextMenu",
+	prefShowFileInDownloads   : "ShowFileInDownloads",
+	prefUseBrowserDownloadDir : "UseBrowserDownloadDir",
+	prefToolbarAddedOnce      : "ToolbarAddedOnce",
+	prefUseJavaIfAvailable    : "UseJavaIfAvailable",
+	prefJavaScrollWaitMs      : "JavaScrollWaitMs",
+
+	prefEnableLogging  : "EnableLogging",
+	prefLoggerFilename : "LoggerFilename",
+
+	prefNumberofGrabsTaken : "NumberofGrabsTaken",
+	prefMagic              : "Magic",
 	
 	prefBranch : null,
 	
-	getBool: function(pref) {
-		return nsPreferences.getBoolPref(this.extensionPrefix + pref);
+	getBool: function(pref, defValue) {
+		return nsPreferences.getBoolPref(this.extensionPrefix + pref, defValue);
+	},
+	
+	getInt: function(pref, defValue) {
+	        return nsPreferences.getIntPref(this.extensionPrefix + pref, defValue);
 	},
 	
-	getInt: function(pref) {
-		return nsPreferences.getBoolPref(this.extensionPrefix + pref);
+	getString: function(pref, defValue) {
+	        return nsPreferences.copyUnicharPref(this.extensionPrefix + pref, defValue);
 	},
 	
 	format : function() {
-		if (nsPreferences.getIntPref(this.extensionPrefix + this.imageFormat) == 0) {
+		if (this.getInt(this.prefImageFormat, 2) == 0) {
 			return this.PNG;
-		} else {
+		} else if (this.getInt(this.prefImageFormat, 2) == 1) {
 			return this.JPEG;
+		} else {
+		    return this.JPG;
 		}
 	},
 	
 	formatMimeType : function() {
-		if (nsPreferences.getIntPref(this.extensionPrefix + this.imageFormat) == 0) {
+		if (this.getInt(this.prefImageFormat, 2) == 0) {
 			return "image/png";
 		} else {
 			return "image/jpeg";
@@ -64,42 +81,94 @@ screengrab.prefs = {
 	
 	formatQuality : function(mimeType) {
 		if (mimeType == "image/png") {
-			return "";
+			return 1.0; // technically not supposed to return anything but I think this is safest
 		}
-		return 'quality=' + nsPreferences.getIntPref(this.extensionPrefix + this.imageQuality);
+		//SDM https://developer.mozilla.org/en-US/docs/DOM/HTMLCanvasElement
+		//should be 0.0 to 1.0
+		// since the prefs are normal 0-100, I will just divide by 100
+		// not sure what the quality= parameter used to be passed to but it didn't work!
+		//return 'quality=' + this.getInt(this.prefImageQuality, 75);
+		return this.getInt(this.prefImageQuality, 75) / 100.0;
 	},
 	
 	showFileInDownloads : function() {
-		return nsPreferences.getBoolPref(this.extensionPrefix + this.showFileInDownloadsPref);
+		return this.getBool(this.prefShowFileInDownloads, false);
 	},
     
 	defaultFileName : function() {
-		var filename = this.sanitiseName(window.content.document.title);
-		if (nsPreferences.getBoolPref(this.extensionPrefix + this.includeTimeStampInFilename)) {
-			dt = new Date();
+		var filename1 = window.content.document.title;
+		//var filename1 = new String("bbbb/bbb\bbD]e[t,a?i*l)o(r:a\a/a>a<a;a - Pro\gram Detail Files for MyTheatre");
+		var filename2 = new String(screengrab.File.sanitizeName(filename1));
+		var filename = filename2.trim();
+
+		var dt = new Date();
+
+
+		if (this.getBool(this.prefPrependDateStampInFilename) || this.getBool(this.prefPrependTimeStampInFilename) ) {
+
+			var yr = dt.getFullYear();
+
+			var mo = 1 + dt.getMonth();
+			mo = mo < 10 ? "0" + mo : mo;
+
+			var da = dt.getDate();
+			da = da < 10 ? "0" + da : da;
+
+			var hr = dt.getHours();
+			hr = hr < 10 ? "0" + hr : hr;
+
+			var mi = dt.getMinutes();
+			mi = mi < 10 ? "0" + mi : mi;
+
+
+			var ds = String(yr) + String(mo) + String(da);
+			var ts = String(hr) + String(mi);
+
+			if (this.getBool(this.prefPrependTimeStampInFilename) && this.getBool(this.prefPrependDateStampInFilename)) {
+				filename = String(ds) + "-" + String(ts) + "_" + filename;
+			}
+			else if (this.getBool(this.prefPrependTimeStampInFilename)) {
+				filename = String(ts) + "_" + filename;
+			}
+			else {
+				filename = String(ds) + "_" + filename;
+			}
+		}
+	        
+		if (this.getBool(this.prefAppendDecUTCStampInFilename)) {
 			filename = filename + "_" + dt.getTime();
 		}
-		return filename;
-	},
 
-	sanitiseName : function(name) {
-		var replaceChar = "_";
-//		var fileNameRegEx = new RegExp('[,\/\\\:\*\?\"\<\>\|]', 'g');
-//		return name.replace(fileNameRegEx, replaceChar);
-		return name.replace(/[\/\\\:\*\?\'\"\<\>\|]/g, replaceChar);
+		//SDM if some goof enables both, I want HEX appended last
+		if (this.getBool(this.prefAppendHexUTCStampInFilename)) {
+			var i = dt.getTime() / 1000;
+			var ni = new Number(i);
+			var fni = new Number(ni.toFixed(0));
+			var sfni = new String(fni.toString(16));
+
+			//SDM 0x unneeded
+			//filename = filename + "_0x" + sfni.toUpperCase();
+
+			filename = filename + "_" + sfni.toUpperCase();
+		}
+
+		return filename;
 	},
 
 	loggerFileName : function() {
-		if (window.navigator.userAgent.toLowerCase().indexOf("win") > -1) {
-			var defaultFileName = "C:\screengrab.log";
-		} else {
-			var defaultFileName = "/tmp/screengrab.log";
-		}
-		return nsPreferences.copyUnicharPref(this.extensionPrefix + this.loggerPref, defaultFileName);
+//		if (window.navigator.userAgent.toLowerCase().indexOf("win") > -1) {
+//			var defaultFileName = "C:\screengrab.log";
+//		} else {
+//			var defaultFileName = "/tmp/screengrab.log";
+//		}
+//		return this.getString(this.prefLoggerFilename, defaultFileName);
+		
+		//SDM slightly hidden feature. log if log name is set AND loggging is on (so you can console log without file log)
+		return this.getString(this.prefLoggerFilename);
 	},
 	
 	loggingEnabled : function() {
-		return nsPreferences.getBoolPref(this.extensionPrefix + this.enableLogging, false);
+		return this.getBool(this.prefEnableLogging, false);
 	},
 	
 	/*
@@ -111,19 +180,19 @@ screengrab.prefs = {
 		if (window.navigator.userAgent.toLowerCase().indexOf("mac") > -1) {
 			defaultTime = 400;
 		}
-		return nsPreferences.getIntPref(this.extensionPrefix + "javaScrollWaitMs", defaultTime);
+		return this.getInt("prefJavaScrollWaitMs", defaultTime);
 	},
 	
 	javaEnabled : function() {
 		if (!window.navigator.javaEnabled()) {
 			return false;
 		}
-		return nsPreferences.getBoolPref(this.extensionPrefix + "useJavaIfAvailable");
+		return this.getBool("prefUseJavaIfAvailable", false);
 	},
 	
 	incGrabCount : function() {
-		var numTaken = nsPreferences.getIntPref(this.extensionPrefix + this.numberofGrabsTaken, 0);
-		nsPreferences.setIntPref(this.extensionPrefix + this.numberofGrabsTaken, numTaken + 1);
+		var numTaken = this.getInt(this.prefNumberofGrabsTaken, 0);
+		nsPreferences.setIntPref(this.extensionPrefix + this.prefNumberofGrabsTaken, numTaken + 1);
 	},
 	
 	browserDownloadDir : function() {
@@ -131,19 +200,31 @@ screengrab.prefs = {
 	},
 	
 	useBrowserDownloadDir : function () {
-		return nsPreferences.getBoolPref(this.extensionPrefix + this.useBrowserDownloadDirPref);
+		return this.getBool(this.prefUseBrowserDownloadDir);
 	},
 	
 	toolbarAddedOnce: function() {
-		return this.getBool(this.toolbarAddedOncePref);
+		return this.getBool(this.prefToolbarAddedOnce);
 	},
 	
 	setToolbarAddedOnce: function() {
-        return nsPreferences.setBoolPref(this.extensionPrefix + this.toolbarAddedOncePref, true);
+        	return nsPreferences.setBoolPref(this.extensionPrefix + this.prefToolbarAddedOnce, true);
     },
 	
+	refreshStatusbar : function() {
+
+		sg.debug("refreshStatusbar " + this.getBool(this.prefShowIconInStatusBar) );
+		
+		if (this.getBool(this.prefShowIconInStatusBar, true)) {
+			this.show("screengrab_panel");
+		} else {
+			this.hide("screengrab_panel");
+		}
+	},
+	
+
 	refreshContextMenu : function() {
-		if (nsPreferences.getBoolPref(this.extensionPrefix + this.showInContextMenu, true)) {
+		if (this.getBool(this.prefShowInContextMenu, true)) {
 			this.show("screengrab-context-menu");
 			this.show("screengrab-context-separator");
 		} else {
@@ -152,6 +233,18 @@ screengrab.prefs = {
 		}
 	},
 	
+//SDM Alexander seems to have stripped this out for whatever reason (maybe that java couldn't be used?)
+
+	refreshMenuChoices : function() {
+		if (!this.javaEnabled()) {
+			this.hide("pop-grabWindow");
+			this.hide("pop-copyWindow");
+		} else {
+			this.show("pop-grabWindow");
+			this.show("pop-copyWindow");
+		}
+	},
+
 	refreshShortcuts : function() {
 //		setShortcut("screengrab-key-copy-complete", "c", "control shift");
 //        setShortcut("screengrab-key-copy-visible", "v", "control shift");
@@ -165,14 +258,6 @@ screengrab.prefs = {
 		keyElem.modifiers = modifiers;
 	},
 	
-	refreshStatusbar : function() {
-		if (nsPreferences.getBoolPref(this.extensionPrefix + this.showIconInStatusBar), true) {
-			this.show("screengrab_panel");
-		} else {
-			this.hide("screengrab_panel");
-		}
-	},
-	
 	observe : function(aSubject, aTopic, aData) {
 		if (aTopic != "nsPref:changed") return;
 		
@@ -177,11 +262,14 @@ screengrab.prefs = {
 		if (aTopic != "nsPref:changed") return;
 		
 		sg.debug("Observed change in " + aData);
+		
 	    switch (aData) {
-	    	case this.showIconInStatusBar: 
+	    	
+	    	case this.prefShowIconInStatusBar: 
 				this.refreshStatusbar();
 	        	break;
-	    	case this.showInContextMenu:
+	        	
+	    	case this.prefShowInContextMenu:
 				this.refreshContextMenu();
 	        	break;
 	    }
@@ -189,8 +277,7 @@ screengrab.prefs = {
 	},
 	
 	register: function() {
-	    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
-	                                .getService(Components.interfaces.nsIPrefService);
+		var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
 	    this.prefBranch = prefService.getBranch(this.extensionPrefix);
 	    this.prefBranch.QueryInterface(Components.interfaces.nsIPrefBranch2);
 	    this.prefBranch.addObserver("", this, false);
@@ -219,9 +306,11 @@ screengrab.prefs = {
 	
 	configuratePrefs : function() {
 		screengrab.prefs.register();
+		//SDM here's a virgin setTimeout defining a function inline, like Alexander added in other places.
 		setTimeout(function() {
 			screengrab.prefs.refreshContextMenu();
 			screengrab.prefs.refreshStatusbar();
+			screengrab.prefs.refreshMenuChoices();
 			screengrab.prefs.refreshShortcuts();
 		}, 100);
 	},
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Selection.js 1.0/chrome/content/Selection.js
--- 0.96.8c/chrome/content/Selection.js	2012-07-23 10:05:26.000000000 -0400
+++ 1.0/chrome/content/Selection.js	2012-10-14 00:48:34.000000000 -0400
@@ -17,6 +17,7 @@ Foundation, Inc., 51 Franklin Street, Fi
 
 Contact: andy@5263.org
 */
+//SDM Alexander added 'var' in front of this but I don't know what the impact is.
 var SGSelection = {
     BACKGROUND_DIV : "screengrabBackgroundDiv",
     DRAW_DIV : "screengrabDrawDiv",
@@ -137,3 +139,9 @@ var SGSelection = {
 		SGSelection.disableDrawAndGrabIfRequired(event);
 	}
 }
+
+//SDM
+//This was purposefully placed outside SGSelection but Alexander moved it inside for whatever reason.
+//function SGSelectionOnMouseUpHandlerThatHasToExistForSomeReason(event) {
+//    SGSelection.disableDrawAndGrabIfRequired(event);
+//}
\ No newline at end of file
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/Target.js 1.0/chrome/content/Target.js
--- 0.96.8c/chrome/content/Target.js	2012-02-16 01:24:14.000000000 -0500
+++ 1.0/chrome/content/Target.js	2010-03-23 21:42:46.000000000 -0400
@@ -23,6 +23,19 @@ screengrab.Target.prototype = {
 	}
 }
 
+/**
+ * Target to capture the entire window - this will give screen coords
+ */
+screengrab.WindowTarget = function() {}
+screengrab.WindowTarget.superclass = screengrab.Target.prototype;
+screengrab.WindowTarget.prototype = {
+    obtainDimensions : function(onObtained) {
+		// the browser doesn't matter, just fill it in to avoid any potential nulls...
+        this.contentBrowser = new screengrab.Browser(screengrab.Browser.contentWindow());
+        this.dimensions = screengrab.Browser.physicalDimensions();
+        screengrab.Target.prototype.obtainDimensions.call(this, onObtained);
+    }
+}
 
 /**
  * Target to capture the entire contents of a frame
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/external/log4js.js 1.0/chrome/content/external/log4js.js
--- 0.96.8c/chrome/content/external/log4js.js	2012-03-07 23:49:40.000000000 -0500
+++ 1.0/chrome/content/external/log4js.js	2012-10-13 20:54:00.000000000 -0400
@@ -668,7 +668,7 @@ function MozJSConsoleAppender(logger) {
 
 	this.logger = logger;
 	this.layout = new SimpleLayout();
-//	netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+//SDM?	netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 	this.jsConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
 	this.scriptError = Components.classes["@mozilla.org/scripterror;1"].createInstance(Components.interfaces.nsIScriptError);
 }
@@ -679,7 +679,7 @@ MozJSConsoleAppender.prototype = {
 	 * @see Appender#doAppend
 	 */
 	doAppend: function(loggingEvent) {
-//		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+//SDM?		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
 		this.scriptError.init(this.layout.format(loggingEvent), null, null, null, null, this.getFlag(loggingEvent), loggingEvent.categoryName);
 		this.jsConsole.logMessage(this.scriptError);
 	},
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/preferences.xul 1.0/chrome/content/preferences.xul
--- 0.96.8c/chrome/content/preferences.xul	2010-03-23 21:42:46.000000000 -0400
+++ 1.0/chrome/content/preferences.xul	2012-10-21 14:29:34.000000000 -0400
@@ -8,27 +8,149 @@
 			xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  
 	<prefpane id="scg-pref-pane" label="&screengrab.preference.panel.label;">	
+	
 	    <preferences>
-	    	<preference id="prefIncludeTimeStampInFilename" name="extensions.screengrab.includeTimeStampInFilename" type="bool" />
-	    	<preference id="prefImageFormat" name="extensions.screengrab.imageFormat" type="int" />
+	    	<preference id="prefPrependDateStampInFilename"  name="extensions.screengrab.PrependDateStampInFilename" type="bool" />
+	    	<preference id="prefPrependTimeStampInFilename"  name="extensions.screengrab.PrependTimeStampInFilename" type="bool" />
+	    	<preference id="prefAppendDecUTCStampInFilename" name="extensions.screengrab.AppendDecUTCStampInFilename" type="bool" />
+	    	<preference id="prefAppendHexUTCStampInFilename" name="extensions.screengrab.AppendHexUTCStampInFilename" type="bool" />
+
+	    	<preference id="prefImageFormat"  name="extensions.screengrab.ImageFormat" type="int" />
+	    	<preference id="prefImageQuality" name="extensions.screengrab.ImageQuality" type="int" />
+
+	    	
+	    	<preference id="prefShowIconInStatusBar"   name="extensions.screengrab.ShowIconInStatusBar" type="bool" />
+	    	<preference id="prefShowInContextMenu"     name="extensions.screengrab.ShowInContextMenu" type="bool" />
+	    	<preference id="prefShowFileInDownloads"   name="extensions.screengrab.ShowFileInDownloads" type="bool" />
+	    	<preference id="prefUseBrowserDownloadDir" name="extensions.screengrab.UseBrowserDownloadDir" type="bool" />
+	    	<preference id="prefUseJavaIfAvailable"    name="extensions.screengrab.UseJavaIfAvailable" type="bool" />
+	    	<preference id="prefToolbarAddedOnce"      name="extensions.screengrab.ToolbarAddedOnce" type="bool" />
+	    	
+	    	
+	    	<preference id="prefEnableLogging"   name="extensions.screengrab.EnableLogging" type="bool" />
+	    	<preference id="prefLoggerFilename"  name="extensions.screengrab.LoggerFilename" type="string" />
+
+	    	<preference id="prefNumberofGrabsTaken"  name="extensions.screengrab.NumberofGrabsTaken" type="int" />
+	    	<preference id="prefMagic"              name="extensions.screengrab.Magic" type="bool" />
 		</preferences>
 		
-		<tooltip id="timeStampTip" orient="vertical">
-			<label value="&screengrab.preference.timestamp.in.filename.description;" />
-		</tooltip>
-		<hbox align="start">
-			<label control="includeTimeStampInFilename" value="&screengrab.preference.timestamp.in.filename;" tooltip="timeStampTip" />
-			<checkbox preference="prefIncludeTimeStampInFilename" id="includeTimeStampInFilename" tooltip="timeStampTip" />
+
+	<tooltip id="DateStampTip"   orient="vertical"> <label value="&screengrab.preference.datestamp.in.filename.description;" /> </tooltip>
+	<tooltip id="TimeStampTip"   orient="vertical"> <label value="&screengrab.preference.timestamp.in.filename.description;" /> </tooltip>
+	<tooltip id="DecUTCStampTip" orient="vertical"> <label value="&screengrab.preference.decutcstamp.in.filename.description;" /> </tooltip>
+	<tooltip id="HexUTCStampTip" orient="vertical"> <label value="&screengrab.preference.hexutcstamp.in.filename.description;" /> </tooltip>
+
+	<tooltip id="ImageFormatTip"  orient="vertical"> <label value="&screengrab.preference.image.format.filetype.description;" /> </tooltip>
+	<tooltip id="ImageQualityTip" orient="vertical"> <label value="&screengrab.preference.image.quality.description;" /> </tooltip>
+
+	<tooltip id="ShowIconInStatusBarTip"   orient="vertical"> <label value="&screengrab.preference.show.icon.in.statusbar.description;" /> </tooltip>
+	<tooltip id="ShowInContextMenuTip"     orient="vertical"> <label value="&screengrab.preference.show.in.context.menu.description;" /> </tooltip>
+	<tooltip id="ShowFileInDownloadsTip"   orient="vertical"> <label value="&screengrab.preference.show.file.in.downloads.description;" /> </tooltip>
+	<tooltip id="UseBrowserDownloadDirTip" orient="vertical"> <label value="&screengrab.preference.use.browser.download.dir.description;" /> </tooltip>
+	<tooltip id="UseJavaIfAvailableTip"    orient="vertical"> <label value="&screengrab.preference.use.java.if.available.description;" /> </tooltip>
+	<tooltip id="ToolbarAddedOnceTip"      orient="vertical"> <label value="&screengrab.preference.toolbar.added.once.description;" /> </tooltip>
+
+	<tooltip id="EnableLoggingTip"  orient="vertical"> <label value="&screengrab.preference.logging.enable.description;" /> </tooltip>
+	<tooltip id="LoggerFilenameTip" orient="vertical"> <label value="&screengrab.preference.logging.filename.description;" /> </tooltip>
+
+	<tooltip id="NumberofGrabsTakenTip" orient="vertical"> <label value="&screengrab.preference.grabs.taken.count.description;" /> </tooltip>
+
+	<tooltip id="MagicTip" orient="vertical"> <label value="&screengrab.preference.magic.description;" /> </tooltip>
+		
+
+	<groupbox style="margin-top: 10px;">
+		<caption label="&screengrab.preference.stamp.options;" />
+		<hbox>
+			<checkbox id="PrependDateStampInFilename"  preference="prefPrependDateStampInFilename"  tooltip="DateStampTip" />
+			<label control="PrependDateStampInFilename"  value="&screengrab.preference.datestamp.in.filename;"   tooltip="DateStampTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="PrependTimeStampInFilename"  preference="prefPrependTimeStampInFilename"  tooltip="TimeStampTip" />
+			<label control="PrependTimeStampInFilename"  value="&screengrab.preference.timestamp.in.filename;"   tooltip="TimeStampTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="AppendDecUTCStampInFilename" preference="prefAppendDecUTCStampInFilename" tooltip="DecUTCStampTip" />
+			<label control="AppendDecUTCStampInFilename" value="&screengrab.preference.decutcstamp.in.filename;" tooltip="DecUTCStampTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="AppendHexUTCStampInFilename" preference="prefAppendHexUTCStampInFilename" tooltip="HexUTCStampTip" />
+			<label control="AppendHexUTCStampInFilename" value="&screengrab.preference.hexutcstamp.in.filename;" tooltip="HexUTCStampTip" />
+		</hbox>
+	</groupbox>
+
+	<groupbox style="margin-top: 10px;">
+		<caption label="&screengrab.preference.image.format.options;" />
+		<label control="ImageFormat" value="&screengrab.preference.image.format.filetype;" tooltip="ImageFormatTip" />
+
+		<radiogroup id="ImageFormat" preference="prefImageFormat" tooltip="ImageFormatTip" >
+			<hbox>
+				<radio id="usePng" label="PNG" value="0" tooltip="ImageFormatTip" />
+				<radio id="useJpeg" label="JPEG" value="1" tooltip="ImageFormatTip" />
+				<radio id="useJpg" label="JPG" value="2" tooltip="ImageFormatTip" />
 		</hbox>
-		<separator />
-		<hbox align="start">
-		    <label control="imageFormat" value="&screengrab.preference.image.format;"/>
-		    <radiogroup id="imageFormat" preference="prefImageFormat">
-		    	<vbox>
-			    	<radio id="usePng" label="PNG" value="0"/>
-		    		<radio id="useJpeg" label="JPEG" value="1"/>
-		    	</vbox>
 		    </radiogroup>
+
+		<hbox align="start">
+			<label control="ImageQuality" value="&screengrab.preference.image.quality;" tooltip="ImageQualityTip" />
+			<textbox id="ImageQuality" preference="prefImageQuality" style="width: 50px" tooltip="ImageQualityTip" />
+		</hbox>
+	</groupbox>
+					
+
+	<groupbox style="margin-top: 10px;">
+		<caption label="&screengrab.preference.misc;" />
+
+		<hbox>
+			<checkbox id="ShowIconInStatusBar"   preference="prefShowIconInStatusBar"   tooltip="ShowIconInStatusBarTip" />
+			<label control="ShowIconInStatusBar"   value="&screengrab.preference.show.icon.in.statusbar;"   tooltip="ShowIconInStatusBarTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="ShowInContextMenu"     preference="prefShowInContextMenu"     tooltip="ShowInContextMenuTip" />
+			<label control="ShowInContextMenu"     value="&screengrab.preference.show.in.context.menu;"     tooltip="ShowInContextMenuTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="ShowFileInDownloads"   preference="prefShowFileInDownloads"   tooltip="ShowFileInDownloadsTip" />
+			<label control="ShowFileInDownloads"   value="&screengrab.preference.show.file.in.downloads;"   tooltip="ShowFileInDownloadsTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="UseBrowserDownloadDir" preference="prefUseBrowserDownloadDir" tooltip="UseBrowserDownloadDirTip" />
+			<label control="UseBrowserDownloadDir" value="&screengrab.preference.use.browser.download.dir;" tooltip="UseBrowserDownloadDirTip" />
+		</hbox>
+		<hbox>
+			<checkbox id="UseJavaIfAvailable" preference="prefUseJavaIfAvailable" tooltip="UseJavaIfAvailableTip" />
+			<label control="UseJavaIfAvailable" value="&screengrab.preference.use.java.if.available;" tooltip="UseJavaIfAvailableTip" />
 		</hbox>
+		<hbox>
+			<checkbox id="ToolbarAddedOnce"      preference="prefToolbarAddedOnce"      tooltip="ToolbarAddedOnceTip" />
+			<label control="ToolbarAddedOnce"      value="&screengrab.preference.toolbar.added.once;"       tooltip="ToolbarAddedOnceTip" />
+		</hbox>
+	</groupbox>
+
+
+	<groupbox style="margin-top: 10px;">
+		<caption label="&screengrab.preference.logging;" />
+		<hbox>
+			<checkbox id="EnableLogging" preference="prefEnableLogging" tooltip="EnableLoggingTip" />
+			<label control="EnableLogging" value="&screengrab.preference.logging.enable;" tooltip="EnableLoggingTip" />
+		</hbox>
+
+		<hbox>
+			<label control="LoggerFilename" value="&screengrab.preference.logging.filename;" tooltip="LoggerFilenameTip" />
+			<textbox id="LoggerFilename" preference="prefLoggerFilename" tooltip="LoggerFilenameTip" style="width: 300px" />
+		</hbox>
+	</groupbox>
+
+	<groupbox style="margin-top: 10px;">
+		<caption label="&screengrab.preference.grabs.taken;" />
+		<hbox>
+			<label control="NumberofGrabsTaken" value="&screengrab.preference.grabs.taken.count;" tooltip="NumberofGrabsTakenTip" />
+			<textbox id="NumberofGrabsTaken" preference="prefNumberofGrabsTaken" tooltip="NumberofGrabsTakenTip" style="width: 50px" />
+		</hbox>
+		<hbox>
+			<checkbox id="Magic" preference="prefMagic" tooltip="MagicTip" />
+			<label control="Magic" value="&screengrab.preference.magic;" tooltip="MagicTip" />
+		</hbox>
+	</groupbox>
+		
 	</prefpane>
 </prefwindow>
\ No newline at end of file
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/content/screengrabOverlay.xul 1.0/chrome/content/screengrabOverlay.xul
--- 0.96.8c/chrome/content/screengrabOverlay.xul	2012-07-23 10:25:24.000000000 -0400
+++ 1.0/chrome/content/screengrabOverlay.xul	2012-10-21 14:26:36.000000000 -0400
@@ -1,5 +1,6 @@
 <?xml version="1.0"?>
 <?xml-stylesheet href="chrome://screengrab/skin/screengrab.css" type="text/css"?>
+<?xml-stylesheet href="chrome://screengrab/skin/toolbar.css" type="text/css"?>
 <!DOCTYPE window SYSTEM "chrome://screengrab/locale/screengrab.dtd">
 
 <overlay id="screengrabOverlay" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
@@ -34,9 +35,10 @@
 
 	<toolbarpalette id="BrowserToolbarPalette">
 	    <toolbarbutton id="screengrab-toolbar-button"
-	               class="toolbarbutton-1"
+	                   class="toolbarbutton-1 chromeclass-toolbar-additional"
                        oncommand="document.getElementById('screengrab-toolbar-button').open=true;"
                        type="menu-button"
+	                   buttontooltiptext="Screengrab!"
 	               tooltiptext="Screengrab!"
 	               label="Screengrab!">
 	        <menupopup id="screengrab-toolbar-menupopup"
@@ -49,22 +51,41 @@
 	<!-- Context menu additions -->
 	<popup id="contentAreaContextMenu">
 	    <menuseparator id="screengrab-context-separator"/>
-	    <menu id="screengrab-context-menu" class="menu-iconic" label="&screengrab.name;">
+	    <menu id="screengrab-context-menu" label="&screengrab.name;">
 	        <menupopup id="screengrab-menu-items">
 		    	<menu id="screengrab-save" label="&screengrab.save;">
 		    		<menupopup>
-					<menuitem id="screengrab-pop-grabFrame" label="&screengrab.page;" oncommand="sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
-					<menuitem id="screengrab-pop-grabViewPort" label="&screengrab.visible.portion.of.page;" oncommand="sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
-					<menuitem id="screengrab-pop-grabSelection" label="&screengrab.selection;" oncommand="sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
-					<!-- menuitem id="screengrab-pop-grabElement" label="&screengrab.element;" oncommand="sg.Grab(new sg.ElementTarget(), sg.CaptureViewPort, new sg.SaveAction());"/ -->
+			            <menuitem id="pop-grabFrame" label="&screengrab.page;" 
+			                oncommand="sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
+
+			            <menuitem id="pop-grabViewPort" label="&screengrab.visible.portion.of.page;" 
+			                oncommand="sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
+
+			            <menuitem id="pop-grabSelection" label="&screengrab.selection;" 
+			                oncommand="sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.SaveAction());"/>
+
+		                    <menuitem id="pop-grabWindow" label="&screengrab.browser.window;" 
+		                    oncommand="sg.Grab(new sg.WindowTarget(), sg.CaptureWindow, new sg.SaveAction());"/>
+
+		                <!-- <menuitem id="pop-grabScreen" label="&screengrab.screen;" 
+		                    oncommand="sg.Grab(new sg.ScreenTarget(), sg.CaptureWindow, new sg.SaveAction());"/> -->
+
+		                <!-- menuitem id="pop-grabElement" label="&screengrab.element;" 
+			                oncommand="sg.Grab(new sg.ElementTarget(), sg.CaptureViewPort, new sg.SaveAction());"/ -->
 		            </menupopup>
 		        </menu>
 		        <menu id="screengrab-copy" label="&screengrab.copy;">
 		    		<menupopup>
-					<menuitem id="screengrab-pop-copyFrame" label="&screengrab.page;" oncommand="sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
-					<menuitem id="screengrab-pop-copyViewPort" label="&screengrab.visible.portion.of.page;" oncommand="sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
-					<menuitem id="screengrab-pop-copySelection" label="&screengrab.selection;" oncommand="sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
-					<!-- <menuitem id="screengrab-pop-copyElement" label="&screengrab.element;" oncommand="sg.Grab(new sg.ElementTarget(), sg.CaptureViewPort, new sg.CopyAction());"/ -->
+			            <menuitem id="pop-copyFrame" label="&screengrab.page;" 
+				                oncommand="sg.Grab(new sg.FrameTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
+			            <menuitem id="pop-copyViewPort" label="&screengrab.visible.portion.of.page;" 
+			                oncommand="sg.Grab(new sg.VisibleTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
+			            <menuitem id="pop-copySelection" label="&screengrab.selection;" 
+		                    oncommand="sg.Grab(new sg.SelectionTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>
+		                <!--<menuitem id="pop-copyElement" label="&screengrab.element;" 
+		                    oncommand="sg.Grab(new sg.ElementTarget(), sg.CaptureViewPort, new sg.CopyAction());"/>-->
+		                <menuitem id="pop-copyWindow" label="&screengrab.browser.window;" 
+		                    oncommand="sg.Grab(new sg.WindowTarget(), sg.CaptureWindow, new sg.CopyAction());"/>
 		    		</menupopup>
 		        </menu>
 		    </menupopup>
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/bg-BG/screengrab.dtd 1.0/chrome/locale/bg-BG/screengrab.dtd
--- 0.96.8c/chrome/locale/bg-BG/screengrab.dtd	2012-02-16 02:31:20.000000000 -0500
+++ 1.0/chrome/locale/bg-BG/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/cs-CZ/screengrab.dtd 1.0/chrome/locale/cs-CZ/screengrab.dtd
--- 0.96.8c/chrome/locale/cs-CZ/screengrab.dtd	2012-02-16 02:31:30.000000000 -0500
+++ 1.0/chrome/locale/cs-CZ/screengrab.dtd	2010-03-23 21:42:42.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/de-DE/screengrab.dtd 1.0/chrome/locale/de-DE/screengrab.dtd
--- 0.96.8c/chrome/locale/de-DE/screengrab.dtd	2012-02-16 02:31:42.000000000 -0500
+++ 1.0/chrome/locale/de-DE/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Größe ändern...">
 <!ENTITY screengrab.page "Gesamte Seite oder Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Sichtbarer Bereich...">
+<!ENTITY screengrab.browser.window "Gesamtes Fenster...">
 <!ENTITY screengrab.selection "Auswählbarer Bereich...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "ScreenGrab! - Einstellungen">
 <!ENTITY screengrab.preference.page.capture.method "Bevorzugte Methode auswählen:">
 <!ENTITY screengrab.preference.page.capture.java "Java-Methode verwenden">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/en-US/screengrab.dtd 1.0/chrome/locale/en-US/screengrab.dtd
--- 0.96.8c/chrome/locale/en-US/screengrab.dtd	2012-02-15 23:26:12.000000000 -0500
+++ 1.0/chrome/locale/en-US/screengrab.dtd	2012-10-21 14:28:16.000000000 -0400
@@ -6,8 +6,11 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
+<!ENTITY screengrab.screen "Screen...">
 <!ENTITY screengrab.selection "Selection...">
 <!ENTITY screengrab.element "Element...">
+
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
@@ -14,6 +17,55 @@
 <!ENTITY screengrab.preference.page.capture.gecko "Gecko Canvas (newer, faster)">
 <!ENTITY screengrab.preference.page.capture.gecko.description "Canvas is faster, leaner, newer and usually better. It will capture long pages, but won&apos;t get embedded objects (eg. swf).">
 <!ENTITY screengrab.preference.page.capture.java.description "Java is slower and funkier (and requires Java to be installed). It gets embedded objects, but won&apos;t grab really long pages and can&apos;t copy to the clipboard (yet).">
-<!ENTITY screengrab.preference.timestamp.in.filename "Include time stamp in filename">
-<!ENTITY screengrab.preference.timestamp.in.filename.description "Enabling this will append a timestamp to all files saved. This can be useful for unique identification.">
-<!ENTITY screengrab.preference.image.format "Image format">
+
+<!ENTITY screengrab.preference.stamp.options "Stamp Options">
+<!ENTITY screengrab.preference.stamp.options.description "Time and Date Stamps can be prepended and appended to the file name automatically.">
+<!ENTITY screengrab.preference.datestamp.in.filename "Prepend Date Stamp to filename">
+<!ENTITY screengrab.preference.datestamp.in.filename.description "ie 20120131_ Prepend dates to all files saved. Useful for sorting and unique ids.">
+<!ENTITY screengrab.preference.timestamp.in.filename "Prepend Time Of Day Stamp to filename">
+<!ENTITY screengrab.preference.timestamp.in.filename.description "ie 2355_ Prepend time of day, merges with datestamp if active. Useful for sorting and unique ids.">
+<!ENTITY screengrab.preference.decutcstamp.in.filename "Append Dec UTC milliseconds to filename">
+<!ENTITY screengrab.preference.decutcstamp.in.filename.description "ie _1350117502618 append decimal UTC (in milliseconds!) since 1970 epoch. This can be useful for unique identification.">
+<!ENTITY screengrab.preference.hexutcstamp.in.filename "Append Hex UTC seconds to filename">
+<!ENTITY screengrab.preference.hexutcstamp.in.filename.description "ie _507928E8 append hex UTC (in seconds!) since 1970 epoch. More compact than decimal but also only in seconds.">
+
+<!ENTITY screengrab.preference.image.format.options "Image Format Options">
+<!ENTITY screengrab.preference.image.format.options.description "Choose your file type and quality.">
+<!ENTITY screengrab.preference.image.format.filetype "File Type">
+<!ENTITY screengrab.preference.image.format.filetype.description "When in doubt select JPG">
+<!ENTITY screengrab.preference.image.quality "Image Quality">
+<!ENTITY screengrab.preference.image.quality.description "75 is typical. Range 1 to 100 (does not apply to PNG)">
+
+<!ENTITY screengrab.preference.misc "Miscellaneous Options">
+<!ENTITY screengrab.preference.misc.description "User interface options and stuff.">
+<!ENTITY screengrab.preference.show.icon.in.statusbar "Show Status Bar Icon">
+<!ENTITY screengrab.preference.show.icon.in.statusbar.description "Adds an icon to the status bar.">
+<!ENTITY screengrab.preference.show.in.context.menu "Show in Context Menu">
+<!ENTITY screengrab.preference.show.in.context.menu.description "Adds a menu item to your right-click context menu.">
+<!ENTITY screengrab.preference.show.file.in.downloads "Show File In Downloads.">
+<!ENTITY screengrab.preference.show.file.in.downloads.description "Saved capture files will show up in your downloads list.">
+<!ENTITY screengrab.preference.use.browser.download.dir "Use Browser Download Directory">
+<!ENTITY screengrab.preference.use.browser.download.dir.description "Saves capture files to your regular download directory.">
+<!ENTITY screengrab.preference.use.java.if.available "Use Java If Available">
+<!ENTITY screengrab.preference.use.java.if.available.description "Allows Java capture methods, if Java is available.">
+<!ENTITY screengrab.preference.toolbar.added.once "Toolbar Added Once">
+<!ENTITY screengrab.preference.toolbar.added.once.description "Prevents adding icon to toolbar again. Clear this to add it back. Could be a total lie.">
+
+<!ENTITY screengrab.preference.use.java.if.available "Use Java if Available">
+<!ENTITY screengrab.preference.use.java.if.available.description "Capture with the awesome power of Java.">
+<!ENTITY screengrab.preference.java.scrollwaitms "Sroll Wait (msec)">
+<!ENTITY screengrab.preference.java.scrollwaitms.description "Default is 100 win 400 mac">
+
+<!ENTITY screengrab.preference.logging "Logging Options">
+<!ENTITY screengrab.preference.logging.description "Select your Logging Options">
+<!ENTITY screengrab.preference.logging.enable "Enable Logging">
+<!ENTITY screengrab.preference.logging.enable.description "Enables Logging of debug output to console and maybe file.">
+<!ENTITY screengrab.preference.logging.filename "Logging Filename">
+<!ENTITY screengrab.preference.logging.filename.description "c:\sg.log or /tmp/sg.log or leave blank for console only.">
+
+<!ENTITY screengrab.preference.grabs.taken "Grabs Taken">
+<!ENTITY screengrab.preference.grabs.taken.description "Grabs Taken">
+<!ENTITY screengrab.preference.grabs.taken.count "Number of Grabs Taken">
+<!ENTITY screengrab.preference.grabs.taken.count.description "Simply counts the number of screen grabs taken. You can reset or change this if you like. This will be sent to the NSA, CIA, FBI, CSIS, and the MPAA.">
+<!ENTITY screengrab.preference.magic "Magic">
+<!ENTITY screengrab.preference.magic.description "Nothing to see here, move along!">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/es-ES/screengrab.dtd 1.0/chrome/locale/es-ES/screengrab.dtd
--- 0.96.8c/chrome/locale/es-ES/screengrab.dtd	2012-02-16 02:31:56.000000000 -0500
+++ 1.0/chrome/locale/es-ES/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Redimensionar...">
 <!ENTITY screengrab.page "Página/Marco completo...">
 <!ENTITY screengrab.visible.portion.of.page "Porción visible...">
+<!ENTITY screengrab.browser.window "Ventana...">
 <!ENTITY screengrab.selection "Selección...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! - Opciones">
 <!ENTITY screengrab.preference.page.capture.method "Método preferido de captura de página">
 <!ENTITY screengrab.preference.page.capture.java "Java (antiguo, pesado)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/fr-FR/screengrab.dtd 1.0/chrome/locale/fr-FR/screengrab.dtd
--- 0.96.8c/chrome/locale/fr-FR/screengrab.dtd	2012-02-16 02:32:04.000000000 -0500
+++ 1.0/chrome/locale/fr-FR/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/he-IL/screengrab.dtd 1.0/chrome/locale/he-IL/screengrab.dtd
--- 0.96.8c/chrome/locale/he-IL/screengrab.dtd	2012-02-16 02:32:10.000000000 -0500
+++ 1.0/chrome/locale/he-IL/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/hr-HR/screengrab.dtd 1.0/chrome/locale/hr-HR/screengrab.dtd
--- 0.96.8c/chrome/locale/hr-HR/screengrab.dtd	2012-02-16 02:32:18.000000000 -0500
+++ 1.0/chrome/locale/hr-HR/screengrab.dtd	2010-03-23 21:42:42.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Promijeni veličinu...">
 <!ENTITY screengrab.page "Cijela stranica/Okvir...">
 <!ENTITY screengrab.visible.portion.of.page "Vidljivi dio...">
+<!ENTITY screengrab.browser.window "Prozor...">
 <!ENTITY screengrab.selection "Odabrano...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Postavke">
 <!ENTITY screengrab.preference.page.capture.method "Preferirana metoda hvatanja stranice">
 <!ENTITY screengrab.preference.page.capture.java "Java (starije, više funky)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/hu-HU/screengrab.dtd 1.0/chrome/locale/hu-HU/screengrab.dtd
--- 0.96.8c/chrome/locale/hu-HU/screengrab.dtd	2012-02-16 02:32:24.000000000 -0500
+++ 1.0/chrome/locale/hu-HU/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/it-IT/screengrab.dtd 1.0/chrome/locale/it-IT/screengrab.dtd
--- 0.96.8c/chrome/locale/it-IT/screengrab.dtd	2012-02-16 02:32:32.000000000 -0500
+++ 1.0/chrome/locale/it-IT/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Ridimensiona...">
 <!ENTITY screengrab.page "Pagina/riquadro completo...">
 <!ENTITY screengrab.visible.portion.of.page "Porzione visibile...">
+<!ENTITY screengrab.browser.window "Finestra...">
 <!ENTITY screengrab.selection "Selezione...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Impostazioni di Screen grab!">
 <!ENTITY screengrab.preference.page.capture.method "Metodo di cattura preferito:">
 <!ENTITY screengrab.preference.page.capture.java "Java (metodo vecchio, più lento)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/ja-JP/screengrab.dtd 1.0/chrome/locale/ja-JP/screengrab.dtd
--- 0.96.8c/chrome/locale/ja-JP/screengrab.dtd	2012-02-16 02:32:38.000000000 -0500
+++ 1.0/chrome/locale/ja-JP/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/ko-KR/screengrab.dtd 1.0/chrome/locale/ko-KR/screengrab.dtd
--- 0.96.8c/chrome/locale/ko-KR/screengrab.dtd	2012-02-16 02:32:48.000000000 -0500
+++ 1.0/chrome/locale/ko-KR/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/nl-NL/screengrab.dtd 1.0/chrome/locale/nl-NL/screengrab.dtd
--- 0.96.8c/chrome/locale/nl-NL/screengrab.dtd	2012-02-16 02:33:02.000000000 -0500
+++ 1.0/chrome/locale/nl-NL/screengrab.dtd	2010-03-23 21:42:42.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Formaat wijzigen...">
 <!ENTITY screengrab.page "Volledige pagina/frame...">
 <!ENTITY screengrab.visible.portion.of.page "Zichtbaar gedeelte...">
+<!ENTITY screengrab.browser.window "Venster...">
 <!ENTITY screengrab.selection "Selectie...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "ScreenGrab! instellingen">
 <!ENTITY screengrab.preference.page.capture.method "Voorkeursmethode voor paginacapture">
 <!ENTITY screengrab.preference.page.capture.java "Java (ouder, wat stoffig)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/pt-BR/screengrab.dtd 1.0/chrome/locale/pt-BR/screengrab.dtd
--- 0.96.8c/chrome/locale/pt-BR/screengrab.dtd	2012-02-16 02:33:08.000000000 -0500
+++ 1.0/chrome/locale/pt-BR/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/ru-RU/screengrab.dtd 1.0/chrome/locale/ru-RU/screengrab.dtd
--- 0.96.8c/chrome/locale/ru-RU/screengrab.dtd	2012-02-16 02:33:16.000000000 -0500
+++ 1.0/chrome/locale/ru-RU/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -1,19 +1,19 @@
 <!ENTITY screengrab.name "ScreenGrab!">
-<!ENTITY screengrab.copy "Скопировать...">
-<!ENTITY screengrab.save "Сохранить...">
-<!ENTITY screengrab.preview "Просмотр...">
-<!ENTITY screengrab.crop "Вырезать...">
-<!ENTITY screengrab.resize "Изменить размер...">
-<!ENTITY screengrab.page "Всю страницу/Фрейм...">
-<!ENTITY screengrab.visible.portion.of.page "Видимую часть...">
-<!ENTITY screengrab.selection "Выделение...">
-<!ENTITY screengrab.element "Element...">
-<!ENTITY screengrab.preference.panel.label "Screengrab! Настройки">
-<!ENTITY screengrab.preference.page.capture.method "Предпочтительный метод сохранения страницы">
-<!ENTITY screengrab.preference.page.capture.java "Java (старая, медленная)">
-<!ENTITY screengrab.preference.page.capture.gecko "Gecko Canvas (новый, быстрый)">
-<!ENTITY screengrab.preference.page.capture.gecko.description "Canvas быстрее, компактнее, новее и удобнее в использовании. Делает снимок длинных страниц, но без встроенных объектов (напр. Flash).">
-<!ENTITY screengrab.preference.page.capture.java.description "Java медленная и требует установленной Java. Сохраняет встроенные объекты, но не захватывает длинные страницы и отсутствует возможность копирования в буфер обмена.">
-<!ENTITY screengrab.preference.timestamp.in.filename "Добавить текущее время в имя файла">
-<!ENTITY screengrab.preference.timestamp.in.filename.description "Добавление текущего времени в имя к каждому файлу. Полезно для уникальности.">
-<!ENTITY screengrab.preference.image.format "Формат картинки">
+<!ENTITY screengrab.copy "Copy...">
+<!ENTITY screengrab.save "Save...">
+<!ENTITY screengrab.preview "Preview...">
+<!ENTITY screengrab.crop "Crop...">
+<!ENTITY screengrab.resize "Resize...">
+<!ENTITY screengrab.page "Complete Page/Frame...">
+<!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
+<!ENTITY screengrab.selection "Selection...">
+<!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
+<!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
+<!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
+<!ENTITY screengrab.preference.page.capture.gecko "Gecko Canvas (newer, faster)">
+<!ENTITY screengrab.preference.page.capture.gecko.description "Canvas is faster, leaner, newer and usually better. It will capture long pages, but won&apos;t get embedded objects (eg. swf).">
+<!ENTITY screengrab.preference.page.capture.java.description "Java is slower and funkier (and requires Java to be installed). It gets embedded objects, but won&apos;t grab really long pages and can&apos;t copy to the clipboard (yet).">
+<!ENTITY screengrab.preference.timestamp.in.filename "Include time stamp in filename">
+<!ENTITY screengrab.preference.timestamp.in.filename.description "Enabling this will append a timestamp to all files saved. This can be useful for unique identification.">
+<!ENTITY screengrab.preference.image.format "Image format">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/sk-SK/screengrab.dtd 1.0/chrome/locale/sk-SK/screengrab.dtd
--- 0.96.8c/chrome/locale/sk-SK/screengrab.dtd	2012-02-16 02:33:24.000000000 -0500
+++ 1.0/chrome/locale/sk-SK/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Zmeniť veľkosť...">
 <!ENTITY screengrab.page "Celá stránka/Rámec...">
 <!ENTITY screengrab.visible.portion.of.page "Viditeľná časť...">
+<!ENTITY screengrab.browser.window "Okno...">
 <!ENTITY screengrab.selection "Výber...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Nastavenie ScreenGrab!">
 <!ENTITY screengrab.preference.page.capture.method "Uprednostňovaný spôsob snímania">
 <!ENTITY screengrab.preference.page.capture.java "Java (starší, funkčnejší)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/sl-SL/screengrab.dtd 1.0/chrome/locale/sl-SL/screengrab.dtd
--- 0.96.8c/chrome/locale/sl-SL/screengrab.dtd	2012-02-16 02:33:30.000000000 -0500
+++ 1.0/chrome/locale/sl-SL/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Spremeni velikost...">
 <!ENTITY screengrab.page "Celotna stran/Okvir...">
 <!ENTITY screengrab.visible.portion.of.page "Vidna površina...">
+<!ENTITY screengrab.browser.window "Okno...">
 <!ENTITY screengrab.selection "Izbira...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Nastavitve Screengrab!">
 <!ENTITY screengrab.preference.page.capture.method "Privzeta metoda zajema strani">
 <!ENTITY screengrab.preference.page.capture.java "Java (starejša, več funkcij)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/tr-TR/screengrab.dtd 1.0/chrome/locale/tr-TR/screengrab.dtd
--- 0.96.8c/chrome/locale/tr-TR/screengrab.dtd	2012-02-16 02:33:38.000000000 -0500
+++ 1.0/chrome/locale/tr-TR/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Resize...">
 <!ENTITY screengrab.page "Complete Page/Frame...">
 <!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
 <!ENTITY screengrab.selection "Selection...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
 <!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
 <!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/uk-UA/screengrab.dtd 1.0/chrome/locale/uk-UA/screengrab.dtd
--- 0.96.8c/chrome/locale/uk-UA/screengrab.dtd	2012-02-16 02:33:44.000000000 -0500
+++ 1.0/chrome/locale/uk-UA/screengrab.dtd	2010-03-23 21:42:44.000000000 -0400
@@ -6,8 +6,8 @@
 <!ENTITY screengrab.resize "Змінити розмір...">
 <!ENTITY screengrab.page "Цілу сторінку/фрейм...">
 <!ENTITY screengrab.visible.portion.of.page "Видима частина...">
+<!ENTITY screengrab.browser.window "Вікно...">
 <!ENTITY screengrab.selection "Виділення...">
-<!ENTITY screengrab.element "Element...">
 <!ENTITY screengrab.preference.panel.label "Налаштування Screengrab!">
 <!ENTITY screengrab.preference.page.capture.method "Вид збереження сторінки за замовчуванням">
 <!ENTITY screengrab.preference.page.capture.java "Java (старший, повільний)">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/locale/zh-CN/screengrab.dtd 1.0/chrome/locale/zh-CN/screengrab.dtd
--- 0.96.8c/chrome/locale/zh-CN/screengrab.dtd	2012-06-02 17:59:44.000000000 -0400
+++ 1.0/chrome/locale/zh-CN/screengrab.dtd	2010-03-23 21:42:42.000000000 -0400
@@ -1,19 +1,19 @@
-<!ENTITY screengrab.name "网页截图">
-<!ENTITY screengrab.copy "复制...">
-<!ENTITY screengrab.save "保存...">
-<!ENTITY screengrab.preview "预览...">
-<!ENTITY screengrab.crop "裁切...">
-<!ENTITY screengrab.resize "改变大小...">
-<!ENTITY screengrab.page "整个网页/框架...">
-<!ENTITY screengrab.visible.portion.of.page "可见区域...">
-<!ENTITY screengrab.selection "选区...">
-<!ENTITY screengrab.element "组件...">
-<!ENTITY screengrab.preference.panel.label "设置">
-<!ENTITY screengrab.preference.page.capture.method "首选的抓屏方法">
-<!ENTITY screengrab.preference.page.capture.java "Java(早期，落后)">
-<!ENTITY screengrab.preference.page.capture.gecko "Gecko Canvas (新的，快速)">
-<!ENTITY screengrab.preference.page.capture.gecko.description "Canvas 较快、小巧、新的和易用的，它可以抓取长页面，但不能抓取embed对象(如 flash 动画)。">
-<!ENTITY screengrab.preference.page.capture.java.description "Java 慢的和迟缓(需要安装 Java)。它可以抓取embed对象但不能抓取长页面和复制到剪贴板。">
-<!ENTITY screengrab.preference.timestamp.in.filename "在文件名中包括时间戳">
-<!ENTITY screengrab.preference.timestamp.in.filename.description "启用它将在文件保存时添加上时间戳，这对唯一性很有好处。">
-<!ENTITY screengrab.preference.image.format "图片格式">
+<!ENTITY screengrab.name "ScreenGrab!">
+<!ENTITY screengrab.copy "Copy...">
+<!ENTITY screengrab.save "Save...">
+<!ENTITY screengrab.preview "Preview...">
+<!ENTITY screengrab.crop "Crop...">
+<!ENTITY screengrab.resize "Resize...">
+<!ENTITY screengrab.page "Complete Page/Frame...">
+<!ENTITY screengrab.visible.portion.of.page "Visible portion...">
+<!ENTITY screengrab.browser.window "Window...">
+<!ENTITY screengrab.selection "Selection...">
+<!ENTITY screengrab.preference.panel.label "Screengrab! Settings">
+<!ENTITY screengrab.preference.page.capture.method "Preferred page capture method">
+<!ENTITY screengrab.preference.page.capture.java "Java (older, funkier)">
+<!ENTITY screengrab.preference.page.capture.gecko "Gecko Canvas (newer, faster)">
+<!ENTITY screengrab.preference.page.capture.gecko.description "Canvas is faster, leaner, newer and usually better. It will capture long pages, but won&apos;t get embedded objects (eg. swf).">
+<!ENTITY screengrab.preference.page.capture.java.description "Java is slower and funkier (and requires Java to be installed). It gets embedded objects, but won&apos;t grab really long pages and can&apos;t copy to the clipboard (yet).">
+<!ENTITY screengrab.preference.timestamp.in.filename "Include time stamp in filename">
+<!ENTITY screengrab.preference.timestamp.in.filename.description "Enabling this will append a timestamp to all files saved. This can be useful for unique identification.">
+<!ENTITY screengrab.preference.image.format "Image format">
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/skin/contents.rdf 1.0/chrome/skin/contents.rdf
--- 0.96.8c/chrome/skin/contents.rdf	1969-12-31 19:00:00.000000000 -0500
+++ 1.0/chrome/skin/contents.rdf	2010-03-23 21:42:44.000000000 -0400
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
+
+    <RDF:Seq about="urn:mozilla:skin:root">
+        <RDF:li resource="urn:mozilla:skin:classic/1.0" />
+    </RDF:Seq>
+
+    <RDF:Description about="urn:mozilla:skin:classic/1.0">
+        <chrome:packages>
+            <RDF:Seq about="urn:mozilla:skin:classic/1.0:packages">
+                <RDF:li resource="urn:mozilla:skin:classic/1.0:screengrab" />
+            </RDF:Seq>
+        </chrome:packages>
+    </RDF:Description>
+
+    <RDF:Seq about="urn:mozilla:stylesheets">
+        <RDF:li resource="chrome://browser/content/browser.xul"/>
+        <RDF:li resource="chrome://global/content/customizeToolbar.xul"/>
+    </RDF:Seq>
+    <RDF:Seq about="chrome://browser/content/browser.xul">
+        <RDF:li>chrome://screengrab/skin/screengrab.css</RDF:li>
+    </RDF:Seq>
+    <RDF:Seq about="chrome://global/content/customizeToolbar.xul">
+        <RDF:li>chrome://screengrab/skin/screengrab.css</RDF:li>
+    </RDF:Seq>
+</RDF:RDF>
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/skin/screengrab.css 1.0/chrome/skin/screengrab.css
--- 0.96.8c/chrome/skin/screengrab.css	2012-07-04 00:04:34.000000000 -0400
+++ 1.0/chrome/skin/screengrab.css	2012-10-14 04:27:46.000000000 -0400
@@ -46,7 +47,7 @@ toolbarbutton#screengrab-toolbar-button
 }
 
 #screengrab-toolbar-button {
-  list-style-image: url("chrome://screengrab/skin/screengrab_icon.png");
+  list-style-image: url("chrome://screengrab/skin/screengrab_24_icon.png");
 }
 
 toolbar[iconsize="small"] #screengrab-toolbar-button {
Binary files 0.96.8c/chrome/skin/screengrab_16_icon.gif and 1.0/chrome/skin/screengrab_16_icon.gif differ
Binary files 0.96.8c/chrome/skin/screengrab_24_icon.gif and 1.0/chrome/skin/screengrab_24_icon.gif differ
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome/skin/toolbar.css 1.0/chrome/skin/toolbar.css
--- 0.96.8c/chrome/skin/toolbar.css	1969-12-31 19:00:00.000000000 -0500
+++ 1.0/chrome/skin/toolbar.css	2012-10-14 03:28:34.000000000 -0400
@@ -0,0 +1,12 @@
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+/**
+ * This file is copyright Andy Mutton 2008 (andy@5263.org).
+ * It is licensed under the GPL3. More information can be found in the root folder in license.txt
+ */
+#screengrab-toolbar-button {
+  list-style-image: url("chrome://screengrab/skin/screengrab_24_icon.png");
+}
+
+toolbar[iconsize="small"] #screengrab-toolbar-button {
+  list-style-image: url("chrome://screengrab/skin/screengrab_16_icon.png");
+}
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/chrome.manifest 1.0/chrome.manifest
--- 0.96.8c/chrome.manifest	2012-07-04 00:01:24.000000000 -0400
+++ 1.0/chrome.manifest	2012-10-14 04:25:08.000000000 -0400
@@ -20,4 +20,4 @@ locale  screengrab  de-DE chrome/locale/
 locale  screengrab  cs-CZ chrome/locale/cs-CZ/
 
 skin    screengrab  classic/1.0 chrome/skin/
-style   chrome://global/content/customizeToolbar.xul chrome://screengrab/skin/screengrab.css
+style	chrome://global/content/customizeToolbar.xul chrome://screengrab/skin/toolbar.css
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/defaults/preferences/prefs.js 1.0/defaults/preferences/prefs.js
--- 0.96.8c/defaults/preferences/prefs.js	2012-07-03 23:55:36.000000000 -0400
+++ 1.0/defaults/preferences/prefs.js	2012-10-21 14:33:24.000000000 -0400
@@ -1,9 +1,23 @@
-pref("extensions.{02450914-cdd9-410f-b1da-db004e18c671}.description", "chrome://screengrab/locale/screengrab.properties");
-pref("extensions.screengrab.includeTimeStampInFilename", true);
-pref("extensions.screengrab.imageFormat", 0); // 0 = PNG, 1 = JPG
-pref("extensions.screengrab.useJavaIfAvailable", true);
-pref("extensions.screengrab.showIconInStatusBar", true);
-pref("extensions.screengrab.showInContextMenu", true);
-pref("extensions.screengrab.jpgImageQuality", 75);
-pref("extensions.screengrab.enableLogOutput", false);
-//pref("extensions.screengrab.javaScrollWaitMs", 10); // defaults (mac:400, win,lin:40)
+pref("extensions.screengrab@seanster.com.description", "chrome://screengrab/locale/screengrab.properties");
+pref("extensions.screengrab.PrependDateStampInFilename", true); // 20121231_ prepended
+pref("extensions.screengrab.PrependTimeStampInFilename", true); // 2356_ prepended
+pref("extensions.screengrab.AppendDecUTCStampInFilename", false); // _1323625597702 Dec UTC milliseconds since 1970 epoch appended
+pref("extensions.screengrab.AppendHexUTCStampInFilename", false); // AAAAAAAA Hex UTC seconds since 1970 epoch appended
+
+pref("extensions.screengrab.ImageFormat", 2); // 0 = PNG, 1 = JPEG, 2 = JPG
+pref("extensions.screengrab.ImageQuality", 85); // 75 is typical for jpeg, does not apply to PNG
+
+pref("extensions.screengrab.ShowIconInStatusBar", true);
+pref("extensions.screengrab.ShowInContextMenu", true);
+pref("extensions.screengrab.ShowFileInDownloads", false);
+pref("extensions.screengrab.UseBrowserDownloadDir", false);
+pref("extensions.screengrab.ToolbarAddedOnce", false);
+
+pref("extensions.screengrab.UseJavaIfAvailable", false);
+pref("extensions.screengrab.JavaScrollWaitMs", 100);  // not exposed by options screen
+
+pref("extensions.screengrab.EnableLogging", false);
+pref("extensions.screengrab.LoggerFilename", "");  // win "C:\screengrab.log" linux "/tmp/screengrab.log"
+
+pref("extensions.screengrab.NumberofGrabsTaken", 0);
+pref("extensions.screengrab.Magic", false);
diff --recursive --show-c-function --unified --ignore-tab-expansion --ignore-all-space --ignore-blank-lines -N 0.96.8c/install.rdf 1.0/install.rdf
--- 0.96.8c/install.rdf	2012-10-03 09:57:04.000000000 -0400
+++ 1.0/install.rdf	2012-10-21 13:47:52.000000000 -0400
@@ -2,29 +2,36 @@
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 	<Description about="urn:mozilla:install-manifest">
-		<em:id>{02450914-cdd9-410f-b1da-db004e18c671}</em:id>
-		<em:name>Screengrab  (fix version)</em:name>
-		<em:version>0.96.8c</em:version>
+		<em:id>screengrab@seanster.com</em:id>
+		<em:name>Screengrab</em:name>
+		<em:version>1.0</em:version>
 		<em:type>2</em:type> 
 		<em:description>Saves a web-page as an image.</em:description>
 		<em:creator>Andy Mutton</em:creator>
+		<em:strictCompatibility>false</em:strictCompatibility>
+		<em:unpack>true</em:unpack>
 		
+		<em:contributor>Seanster@Seanster.com (responsible for ver 1.0)</em:contributor>
+		<em:contributor>Alexander Popov (Author Screengrab Fix Version 0.96.8c)</em:contributor> 
+		<em:contributor>TeliuTe (Create Simplified Chinese Language Pack)</em:contributor> 
+		<em:contributor>Andy Mutton andy@5263.org (original author, versions 0.96.3 and prior)</em:contributor>
 		<em:contributor>Jean-Bernard 'Goofy' Marcon from babelzilla.org (Help with locales)</em:contributor>
 		<em:contributor>All of the guys at babelzilla.org (Translations)</em:contributor>
 		<em:contributor>Dominic Letz (SecurityException bug fix)</em:contributor>
 		<em:contributor>vboriesazeau (Pointing out the deprecated getBoxObjectFor call)</em:contributor>
-		<em:contributor>Alexander Popov (Author Screengrab Fix Version)</em:contributor> 
-		<em:contributor>TeliuTe (Create Simplified Chinese Language Pack)</em:contributor> 
-		<em:homepageURL>http://www.screengrab.org/</em:homepageURL>
+
+		<em:homepageURL>http://www.seanster.com/screengrab/</em:homepageURL>
 	    <em:optionsURL>chrome://screengrab/content/preferences.xul</em:optionsURL>
 	    <em:iconURL>chrome://screengrab/skin/screengrab_icon.gif</em:iconURL>
 		
+		<!-- Firefox -->
 		<em:targetApplication>
 			<Description>
 				<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
-				<em:minVersion>3.0</em:minVersion>
-				<em:maxVersion>17.*</em:maxVersion>
+				<em:minVersion>3.0.9</em:minVersion>
+				<em:maxVersion>19.*</em:maxVersion>
 			</Description>
 		</em:targetApplication>
+
 	</Description>
 </RDF>
Binary files 0.96.8c/jars/base64.jar and 1.0/jars/base64.jar differ
