<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>blank.html</filename>
    </added>
    <added>
      <filename>js/json2005.js</filename>
    </added>
    <added>
      <filename>js/rsh.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -9,7 +9,6 @@ rm $OUTFILE
 
 $RHINOC js/jquery.js &gt;&gt; $OUTFILE 2&gt;&amp;1
 $RHINOC js/jquery.dimensions.js &gt;&gt; $OUTFILE 2&gt;&amp;1
-$RHINOC js/jquery.history.js &gt;&gt; $OUTFILE 2&gt;&amp;1
 $RHINOC js/lang.js &gt;&gt; $OUTFILE 2&gt;&amp;1
 $RHINOC js/eidogo.js &gt;&gt; $OUTFILE 2&gt;&amp;1
 $RHINOC js/util.js &gt;&gt; $OUTFILE 2&gt;&amp;1</diff>
      <filename>build.sh</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,24 @@
 planned for 1.0
+- sgf coord permalinks, named node permalinks (use MPTT)
+    - allow sgf coord equivalent to Player.variation()?
 - unsaved changes notice for permalink, save
-- show resignation comment
-- showTools/showComments/showButtons(?) preference (disallow implicit selection too)
+- showComments?
 - create compact embeddedable version
 - test multiple instances on a page
 - time left issue
+- merge iphone and player css
+- finish i18n
+- hyperlink title
 - remove core language modifications?
-- brief help text (keyboard shortcuts, etc)
+- brief help text (keyboard shortcuts, etc)?
+- improve search dim handling when editing
+- fix safari 2 history?
+- announce on senseis, godiscussions
 
 planned for after 1.0
 - continuations for pattern search
 - &quot;more&quot; search results link
+- score tool
 - game archive browsing/searching
 - decouple player and board renderer (click events)
 - canvas renderer: dojo.gfx or similar? (non-regular-sized boards)</diff>
      <filename>doc/todo.txt</filename>
    </modified>
    <modified>
      <diff>@@ -25,7 +25,6 @@
 --&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.dimensions.js&quot;&gt;&lt;/script&gt;
-&lt;script type=&quot;text/javascript&quot; src=&quot;js/jquery.history.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;js/lang.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;js/eidogo.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;js/util.js&quot;&gt;&lt;/script&gt;
@@ -49,16 +48,16 @@
             &amp;nbsp;Maintained by &lt;a href=&quot;http://tin.nu/&quot;&gt;Justin Kramer&lt;/a&gt;.&lt;/p&gt;
 
         &lt;ul id=&quot;links&quot;&gt;
-            &lt;li&gt;&lt;a href=&quot;./#kjd&quot;&gt;Joseki Tutor&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#search&quot;&gt;Pattern Search&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#kjd&quot;&gt;Joseki Tutor&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#search&quot;&gt;Pattern Search&lt;/a&gt;&lt;/li&gt;
             &lt;li&gt;&lt;a href=&quot;tourney&quot;&gt;Tourney Games&lt;/a&gt;&lt;/li&gt;
             &lt;li&gt;&lt;a href=&quot;upload&quot;&gt;Upload&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#gnugo&quot; style='padding-right: 4px'&gt;GNU Go&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#gnugo-9&quot; style='padding-left: 4px; padding-right: 4px'&gt;9x9&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#gnugo-13&quot; style='padding-left: 4px'&gt;13x13&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#blank&quot; style='padding-right: 4px'&gt;Blank Board&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#blank-9&quot; style='padding-left: 4px; padding-right: 4px'&gt;9x9&lt;/a&gt;&lt;/li&gt;
