SilverWav's Journal

The best is yet to come…

ShelveLogger 4.3

leave a comment »

ShelveLogger.html 4.3 – (Download).

Just click the download link to see a working example.
(It also allows you to see the lightning fast Filtering in action).

______________________________

Below is the sourcecode for ShelveLogger.html

Note: The priority for this version was to add the built-in help and to integrate the filtering code.

<br />
&lt;html&gt;<br />
    &lt;head&gt;<br />
        &lt;meta content=&quot;text/html; charset=UTF-8&quot; http-equiv=&quot;Content-Type&quot;&gt;<br />
&lt;!--<br />
ShelveLogger Version 4.3 (for shelve 1.22+)<br />
by silverwav - OpenPGP key:03187548<br />
Originally based on Slogger updated for Shelve.<br />
Thanks to the Shelve Developer for the filter.</p>
<p>+ Added function to check multiple classes.<br />
+ Added Footer.<br />
+ Filter moved to footer.<br />
+ Altered Filter behaviour (need to hit enter or click a button now.)<br />
 - This helps reduce cpu usage and is more &quot;Google like&quot;.<br />
+ Added auto refresh toggle.<br />
+ Added 5 intervals for auto refresh (can be altered via url as well).<br />
+ Added setVisibility function and css.<br />
+ Added Help (default to hidden).<br />
 - Shelve Help<br />
 - Setup<br />
+ Added startup<br />
 - Auto refresh on startup (1min).<br />
 - Filter now focused on startup.<br />
 - JumptoBottom on startup.<br />
 + Added various Filter Help (default to hidden).<br />
  - Desc.<br />
  - Date<br />
  - Regex<br />
 + Increased filter length to 100.<br />
 + Fixed Enter on no text issue.<br />
  - To show all rows its 2x quicker to reload.<br />
  - Handy reload shortcut if you are at the filter bar.<br />
 + Limited keywords to 140 as some sites go OTT.</p>
<p>https://silverwav.wordpress.com/shelvelogger/</p>
<p>http://groups.google.com/group/shelve-firefox-addon/</p>
<p>Use with this template:</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;%Y-%M-%D %h:%m&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;%[tcf]&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;%{clip?}&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [%{hostbasename?}] &lt;/span&gt;<br />
&lt;span class=&quot;sup keyw&quot;&gt;Keywords: %140{keywords?}&lt;/span&gt;<br />
&lt;div class=&quot;sup note&quot;&gt;%{note?}&lt;/div&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;%{url?}&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file://%{outfile?}&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
--&gt;<br />
        &lt;style type=&quot;text/css&quot;&gt;<br />
            body {<br />
			font-size: 10pt;<br />
			font-family: Arial, Helvetica,sans-serif;<br />
            }<br />
            p {<br />
                margin: 0;<br />
            }<br />
            table {<br />
			font-size: 10pt;<br />
				background-color: black;<br />
				margin-top: 1em;<br />
			}<br />
            th {<br />
                padding: 3px 6px 3px 6px;<br />
                background-color: #9acd32;<br />
                text-align: left;<br />
                vertical-align: top;<br />
            }<br />
            tr {<br />
                background-color: white;<br />
            }<br />
            td {<br />
                padding: 3px 6px 3px 6px;<br />
                vertical-align: top;<br />
            }<br />
            td.label {<br />
                background-color: #d5eaa8;<br />
                text-align: right;<br />
            }<br />
            td.description {<br />
                ;<br />
            }<br />
            div.title {<br />
                font-weight: bold;<br />
            }<br />
            pre.sup {<br />
                font-family: serif;<br />
            }<br />
            .sup {<br />
                font-size: 0.9em;<br />
                margin: 0;<br />
            }<br />
            span.checkboxLabel {<br />
                margin-left: 0.4em;<br />
                color: #555555;<br />
            }<br />
            .error {<br />
                font-family: sans-serif;<br />
                margin-left: 0.4em;<br />
                padding: 0.1em 0.4em 0.1em 0.4em;<br />
                display: none;<br />
                background-color: red;<br />
                color: yellow;<br />
                font-weight: bold;<br />
            }<br />
            .controls {<br />
                font-size: 0.8em;<br />
            }<br />
            #controls {<br />
                background-color: white;<br />
            }<br />
            #filter {<br />
                background-color: #f5f5f5;<br />
                border: 1px solid #aaaaaa;<br />
            }<br />
            a.invalidFilter {<br />
                background-color: red;<br />
                color: yellow;<br />
                font-weight: bold;<br />
            }</p>
<p>            p.pagenav {<br />
				text-align:right;<br />
			}</p>
<p>			#refreshControl {<br />
				position: relative;<br />
				left: 55px;<br />
			}</p>
<p>			div.hidden {<br />
			background: lightblue;<br />
			display: none;<br />
			}</p>
<p>        &lt;/style&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;</p>
<p>// +++ Date Time drop in +++</p>
<p>/*<br />
 * Date Format 1.2.3<br />
 * (c) 2007-2009 Steven Levithan &lt;stevenlevithan.com&gt;<br />
 * MIT license<br />
 *<br />
 * Includes enhancements by Scott Trenda &lt;scott.trenda.net&gt;<br />
 * and Kris Kowal &lt;cixar.com/~kris.kowal/&gt;<br />
 *<br />
 * Accepts a date, a mask, or a date and a mask.<br />
 * Returns a formatted version of the given date.<br />
 * The date defaults to the current date/time.<br />
 * The mask defaults to dateFormat.masks.default.<br />
 */</p>
<p>var dateFormat = function () {<br />
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|&quot;[^&quot;]*&quot;|'[^']*'/g,<br />
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,<br />
		timezoneClip = /[^-+\dA-Z]/g,<br />
		pad = function (val, len) {<br />
			val = String(val);<br />
			len = len || 2;<br />
			while (val.length &lt; len) val = &quot;0&quot; + val;<br />
			return val;<br />
		};</p>
