var oldPlayLinkID;
var oldPlayLink;

function setGameWindowMode(gameWindowMode, avoidSave)
{
	// Save prefs
	if ( !avoidSave ) setPlayerPref("game_window_mode", gameWindowMode);

	window.gameWindowMode = gameWindowMode;

	$ES('.gameWindowMode').forEach( function (ele) {
		if ( ele.hasClass(gameWindowMode) ) ele.addClass('boldText');
		else ele.removeClass('boldText');
	});
}

function setGameVersion( version, avoidSave )
{
	if ( !avoidSave ) setPlayerPref("game_version", version);
	window.gameVersion = version;
	
	$ES('.gameVersion').forEach( function (ele) {
		if ( ele.hasClass(version) ) ele.addClass('boldText');
		else ele.removeClass('boldText');
	});
	
}

function joinRoom(id_room)
{
	oldPlayLink = $('playRoom' + id_room + 'Link').innerHTML;
	oldPlayLinkID = 'playRoom' + id_room + 'Link';

	new Request({
		'url': '/ajax/join_room_v2.php',
		'data': {'id_room': id_room },
		'onRequest': function()
		{
			$('playRoom' + id_room + 'Link').set('html',  '<img src=' + staticsHost + '/img/loading.gif class=loadingImg /> ' + _("Sending..") );
		},
		'onComplete': function()
		{
			var values = this.response.text.split(";");
			var errorCode = values[0];
			var id_joueur = values[1];
			var id_room = values[2];

			$(oldPlayLinkID).set('html',  oldPlayLink );

			if ( errorCode == 0 )
			{
				if ( gameWindowMode == 'normal' ) window.location = "/game/flash/?rnd=" + (new Date().getTime());
				else
				{
					var gameWidth;
					var gameHeight;

					/*
					if ( gameWindowMode == 'small' )
					{
						gameWidth = 550;
						gameHeight = 460;
					}
					else
					*/
					if ( gameWindowMode == 'small' || gameWindowMode == 'medium' )
					{
						gameWidth = 640;
						gameHeight = 480;
					}
					else if ( gameWindowMode == 'big' )
					{
						gameWidth = 731;
						gameHeight = 500;
					}

					var left = Math.round((screen.availWidth - gameWidth) / 2);
					var top = Math.round((screen.availHeight - (gameHeight + 110)) / 2);

					var myGameWindow = window.open('/game/flash/popup.php?rnd=' + (new Date().getTime()) + '&size=' + gameWindowMode + '&gameWidth=' + gameWidth + '&gameHeight=' + gameHeight, 'urbanGameWindow', 'width=' + gameWidth + ',height=' + (gameHeight + 110) + ',top=' + top + ',left=' + left + ',location=no,menubar=no,status=no,toolbar=no');

					if ( myGameWindow == undefined )
					{
						uralert( _("It seems you have a popup blocker, check your browser setting to allow www.urban-rivals.com to open popup windows.") );
					}

				}
			}
			else if ( errorCode == 1 )
			{
				uralert( _("Your level is not authorized to join this room.") );
				$(oldPlayLinkID).set('html',  oldPlayLink );
			}
			else if ( errorCode == 2 )
			{
				uralert( _("You are not a member of this guild.") );
				$(oldPlayLinkID).set('html',  oldPlayLink );
			}
			else if ( errorCode == 3 )
			{
				uralert( _("You are banned from this game mode.") );
				$(oldPlayLinkID).set('html',  oldPlayLink );
			}
		}
	}).send();
}

function loadDeck (id_deck) {
	if ( id_deck ) reloadCurrentPageURLOnly('deck=' + id_deck + "&rnd=" + Math.random());
}

