﻿var m_DestinationDiv;
var m_DisplayName = true;
var m_DisplayDescription = true;
var m_DisplayStatus = true;
var m_DisplayNbPlayers = false;
var m_DisplayNbMaxPlayers = false;
var m_DisplayNbPlayersOverNbMaxPlayers = false;
var m_DisplayStartTime = false;
var m_DisplayEndTime = false;
var m_DisplayTimeElapsed = true;
var m_DisplayIsScored = true;
var m_DisplayIsPrivate = true;
var m_DisplayCanLookAt = true;
var m_DisplayPercentageOfProgress = false;
var m_DisplayPercentageOfProgressAsProgressBar = true;
var m_DisplayPlayers = true;
var m_ModeratorLevel = 0;
var m_GameRoomId = 0;
var m_PopUpURL = "";
var m_LoginURL = "";
var m_HasToLogin = false;
var m_GameListTimeToRefresh = 6000;
var m_GameListRetries = 0;
var m_IsInGame = false;
var m_GamesListTimer = null;
var m_GamesListUserIdentifiant = "";

var StartGameInProgress = function()
{
    GameListTimerRefresh();
}

function OpenPopUpGame(url)
{
    window.open(url,"Mutu","scrollbars=no, menubar=no, resizable=1");
}

function StopParties()
{
//    if (m_GamesListTimer!=null)
//    {
//        clearInterval(m_GamesListTimer);
//    }
}

function RestartParties()
{
//    StopParties();
//    if (m_DestinationDiv != null)
//    {
//        GameListTimerRefresh();
//        m_GamesListTimer = setInterval("GameListTimerRefresh()", m_GameListTimeToRefresh);
//    }
}

function InitGameList(DestinationDivName, UserIdentifiant, DisplayName, DisplayDescription, DisplayStatus, DisplayNbPlayers, DisplayNbMaxPlayers, DisplayNbPlayersOverNbMaxPlayers, DisplayStartTime, DisplayEndTime, DisplayTimeElapsed, DisplayIsScored, DisplayIsPrivate, DisplayCanLookAt, DisplayPercentageOfProgress, DisplayPercentageOfProgressAsProgressBar, DisplayPlayers, ModeratorLevel, GameRoomId, PopUpURL, LoginURL, HasToLogin, timeToRefresh)
{
    m_DestinationDiv = document.getElementById(DestinationDivName);
    m_GamesListUserIdentifiant = UserIdentifiant;
    m_DisplayName = DisplayName;
    m_DisplayDescription = DisplayDescription;
    m_DisplayStatus = DisplayStatus;
    m_DisplayNbPlayers = DisplayNbPlayers;
    m_DisplayNbMaxPlayers = DisplayNbMaxPlayers;
    m_DisplayNbPlayersOverNbMaxPlayers = DisplayNbPlayersOverNbMaxPlayers;
    m_DisplayStartTime = DisplayStartTime;
    m_DisplayEndTime = DisplayEndTime;
    m_DisplayTimeElapsed = DisplayTimeElapsed;
    m_DisplayIsScored = DisplayIsScored;
    m_DisplayIsPrivate = DisplayIsPrivate;
    m_DisplayCanLookAt = DisplayCanLookAt;
    m_DisplayPercentageOfProgress = DisplayPercentageOfProgress;
    m_DisplayPercentageOfProgressAsProgressBar = DisplayPercentageOfProgressAsProgressBar;
    m_DisplayPlayers = DisplayPlayers;
    m_ModeratorLevel = ModeratorLevel;
    m_GameRoomId = GameRoomId;
    m_PopUpURL = PopUpURL;
    m_LoginURL = LoginURL;
    m_HasToLogin = HasToLogin;
    m_GameListTimeToRefresh = timeToRefresh;
}

