// JavaScript Document
var turn = 0;
var process = 0;
var stamp = 0;
var sound = 0;
var lastUpdate = 0;
var running = 1;
var periodMax = 6000;
var periodMin = 1500;
var updatePeriod = periodMin;
var enabledSound = (YAHOO.util.Cookie.get("enabledSound") == "true");
enabledSound = !enabledSound;//hack
ControlSound();
function IsRunning()
{
	return (running == 1);
}
function Stop()
{
	running = 0;
}
var handleBoardFailure = function(o){		
	if(IsRunning()) window.location.href = ".";
};
var handleBoardSuccess = function(o){
	if(o.responseText != "")
	{
		var msg = YAHOO.lang.JSON.parse(o.responseText);
		if(stamp < msg.stamp)
		{
			stamp = msg.stamp;			
			YAHOO.util.Dom.get("game").innerHTML = msg.game;
			YAHOO.util.Dom.get("newboard_button").innerHTML = msg.newboard_button;
			turn = msg.turn;
			if(turn == 3) updatePeriod = periodMin;
			else updatePeriod = periodMax;
			YAHOO.util.Dom.get("boards").innerHTML = msg.boards;
			var messages = YAHOO.util.Dom.get("messages");
			messages.innerHTML = msg.messages;
			messages.scrollTop = messages.scrollHeight;
			if(sound < msg.sound) PlaySound(msg.sound);
			lastUpdate = (new Date()).getTime();
		}		
	}
	LoadingEffect(false);
	process--;
};
function EnterBoard()
{
	LoadingEffect(true);
	Post("action=enter_board");	
}
function OutBoard()
{
	LoadingEffect(true);
	Post("action=out_board");	
}
function Click(i,j)
{
	if(turn == 0 || turn == 3) return;
	var board = document.getElementById("board");
	if(board.rows[i].cells[j].innerHTML != "") return;
	if(turn == "1") board.rows[i].cells[j].innerHTML = "<img src='images/o.gif' />";
	else if(turn == "2") board.rows[i].cells[j].innerHTML = "<img src='images/x.gif' />";
	Post("action=place_xo&row=" + i + "&col=" + j);
	turn = 3;	
}
function ContinueGame()
{
	LoadingEffect(true);
	Post("action=continue_game");	
}
function VisitBoard(board)
{
	if(turn != 0)
	{
		alert("Bạn phải thoát ra khỏi bàn đang chơi!");
		return;
	}
	LoadingEffect(true);
	Post("action=visit_board&board=" + board);	
}
function NewBoard()
{
	if(turn != 0)
	{
		alert("Bạn phải thoát ra khỏi bàn đang chơi!");
		return;
	}
	LoadingEffect(true);
	Post("action=new_board");	
}
function CheckSendMsg(event)
{
	if(event.keyCode == 13) SendMsg();
}
function SendMsg()
{	
	var msg = YAHOO.util.Dom.get("msg").value;
	YAHOO.util.Dom.get("msg").value = "";
	if(msg != "" && msg.length < 255)
	{		
		Post("action=send_msg&msg=" + encodeURIComponent(msg) + "&txtcolor=" + encodeURIComponent(orgColor));	
	}		
}
function Buzz()
{
	YAHOO.util.Dom.get("msg").value = "BUZZ!!!";
	SendMsg();
}
function Post(postData)
{	
	if(!IsRunning()) return;
	process++;
	var rand = (new Date()).getTime();
	var sUrl = "services/update.php";
	postData = "rand=" + rand + "&stamp=" + stamp + "&" + postData;
	var callback =
	{
		success:handleBoardSuccess,
		failure:handleBoardFailure,
		argument:['foo','bar'],
		timeout: 120000
	};
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);		
}
function LoadingEffect(turn)
{
	if(turn) document.body.className = "loading";
	else document.body.className = "";
}
function Over(obj)
{
	if(turn == 0 || turn == 3) return;
	obj.className = 'over';
}
function Out(obj)
{
	obj.className = "";
}
function ControlSound()
{
	enabledSound = !enabledSound;
	YAHOO.util.Cookie.set("enabledSound",enabledSound ? "true" : "false");
	if(enabledSound)
	{
		YAHOO.util.Dom.get("soundImg").src = "images/sound-icon.png";
	}
	else
	{
		YAHOO.util.Dom.get("soundImg").src = "images/sound-off-icon.png";
	}
}
function PlaySound(cur_sound)
{
	if(!enabledSound) return;
	sound = cur_sound;
	var effect = "";
	switch(sound%10)
	{
		case 1: 
			effect = "move";
			break;
		case 2:
			effect = "start_game";
			break;
		case 3:
			effect = "game_over";
			break;
		case 4:
			effect = "buzz";
			break;
	}
	if(effect != "") soundManager.play(effect);
}
function GameLoop()
{
	if((new Date()).getTime() - lastUpdate > 30000) 
	{
		stamp = 0;
		process = 0;
		lastUpdate = (new Date()).getTime();
		Post("");
	}
	else if(process < 2) Post("");
	setTimeout("GameLoop()",updatePeriod);
}
GameLoop();
function UpdateNews()
{	
	if(!IsRunning()) return;	
	var rand = (new Date()).getTime();
	var sUrl = "services/update_news.php";
	var postData = "rand=" + rand;
	var callback =
	{
		success:handleUpdateNewsSuccess,
		failure:handleUpdateNewsFailure,
		argument:['foo','bar'],
		timeout: 300000
	};
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);		
}
var handleUpdateNewsFailure = function(o){	
};
var handleUpdateNewsSuccess = function(o){
	YAHOO.util.Dom.get("news").innerHTML = o.responseText;
};
function UpdateNewsLoop()
{	
	UpdateNews();
	setTimeout("UpdateNewsLoop()",300000);
}
UpdateNewsLoop();
function UpdateAd()
{
	var iframes = document.getElementsByTagName("iframe");
	if(iframes != null && iframes.length > 0)
	{
		var iframe = iframes[0];
		iframe.src = iframe.src;
		setTimeout("UpdateAd()",90000);
	}
}
//setTimeout("UpdateAd()",90000);