<p>	// Regexes and supporting functions are cached through closure<br />
	return function (date, mask, utc) {<br />
		var dF = dateFormat;</p>
<p>		// You can't provide utc if you skip other args (use the &quot;UTC:&quot; mask prefix)<br />
		if (arguments.length == 1 &amp;&amp; Object.prototype.toString.call(date) == &quot;[object String]&quot; &amp;&amp; !/\d/.test(date)) {<br />
			mask = date;<br />
			date = undefined;<br />
		}</p>
<p>		// Passing date through Date applies Date.parse, if necessary<br />
		date = date ? new Date(date) : new Date;<br />
		if (isNaN(date)) throw SyntaxError(&quot;invalid date&quot;);</p>
<p>		mask = String(dF.masks[mask] || mask || dF.masks[&quot;default&quot;]);</p>
<p>		// Allow setting the utc argument via the mask<br />
		if (mask.slice(0, 4) == &quot;UTC:&quot;) {<br />
			mask = mask.slice(4);<br />
			utc = true;<br />
		}</p>
<p>		var	_ = utc ? &quot;getUTC&quot; : &quot;get&quot;,<br />
			d = date[_ + &quot;Date&quot;](),<br />
			D = date[_ + &quot;Day&quot;](),<br />
			m = date[_ + &quot;Month&quot;](),<br />
			y = date[_ + &quot;FullYear&quot;](),<br />
			H = date[_ + &quot;Hours&quot;](),<br />
			M = date[_ + &quot;Minutes&quot;](),<br />
			s = date[_ + &quot;Seconds&quot;](),<br />
			L = date[_ + &quot;Milliseconds&quot;](),<br />
			o = utc ? 0 : date.getTimezoneOffset(),<br />
			flags = {<br />
				d:    d,<br />
				dd:   pad(d),<br />
				ddd:  dF.i18n.dayNames[D],<br />
				dddd: dF.i18n.dayNames[D + 7],<br />
				m:    m + 1,<br />
				mm:   pad(m + 1),<br />
				mmm:  dF.i18n.monthNames[m],<br />
				mmmm: dF.i18n.monthNames[m + 12],<br />
				yy:   String(y).slice(2),<br />
				yyyy: y,<br />
				h:    H % 12 || 12,<br />
				hh:   pad(H % 12 || 12),<br />
				H:    H,<br />
				HH:   pad(H),<br />
				M:    M,<br />
				MM:   pad(M),<br />
				s:    s,<br />
				ss:   pad(s),<br />
				l:    pad(L, 3),<br />
				L:    pad(L &gt; 99 ? Math.round(L / 10) : L),<br />
				t:    H &lt; 12 ? &quot;a&quot;  : &quot;p&quot;,<br />
				tt:   H &lt; 12 ? &quot;am&quot; : &quot;pm&quot;,<br />
				T:    H &lt; 12 ? &quot;A&quot;  : &quot;P&quot;,<br />
				TT:   H &lt; 12 ? &quot;AM&quot; : &quot;PM&quot;,<br />
				Z:    utc ? &quot;UTC&quot; : (String(date).match(timezone) || [&quot;&quot;]).pop().replace(timezoneClip, &quot;&quot;),<br />
				o:    (o &gt; 0 ? &quot;-&quot; : &quot;+&quot;) + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),<br />
				S:    [&quot;th&quot;, &quot;st&quot;, &quot;nd&quot;, &quot;rd&quot;][d % 10 &gt; 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]<br />
			};</p>