function filterRooms(filter, avoidSave)
{
	// Save prefs
	if ( !avoidSave ) setPlayerPref("room_list_filter", filter);

	var roomBGColors = new Array('#fff', '#eee');

/*
	$ES(".room_filter").each(
		function( ele )
		{
			if ( ele.id == ("filter_" + filter) ) ele.addClass("boldText");
			else ele.removeClass("boldText");
		}
		);
*/
	for (var i = 0; i < $('room_filter_select').options.length; ++i)
	{
		var filterOption = $('room_filter_select').options[i];
		if ( filterOption.value == filter ) filterOption.selected = true;
		else filterOption.selected = false;
	}

	i = 0;
	$("roomListDiv").getChildren().each(
		function (roomDiv)
		{
			if ( filter == "all" )
			{
				roomEffect(roomDiv, true); //roomDiv.setStyle("display", "block");
				++i;
			}
			else if ( filter == "available" && roomDiv.roomObj.is_available )
			{
				roomEffect(roomDiv, true);
				++i;
			}
			else if ( filter == "ranked" && roomDiv.roomObj.option_ranked )
			{
				roomEffect(roomDiv, true);
				++i;
			}
			else if ( filter == 'event' && roomDiv.roomObj.type == 'event' )
			{
				roomEffect(roomDiv, true);
				++i;
			}
			else
			{
				roomEffect(roomDiv, false); // roomDiv.setStyle("display", "none");
			}

			roomDiv.myBGColor = roomBGColors[i % 2];
			roomDiv.setStyle('background-color', roomDiv.myBGColor);

			roomDiv.currentSelection = false;
			roomDiv.fireEvent("mouseout");
		}
		);
}

function roomEffect(roomDiv, appear)
{
	if ( appear )
	{
		if ( roomDiv.getStyle("display") != "block" )
		{
			roomDiv.setStyles( {
				display: "block",
				opacity: 0
				});

			new Fx.Tween(roomDiv, {"property": "opacity"}).start(1);
		}
	}
	else
	{
		if ( roomDiv.getStyle("display") != "none" )
		{
			roomDiv.setStyles( {
				opacity: 1
				});

			new Fx.Tween(roomDiv, { "property": "opacity", 'onComplete': function() { roomDiv.setStyle("display", "none"); } } ).start(0);
		}
	}
}

function buildRoomsList()
{
	var i = 0;
	var roomBGColors = new Array('#fff', '#eee');
	var totalRoomsBG = 19;

	gameRooms.each(
		function(room)
		{
			room.descriptionBgIndex = parseInt(i / gameRooms.length * totalRoomsBG, 10);

			var room_available = true;

			if ( !room.isEnabled )
			{
				room_available = false;
			}

			room.is_available = room_available;

			var tmpRoomDiv = new Element("div", {
				"class": "roomListItemGeneric",
				"events": {
					"mouseover": function () {
						if ( this.currentSelection ) return;
						if ( this.tmpEffect ) this.tmpEffect.cancel();
					    var tmpEffect = new Fx.Tween( this, {'property': "background-color", 'duration': 200});
						this.tmpEffect = tmpEffect;
					    tmpEffect.start("#ffff00");
					},
					"mouseout": function () {
						if ( this.currentSelection  ) return;
						if ( this.tmpEffect ) this.tmpEffect.cancel();
						var tmpEffect = new Fx.Tween( this, {'property': "background-color", 'duration': 400});
						this.tmpEffect = tmpEffect;
					    tmpEffect.start( this.myBGColor ); //"#ffffff"
					},
					"click": function () {
						if ( this.currentSelection ) return;
						selectRoom(this);
					}
				}
			});

			tmpRoomDiv.myBGColor = roomBGColors[i % 2];

			tmpRoomDiv.roomObj = room;

			if ( !room_available )
			{
				tmpRoomDiv.roomDisabled = true;
				tmpRoomDiv.setStyle("cursor", "not-allowed");
			}
			else tmpRoomDiv.roomDisabled = false;

			if ( room_available ) tmpRoomDivHTML = '<div class="roomListItem ' + room.type +'Room">';
			else tmpRoomDivHTML = '<div class="roomListItemDisabled ' + room.type +'Room">';

			tmpRoomDivHTML += "<span class=\"roomListTitle\">" + room.name + "</span>";
			tmpRoomDivHTML += "<br/><span class=roomListDetails>";

			if ( room_available ) tmpRoomDivHTML += "<img src=" + staticsHost + "/img/icons/fight.gif /> ";

			if ( room.type == 'guild' ) tmpRoomDivHTML += _("Guild Members");
			else if ( room.type == 'event' ) tmpRoomDivHTML += _("Special Event");
			else if ( room.min_level && room.max_level ) tmpRoomDivHTML += _("Level") + ": " + room.min_level + " - " + room.max_level;
			else if ( room.min_level && !room.max_level ) tmpRoomDivHTML += _("Level") + ": " + room.min_level + "+";

			tmpRoomDivHTML += "</span></div>";

			tmpRoomDivHTML += '<div class="roomListIndicators">';

			tmpRoomDivHTML += '<div class="roomListIndicatorsOnlinePlayers">';

			tmpRoomDivHTML += room.online_players;

			tmpRoomDivHTML += '</div>';

			tmpRoomDivHTML += '<div class="roomListIndicatorsIcons">';

			if ( room.id_deck_format && room.picto_deck_format ) tmpRoomDivHTML += "<img src=" + room.picto_deck_format + " style=\"margin-bottom: 2px;\" align=absmiddle /> ";

			if ( room.option_norandom ) tmpRoomDivHTML += "<img src=" + staticsHost + "/img/icons/norandom.gif align=absmiddle /> ";

			if ( room.option_ranked ) tmpRoomDivHTML += "<img src=" + staticsHost + "/img/tournament_small.gif align=absmiddle /> ";

			tmpRoomDivHTML += '</div>';

			tmpRoomDivHTML += '</div>';

			tmpRoomDivHTML += '<div class="roomListGameMode">';

			if ( room.picto_battle_rule )
			{
				tmpRoomDivHTML += '<img src="' + room.picto_battle_rule.toLowerCase() + '" class="iepng" style="vertical-align: middle;"/>';
			}

			tmpRoomDivHTML += '</div>';

			tmpRoomDiv.set('html',  tmpRoomDivHTML );

			$("roomListDiv").adopt(tmpRoomDiv);

			++i;
		}
	);


}