function RenderGameInProgress(tab)
{
    if (tab==null) return "";

    var str = "";
    
    str += "<div class=\"gameInProgress\">";
    str += "<div class=\"gameInProgressHeader\">";
    
    var IsScored = false;
    var IsPrivate = false;
    var CanLookAt = true;
    var IsSafe = false;
    var IsModo = false;
    
    if (typeof(PingStateLevel) != "undefined" && PingStateLevel>1) IsModo = true;
    
    if (tab[7]=="")
    {
        //nouvelle version
        if (tab[9].indexOf("c1") != -1) IsScored = true;
        if (tab[9].indexOf("p1") != -1) IsPrivate = true;
        if (tab[9].indexOf("v0") != -1) CanLookAt = false;
        if (tab[9].indexOf("s1") != -1) IsSafe = true;
    }
    else
    {
        //ancienne version
        if (tab[7] == "true" || tab[7] == "True" || tab[7] == "1") IsScored = true;
        if (tab[8] == "true" || tab[8] == "True" || tab[8] == "1") IsPrivate = true;
        if (tab[9] == "false" || tab[9] == "False" || tab[9] == "0") CanLookAt = false;
    }

    if (m_DisplayIsScored && IsScored)
        str += "<img src=\"http://data.jeuxclassiques.com/designs/images/starSansFond.gif\" border=\"0\" title=\"partie class&eacute;e\" />";

    if (m_DisplayIsPrivate && IsPrivate)
        str += "<img src=\"http://data.jeuxclassiques.com/designs/images/cadenas.gif\" border=\"0\" title=\"partie priv&eacute;e\" />";        
        
    if (IsSafe)
        str += "<img src=\"http://data.jeuxclassiques.com/designs/images/interdit.gif\" border=\"0\" title=\"partie r&eacute;serv&eacute;e aux joueurs s&ucirc;rs\" />";        
    
    if (m_DisplayName)
        str += "<span class=\"gameInProgressName\">" + tab[5] + "</span>&nbsp;-&nbsp;";

    if (m_DisplayStatus)
        str += "<span class=\"gameInProgressStatus\">" + tab[0] + "</span>";
        
    if (IsModo && m_GameRoomId != 30501) str += "<a href=\"http://moderation2.jeuxclassiques.com/Moderation/SuppressionSession.aspx?IDSession="+tab[3]+"\" target=\"_blank\"><img src=\"http://data.jeuxclassiques.com/designs/images/delete_session.gif\" border=\"0\" /></a>&nbsp;-&nbsp;" + tab[3];
        
    if (m_DisplayName || m_DisplayStatus) str += "<br/>";

    if (m_DisplayDescription)
        str += "<span class=\"gameInProgressDescription\">" + tab[6] + "</span>";

    if (m_DisplayDescription) str += "<br/>";

    if (m_DisplayNbPlayers)
        str += "<span class=\"gameInProgressNbPlayers\">" + tab[11] + "</span>";

    if (m_DisplayNbMaxPlayers)
        str += "<span class=\"gameInProgressNbMaxPlayers\">" + tab[12] + "</span>";

    if (m_DisplayNbPlayersOverNbMaxPlayers)
        str += "<span class=\"gameInProgressNbPlayersOverNbMaxPlayers\">" + tab[11] + "/" + tab[12] + "</span>";

    if (m_DisplayNbPlayers || m_DisplayNbMaxPlayers || m_DisplayNbPlayersOverNbMaxPlayers) str += "<br/>";

    if (m_DisplayStartTime)
        str += "<span class=\"gameInProgressStartTime\">" + tab[1] + "</span>";

    if (m_DisplayEndTime)
        str +="<span class=\"gameInProgressEndTime\">" + tab[2] + "</span>";

    if (m_DisplayTimeElapsed)
    {

    }

    if (m_DisplayPercentageOfProgress)
        str += "<span class=\"gameInProgressPercentageOfProgress\">" + tab[10] + "</span>";

    if (m_DisplayPercentageOfProgressAsProgressBar)
    {
        str += "<span class=\"gameInProgressPercentageOfProgressAsProgressBar\">";

        str += GetProgressBar(0, 100, tab[10], "ProgressBar", "");

        str += "</span>";
    }

    //fin du div GameInProgressHeader
    str += "</div>";
    
    var bPartieOuverte = false;
    
    if (m_DisplayPlayers)
    {
        str +="<div class=\"gameInProgressPlayers\">";

        for (i = 0; i < tab[12]; i++)
        {            
            if (tab[13 + 2 * i] != null && tab[13 + 2 * i] != "")
            {
                if (tab[13 + 2 * i] == "--IDRESERVED--")
                {
                    if (tab[13 + 2 * i + 1] == m_GamesListUserIdentifiant)
                    {
                        //place libre et réservée pour le joueur
                        if(!m_HasToLogin)
                        {
                            //la personne est identifiée
                            str += "<div class=\"gameInProgressPlayersFree\" style=\"color:blue;\"><a href=\"javascript:OpenPopUpGame('" + m_PopUpURL + "&idGame=" + tab[3] + "&role=" + i + "')\">RESERVEE</a></div>";
                        }
                        else
                        {
                            //la personne n'est pas identifiée => lien vers page d'identification
                            str += "<div class=\"gameInProgressPlayersFree\"><a href=\"" + m_LoginURL + "\">JOUER</a></div>";
                        }
                    }
                    else
                    {
                        //place libre et réservée pour un autre joueur
                        str += "<div class=\"gameInProgressPlayersOccuped\">- réservée -</div>";
                    }
                }
                else
                {
                    //place occupée
                    str += "<div class=\"gameInProgressPlayersOccuped\">" + tab[13 + 2 * i + 1] + "</div>";
                }
                //déjà dans une partie ?
                if (tab[13 + 2 * i]=="-1") m_IsInGame = true;
            }
            else
            {
                bPartieOuverte = true;
                //place libre
                if(!m_HasToLogin)
                {
                    //la personne est identifiée
                    str += "<div class=\"gameInProgressPlayersFree\"><a href=\"javascript:OpenPopUpGame('" + m_PopUpURL + "&idGame=" + tab[3] + "&role=" + i + "')\">JOUER</a></div>";
                }
                else
                {
                    //la personne n'est pas identifiée => lien vers page d'identification
                    str += "<div class=\"gameInProgressPlayersFree\"><a href=\"" + m_LoginURL + "\">JOUER</a></div>";
                }
            }
        }

        //fin du div gameInProgressPlayers
        str += "</div>";
    }

    str += "<div class=\"gameInProgressFooter\">";
    
    if (!m_IsInGame && ((m_DisplayCanLookAt && !bPartieOuverte) || IsModo))
    {
        if (!CanLookAt  && !IsModo)
        {
            str += "&nbsp;";
        }
        else
        {
            var DivText3 = "<a style=\"text-decoration:underline;\" href=\"javascript:OpenPopUpGame('" + m_PopUpURL + "&idGame=" + tab[3] + "&role=-1')\">Assister en tant que spectateur</a>";
            str += "<div style=\"clear:both;text-align:left;width:100%;font-size:0.8em;\"><span>" + DivText3 + "</span></div>";
        }
    }
    else
    {
        str += "&nbsp;";
    }

    //fin du div gameInProgressFooter
    str += "</div>";
    
    //fin du div gameInProgress
    str += "</div>";
    
    return str;
}