<p>		return mask.replace(token, function ($0) {<br />
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);<br />
		});<br />
	};<br />
}();</p>
<p>// Some common format strings<br />
dateFormat.masks = {<br />
	&quot;default&quot;:      &quot;ddd mmm dd yyyy HH:MM:ss&quot;,<br />
	shortDate:      &quot;m/d/yy&quot;,<br />
	mediumDate:     &quot;mmm d, yyyy&quot;,<br />
	longDate:       &quot;mmmm d, yyyy&quot;,<br />
	fullDate:       &quot;dddd, mmmm d, yyyy&quot;,<br />
	shortTime:      &quot;h:MM TT&quot;,<br />
	mediumTime:     &quot;h:MM:ss TT&quot;,<br />
	longTime:       &quot;h:MM:ss TT Z&quot;,<br />
	isoDate:        &quot;yyyy-mm-dd&quot;,<br />
	isoTime:        &quot;HH:MM:ss&quot;,<br />
	isoDateTime:    &quot;yyyy-mm-dd'T'HH:MM:ss&quot;,<br />
	isoUtcDateTime: &quot;UTC:yyyy-mm-dd'T'HH:MM:ss'Z'&quot;<br />
};</p>
<p>// Internationalization strings<br />
dateFormat.i18n = {<br />
	dayNames: [<br />
		&quot;Sun&quot;, &quot;Mon&quot;, &quot;Tue&quot;, &quot;Wed&quot;, &quot;Thu&quot;, &quot;Fri&quot;, &quot;Sat&quot;,<br />
		&quot;Sunday&quot;, &quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;, &quot;Thursday&quot;, &quot;Friday&quot;, &quot;Saturday&quot;<br />
	],<br />
	monthNames: [<br />
		&quot;Jan&quot;, &quot;Feb&quot;, &quot;Mar&quot;, &quot;Apr&quot;, &quot;May&quot;, &quot;Jun&quot;, &quot;Jul&quot;, &quot;Aug&quot;, &quot;Sep&quot;, &quot;Oct&quot;, &quot;Nov&quot;, &quot;Dec&quot;,<br />
		&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;, &quot;August&quot;, &quot;September&quot;, &quot;October&quot;, &quot;November&quot;, &quot;December&quot;<br />
	]<br />
};</p>
<p>// For convenience...<br />
Date.prototype.format = function (mask, utc) {<br />
	return dateFormat(this, mask, utc);<br />
};<br />
// ___ Date Time drop in</p>
<p>// +++ Utilities +++<br />
function isNumber(n) {<br />
  return !isNaN(parseFloat(n)) &amp;&amp; isFinite(n);<br />
}</p>
<p>function cntClass(eClassName,NameToCheck) {<br />
	if (eClassName != null) {<br />
		if (eClassName.search(NameToCheck) != -1) {<br />
		return true;<br />
		}<br />
	else {<br />
		return false;<br />
		}<br />
	}<br />
}</p>
<p> function JumptoTop() {<br />
	    setRefreshOff();<br />
    	window.scrollTo(0,1);</p>
<p>}</p>
<p>function JumptoBottom() {<br />
    	window.scrollBy(0,99999999999);<br />
}</p>
<p>function setFocus(id) {<br />
	var mytext = document.getElementById(id);<br />
	mytext.focus();<br />
}<br />
// ___ Utilities</p>
<p>// +++ Footer +++<br />
function setAnchorCounts() {<br />
	  var CountTR = 0<br />
	  var CountClip = 0<br />
	  var Nonclip = 0<br />
	  var DisplyText = &quot;&quot;</p>
<p>	  CountTR = getElementsCountTR()<br />
	  CountClip = getElementsCountClip()<br />
	  Nonclip = CountTR - CountClip<br />
	  DisplyText = &quot;Total Rows &quot; + (CountTR - 5) + &quot; (Clips &quot; + CountClip + &quot;, Default &quot; + (Nonclip - 5) + &quot;).&quot;<br />
	  document.getElementById('AnchorCountsText').innerHTML= DisplyText;<br />
}</p>
<p>function getElementsCountTR() {<br />
	  var x=document.getElementsByTagName(&quot;tr&quot;);<br />
	  //alert(x.length);<br />
	  return (x.length);<br />
}</p>
<p>function getElementsCountClip() {<br />
	  var trs = document.getElementsByTagName(&quot;DIV&quot;);<br />
	  var supTotal = 0</p>
<p>	  for (var i = 0; i &lt; trs.length; i++) {<br />
		if (trs[i].className.indexOf(&quot;clip&quot;) &gt;= 0) {<br />
		var supTotal = supTotal + 1;}<br />
	  }<br />
	  return (supTotal);<br />
}</p>
<p>function setAnchorTimeDateText()<br />
{<br />
	var now = new Date();<br />
	var fnow = now.format(&quot;yyyy-mm-dd HH:MM&quot;);</p>
<p>	DisplyText = fnow<br />
	document.getElementById('AnchorTimeDateText').innerHTML= DisplyText;<br />
}</p>
<p>function setAnchorLocalText() {<br />
	DisplyText = &quot;url&amp;nbsp;local&quot;<br />
	document.getElementById('AnchorLocalText').innerHTML= DisplyText;<br />
}<br />
// ___ Footer</p>
<p>// +++ Refresh +++<br />
var refreshIntervalId = 0;</p>
<p>function refreshClickHandler () {<br />
	var numSec = 0<br />
	var numMilSec = 0<br />
	numSec = getPrefSec()<br />
	numMilSec = numSec * 1000<br />
	if (document.getElementById(&quot;autoRefreshButton&quot;).value == &quot;Switch Refresh On&quot;)<br />
	{<br />
		// Start the timer<br />
		document.getElementById(&quot;autoRefreshButton&quot;).value = &quot;Switch Refresh Off&quot;;<br />
			refreshIntervalId = setInterval ( &quot;autoRefresh()&quot;, numMilSec );<br />
	}<br />
	else<br />
	{<br />
		setRefreshOff()<br />
	}<br />
}</p>
<p>function autoRefresh() {<br />
	window.location.reload()<br />
}</p>
<p>function setRefreshOff() {<br />
		document.getElementById(&quot;autoRefreshButton&quot;).value = &quot;Switch Refresh On&quot;;<br />
		clearInterval ( refreshIntervalId );<br />
}</p>
<p>function reload() {<br />
	window.location.reload()<br />
}</p>
<p>function setPrefSec(numSec) {<br />
	var temp = location.href;<br />
	var basehref = new Array();<br />
	basehref = temp.split('?pref_sec');<br />
	location.replace(basehref[0] + '?pref_sec' + numSec);<br />
}</p>
<p>function getPrefSec() {<br />
	var temp = location.href;<br />
	var basehref = new Array();<br />
	basehref[1] = 60<br />
	if (location.href.indexOf('pref_sec')!=-1) {<br />
		basehref = temp.split('?pref_sec');<br />
	}</p>
<p>	if (isNumber(basehref[1]) == false)  {<br />
	basehref[1] = 60<br />
	}<br />
	if (basehref[1] &lt; 9) {<br />
		basehref[1] = 60<br />
	}<br />
	return basehref[1]<br />
}<br />
// ___ Refresh</p>
<p>// +++ Start +++<br />
function startup() {<br />
	setAnchorCounts();<br />
	setAnchorTimeDateText();<br />
	refreshClickHandler();<br />
	JumptoBottom();<br />
	setFocus(&quot;filter&quot;);<br />
}<br />
// ___ Start</p>
<p>// +++ Set Visibility +++<br />
function setVisibility(id) {<br />
	// div.hidden {background: lightblue;display: none};<br />
	var state = document.getElementById(id).style.display;<br />
		if (state == 'block') {<br />
			document.getElementById(id).style.display = 'none';<br />
		} else {<br />
			document.getElementById(id).style.display = 'block';<br />
		}<br />
	setRefreshOff();<br />
	}</p>
