| 
					
				 | 
			
			
				@@ -5,6 +5,24 @@ $(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   var $chess = new Chess(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   var $gameOver = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function modalKeydownHandler(e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (e.which === 13) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      hideModal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function showModal(message) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#modal-message').text(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#modal-mask').fadeIn(200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $(document).on('keydown', modalKeydownHandler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function hideModal() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#modal-mask').fadeOut(200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $(document).off('keydown', modalKeydownHandler); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   function selectPiece(el) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     el.addClass('selected'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -156,12 +174,13 @@ $(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if ($chess.game_over()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $gameOver = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $socket.emit('timer-clear-interval', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'token': $token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $('.resign').hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        alert(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $('.resign').off().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        showModal(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($chess.turn() === 'b') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           $socket.emit('timer-black', { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,22 +224,27 @@ $(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $socket.on('opponent-disconnected', function (data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $('.resign').remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('.resign').off().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.chess_board a').off(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('#sendMessage').off(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('#sendMessage').submit(function(e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       e.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      alert("Your opponent has diconnected. You can't send messages."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showModal("Your opponent has diconnected. You can't send messages."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!$gameOver) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showModal("Your opponent has disconnected."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $socket.on('player-resigned', function (data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $('.resign').remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $gameOver = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('.resign').off().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.chess_board a').off(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var winner = data.color === 'w' ? 'Black' : 'White'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var loser = data.color === 'w' ? 'White' : 'Black'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var message = loser + ' resigned. ' + winner + ' wins.'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    alert(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showModal(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.feedback-move').text(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.feedback-status').text(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -261,12 +285,13 @@ $(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $socket.on('countdown-gameover', function (data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $gameOver = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.chess_board a').off(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var loser = data.color === 'black' ? 'Black' : 'White'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var winner = data.color === 'black' ? 'White' : 'Black'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var message = loser + "'s time is out. " + winner + " won."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $('.resign').hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    alert(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('.resign').off().remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showModal(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.feedback-move').text(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('.feedback-status').text(message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -321,6 +346,15 @@ $(function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $('#modal-mask, #modal-ok').click(function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.preventDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hideModal(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $('#modal-window').click(function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.stopPropagation(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $('.resign').click(function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $socket.emit('resign', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       'token': $token, 
			 |