function SortGames(listGames)
{
	var placesLibres = new Array();
	for (var iGameSession=0;iGameSession<listGames.length;iGameSession++)
	{
		current_gs = listGames[iGameSession];
		if (current_gs != null)
		{
		    var nbLibres = 0;
		    var identplace;
		    for(var nb=0;nb<current_gs[12];nb++)
		    {
		        identplace = current_gs[13+2*nb];
			    if (identplace==null || identplace=="" || identplace=="-1" || identplace=="--IDRESERVED--") nbLibres++;
		    }
		    placesLibres[iGameSession]=nbLibres;
		}
		else
		{
		    placesLibres[iGameSession]=0;
		}
	}
	var itemp = 0;
	var ret = new Array();
	for (var iLibre=1; iLibre<=10; iLibre++)
	{
		for (var iGameSession=0;iGameSession<listGames.length;iGameSession++)
		{
			if (placesLibres[iGameSession]==iLibre) {ret[itemp++]=listGames[iGameSession];}
		}
	}
	for (var iGameSession=0;iGameSession<listGames.length;iGameSession++)
	{
		if (placesLibres[iGameSession]==0) {ret[itemp++]=listGames[iGameSession];}
	}
	return ret;
}

function IsGameOuverte(game)
{
    if (game==null) return -1;
    //partie déjà commencée ?
    if (game[0] != "<b>En attente de joueurs...</b>") return -1;
    //partie privée ?
    if (game[8] != "false" && game[8] != "False" && game[8] != "0") return -1;
    for (i = 0; i < game[12]; i++)
    {            
        if (game[13 + 2 * i] == null || game[13 + 2 * i] == "") return i;
    }
    return -1;
}