<p>// +++ Toggle Details +++<br />
function setSupDataVisibility(controlID) {<br />
    var value = document.getElementById(controlID).checked;<br />
    var display = value ? &quot;block&quot; : &quot;none&quot;;<br />
    setEltsSupDataVisibility(display, document.getElementsByTagName(&quot;div&quot;));<br />
    setEltsSupDataVisibility(display, document.getElementsByTagName(&quot;span&quot;));<br />
    setAnchorLocalText()<br />
}</p>
<p>function setEltsSupDataVisibility(display, elts) {<br />
    for (var idx = 0; idx &lt; elts.length; idx++) {<br />
        var e = elts[idx];<br />
        if (cntClass(e.className,&quot;sup&quot;) == true) {<br />
            e.style.display = display;<br />
        }<br />
    }<br />
}<br />
// ___ Toggle Details</p>
<p>// +++ Filter +++<br />
function filterRows(id) {<br />
    var value = document.getElementById(id).value;<br />
    if (value.length &lt; 1 ) {<br />
        reload();<br />
        return;<br />
    }<br />
    var rx = new RegExp(value, 'i');<br />
    var matchDate = document.getElementById('filterMatchDate').checked;<br />
    var matchDesc = document.getElementById('filterMatchDesc').checked;<br />
    var matchUrl = document.getElementById('filterMatchUrl').checked;<br />
    var matchLocal = document.getElementById('filterMatchLocal').checked;<br />
    var trs = document.getElementsByTagName(&quot;tr&quot;);<br />
    var invalidFilter = document.getElementById(&quot;invalidFilter&quot;);<br />
    if (invalidFilter.style.display != &quot;none&quot;) {<br />
        invalidFilter.style.display = &quot;none&quot;;<br />
    }<br />
    for (var tri = 0; tri &lt; trs.length; tri++) {<br />
        var tr = trs[tri];<br />
        var setDisplay = false;<br />
        var display = &quot;none&quot;;<br />
        var tds = tr.childNodes;<br />
SetDisplay:<br />
        for (var tdi = 0; tdi &lt; tds.length; tdi++) {<br />
            var td = tds[tdi];<br />
            if ((matchDesc &amp;&amp; cntClass(td.className,&quot;description&quot;) == true) ||<br />
            (matchDate &amp;&amp; cntClass(td.className,&quot;date&quot;) == true) ||<br />
            ((matchLocal || matchUrl) &amp;&amp; cntClass(td.className,&quot;links&quot;) == true)) {<br />
                var elts = td.childNodes;<br />
                for (var elti = 0; elti &lt; elts.length; elti++) {<br />
                    var elt = elts[elti];<br />
                    var text = null;<br />
                    if (cntClass(elt.className,&quot;title&quot;) == true || cntClass(elt.className,&quot;sup&quot;) == true) {<br />
                        text = elt.innerHTML;<br />
                    } else if (elt.nodeName == &quot;A&quot;) {<br />
                        if ((matchUrl &amp;&amp; cntClass(elt.className,'url') == true) || (matchLocal &amp;&amp; cntClass(elt.className,'local') == true)) {<br />
                            text = elt.href;<br />
                        }<br />
                    } else if (elts.length == 1 &amp;&amp; elt.nodeName == &quot;#text&quot;) {<br />
                        text = elt.data;<br />
                    }<br />
                    if (text != null) {<br />
                        setDisplay = true;<br />
                        try {<br />
                            if (text.match(rx)) {<br />
                                display = &quot;&quot;;<br />
                                break SetDisplay;<br />
                            }<br />
                        } catch (e) {<br />
                            invalidFilter.style.display = &quot;inline&quot;;<br />
                            return;<br />
                        }<br />
                    }<br />
                }<br />
            }<br />
        }<br />
        if (setDisplay &amp;&amp; tr.style.display != display) {<br />
            tr.style.display = display;<br />
        }<br />
    }<br />
}<br />
// ~~~ Filter</p>
<p>&lt;/script&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body onLoad=&quot;startup()&quot;&gt;<br />
    &lt;h2&gt;ShelveLogger 4.3&lt;/h2&gt;<br />
	&lt;strong&gt;ShelveLogger is a Log for the Firefox Add-on Shelve.&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;<br />
	Save a web page to disk and add its details to a log file from which you can reopen it at any time.<br />
	&lt;ul&gt;<br />
		&lt;li&gt;Date, Title and Keywords are saved by default.&lt;/li&gt;<br />
		&lt;li&gt;Clip (any selected text is added to the log).&lt;/li&gt;<br />
		&lt;li&gt;A link is created to your saved copy (local) and to the web (url).&lt;/li&gt;<br />
		&lt;li&gt;Lightning fast Filtering.&lt;/li&gt;<br />
	&lt;/ul&gt;<br />
	&lt;p&gt;Get ShelveLogger.html &lt;a href=&quot;https://silverwav.wordpress.com/tag/version/&quot;&gt;here&lt;/a&gt;<br />
	 and Shelve &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addons/versions/8282&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
	&lt;h3&gt;ShelveLogger Usage&lt;/h3&gt;<br />
	&lt;p&gt;Add the Shelve Button to the Firefox Toolbar.&lt;br/&gt;<br />
	Use this button (or F9) to save a page via a popupbox or hit (F8) to do it automatically.&lt;br/&gt;<br />
	Bookmark ShelveLogger.html for ease of use.&lt;br/&gt;&lt;/p&gt;</p>