function selectRoom(roomDiv)
{
	$("roomListDiv").getChildren().each(
		function (roomDiv)
		{
			roomDiv.currentSelection = false;
			roomDiv.fireEvent("mouseout");
		}
		);

	roomDiv.currentSelection = true;
	if ( roomDiv.tmpEffect ) roomDiv.tmpEffect.cancel();
    var tmpEffect = new Fx.Tween( roomDiv, {'property': 'background-color', 'duration': 500});
	roomDiv.tmpEffect = tmpEffect;
    tmpEffect.start("#ffAA00");

	var room = roomDiv.roomObj;

	var roomDescDivHTML = "<div id=\"roomDescDivContent\" style=\"background-image: url(" + staticsHost + "/img/room/bg/room" + room.descriptionBgIndex + ".jpg);\">";

	roomDescDivHTML += "<img align=right src=" + room.pictureURL + " width=\"120\" height=\"90\" class=nicePicture style=\"margin-left: 5px; margin-right: -5px;\" />";

	roomDescDivHTML += "<div class=\"titleText boldText\"><a class=\"boldText\" href=javascript:joinRoom(" + room.id + ");>" + room.name + "</a></div>";

	roomDescDivHTML += "<div class=boldText>";

	if ( room.online_players > 1 ) roomDescDivHTML += getString( _("@0@ players online"), [room.online_players]);
	else roomDescDivHTML += getString( _("@0@ player online"), [room.online_players]);

	roomDescDivHTML += "</div>";

	//roomDescDivHTML += "<br/>";

	roomDescDivHTML += "<div>";


	if ( room.type == 'guild' ) roomDescDivHTML += _("Guild Members");
	else if ( room.type == 'event' ) roomDescDivHTML += _("Special Event");
	else if ( room.min_level && room.max_level ) roomDescDivHTML += getString( _("Players ranging from Level @0@ to @1@."), [room.min_level, room.max_level]);
	else if ( room.min_level && !room.max_level ) roomDescDivHTML += getString( _("Players from Level @0@ and above."), [room.min_level, room.max_level]);

	roomDescDivHTML += "<br/><br/><span class=smallText>";

	if ( room.id_battle_rule > 1 )
	{
		roomDescDivHTML += "<span class=boldText>" + _("Room game mode:") + "</span><br/>";

		roomDescDivHTML += getString( _("You play in @0@ mode."), ["<b><a href=/game/rules.php?show=" + escape(room.name_battle_rule) + ">" + room.name_battle_rule + "</a></b>"]);

		roomDescDivHTML += "<br/>";

		roomDescDivHTML += '<font color="#555">' + room.summary_battle_rule + '</font>';

		roomDescDivHTML += "<br/><br/>";
	}

	if ( room.id_deck_format )
	{
		roomDescDivHTML += "<span class=boldText>" + _("Room deck format:") + "</span><br/>";

		roomDescDivHTML += getString( _("Your Deck must be in @0@ format."), ["<b><a href=/game/rules.php?show=modes#" + escape(room.name_deck_format) + ">" + room.name_deck_format + "</a></b>"]);

		if ( room.picto_deck_format ) roomDescDivHTML += " <img src=" + room.picto_deck_format + " />";

		roomDescDivHTML += "<br/>";

		roomDescDivHTML += '<font color="#555">' + _("There are restrictions on the composition of your Deck.") + '</font>';

		roomDescDivHTML += "<br/><br/>";
	}

	//|| room.option_training
	if ( room.option_norandom || room.option_ranked ) roomDescDivHTML += "<span class=boldText>" + _("Room option(s):") + "</span><br/>";

	if ( room.option_norandom )
	{
		roomDescDivHTML += "<img src=" + staticsHost + "/img/icons/norandom.gif align=absmiddle /> " + _("No random, the highest attack always wins.");
		roomDescDivHTML += "<br/>";
	}

	if ( room.option_ranked )
	{
		roomDescDivHTML += "<img src=" + staticsHost + "/img/tournament_small.gif align=absmiddle /> " + _("You can participate in the daily tournaments.");
		roomDescDivHTML += "<br/>";
	}

	roomDescDivHTML += "</span>";

	roomDescDivHTML += "</div>";

	roomDescDivHTML += "<br clear=\"all\"/>";

	roomDescDivHTML += "<div>" + room.description + "</div>";


	roomDescDivHTML += "<br/>";

	if ( room.is_available )
	{
		roomDescDivHTML += '<div style="text-align: center;">';

		roomDescDivHTML += "<div><a class=\"boldText\" href=javascript:joinRoom(" + room.id + ");>" + ROOM_JOIN_LOCALIZED_IMG + "</a></div>";

		roomDescDivHTML += '<div class="smallText" style="margin-top: 5px; background-color: #fff; -moz-border-radius: 5px; -webkit-border-radius: 5px; width: 80%; margin: 10px auto;">';

		roomDescDivHTML += '<b>' + _("Display mode") + ':</b><br/>';

		roomDescDivHTML += '<span class="gameWindowMode normal">';
		roomDescDivHTML += '<a href="javascript:setGameWindowMode(\'normal\');">' + _("Normal") + '</a>';
		roomDescDivHTML += '</span>';

		roomDescDivHTML += ', ';
		roomDescDivHTML += _("or in a popup") + ': ';
/*
		roomDescDivHTML += '<span class="gameWindowMode small">';
		roomDescDivHTML += '<a href="javascript:setGameWindowMode(\'small\');">' + _("Small") + '</a>';
		roomDescDivHTML += '</span>';

		roomDescDivHTML += ' - ';
*/
		roomDescDivHTML += '<span class="gameWindowMode medium">';
		roomDescDivHTML += '<a href="javascript:setGameWindowMode(\'medium\');">' + _("Medium") + '</a>';
		roomDescDivHTML += '</span>';

		roomDescDivHTML += ' - ';

		roomDescDivHTML += '<span class="gameWindowMode big">';
		roomDescDivHTML += '<a href="javascript:setGameWindowMode(\'big\');">' + _("Big") + '</a>';
		roomDescDivHTML += '</span>';
		
		if( playerLevel >= 15 )
		{
			roomDescDivHTML += '<br /><br /><b>' + _("Game version") + ':</b><br/>';
			roomDescDivHTML += '<a href="javascript:setGameVersion(\'standard\');" class="gameVersion standard">' + _("Standard") + '</a>';
			roomDescDivHTML += '&nbsp;-&nbsp;';
			roomDescDivHTML += '<a href="javascript:setGameVersion(\'beta\');" class="gameVersion beta">' + _("Beta") + ' (' + betaNumber + ')</a>';
		}

		roomDescDivHTML += '</div>';

		roomDescDivHTML += "<span id=playRoom" + room.id + "Link class=boldText></span>";
		roomDescDivHTML += '</div>';
	}
	else
	{
		roomDescDivHTML += "<center><b>" + _("You cannot access this room.") + "</b></center>";
	}

	roomDescDivHTML += "</div>";

	$("roomDescDiv").set('html',  roomDescDivHTML);

	setGameWindowMode(window.gameWindowMode, true);
	setGameVersion(window.gameVersion, true);
}

