var numberofplayers = "Two";

function computersturn ()
{
	
	var availablespacesarray = [];
	
	$("#Turn").replaceWith("<p id='Turn'>It's the <strong>Computer's Turn</strong></p>");
	
	for (var i=1;i<=9;i++)
	{
		if ( !($("#"+i).hasClass("PlayerOne") || $("#"+i).hasClass("PlayerTwo")) ) {
			availablespacesarray.push(i);
		}
	}
	
	var randomnumber = Math.floor(Math.random()*availablespacesarray.length);
	
	var putithere = availablespacesarray[randomnumber];
	
	var playeronearray = [];
	
	for (var i=1;i<=9;i++)
	{
		if ($("#"+i).hasClass("PlayerOne")) {
			playeronearray.push(i);
		}
	}
	
	for (var j=0;j<playeronearray.length;j++)
	{
		if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 2 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 3 ) && arrayContains( availablespacesarray, 2) ) {
			putithere = 2;
		} else if (arrayContains( playeronearray, 2 ) && arrayContains( playeronearray, 3 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playeronearray, 4 ) && arrayContains( playeronearray, 5 ) && arrayContains( availablespacesarray, 6) ) {
			putithere = 6;
		} else if (arrayContains( playeronearray, 4 ) && arrayContains( playeronearray, 6 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playeronearray, 5 ) && arrayContains( playeronearray, 6 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playeronearray, 7 ) && arrayContains( playeronearray, 8 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playeronearray, 7 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 8) ) {
			putithere = 8;
		} else if (arrayContains( playeronearray, 8 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 4 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playeronearray, 4 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playeronearray, 2 ) && arrayContains( playeronearray, 5 ) && arrayContains( availablespacesarray, 8) ) {
			putithere = 8;
		} else if (arrayContains( playeronearray, 2 ) && arrayContains( playeronearray, 8 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playeronearray, 5 ) && arrayContains( playeronearray, 8 ) && arrayContains( availablespacesarray, 2) ) {
			putithere = 2;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playeronearray, 3 ) && arrayContains( playeronearray, 6 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playeronearray, 3 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 6) ) {
			putithere = 6;
		} else if (arrayContains( playeronearray, 6 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 5 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playeronearray, 1 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playeronearray, 5 ) && arrayContains( playeronearray, 9 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playeronearray, 3 ) && arrayContains( playeronearray, 5 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playeronearray, 3 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playeronearray, 5 ) && arrayContains( playeronearray, 7 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		} 
	}
	
	var playertwoarray = [];
	
	for (var i=1;i<=9;i++)
	{
		if ($("#"+i).hasClass("PlayerTwo")) {
			playertwoarray.push(i);
		}
	}
	
	for (var j=0;j<playertwoarray.length;j++)
	{
		if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 2 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		} else if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 3 ) && arrayContains( availablespacesarray, 2) ) {
			putithere = 2;
		} else if (arrayContains( playertwoarray, 2 ) && arrayContains( playertwoarray, 3 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playertwoarray, 4 ) && arrayContains( playertwoarray, 5 ) && arrayContains( availablespacesarray, 6) ) {
			putithere = 6;
		} else if (arrayContains( playertwoarray, 4 ) && arrayContains( playertwoarray, 6 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playertwoarray, 5 ) && arrayContains( playertwoarray, 6 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playertwoarray, 7 ) && arrayContains( playertwoarray, 8 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playertwoarray, 7 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 8) ) {
			putithere = 8;
		} else if (arrayContains( playertwoarray, 8 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 4 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 7 ) && arrayContains( availablespacesarray, 4) ) {
			putithere = 4;
		} else if (arrayContains( playertwoarray, 4 ) && arrayContains( playertwoarray, 7 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playertwoarray, 2 ) && arrayContains( playertwoarray, 5 ) && arrayContains( availablespacesarray, 8) ) {
			putithere = 8;
		} else if (arrayContains( playertwoarray, 2 ) && arrayContains( playertwoarray, 8 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playertwoarray, 5 ) && arrayContains( playertwoarray, 8 ) && arrayContains( availablespacesarray, 2) ) {
			putithere = 2;
		} else if (arrayContains( playertwoarray, 3 ) && arrayContains( playertwoarray, 6 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playertwoarray, 3 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 6) ) {
			putithere = 6;
		} else if (arrayContains( playertwoarray, 6 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		} else if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 5 ) && arrayContains( availablespacesarray, 9) ) {
			putithere = 9;
		} else if (arrayContains( playertwoarray, 1 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playertwoarray, 5 ) && arrayContains( playertwoarray, 9 ) && arrayContains( availablespacesarray, 1) ) {
			putithere = 1;
		} else if (arrayContains( playertwoarray, 3 ) && arrayContains( playertwoarray, 5 ) && arrayContains( availablespacesarray, 7) ) {
			putithere = 7;
		} else if (arrayContains( playertwoarray, 3 ) && arrayContains( playertwoarray, 7 ) && arrayContains( availablespacesarray, 5) ) {
			putithere = 5;
		} else if (arrayContains( playertwoarray, 5 ) && arrayContains( playertwoarray, 7 ) && arrayContains( availablespacesarray, 3) ) {
			putithere = 3;
		}
	}
	
	$("#"+putithere).addClass("PlayerTwo");
	
	$("#Turn").replaceWith("<p id='Turn'>It's your turn <strong>Player One</strong></p>");
	
}