<p>	&lt;br/&gt;<br />
	&lt;p&gt;&lt;a href=&quot;javascript:setVisibility('Setup')&quot;&gt;Setup&lt;/a&gt;&lt;p/&gt;<br />
	&lt;div  id=&quot;Setup&quot; class=&quot;hidden&quot;&gt;<br />
		&lt;h3&gt;ShelveLogger Setup&lt;/h3&gt;<br />
		&lt;p&gt;&lt;b&gt;(This takes about 5 minutes as it is mainly cutting and pasting).&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;<br />
		&lt;p&gt;&lt;b&gt;1. Install &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addons/versions/8282&quot;&gt;Shelve&lt;/a&gt; (1.22+) and &lt;a href=&quot;https://silverwav.wordpress.com/tag/version/&quot;&gt;ShelveLogger&lt;/a&gt;.&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;<br />
		&lt;p&gt;&lt;b&gt;2. Create Folders&lt;/b&gt;&lt;/p&gt;<br />
		&lt;p&gt;/home/[user]/data/Shelve/saved (Linux)&lt;br/&gt;<br />
		c:\data\Shelve\saved (windows)&lt;/p&gt;&lt;br/&gt;<br />
		&lt;p&gt;&lt;b&gt;3. Create a Shelve for ShelveLogger&lt;/b&gt;&lt;/p&gt;<br />
		&lt;p&gt;Tools &gt; Addons (resize the Add-ons Dialogue Box so you can still see the help).&lt;br/&gt;<br />
		Extensions &gt; Shelve &gt; preferences (popup &quot;Shelve Preferences&quot;)&lt;br/&gt;<br />
		On the tab &quot;Shelves&quot; &gt; Click &quot;New&quot; (popup &quot;Shelve: Edit Shelf&quot;)&lt;br/&gt;<br />
		&lt;br/&gt;<br />
		&lt;b&gt;On the tab &quot;Shelf&quot;&lt;/b&gt; enter the following:&lt;br/&gt;<br />
		&lt;u&gt;Name&lt;/u&gt;:&lt;br/&gt;<br />
		ShelveLogger&lt;br/&gt;<br />
		&lt;br/&gt;<br />
		&lt;u&gt;Filename Template&lt;/u&gt;:&lt;br/&gt;<br />
		/home/%{$USER}/data/Shelve/saved/%Y/%Y-%M-%D/%B/%Y-%M-%D_%h-%m-%s-%l.html (Linux)&lt;br/&gt;<br />
		c:\data\Shelve\saved\%Y\%Y-%M-%D\%B\%Y-%M-%D_%h-%m-%s-%l.html (windows)&lt;br/&gt;<br />
		&lt;br/&gt;<br />
		&lt;u&gt;MIME&lt;/u&gt;:&lt;br/&gt;<br />
		Web page, complete&lt;br/&gt;<br />
		&lt;br/&gt;<br />
		&lt;u&gt;Hotkey&lt;/u&gt;:&lt;br/&gt;<br />
		F8&lt;br/&gt;<br />
		&lt;br/&gt;<br />
		&lt;b&gt;On the tab &quot;Log&quot;&lt;/b&gt; enter the following:&lt;br/&gt;<br />
		&lt;u&gt;Log file&lt;/u&gt;:&lt;br/&gt;<br />
		/home/%{$USER}/data/Shelve/ShelveLogger.html (Linux)&lt;br/&gt;<br />
		c:\data\Shelve\ShelveLogger.html (windows)&lt;br/&gt;&lt;/p&gt;<br />
		&lt;br/&gt;<br />
		&lt;p&gt;&lt;u&gt;Template&lt;/u&gt;:&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;td class=&amp;quot;date&amp;quot; nowrap=&amp;quot;nowrap&amp;quot;&amp;gt;%Y-%M-%D %h:%m&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;td class=&amp;quot;description&amp;quot;&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;%[tcf]&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;div class=&amp;quot;sup clip&amp;quot;&amp;gt;%{clip?}&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;span class=&amp;quot;sup host&amp;quot;&amp;gt; [%{hostbasename?}] &amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;span class=&amp;quot;sup keyw&amp;quot;&amp;gt;Keywords: %140{keywords?}&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;div class=&amp;quot;sup note&amp;quot;&amp;gt;%{note?}&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;td class=&amp;quot;links&amp;quot;&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;a class=&amp;quot;url&amp;quot; href=&amp;quot;%{url?}&amp;quot;&amp;gt;url&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;a class=&amp;quot;local&amp;quot; href=&amp;quot;file://%{outfile?}&amp;quot;&amp;gt;local&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
			&lt;span&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br/&gt;<br />
		&lt;/p&gt;&lt;br/&gt;<br />
		&lt;p&gt;&lt;b&gt;4. Move ShelveLogger.html:&lt;/b&gt;&lt;/p&gt;<br />
		&lt;p&gt;/home/%{$USER}/data/Shelve/ShelveLogger.html (Linux)&lt;br/&gt;<br />
		c:\data\Shelve\ShelveLogger.html (windows)&lt;br/&gt;&lt;/p&gt;&lt;br&gt;<br />
		&lt;p&gt;&lt;b&gt;Setup Complete!&lt;/b&gt;&lt;/p&gt;<br />
	&lt;/div&gt;<br />
	&lt;br/&gt;<br />
	&lt;p&gt;&lt;a href=&quot;javascript:setVisibility('Help')&quot;&gt;Help&lt;/a&gt;&lt;/p&gt;<br />
	&lt;div  id=&quot;Help&quot; class=&quot;hidden&quot;&gt;<br />
		&lt;h3&gt;Shelve Help&lt;/h3&gt;<br />
	    &lt;p&gt;&lt;a href=&quot;http://shelve.sourceforge.net/&quot;&gt;Homepage&lt;/a&gt;&lt;/p&gt;<br />
	    &lt;p&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addons/versions/8282&quot;&gt;Latest Version&lt;/a&gt;&lt;/p&gt;<br />
		&lt;p&gt;If you have any Shelve related issues report them &lt;a href=&quot;http://groups.google.com/group/shelve-firefox-addon&quot;&gt;here&lt;/a&gt;.&lt;p&gt;<br />
	    &lt;h3&gt;ShelveLogger Help&lt;/h3&gt;<br />
	    &lt;p&gt;&lt;a href=&quot;https://silverwav.wordpress.com/shelvelogger/&quot;&gt;Homepage&lt;/a&gt;&lt;p&gt;<br />
	    &lt;p&gt;&lt;a href=&quot;https://silverwav.wordpress.com/tag/version/&quot;&gt;Latest Version&lt;/a&gt;&lt;/p&gt;<br />
		&lt;p&gt;If you have any ShelveLogger.html related issues report them &lt;a href=&quot;https://silverwav.wordpress.com/shelvelogger/shelvelogger-support/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
		&lt;br/&gt;<br />
	&lt;/div&gt;<br />
	&lt;br/&gt;<br />
    &lt;p&gt;&lt;a href=&quot;javascript:JumptoBottom()&quot;&gt;Jump to bottom&lt;/a&gt;&lt;/p&gt;<br />
    &lt;table cellspacing=&quot;1&quot;&gt;<br />
        &lt;thead&gt;<br />
            &lt;tr&gt;<br />
                &lt;th&gt;Date/Time&lt;/th&gt;<br />
                &lt;th&gt;<br />
                    Description &lt;span class=&quot;controls&quot;<br />
                        onclick=&quot;setSupDataVisibility('checkSupDataVisibility1')&quot;&gt;(&lt;input id=&quot;checkSupDataVisibility1&quot; checked=&quot;true&quot; type=&quot;checkbox&quot; accesskey=&quot;S&quot;&gt;&lt;span class=&quot;checkboxlabel&quot;&gt;&lt;u&gt;S&lt;/u&gt;how details&lt;/span&gt;)&lt;/span&gt;<br />
                &lt;/th&gt;<br />
                &lt;th&gt;Links&lt;/th&gt;<br />
            &lt;/tr&gt;<br />
        &lt;/thead&gt;</p>