-            &lt;li&gt;&lt;a href=&quot;./#blank-13&quot; style='padding-left: 4px'&gt;13x13&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#gnugo&quot; style='padding-right: 4px'&gt;GNU Go&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#gnugo-9&quot; style='padding-left: 4px; padding-right: 4px'&gt;9x9&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#gnugo-13&quot; style='padding-left: 4px'&gt;13x13&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#blank&quot; style='padding-right: 4px'&gt;Blank Board&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#blank-9&quot; style='padding-left: 4px; padding-right: 4px'&gt;9x9&lt;/a&gt;&lt;/li&gt;
+            &lt;li&gt;&lt;a href=&quot;/#blank-13&quot; style='padding-left: 4px'&gt;13x13&lt;/a&gt;&lt;/li&gt;
             &lt;li&gt;&lt;a href=&quot;http://senseis.xmp.net/?EidoGo&quot;&gt;Info&lt;/a&gt;&lt;/li&gt;
         &lt;/ul&gt;
 </diff>
      <filename>header.phtml</filename>
    </modified>
    <modified>
      <diff>@@ -7,13 +7,6 @@ var player;
     var hooks = {
         initGame: function() {
             var gameRoot = this.gameTree.trees.first().nodes.first();
-            if (this.gameName == &quot;kjd&quot; || this.gameName == &quot;gnugo&quot; || this.gameName == &quot;search&quot;) {
-                eidogo.util.hide(this.dom.optionSave);
-                eidogo.util.hide(this.dom.optionDownload);
-            } else {
-                eidogo.util.show(this.dom.optionSave);
-                eidogo.util.show(this.dom.optionDownload);
-            }
             var gn = gameRoot.GN || this.gameName;
             if (gn) {
                 // set the page title
@@ -29,14 +22,14 @@ var player;
         setPermalink: function() {
             var hash = (this.gameName ? this.gameName : &quot;&quot;) + &quot;:&quot; +
                 this.cursor.getPath().join(&quot;,&quot;);
-            jQuery.historyLoad(hash);
+            addHistory(hash);
         },
         searchRegion: function(params) {
             this.hooks.initGame.call(this); // update title
             var hash = &quot;search:&quot; + params.q + &quot;:&quot; + params.w + &quot;x&quot; + params.h +
                 &quot;:&quot; + this.compressPattern(params.p) + &quot;:&quot; + params.a;
             if (hash != location.hash.replace(/^#/, &quot;&quot;)) {
-                jQuery.historyLoad(hash);
+                addHistory(hash);
             }
         },
         saved: function(gn) {
@@ -57,7 +50,9 @@ var player;
             markVariations:     true,
             markNext:           false,
             showGameInfo:       true,
-            showPlayerInfo:     true
+            showPlayerInfo:     true,
+            showSave:           true,
+            showTools:          true
         };
         for (var key in params) {
             cfg[key] = params[key];
@@ -76,7 +71,10 @@ var player;
         player.loadSgf(cfg, completeFn);
     }
     
+    var notLoaded = true;
+    
     function loadState(hash) {
+        notLoaded = false;
         var hashParts = hash ? hash.replace(/^#/, &quot;&quot;).split(/:/) : [];
         var gameName = hashParts[0] || &quot;&quot;;
         var loadPath = hashParts[1] ? hashParts[1].split(&quot;,&quot;) : null;
@@ -88,7 +86,8 @@ var player;
                 loadPath:           loadPath,
                 progressiveLoad:    true,
                 markNext:           true,
-                showPlayerInfo:     false
+                showPlayerInfo:     false,
+                showSave:           false
             });
             return;
         }
@@ -101,11 +100,12 @@ var player;
         }
         if (gameName == &quot;search&quot;) {
             if (loadPath) {
-                loadGame();
+                loadGame({showSave: false});
                 player.loadSearch.apply(player, rest);
             } else {
                 loadGame({
                     gameName:   &quot;search&quot;,
+                    showSave:   false,
                     loadPath:   [0,0]
                 });
             }
@@ -130,14 +130,39 @@ var player;
         });
     }
     