function isthegameover()
{
	if( hasWinner )
	{
		$("#NewGame").append("<a href='#' title='New Game'>New Game</a>");
		return;	
	}
	else
	{
		var available = false;
		
		for (var i=1;i<=9;i++)
		{
			if ( !($("#"+i).hasClass("PlayerOne") || $("#"+i).hasClass("PlayerTwo")) ) {
				available = true;
			}
		}
		if (!available) {
			$("#Turn").replaceWith("<p id='Turn'><strong>Cat's Game!</strong></p>");
			$("#NewGame").append("<a href='#' title='New Game'>New Game</a>");
		}
	}
}

var hasWinner = false;

function whowon()
{
	var playeronearray = [];
	var playertwoarray = [];
	
	for (var i=1;i<=9;i++)
	{
		if ($("#"+i).hasClass("PlayerOne")) {
			playeronearray.push(i);
		} 
		
		if ($("#"+i).hasClass("PlayerTwo")) {
			playertwoarray.push(i);
		}
	}
	
	var bothPlayers = [ playeronearray, playertwoarray ];
	
	for (var i=0;i<bothPlayers.length;i++)
	{
		var player;
		
		if (i == 0)
		{
			player = "One";
		}
		else
		{
			player = "Two";
		}
		
		for (j=0;j<3;j++)
		{
			var offset = j * 3;
			
			hasWinner = arrayContains( bothPlayers[ i ], 1 + offset ) && arrayContains( bothPlayers[ i ], 2 + offset)  &&  arrayContains( bothPlayers[ i ], 3 + offset);
			
			if( hasWinner )
			{
				$("#Turn").replaceWith("<p id='Turn'><strong>Player " + player + " Wins!</strong></p>");
				return;
			}
		}
		
		for (j=0;j<3;j++)
		{
			var offset = j + 1;
			
			hasWinner = arrayContains( bothPlayers[ i ], offset) && arrayContains( bothPlayers[ i ], 3 + offset)  &&  arrayContains( bothPlayers[ i ], 6 + offset);
			
			if( hasWinner )
			{
				$("#Turn").replaceWith("<p id='Turn'><strong>Player " + player + " Wins!</strong></p>");
				return;
			}
		}
		
		for (j=0;j<2;j++)
		{
			var offset = j * 2;
			
			hasWinner = arrayContains( bothPlayers[ i ], 1 + offset) && arrayContains( bothPlayers[ i ], 5)  &&  arrayContains( bothPlayers[ i ], 9 - offset);
			
			if( hasWinner )
			{
				$("#Turn").replaceWith("<p id='Turn'><strong>Player " + player + " Wins!</strong></p>");
				return;
			}
		}
		
	}
}

function arrayContains( array, toCheck )
{
	for (var i=0;i<array.length;i++)
	{
		if( array[ i ] == toCheck )
		{
			return true;	
		}
	}
	
	return false;
}

function Sleep( HowManySeconds, FunctionToCallAtEnd)
{
	if( HowManySeconds <= 0 )
	{
		if( FunctionToCallAtEnd )
		{
			FunctionToCallAtEnd();
		}
	}
	else
	{
		setTimeout( function() { Sleep( HowManySeconds-1, FunctionToCallAtEnd ); }, 1000 );
	}
}

$(document).ready(function(){
	var Turn = "Player One"; 
	$(".Square").click(function () {
	  if ($(this).hasClass("PlayerOne") || $(this).hasClass("PlayerTwo") || hasWinner ) { return; } else {							 
	  if (Turn == "Player One") {
		$(this).addClass("PlayerOne");
		Turn = "Player Two";
		$("#Turn").replaceWith("<p id='Turn'>It's your turn <strong>" + Turn + "</strong></p>");
	  } else if (numberofplayers == "One") {
		$(this).addClass("PlayerTwo");
		Turn = "Player One";
		$("#Turn").replaceWith("<p id='Turn'>It's your turn <strong>" + Turn + "</strong></p>");
	  }
	  
	  if (numberofplayers == "Two") {
		  computersturn();
		  //Sleep(10,computersturn());
		  //setTimeout( function() { computersturn() }, 1000 );
		  Turn = "Player One";
	  }
	  
	  whowon();
	  isthegameover();
	  
	  }
	});
	$("#NewGame").click(function () {
	  $(".Square").removeClass("PlayerOne PlayerTwo");
	  $("#Turn").replaceWith("<p id='Turn'>It's your turn <strong>Player One</strong></p>");
	  Turn = "Player One";
	  hasWinner = false;
	  $("#NewGame").empty();
	  return;
	});
});