<p>        &lt;tfoot&gt;<br />
			&lt;tr&gt;<br />
				&lt;td colspan=&quot;1&quot;&gt;&lt;a id=&quot;AnchorTimeDateText&quot; &gt;New...&lt;/a&gt;&lt;/td&gt;<br />
				&lt;td colspan=&quot;1&quot;&gt;&amp;nbsp;&lt;/td&gt;<br />
				&lt;td colspan=&quot;1&quot;&gt;&lt;a id=&quot;AnchorLocalText&quot; &gt;&lt;/a&gt;&lt;/td&gt;<br />
			&lt;/tr&gt;<br />
			&lt;tr&gt;<br />
                &lt;th&gt;Date/Time&lt;/th&gt;<br />
                &lt;th&gt;<br />
                    Description &lt;span class=&quot;controls&quot;<br />
                        onclick=&quot;setSupDataVisibility('checkSupDataVisibility2'); JumptoBottom()&quot;&gt;(&lt;input id=&quot;checkSupDataVisibility2&quot; checked=&quot;true&quot; type=&quot;checkbox&quot; accesskey=&quot;S&quot;&gt;<br />
                        &lt;span class=&quot;checkboxlabel&quot;&gt;&lt;u&gt;S&lt;/u&gt;how details&lt;/span&gt;)&lt;/span&gt;<br />
                &lt;/th&gt;<br />
                &lt;th&gt;Links&lt;/th&gt;<br />
            &lt;/tr&gt;<br />
            &lt;tr&gt;<br />
				&lt;td colspan=&quot;3&quot;&gt;<br />
					&lt;p class=&quot;pagenav&quot;&gt;&lt;a href=&quot;javascript:JumptoTop()&quot;&gt;Jump to top&lt;/a&gt;&lt;/p&gt;<br />
					&lt;p&gt;&lt;h2&gt;ShelveLogger 4.3&lt;/h2&gt;&lt;/p&gt;	</p>
<p>		&lt;table id=&quot;controls&quot;&gt;<br />
			&lt;tr&gt;<br />
				&lt;td&gt;&lt;u&gt;F&lt;/u&gt;ilter:&lt;/td&gt;<br />
				&lt;td&gt;<br />
				&lt;p&gt;<br />
					&lt;input class=&quot;controls&quot; accesskey=&quot;F&quot; id=&quot;filter&quot; name=&quot;filter&quot; type=&quot;text&quot; size=&quot;60&quot; maxlength=&quot;100&quot; onkeydown=&quot;if (event.keyCode == 13) document.getElementById('setFilter').click()&quot;&gt;<br />
					&lt;input type=&quot;button&quot; id=&quot;setFilter&quot; value=&quot;Filter&quot; onclick=&quot;setRefreshOff(); filterRows('filter'); JumptoBottom()&quot;/&gt;<br />
					&lt;input type=&quot;button&quot; id=&quot;ReloadButton&quot; value=&quot;Reload&quot; onclick=&quot;reload()&quot; /&gt;<br />
					&lt;span&gt;&lt;a href=&quot;javascript:setVisibility('HelpDesc'); JumptoBottom()&quot;&gt;Desc&lt;/a&gt;&lt;/span&gt;<br />
					&lt;span&gt;&lt;a href=&quot;javascript:setVisibility('HelpDates'); JumptoBottom()&quot;&gt;Dates&lt;/a&gt;&lt;/span&gt;<br />
					&lt;span&gt;&lt;a href=&quot;javascript:setVisibility('HelpRegex'); JumptoBottom()&quot;&gt;Regex&lt;/a&gt;&lt;/span&gt;<br />
					&lt;span id=&quot;invalidFilter&quot; class=&quot;error&quot;&gt;<br />
						&lt;a class=&quot;invalidFilter&quot; href=&quot;https://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Regular_Expressions&quot;&gt;Invalid regular expression&lt;/a&gt;<br />
					&lt;/span&gt;<br />
				&lt;/p&gt;<br />
				&lt;p&gt;<br />
					&lt;input onclick=&quot;scheduleFilter('filter')&quot; id=&quot;filterMatchDesc&quot; checked=&quot;true&quot; type=&quot;checkbox&quot;&gt;&lt;span class=&quot;checkboxlabel&quot;&gt;Desc&lt;/span&gt;<br />
					&lt;input onclick=&quot;scheduleFilter('filter')&quot; id=&quot;filterMatchDate&quot; type=&quot;checkbox&quot;&gt;&lt;span class=&quot;checkboxlabel&quot;&gt;Date&lt;/span&gt;<br />
					&lt;input onclick=&quot;scheduleFilter('filter')&quot; id=&quot;filterMatchUrl&quot; type=&quot;checkbox&quot;&gt;&lt;span class=&quot;checkboxlabel&quot;&gt;URL&lt;/span&gt;<br />
					&lt;input onclick=&quot;scheduleFilter('filter')&quot; id=&quot;filterMatchLocal&quot; type=&quot;checkbox&quot;&gt;&lt;span class=&quot;checkboxlabel&quot;&gt;Local filename&lt;/span&gt;<br />
				&lt;/p&gt;<br />
				&lt;/td&gt;<br />
			&lt;/tr&gt;<br />
		&lt;/table&gt;</p>