+    function addHistory(hash) {
+        if (dhtmlHistory.isSafari) {
+            // this doesn't really work, but oh well
+            location.hash = hash;
+        } else {
+            dhtmlHistory.add(hash);
+        }
+    }
+    
+    window.dhtmlHistory.create({
+        toJSON: function(o) {
+            return JSON.stringify(o);
+        },
+        fromJSON: function(s) {
+            return JSON.parse(s);
+        }
+    });
+    
     eidogo.util.addEvent(window, &quot;load&quot;, function() {
         eidogo.util.addEvent(document, &quot;click&quot;, function(evt) {
             var target = eidogo.util.getTarget(evt)
-            if (target.nodeName.toUpperCase() != &quot;A&quot; || target.href.indexOf(&quot;#&quot;) == -1) return;
-            jQuery.historyLoad(target.href.replace(/^.*#/, &quot;&quot;));
+            if (target.nodeName.toUpperCase() != &quot;A&quot; || target.href.indexOf(&quot;#&quot;) == -1) return true;
+            var hash = target.href.replace(/^.*#/, &quot;&quot;);
+            addHistory(hash);
+            loadState(hash);
             eidogo.util.stopEvent(evt);
         });
-        jQuery.historyInit(loadState);
+        dhtmlHistory.initialize();
+        dhtmlHistory.addListener(loadState);
+        if (notLoaded) {
+            // make sure we load our state on first page load (RSH quirk)
+            loadState(location.hash.replace(/^#/, &quot;&quot;));
+        }
     }); 
     
 })();
\ No newline at end of file</diff>
      <filename>index.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,7 @@
 &lt;?php include(&quot;header.phtml&quot;); ?&gt;
 
+&lt;script type=&quot;text/javascript&quot; src=&quot;js/json2005.js&quot;&gt;&lt;/script&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;js/rsh.js&quot;&gt;&lt;/script&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;index.js&quot;&gt;&lt;/script&gt;
 
 &lt;div id=&quot;player-container&quot;&gt;&lt;/div&gt;</diff>
      <filename>index.phtml</filename>
    </modified>
    <modified>
      <diff>@@ -189,8 +189,8 @@ eidogo.BoardRendererHtml.prototype = {
 		domContainer.appendChild(domBoard);
 		this.domNode = domBoard;
 		this.renderCache = {
-		    stones: [].setLength(this.boardSize, 0).addDimension(this.boardSize, 0),
-		    markers: [].setLength(this.boardSize, 0).addDimension(this.boardSize, 0)
+            stones: [].setLength(this.boardSize, 0).addDimension(this.boardSize, 0),
+            markers: [].setLength(this.boardSize, 0).addDimension(this.boardSize, 0)
 		}
 		// auto-detect point width, point height, and margin
 		this.pointWidth = 0;
@@ -241,6 +241,7 @@ eidogo.BoardRendererHtml.prototype = {
 				case &quot;ex&quot;:
 				case &quot;territory-white&quot;:
 				case &quot;territory-black&quot;:
+				case &quot;dim&quot;:
 				case &quot;current&quot;:
 					break;
 				default:</diff>
      <filename>js/board.js</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,7 @@ if (typeof eidogo.i18n == &quot;undefined&quot;) {
         'move':             'Move',
         'loading':          'Loading',
         'passed':           'passed',
+        'resigned':         'resigned',
         
         'variations':       'Variations',
         'no variations':    'none',
@@ -29,15 +30,13 @@ if (typeof eidogo.i18n == &quot;undefined&quot;) {
         'x':                'X',
         'letter':           'Letter',
         'number':           'Number',
+        'dim':              'Dim',
         'search':           'Search',
         'search corner':    'Corner Search',
         'search center':    'Center Search',
-        'region info':      'Click and drag to select a region. If your browser\
-            does not support dragging (e.g., iPhone), click once to begin the selection\
-            and click once to end it.',
+        'region info':      'Click and drag to select a region.',
         'two stones':       'Please select at least two stones to search for.',
-        'two edges':        'For corner searches, your selection must \
-            touch two adjacent edges of the board.',
+        'two edges':        'For corner searches, your selection must touch two adjacent edges of the board.',
         'no search url':    'No search URL provided.',
     
         'white':            'White',</diff>
      <filename>js/i18n.js</filename>
    </modified>
    <modified>
      <diff>@@ -132,6 +132,7 @@
     			SQ: this.addMarker, // square
     			TW: this.addMarker,
     			TB: this.addMarker,
+    			DD: this.addMarker,
     			PL: this.setColor,
     			C:	this.showComments,
     		    N:  this.showAnnotation,
@@ -234,6 +235,8 @@
     		this.prefs.markVariations = !!cfg.markVariations;
     		this.prefs.showGameInfo = !!cfg.showGameInfo;
     		this.prefs.showPlayerInfo = !!cfg.showPlayerInfo;
+    		this.prefs.showTools = !!cfg.showTools;
+    		this.prefs.showSave = !!cfg.showSave;
     	},
     	
     	/**
@@ -309,6 +312,7 @@
     	 * dynamically-loaded games).
     	**/
     	initGame: function(target) {
+    	    this.handleDisplayPrefs();
     	    var gameRoot = target.trees.first().nodes.first();
     		var size = gameRoot.SZ;
     		if (!this.board) {
@@ -321,15 +325,21 @@
     		while (moveCursor.next()) { this.totalMoves++; }
     		this.totalMoves--;
     		this.showInfo();
-    		if (this.prefs.showPlayerInfo) {
-    		    show(this.dom.infoPlayers);
-    		} else {
-    		    hide(this.dom.infoPlayers);
-    		}
-            this.enableNavSlider();
+    		this.enableNavSlider();
     		this.selectTool(&quot;play&quot;);
     		this.hook(&quot;initGame&quot;);
     	},
+    	
+    	/**
+    	 * Shows or hides interface elements as configured
+    	**/
+    	handleDisplayPrefs: function() {
+    	    (this.prefs.showGameInfo || this.prefs.showPlayerInfo ? show : hide)(this.dom.info);
+    		(this.prefs.showGameInfo ? show : hide)(this.dom.infoGame);
+    		(this.prefs.showPlayerInfo ? show : hide)(this.dom.infoPlayers);  
+    		(this.prefs.showSave ? show : hide)(this.dom.options);
+            (this.prefs.showTools ? show : hide)(this.dom.toolsContainer);
+    	},
 	
     	/**
     	 * Create our board, tie it to a Rules instance, and add appropriate event
@@ -337,6 +347,7 @@
     	**/
     	createBoard: function(size) {
     		size = size || 19;
+    		if (this.board &amp;&amp; this.board.renderer &amp;&amp; this.board.boardSize == size) return;
     		try {
     		    this.dom.boardContainer.innerHTML = &quot;&quot;;
     		    var renderer = new eidogo.BoardRendererHtml(this.dom.boardContainer, size);
@@ -498,17 +509,17 @@
     					}
     				} else if (path.length) {
     					// tree position
-    					this.variation(position, true);
-    					if (path.length != 1) {
+                        this.variation(position, true);
+                        if (path.length != 1) {
     						// go to the end of the line for each tree we pass
     						while (this.cursor.nextNode()) {
-    							this.execNode(true);
+    							this.execNode(true, true);
     						}
     					}
-    					if (path.length &gt; 1 &amp;&amp; this.progressiveLoads) return;
-    				}
+    					if (this.progressiveLoads) return;
+    				}	
     			}
-    			this.refresh();
+                this.refresh();
     		} else if (!isNaN(parseInt(path, 10))) {
     			// Go to a move number.
     			var steps = parseInt(path, 10);
@@ -550,7 +561,6 @@
     			setTimeout(function() { me.refresh.call(me); }, 10);
     			return;
     		}
-    		
             this.moveNumber--;
             if (this.moveNumber &lt; 0) this.moveNumber = 0;
             this.board.revert(1);
@@ -580,10 +590,13 @@
     	 * functions. Also resets some settings and makes sure the interface
     	 * gets updated.
     	 * @param {Boolean} noRender If true, don't render the board
+    	 * @param {Boolean} ignoreProgressive Ignores progressive loading
+    	 *      considerations. Useful when executing to the end of a sibling
+    	 *      line when a variation load is still in progress.
     	 */
-    	execNode: function(noRender) {
+    	execNode: function(noRender, ignoreProgressive) {
     		// don't execute a node while it's being loaded
-    		if (this.progressiveLoads) {
+    		if (!ignoreProgressive &amp;&amp; this.progressiveLoads) {
     			var me = this;
     			setTimeout(function() { me.execNode.call(me, noRender); }, 10);
     			return;
@@ -626,7 +639,7 @@
     		}
             
     		// progressive loading?
-    		if (this.progressiveUrl &amp;&amp; !this.cursor.node.parent.cached) {
+    		if (!ignoreProgressive &amp;&amp; this.progressiveUrl &amp;&amp; !this.cursor.node.parent.cached) {
     			this.nowLoading();
     			this.progressiveLoads++;
     			this.remoteLoad(
@@ -830,6 +843,7 @@
                         case &quot;sq&quot;: prop = &quot;SQ&quot;; break;
                         case &quot;cr&quot;: prop = &quot;CR&quot;; break;
                         case &quot;x&quot;: prop = &quot;MA&quot;; break;
+                        case &quot;dim&quot;: prop = &quot;DD&quot;; break;
                         case &quot;number&quot;:
                             prop = &quot;LB&quot;;
                             coord = coord + &quot;:&quot; + this.labelLastNumber;
@@ -848,7 +862,7 @@
     	},
     	
     	handleDocMouseUp: function(evt) {
-    	    if (this.domLoading) return;
+    	    if (this.domLoading) return true;
     	    if (this.mode == &quot;region&quot; &amp;&amp; this.regionBegun &amp;&amp; !this.regionClickSelect) {
     	        // end of region selection
         	    this.mouseDown = false;
@@ -856,6 +870,7 @@
                 show(this.dom.searchAlgo, &quot;inline&quot;);
                 show(this.dom.searchButton, &quot;inline&quot;);
     	    }
+            return true;
     	},
     	
     	boundsCheck: function(x, y, region) {
@@ -930,14 +945,23 @@
     	            this.cursor.node.pushProperty(c, this.pointToSgfCoord({x:l+x, y:t+y}));
     	        }
     	    }
-    	    this.refresh();
+    	    
             this.regionLeft = l;
             this.regionTop = t;
             this.regionRight = l + x;
             this.regionBottom = t + y;
+            var b = this.getRegionBounds();
+            var r = [b[1], b[0], b[1]+b[2], b[0]+b[3]];
+            for (y = 0; y &lt; this.board.boardSize; y++) {
+                for (x = 0; x &lt; this.board.boardSize; x++) {
+                    if (!this.boundsCheck(x, y, r)) {
+                        this.cursor.node.pushProperty('DD', this.pointToSgfCoord({x:x, y:y}));
+                    }
+                }
+            }
             
             this.dom.searchAlgo.value = a;
-            
+            this.refresh();
             this.searchRegion();
     	},
     	
@@ -995,7 +1019,6 @@
     	    quadrant += (edges.contains('w') ? &quot;w&quot; : &quot;e&quot;);
 	    
     	    this.showComments(&quot;&quot;);
-    	    this.nowLoading();
     	    this.gameName = &quot;search&quot;;
 
     	    var success = function(req) {
@@ -1048,8 +1071,9 @@
             this.prefs.markNext = false;
             this.prefs.showPlayerInfo = true;
     	    
-    	    this.hook(&quot;searchRegion&quot;, params);
+            this.hook(&quot;searchRegion&quot;, params);
     	    
+    	    this.nowLoading();
     	    ajax('get', this.searchUrl, params, success, failure, this, 45000);	    
     	},
     	
@@ -1272,9 +1296,7 @@
     				dl.appendChild(dd);
     			}
     		}
-    		if (this.prefs.showGameInfo) {
-    		    this.dom.infoGame.appendChild(dl);
-    		}
+    		this.dom.infoGame.appendChild(dl);
     	},
 	
     	selectTool: function(tool) {
@@ -1381,15 +1403,18 @@
     	    if (!this.cursor.node['MN']) {
                 this.moveNumber++;
     	    }
-    		if (coord &amp;&amp; coord != &quot;tt&quot;) {
+    	    if ((!coord || coord == &quot;tt&quot; || coord == &quot;&quot;) &amp;&amp; !noRender) {
+    	        this.prependComment((color == this.board.WHITE ?
+    		        t['white'] : t['black']) + &quot; &quot; + t['passed'], &quot;comment-pass&quot;);
+    	    } else if (coord == &quot;resign&quot;) {
+    	        this.prependComment((color == this.board.WHITE ?
+    		        t['white'] : t['black']) + &quot; &quot; + t['resigned'], &quot;comment-resign&quot;);
+    	    } else {
     			this.board.addStone(pt, color);
     			this.rules.apply(pt, color);
     			if (this.prefs.markCurrent &amp;&amp; !noRender) {
     				this.addMarker(coord, &quot;current&quot;);
     			}
-    		} else if (!noRender) {
-    		    this.prependComment((color == this.board.WHITE ?
-    		        t['white'] : t['black']) + &quot; &quot; + t['passed'], &quot;comment-pass&quot;);
     		}
     	},
 	
@@ -1421,6 +1446,7 @@
     				case &quot;MA&quot;: label = &quot;ex&quot;; break;
     				case &quot;TW&quot;: label = &quot;territory-white&quot;; break;
     				case &quot;TB&quot;: label = &quot;territory-black&quot;; break;
+    				case &quot;DD&quot;: label = &quot;dim&quot;; break;
     				case &quot;LB&quot;: label = (coord[i].split(&quot;:&quot;))[1]; coord[i]; break;
     				default: label = type; break;
     			}
@@ -1525,13 +1551,14 @@
                         &lt;option value='play'&gt;&quot; + t['play'] + &quot;&lt;/option&gt;\
                         &lt;option value='add_b'&gt;&quot; + t['add_b'] + &quot;&lt;/option&gt;\
                         &lt;option value='add_w'&gt;&quot; + t['add_w'] + &quot;&lt;/option&gt;\
-                        &quot; + (this.searchUrl ? (&quot;&lt;option value='region'&gt;&quot; + t['region'] + &quot;&lt;/option&gt;&quot;) : &quot;&quot;) +&quot;\
+                        &quot; + (this.searchUrl &amp;&amp; this.showTools ? (&quot;&lt;option value='region'&gt;&quot; + t['region'] + &quot;&lt;/option&gt;&quot;) : &quot;&quot;) +&quot;\
                         &lt;option value='tr'&gt;&quot; + t['triangle'] + &quot;&lt;/option&gt;\
                         &lt;option value='sq'&gt;&quot; + t['square'] + &quot;&lt;/option&gt;\
                         &lt;option value='cr'&gt;&quot; + t['circle'] + &quot;&lt;/option&gt;\
                         &lt;option value='x'&gt;&quot; + t['x'] + &quot;&lt;/option&gt;\
                         &lt;option value='letter'&gt;&quot; + t['letter'] + &quot;&lt;/option&gt;\
                         &lt;option value='number'&gt;&quot; + t['number'] + &quot;&lt;/option&gt;\
+                        &lt;option value='dim'&gt;&quot; + t['dim'] + &quot;&lt;/option&gt;\
                     &lt;/select&gt;\
                     &lt;select id='search-algo' class='search-algo'&gt;\
                         &lt;option value='corner'&gt;&quot; + t['search corner'] + &quot;&lt;/option&gt;\
@@ -1628,9 +1655,9 @@
     	    }.bind(this));
     	    
 			addEvent(this.dom.toolsSelect, 'change', function(e) {
-    		    this.selectTool.apply(this, [(e.target || e.srcElement).value]);
-    		}, this, true);
-    	},
+                this.selectTool.apply(this, [(e.target || e.srcElement).value]);
+            }, this, true);
+        },
     	
     	enableNavSlider: function() {
     	    // don't use slider for progressively-loaded games
@@ -1660,10 +1687,11 @@
     		}, this, true);
     		
     		addEvent(document, &quot;mouseup&quot;, function(e) {
-    		    if (!sliding) return;
+    		    if (!sliding) return true;
                 sliding = false;
                 var xy = getElClickXY(e, this.dom.navSlider);
                 this.updateNavSlider(xy[0]);
+                return true;
     		}, this, true);
     	},
     	</diff>
      <filename>js/player.js</filename>
    </modified>
    <modified>
      <diff>@@ -6,3 +6,7 @@
 	background: none;
 	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;player/images/w.png&quot;);
 }
