// ==UserScript==
// @name		page_saver
// @description		log pages visited and left, in order to restore after crash
// @include		*
// ==/UserScript==

// from diveintogreasemonkey-2005-05-09/casestudy/accessbar.html
function page_saver(event) {
    // alert("event: " + event.type + "\n" + "url: " + window.location.href);
    // alert("Got URL: " +  window.location.href);
    // can also look at "this", ie. this.title?
    GM_xmlhttpRequest({
       method: 'POST',
       url: 'http://localhost:3382/url_seen',
       headers: {
	   'SaveURL': window.location.href,
	   'EventType': event.type,
       },
    });
}

// turns out that we don't seem to get "load" events if we've 
// just gotten an "unload" event -- so make sure we at least get
// one faked up from this function being invoked on page load...
var fakeevent = { type: "grease_load" };
page_saver(fakeevent);

// http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Registration-interfaces
// lists the event types that seem interesting
window.addEventListener("load", 
			function(event) { page_saver(event) },
			false);	// useCapture
window.addEventListener("unload",
			function(event) { page_saver(event) },
			false);	// useCapture
document.addEventListener("load", 
			function(event) { page_saver(event) },
			false);	// useCapture
document.addEventListener("unload",
			function(event) { page_saver(event) },
			false);	// useCapture
//window.addEventListener("abort", 
//			function(event) { page_saver(event) },
//			true);	// useCapture
//window.addEventListener("error", 
//			function(event) { page_saver(event) },
//			true);	// useCapture