<p>			&lt;div id=&quot;HelpDesc&quot; class=&quot;hidden&quot;&gt;<br />
				&lt;h3&gt;Description&lt;/h3&gt;<br />
				&lt;p&gt;&lt;u&gt;Ensure Desc is ticked.&lt;/u&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				one or two.&lt;br/&gt;<br />
				&lt;b&gt;word1|word2&lt;/b&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				one and two.&lt;br/&gt;<br />
				&lt;b&gt;(?=.*?\bWord1\b)(?=.*?\bWord2\b)&lt;/b&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				Find two words near each other, allow 10 words between them.&lt;br/&gt;<br />
				&lt;b&gt;\b(?:word1\W+(?:\w+\W+){0,10}?word2|word2\W+(?:\w+\W+){0,10}?word1)\b&lt;/b&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;p/&gt;<br />
			&lt;/div&gt;</p>
<p>			&lt;div id=&quot;HelpDates&quot; class=&quot;hidden&quot;&gt;<br />
				&lt;h3&gt;Dates&lt;/h3&gt;<br />
				&lt;p&gt;&lt;u&gt;Ensure Date is ticked.&lt;/u&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;2010-02&lt;/b&gt;&lt;br/&gt;<br />
				Returns all rows saved on February 2010.&lt;br/&gt;<br />
				e.g. 2010-02-28, 2010-02-27 etc.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;-02&lt;/b&gt;&lt;br/&gt;<br />
				Returns all rows saved on February in any year.&lt;br/&gt;<br />
				e.g. 2010-02-28, 2010-02-27, 2004-02-01, 2011-02-09 etc.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;19:&lt;/b&gt;&lt;br/&gt;<br />
				Returns rows saved at 7pm on any day.&lt;br/&gt;<br />
				e.g. 19:23, 19:40 19:00 etc.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;28&amp;nbsp;&lt;/b&gt;&lt;br/&gt;<br />
				(Note: Thats 28 followed by a space).&lt;br/&gt;<br />
				Returns all rows saved on the 28th of any month in any year.&lt;br/&gt;<br />
				e.g. 2009-10-28 23:45, 2010-06-28 18:16, 2005-01-28 06:20 etc.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;2009-...28&lt;/b&gt;&lt;br/&gt;<br />
				(Note: This works as &quot;.&quot; stand for any 1 character).&lt;br/&gt;<br />
				Returns all rows saved on the 28th of any month in 2009.&lt;br/&gt;<br />
				e.g. 2009-10-28, 2009-07-28, 2009-03-28 etc.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;br/&gt;<br />
			&lt;/div&gt;		</p>
<p>			&lt;div id=&quot;HelpRegex&quot; class=&quot;hidden&quot;&gt;<br />
				&lt;h3&gt;Regex&lt;/h3&gt;<br />
				&lt;u&gt;Dot And Star Use.&lt;/u&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;bbc firefox&lt;/b&gt;&lt;br/&gt;<br />
				Returns a result if the two words are separated by a space.&lt;br/&gt;<br />
				&lt;b&gt;bbc.firefox&lt;/b&gt;&lt;br/&gt;<br />
				Returns a result if the two words are separated by any one character.&lt;br/&gt;<br />
				&lt;b&gt;bbc.*firefox&lt;/b&gt;&lt;br/&gt;<br />
				Returns a result if the two words are separated by any number of characters.&lt;br/&gt;<br />
				Returns no result if the target is &quot;firefox bbc&quot;.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;u&gt;Alternative Use.&lt;/u&gt;&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;b&gt;bbc.*firefox|firefox.*bbc&lt;/b&gt; &lt;br/&gt;<br />
				Using | we can check for both posible word orders.&lt;br/&gt;<br />
				Returns a result if the target is &quot;firefox bbc&quot;, &quot;bbc firefox&quot;, &quot;firefox browser bbc&quot; or &quot;bbc news firefox&quot;.&lt;br/&gt;<br />
				&lt;br/&gt;<br />
				&lt;p&gt; - Tip: To show all rows, use the reload button.&lt;p&gt;<br />
				&lt;p&gt; - Tip: reWork is an online regular expression workbench see &lt;a href=&quot;http://osteele.com/tools/rework/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
				&lt;p&gt; - Tip: Regular-Expressions.info is a great resource see &lt;a href=&quot;http://www.regular-expressions.info&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
				&lt;p&gt; - Tip: A guide by Mozilla on using Regular Expressions see &lt;a href=&quot;https://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Regular_Expressions&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
				&lt;br/&gt;<br />
			&lt;/div&gt;	</p>
<p>				&lt;br/&gt;<br />
				&lt;span id=&quot;refreshControl&quot;&gt;<br />
					&lt;span&gt;<br />
						&lt;input type=&quot;button&quot; id=&quot;autoRefreshButton&quot; value=&quot;Switch Refresh On&quot; onclick=&quot;refreshClickHandler()&quot;/&gt;<br />
						&amp;nbsp;Refresh every:<br />
						&lt;input type=&quot;button&quot; id=&quot;setPrefSecButton1&quot; value=&quot;30s&quot; onclick=&quot;setPrefSec(30)&quot;/&gt;<br />
						&lt;input type=&quot;button&quot; id=&quot;setPrefSecButton1&quot; value=&quot;M&quot; onclick=&quot;setPrefSec(60)&quot;/&gt;<br />
						&lt;input type=&quot;button&quot; id=&quot;setPrefSecButton2&quot; value=&quot;5m&quot; onclick=&quot;setPrefSec(300)&quot;/&gt;<br />
						&lt;input type=&quot;button&quot; id=&quot;setPrefSecButton3&quot; value=&quot;10m&quot; onclick=&quot;setPrefSec(600)&quot;/&gt;<br />
						&lt;input type=&quot;button&quot; id=&quot;setPrefSecButton3&quot; value=&quot;H&quot; onclick=&quot;setPrefSec(3600)&quot;/&gt;<br />
					&lt;/span&gt;<br />
				&lt;/span&gt;<br />
				&lt;p class=&quot;pagenav&quot;&gt;&lt;a id=&quot;AnchorCountsText&quot; &gt;Count&lt;/a&gt;&lt;/p&gt;<br />
			&lt;/tr&gt;<br />
		&lt;/tfoot&gt;<br />
        &lt;tbody&gt;<br />