function IsGameForProfil(game)
{
    if (game==null) return null;
    for (i = 0; i < game[12]; i++)
    {            
        if (game[13 + 2 * i] != null && game[13 + 2 * i] != "")
        {
            for (var k=0; k<VdcInfosProfilsMatch.length; k++)
            {
                if (VdcInfosProfilsMatch[k] == game[13 + 2 * i])
                {
                    var arr = new Array();
                    arr[0] = game[13 + 2 * i];
                    arr[1] = game[13 + 2 * i + 1];
                    arr[2] = i;
                    return arr;
                }
            }
        }
    }
    return null
}

function CheckGameForProfil(games)
{
    var divRejoindre = document.getElementById("divRejoindrePartieProfil");
    if (divRejoindre == null) return;
    divRejoindre.style.visibility = "hidden";

    if (games==null || games.length == 0) return;
    if (m_IsInGame || m_HasToLogin) return;
    if (typeof(VdcInfosProfilsMatch) == "undefined" || VdcInfosProfilsMatch == null || VdcInfosProfilsMatch.length == 0) return;

    for (var igame=0; igame<games.length; igame++)
    {
        var game = games[igame];
        var iPlace = IsGameOuverte(game);
        if (iPlace != -1)
        {
            var tJoueur = IsGameForProfil(game);
            if (tJoueur != null)
            {
                var url = "javascript:OpenPopUpGame('" + m_PopUpURL + "&idGame=" + game[3] + "&role=" + iPlace + "')";
                divRejoindre.style.visibility = "visible";
                divRejoindre.innerHTML = "<a href=\"" + url + "\" style=\"font-weight:bold;font-size:12px;border: solid 2px red;padding:0px 2px 2px 2px;\">Suggestion : jouer avec " + tJoueur[1];
                return;
            }
        }
    }
}

function OnGetGamesInProgressComplete(result)
{
    m_DestinationDiv.innerHTML = "";
    m_IsInGame = false;
    if (result != null && result.length > 0)
    {
        if (m_GameRoomId != 30501) result = SortGames(result);
        var res = "";
        for (var i=0; i<result.length; i++)
        {
            res += RenderGameInProgress(result[i]);
        }
        m_DestinationDiv.innerHTML = res;
    }
    else
    {
        m_DestinationDiv.innerHTML += "Aucune partie en cours.";
    }
    CheckGameForProfil(result);
}

function OnGetGamesInProgressComplete2(result)
{
    m_DestinationDiv.innerHTML = "";
    m_IsInGame = false;
    if (result != null && result.length > 0)
    {
        if (m_GameRoomId != 30501) result = SortGames(result);
        var res = "";
        for (var i=0; i<result.length; i++)
        {
            res += RenderGameInProgress(result[i]);
        }
        m_DestinationDiv.innerHTML = res;
    }
    else
    {
        m_DestinationDiv.innerHTML += "Aucune partie en cours.";
    }
    CheckGameForProfil(result);
}

function OnGetGamesInProgressTimeOut(result)
{
    m_DestinationDiv.innerHTML = "Merci d'actualiser la liste des parties.";
    CheckGameForProfil(result);
    return;
}

function OnGetGamesInProgressTimeOut2(result)
{
    m_DestinationDiv.innerHTML = "Merci d'actualiser la liste des parties.";
    CheckGameForProfil(result);
    return;
}