function autoSelect(id_room)
{
	$("roomListDiv").getChildren().each(
		function (ele)
		{
			if (ele.roomObj.id == id_room) selectRoom(ele);
		}
		);
}

function showFirstHelp()
{
	darkenPopup(displayFirstHelpPopup);
}

function displayFirstHelpPopup()
{
	var imgWidth = 739;
	var imgHeight = 508;
	var tmpLeft = (window.getWidth() - imgWidth) / 2;
	var tmpTop = (window.getHeight() - imgHeight) / 2;

	if ( tmpLeft < 10 ) tmpLeft = 10;
	if ( tmpTop < 10 ) tmpTop = 10;

	if ( $("firstHelpContent") )
	{
		$("firstHelpContent").dispose();
	}

	var div = new Element("div");
	div.setProperty("id","firstHelpContent");
	div.style.position = "absolute";
	div.style.zIndex = 1000;

	div.style.left = tmpLeft + "px";
	div.style.top = tmpTop + "px";

	getDarkDiv().getParent().adopt( div );
	getDarkDiv().addEvent("click", closeFirstHelp );

	setFirstHelpPopupStep(1);
}

function closeFirstHelp()
{
	$("darkPopup").style.display = "none";
	$("firstHelpContent").style.display = "none";
}

function setFirstHelpPopupStep(step)
{
	if ( step <= 3 ) ajax_loadContent("firstHelpContent", "/ajaxcontent/firsthelp/?step=" + step);
	else closeFirstHelp();
}

function deactivateAction()
{
	new Request({'url': "/ajax/deactivate_player.php"}).send();
}

function refresh_topban()
{

	if ( $("animationDiv") )
	{
		 $("animationDiv").src = "banners.php?rnd=" + Math.random();
	}
	else
	{
		clearInterval(timer);
	}
}


function updateNextTournament()
{
	var nowUtime = new Date().getTime();
	var millisecToGo = 0;
	var minuteToGo = 0;

	var textToDisplay = "refresh the page";

	var indexNextTournament = -1;
	var timeToNextTournament = -1;

	var hasTracker = $chk( $("tournamentTracker") );

	for ( var i = 0; i < tournamentStarts.length; ++i)
	{
		if ( tournamentStarts[i] < nowUtime && tournamentEnds[i] > nowUtime )
		{
			minuteToGo = Math.round((tournamentEnds[i] - nowUtime) / 1000 / 60);

		 	textToDisplay = getString( _("Tournament in progress! <span class=boldText>@0@ min</span> remaining."), [minuteToGo]);
			if ( hasTracker && room.option_ranked ) ajax_loadContent("tournamentTracker","/ajaxcontent/tournament/tracker.php?rnd=" + nowUtime );
			break;
		}
		else if ( tournamentStarts[i] > nowUtime && (timeToNextTournament == -1 || tournamentStarts[i] < timeToNextTournament) )
		{
			timeToNextTournament = tournamentStarts[i];
			indexNextTournament = i;
			if ( hasTracker ) $('tournamentTracker').set('html', "");
		}
	}

	if ( indexNextTournament != -1 )
	{
		minuteToGo = Math.round((tournamentStarts[indexNextTournament] - nowUtime) / 1000 / 60);

		textToDisplay = getString( _("Next tournament in <span class=boldText>@0@ min</span>."), [minuteToGo]);
	}

	$("tournamentTimer").set('html',  textToDisplay );

	ID = updateNextTournament.delay( (hasTracker?90000:60000) );
}

function updateDeathmatch()
{
	if ( $chk( $("deathmatchTracker") ) )
	{
		ajax_loadContent("deathmatchTracker","/ajaxcontent/deathmatch/tracker.php?rnd=" + new Date().getTime() );
	}
}

/*
var Ape_test = new Class({

	Implements: [Ape_client, Options],
	options:{
		container: document.body,
		logs_limit:10
	},


	initialize: function(core, options){

			this._core = core;

	//		this.setOptions(options);
			this.els = {};

			this.add_event("raw_refreshnotif", this.raw_data);

			this._core.start();
		},

		raw_data: function(raw, pipe){
			refreshNotificationInFlash();
		}
	});
*/

function refreshNotificationInFlash()
{
	try
	{
		$("gameflash").refreshNotification();
	}
	catch(e)
	{

	}
}