+.eidogo-player .board .point.marker.dim {
+    background: none;
+	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&quot;player/images/dim.png&quot;);
+}</diff>
      <filename>player/player-ie6.css</filename>
    </modified>
    <modified>
      <diff>@@ -206,7 +206,7 @@
     margin: 0 0 0 10px;
     display: none;
 }
-.eidogo-player .comment-pass {
+.eidogo-player .comment-pass, .eidogo-player .comment-resign {
 	color: #800;
 	font-weight: bold;
 	margin: 0 0 10px 0;</diff>
      <filename>player/player-iphone.css</filename>
    </modified>
    <modified>
      <diff>@@ -189,7 +189,7 @@
     margin: 0 0 0 8px;
     display: none;
 }
-.eidogo-player .comment-pass {
+.eidogo-player .comment-pass, .eidogo-player .comment-resign {
 	color: #800;
 	font-weight: bold;
 	margin: 0 0 10px 0;
@@ -391,6 +391,9 @@
 .eidogo-player .board .point.marker.territory-black {
 	background: url(images/territory-black.gif);
 }
+.eidogo-player .board .point.marker.dim {
+	background: url(images/dim.png);
+}
 .eidogo-player .board-hover-move {
     position: absolute;
     width: 19px;
@@ -408,6 +411,7 @@
     background-image: url(images/w.gif);
 }
 .eidogo-player .info {
+    display: none;
     float: left;
 	width: 421px;
 	margin: 5px 0 0 0;
@@ -492,6 +496,9 @@
     color: #888;
     display: none;
 }
+.eidogo-player .options {
+    display: none;
+}
 .eidogo-player .options a {
     float: left;
     display: block;
@@ -501,7 +508,6 @@
     background: #181818;
     border: 1px solid #282828;
     text-align: center;
-    display: none;
 }
 .eidogo-loading {
 	position: absolute;</diff>
      <filename>player/player.css</filename>
    </modified>
    <modified>
      <diff>@@ -130,7 +130,7 @@ pre, code {
     display: block;
     padding: 5px;
 }
-#tourney-games tr.odd:hover a, #tourney-games tr.even:hover a {
+#tourney-games tr.odd:hover, #tourney-games tr.even:hover {
     background: #bbe;
     text-decoration: underline;
 }
\ No newline at end of file</diff>
      <filename>site-style.css</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5ceba7963bfc5c71d8277612ba50e3945dc63e2d</id>
    </parent>
  </parents>
  <author>
    <name>jkkramer</name>
    <email>jkkramer@3a017fa3-8d26-0410-b3dd-4f2ae428da9e</email>
  </author>
  <url>http://github.com/jkk/eidogo/commit/f985a9eb2fc8737aab8b780e4b0935b60d6a700a</url>
  <id>f985a9eb2fc8737aab8b780e4b0935b60d6a700a</id>
  <committed-date>2007-11-11T15:20:26-08:00</committed-date>
  <authored-date>2007-11-11T15:20:26-08:00</authored-date>
  <message>replaced jQuery.history with RSH, fixed long-standing KGS permalink bug(!!!), extra show/hide preferences, etc

git-svn-id: https://eidogo.googlecode.com/svn/trunk@56 3a017fa3-8d26-0410-b3dd-4f2ae428da9e</message>
  <tree>c2a89a7a89c16166cd7a9de01e60cac1e3bb85b5</tree>
  <committer>
    <name>jkkramer</name>
    <email>jkkramer@3a017fa3-8d26-0410-b3dd-4f2ae428da9e</email>
  </committer>
</commit>