function GameListTimerRefresh()
{
    if (typeof(GamesService) != "undefined")
    {
        m_GameListRetries = 0;
        GamesService.GetGamesInProgress(m_GameRoomId, OnGetGamesInProgressComplete, OnGetGamesInProgressTimeOut);
        if (m_IsInGame) setTimeout("GameListTimerRefresh()", m_GameListTimeToRefresh * 6);
        else setTimeout("GameListTimerRefresh()", m_GameListTimeToRefresh);
    }
    else
    {
        if (m_GameListRetries < 10)
        {
            m_GameListRetries++;
            m_DestinationDiv.innerHTML = "Chargement de la liste des parties...";
            setTimeout("GameListTimerRefresh()", 1000 * m_GameListRetries);
        }
        else
        {
            //trop de tentatives
            m_DestinationDiv.innerHTML = "Merci d'actualiser la liste des parties..";
        }
    }
}

function GameListRefresh()
{
    if (typeof(GamesService) != "undefined")
    {
        m_DestinationDiv.innerHTML = "Chargement de la liste des parties...";
        GamesService.GetGamesInProgress(m_GameRoomId, OnGetGamesInProgressComplete2, OnGetGamesInProgressTimeOut2);
    }
    else
    {
        m_DestinationDiv.innerHTML = "Merci d'actualiser liste parties.";
    }
}

/* POKER */

var m_PokerdivJetons;
var m_PokerIdentifiant;
function InitPoker(divJetons, identifiant)
{
    m_PokerIdentifiant = identifiant;
    m_PokerdivJetons = document.getElementById(divJetons);
    window.setTimeout("RefreshPokerJetons();", 1000);
    window.setInterval("RefreshPokerJetons();", 15000);
}

function RefreshPokerJetons()
{
    if (m_PokerdivJetons != null)
    {
        if (typeof(GamesService) != "undefined")
        {
            GamesService.GetJetonsJoueur(m_PokerIdentifiant, OnGetJetonsPokerComplete, OnGetJetonsPokerError, OnGetJetonsPokerError);
        }
    }
}
function OnGetJetonsPokerComplete(result)
{
    if (result!=null)
    {
        if (result == -1)
        {
            //erreur
            return;
        }
        if (result == -2)
        {
            //recave
            m_PokerdivJetons.innerHTML = "<a href=\"javascript:Recave();\">Recaver</a>";
            return;
        }
        m_PokerdivJetons.innerHTML = "Vous avez " + result + " jetons en r&eacute;serve";
    }
}
function OnGetJetonsPokerError(result)
{
    m_PokerdivJetons.innerHTML = "erreur !";
}

function Recave()
{
    if (m_PokerdivJetons != null)
    {
        if (typeof(GamesService) != "undefined")
        {
            GamesService.RecavePoker(m_PokerIdentifiant, OnRecaveComplete, OnRecaveError, OnRecaveError);
        }
    }
}
function OnRecaveComplete(result)
{
    OnGetJetonsPokerComplete(result);
}
function OnRecaveError(result)
{
    OnGetJetonsPokerError(result);
}

/* FRICTIFFS */

var m_Identifiant;
var m_DivFrictiffs;
function InitFrictiffs(identifiant, divFrictiffs)
{
    m_Identifiant = identifiant;
    m_DivFrictiffs = document.getElementById(divFrictiffs);
    window.setTimeout("RefreshFrictiffs();", 1000);
    window.setInterval("RefreshFrictiffs();", 15000);
}

function RefreshFrictiffs()
{
    if (m_DivFrictiffs != null)
    {
        if (typeof(GamesService) != "undefined")
        {
            GamesService.GetFrictiffsJoueur(m_Identifiant, OnGetFrictiffsComplete, OnGetFrictiffsError, OnGetFrictiffsError);
        }
    }
}

function OnGetFrictiffsComplete(result)
{
    if (result!=null) m_DivFrictiffs.innerHTML = "Vous poss&eacute;dez " + result + " Frictiffs";
}
function OnGetFrictiffsError(result)
{
    m_DivFrictiffs.innerHTML = "Vous n'avez pas acc&egrave;s aux Frictiffs";
}
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();