&lt;!-- -----8&lt;---------------- Log starts here -----8&lt;---------------- --&gt;</p>
<p>

______________________________

Next is the example table data:

</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 13:34&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;ShelveLogger.html - Homepage&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;ShelveLogger is a Log for the Firefox Add-on Shelve. :: Save a web page to disk and add its details to a log file from which you can reopen it at any time.    * Date, Title and Keywords are saved by default.    * Clip (any selected text is added to the log).    * A link is created to your saved copy (local) and to the web (url).    * Lightning fast Filtering.<br />
&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [silverwav.wordpress.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://silverwav.wordpress.com/shelvelogger/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/silverwav.wordpress.com/2010-03-14_13-34-53-949.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 14:17&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;ShelveLogger.html - Latest Version&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;The latest version of ShelveLogger.html will always be available here.&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [silverwav.wordpress.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://silverwav.wordpress.com/tag/version/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/silverwav.wordpress.com/2010-03-14_14-17-12-764.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 15:39&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;ShelveLogger.html - Support&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;If you have any ShelveLogger.html related issues report them here.&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [silverwav.wordpress.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://silverwav.wordpress.com/shelvelogger/shelvelogger-support/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/silverwav.wordpress.com/2010-03-14_15-39-26-913.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 15:41&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;SilverWav's Journal&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;A Web Presence for SilverWave. This site is part of an ongoing project to create a permanent web presence for my articles. Everything looks to be off to a flying start with this beautiful theme and a very professional publishing tool in WordPress. As well as technical articles there will be opinion pieces and comment on the latest news. To simplify my life I am going to host all my ShelveLogger.html code here as well.&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [silverwav.wordpress.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://silverwav.wordpress.com/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/silverwav.wordpress.com/2010-03-14_15-41-09-701.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 15:45&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Shelve Install - Add-ons for Firefox&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;Shelve Version 1.22+&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [addons.mozilla.org] &lt;/span&gt;<br />
&lt;span class=&quot;sup keyw&quot;&gt;Keywords: add-ons,addons,extensions,themes,firefox,thunderbird,sunbird,seamonkey,fennec,plugins,customization,mozilla,browser&lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addons/versions/8282&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/addons.mozilla.org/2010-03-14_15-45-18-357.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 16:25&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Shelve Homepage&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;Configuration, Usage and Demo.&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [shelve.sourceforge.net] &lt;/span&gt;<br />
&lt;span class=&quot;sup keyw&quot;&gt;Keywords: firefox, extension, download, archive, utility&lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://shelve.sourceforge.net/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/shelve.sourceforge.net/2010-03-14_16-25-12-986.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 16:47&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Shelve Support Group&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;This is the support group for users of the shelve firefox add-on.&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [groups.google.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://groups.google.com/group/shelve-firefox-addon&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/groups.google.com/2010-03-14_16-47-22-326.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 16:50&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Shelve Source Code&lt;/div&gt;<br />
&lt;div class=&quot;sup clip&quot;&gt;The source code is available here. tomtom's shelve - GitHub&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [github.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://github.com/tomtom/shelve/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/github.com/2010-03-14_16-50-38-653.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:33&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;SilverWav (silverwaav) on Twitter&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [twitter.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://twitter.com/silverwaav&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/twitter.com/2010-03-14_17-33-12-916.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:35&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;silverwavs Music Profile at Last.fm&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [last.fm] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://www.last.fm/user/silverwav&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/last.fm/2010-03-14_17-35-45-213.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:37&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Silverwav's Collections - Add-ons for Firefox&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [addons.mozilla.org] &lt;/span&gt;<br />
&lt;span class=&quot;sup keyw&quot;&gt;Keywords: add-ons,addons,extensions,themes,firefox,thunderbird,sunbird,seamonkey,fennec,plugins,customization,mozilla,browser&lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/search?q=silverwav&amp;cat=collections&amp;appid=1&amp;pp=5&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/addons.mozilla.org/2010-03-14_17-37-17-356.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:38&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [regular-expressions.info] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://www.regular-expressions.info/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/regular-expressions.info/2010-03-14_17-38-56-942.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:39&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;reWork: a regular expression workbench&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [osteele.com] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;http://osteele.com/tools/rework/&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/osteele.com/2010-03-14_17-39-02-269.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>&lt;tr&gt;<br />
&lt;td class=&quot;date&quot; nowrap=&quot;nowrap&quot;&gt;2010-03-14 17:39&lt;/td&gt;<br />
&lt;td class=&quot;description&quot;&gt;<br />
&lt;div class=&quot;title&quot;&gt;Regular Expressions - MDC&lt;/div&gt;<br />
&lt;span class=&quot;sup host&quot;&gt; [developer.mozilla.org] &lt;/span&gt;<br />
&lt;/td&gt;<br />
&lt;td class=&quot;links&quot;&gt;<br />
&lt;a class=&quot;url&quot; href=&quot;https://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Regular_Expressions&quot;&gt;url&lt;/a&gt;<br />
&lt;a class=&quot;local&quot; href=&quot;file:///home/sil/data/Shelve/saved/2010/2010-03-14/developer.mozilla.org/2010-03-14_17-39-06-484.html&quot;&gt;local&lt;/a&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;</p>
<p>

______________________________

Advertisements

Written by SilverWav

March 14, 2010 at 4:12 pm

Posted in Project

Tagged with , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: