--- /dev/null
+/* Log to the console if we can: firebug firefox extension will view these */
+function log( txt)
+{
+ if ( window.console && window.console.log )
+ {
+ window.console.log( txt );
+ }
+}
+
+/* create a cookie */
+function createCookie(name,value,days)
+{
+ var expires = "";
+ if (days)
+ {
+ var date = new Date();
+ date.setTime(date.getTime()+(days*24*60*60*1000));
+ expires = "; expires="+date.toGMTString();
+ }
+ document.cookie = name+"="+value+expires+"; path=/";
+ log( "Created cookie: " + document.cookie );
+}
+
+/* read a cookie */
+function readCookie(name)
+{
+ var nameEQ = name + "=";
+ var ca = document.cookie.split(';');
+ for(var i=0;i < ca.length;i++)
+ {
+ var c = ca[i];
+ while (c.charAt(0)==' ')
+ c = c.substring(1,c.length);
+
+ if (c.indexOf(nameEQ) == 0)
+ return c.substring(nameEQ.length,c.length);
+ }
+ return null;
+}
+
+/* erase a cookie */
+function eraseCookie(name)
+{
+ log( "erasingCookie" );
+ createCookie(name,"",-1);
+}
+
+/* exclude entries from the same domain as the given URL */
+function exclude( site )
+{
+ log( "Excluding: " + site );
+
+ domain = site.match( /:\/\/(\.*)([^/:]+)/ );
+ domain = domain[2]?domain[2]:'';
+
+ var val=readCookie('excludes');
+ if ( !val )
+ {
+ val = '';
+ }
+ if ( val.length > 0 )
+ {
+ val = val + ",";
+ }
+ val = val + domain
+ createCookie('excludes',val, 10);
+}
+
+/* un-exclude host */
+function show( site )
+{
+ domain = site.match( /:\/\/(\.*)([^/:]+)/ );
+ domain = domain[2]?domain[2]:'';
+
+ log( "Showing " + site );
+
+ /* get the cookie */
+ var val=readCookie('excludes');
+ if ( !val ) { val = ''; }
+
+ /* new cookie value */
+ var n = '';
+
+ hosts=val.split( ',' );
+ for( var i=0 ; i < hosts.length; i++ )
+ {
+ /* the currently excluded host isn't the one we're to show now - so keep it */
+ if ( hosts[i] != domain )
+ {
+ if ( n.length > 0 ) { n = n + ',' ; }
+ n += hosts[i];
+ }
+ else
+ {
+ /* the currently excluded host is now supposed to be visible.. */
+ c = getElementsByClassNamePrefix( hosts[i] );
+ for ( var j = 0; j < c.length; j++ )
+ {
+ showDiv(c[j].id );
+ showInlineDiv( ( c[j].id + "_hide" ) )
+ hideDiv( ( c[j].id + "_show" ) )
+ }
+ }
+ }
+ /* set new cookie */
+ createCookie('excludes',n, 10);
+}
+
+/* avoid excluding any sites : clear the cookie */
+function excludeNone()
+{
+ eraseCookie( 'excludes' );
+ window.location.reload();
+ hideDiv( 'unhide-all' );
+}
+
+/* hide the given div, if possible */
+function hideDiv( id ) {
+ i = document.getElementById(id);
+ if ( i )
+ {
+ log( "Setting div " + id + " -> display:none;" );
+ i.style.display="none";
+ }
+}
+
+/* show the given div */
+function showDiv( id ) {
+ i = document.getElementById(id);
+ if ( i )
+ {
+ log( "Setting div " + id + " -> display:block;" );
+ i.style.display="block";
+ }
+}
+function showInlineDiv( id ) {
+ i = document.getElementById(id);
+ if ( i )
+ {
+ log( "Setting div " + id + " -> display:inline;" );
+ i.style.display="inline";
+ }
+}
+
+/* get elements with a class starting with the given name */
+function getElementsByClassNamePrefix(classname) {
+ var els = document.getElementsByTagName("*");
+ var c = new RegExp("/b^|" + classname );
+ final = new Array();
+ var n=0;
+ for (var i=0; i < els.length; i++) {
+ if (els[i].className) {
+ if(c.test(els[i].className)) {
+ final[n] = els[i];
+ n++;
+ }
+ }
+ }
+ return final;
+}
+
+/* hide all the hosts we're supposed to */
+function hideHosts()
+{
+ var excl=readCookie( 'excludes');
+ if ( ! excl ) { excl='' ; }
+ hosts=excl.split( ',' );
+
+ for ( var i = 0; i < hosts.length; i++ )
+ {
+ // ok so we have a host. should we hide it?
+ if ( hosts[i] )
+ {
+ c = getElementsByClassNamePrefix( hosts[i] );
+ for ( var j = 0; j < c.length; j++ )
+ {
+ hideDiv(c[j].id );
+ showInlineDiv( ( c[j].id + "_show" ) )
+ hideDiv( ( c[j].id + "_hide" ) )
+
+ showDiv( 'unhide-all' );
+ }
+ }
+ }
+}
+