var VdcInfosId;
var VdcInfosRoom;
var VdcInfosControl;
var VdcInfosDiv;
var VdcInfosTimeToRefresh;
var VdcInfosRetries = 0;
var VdcInfosMyResult = null;
var VdcInfosTimer = null;
var VdcInfosProfilsMatch;

var StartVdcInfos = function()
{
    if (VdcInfosDiv != null)
    {
        //VdcInfosTimerRefresh();
        //RestartVdcInfos();
        
        var divStats = document.getElementById("InfosProfils");
        if (divStats != null)
        {
            UpdateStats();
        }
    }
}

function StopVdcInfos()
{
    if (VdcInfosTimer!=null)
    {
        clearInterval(VdcInfosTimer);
    }
}

function RestartVdcInfos()
{
    StopVdcInfos();
    if (VdcInfosDiv != null)
    {
        VdcInfosDiv.innerHTML = "Chargement des informations sur les utilisateurs...";
        VdcInfosTimerRefresh();
        VdcInfosTimer = setInterval("VdcInfosTimerRefresh()", VdcInfosTimeToRefresh);
    }
}

function VdcInfosInit(id, salle, control, div, timeToRefresh)
{
    VdcInfosId = id;
    VdcInfosRoom = salle;
    VdcInfosControl = control;
    VdcInfosDiv = document.getElementById(div);
    VdcInfosTimeToRefresh = timeToRefresh;
}

function VdcInfosTimerRefresh()
{
    VdcInfosProfilsMatch = new Array();
    if (typeof(VdcInfosService) != "undefined")
    {
        VdcInfosRetries = 0;
        VdcInfosService.GetInformation(VdcInfosId, VdcInfosControl, MyInfosSuccess, MyInfosError, MyInfosTimeout);
        setTimeout("VdcInfosService.GetInformations(VdcInfosId, VdcInfosRoom, VdcInfosControl, VdcInfosTimerRefreshSuccess, VdcInfosTimerRefreshError, VdcInfosTimerRefreshTimeout);", 1000);
        //setTimeout("VdcInfosTimerRefresh();", VdcInfosTimeToRefresh);
    }
    else
    {
        if (VdcInfosRetries < 10)
        {
            VdcInfosRetries++;
            VdcInfosDiv.innerHTML = "Chargement des informations sur les utilisateurs...";
            //setTimeout("VdcInfosTimerRefresh()", 1000 * VdcInfosRetries);
        }
        else
        {
            //trop de tentatives
            VdcInfosDiv.innerHTML = "Merci d'actualiser la page.";
            StopVdcInfos();
        }
    }
    
}

function MyInfosSuccess(result) {
    if (result != null)
    {
        VdcInfosMyResult = result;
        if (result.Sexe=="" && result.Age=="" && result.Musique=="" && result.Ville=="")
        {
            document.getElementById("YourProfil").innerHTML = "<a href=\"http://www.mescorrespondances.fr\" target=\"_blank\">Pensez &agrave; compl&eacute;ter votre profil !</a>";
        }
        else
        {
            document.getElementById("YourProfil").innerHTML = result.Sexe + ", " + result.Age + " ans, " + result.Musique + ", " + result.Ville ;
        }
    }
    else
    {
        document.getElementById("YourProfil").innerHTML = "Votre profil est cach&eacute;.";
    }
}
function MyInfosError(result) {return;}
function MyInfosTimeout(result) {return;}

function VdcInfosTimerRefreshError(result) {return;}
function VdcInfosTimerRefreshTimeout(result) {return;}

function CompareProfils(p1, p2)
{
    return (p1.Pseudo>=p2.Pseudo);
}

function CompareProfils2(p1, p2)
{
    return (p1.Pseudo<=p2.Pseudo);
}

function VdcInfosQuickSort(arr, low, high)
{
	if(low < high)
	{
		var i = low;
		var j = high;
		var pivot = arr[i];
		while(i<j) 
		{
			while(i<j && CompareProfils(arr[j],pivot))
				j--;
			if(i<j)
				arr[i++] = arr[j];
			while(i<j && CompareProfils2(arr[i],pivot))
				i++;
			if(i<j)
				arr[j--] = arr[i];
		}
		arr[i] = pivot;
		var pivotpos = i;
		VdcInfosQuickSort(arr, low, pivotpos-1);
		VdcInfosQuickSort(arr, pivotpos+1, high);
	} 
	else
	   return arr;
	return arr;
}

function VdcInfosSort(list)
{
    return VdcInfosQuickSort(list, 0, list.length - 1);
}

var VdcInfosResultTemp;
function VdcInfosTimerRefreshSuccess(result)
{
    if (result==null || result.length==0)
    {
        VdcInfosDiv.innerHTML = "pas de r&eacute;sultat";
        return;
    }
    VdcInfosResultTemp = result;
    setTimeout("VdcInfosTimerRefreshSuccessProcess();", 1000);
}
function VdcInfosTimerRefreshSuccessProcess()
{
    var modeCourt = false;
    var str = "";
    var result = VdcInfosResultTemp;
    
    result = VdcInfosSort(result);
    
    if (modeCourt)
    {
        for(var i = 0; i < result.length; i++)
        {
            str += result[i].Pseudo;
            if (result[i].Sexe != null && result[i].Sexe != "") str += ", " + result[i].Sexe;
            if (result[i].Age != null && result[i].Age != "") str += ", " + result[i].Age + " ans";
            if (result[i].Musique != null && result[i].Musique != "") str += ", " + result[i].Musique;
            if (result[i].Ville != null && result[i].Ville != "") str += ", " + result[i].Ville;
            str += "<br/>";
        }
    }
    else
    {
        var alternate = false;
        str += "<table>\n";
        str += "<tr class=\"ProfilTitle\">\n";
        str += "<th class=\"ProfilPseudo\">Pseudo</th>\n";
        str += "<th class=\"ProfilSexe\">Genre</th>\n";
        str += "<th class=\"ProfilAge\">Age</td>\n";
        str += "<th class=\"ProfilMusique\">Musique pr&eacute;f&eacute;r&eacute;e</th>\n";
        str += "<th class=\"ProfilVille\">Ville la plus proche</th>\n";
        str += "</tr>\n";
        for(var i = 0; i < result.length; i++)
        {
            var s = AddVdcInfosNewUser(result[i], alternate); 
            if (s != null && s != "")
            {
                str += s;
                alternate = !alternate;
            }
        }
        str += "</table>\n";
    }
    VdcInfosDiv.innerHTML = str;
}

function AgeComp(a1, a2)
{
    if (a1 == null || a1 == "" || a2 == null || a2 == "") return false;
    var ia1 = parseInt(a1);
    var ia2 = parseInt(a2);
    var d = ia1-ia2;
    if (d<10 && d>-10) return true;
    return false;
}

function AddVdcInfosNewUser(user, alternate)
{
    if (user==null) return "";
    if (user.Pseudo==null || user.Pseudo=="") return "";
    
    if (VdcInfosMyResult!=null && VdcInfosMyResult.Identifiant==user.Identifiant) return "";
    
    var strTmp = "";
    
    var nbId = 0;
    
    strTmp += "<td class=\"ProfilPseudo\">" + user.Pseudo + "</td>\n";
    
    if (user.Sexe != null && user.Sexe != "")
    {
        if (VdcInfosMyResult != null && VdcInfosMyResult.Sexe == user.Sexe)
            strTmp += "<td class=\"ProfilSexeMatch\">" + user.Sexe + "</td>\n";
        else
        {
            strTmp += "<td class=\"ProfilSexe\">" + user.Sexe + "</td>\n";
            nbId++;
        }
    }
    else
    {
        strTmp += "<td class=\"ProfilSexeVide\">&nbsp;</td>\n";
    }
    
    if (user.Age != null && user.Age != "")
    {
        if (VdcInfosMyResult != null && AgeComp(VdcInfosMyResult.Age, user.Age))
        {
            strTmp += "<td class=\"ProfilAgeMatch\">" + user.Age + " ans</td>\n";
            nbId++;
        }
        else
            strTmp += "<td class=\"ProfilAge\">" + user.Age + " ans</td>\n";
    }
    else
    {
        strTmp += "<td class=\"ProfilAgeVide\">&nbsp;</td>\n";
    }
    
    if (user.Musique != null && user.Musique != "")
    {
        if (VdcInfosMyResult != null && VdcInfosMyResult.Musique == user.Musique)
        {
            strTmp += "<td class=\"ProfilMusiqueMatch\">" + user.Musique + "</td>\n";
            nbId++;
        }
        else
            strTmp += "<td class=\"ProfilMusique\">" + user.Musique + "</td>\n";
    }
    else
    {
        strTmp += "<td class=\"ProfilMusiqueVide\">&nbsp;</td>\n";
    }
    
    if (user.Ville != null && user.Ville != "")
    {
        if (VdcInfosMyResult != null && VdcInfosMyResult.Ville == user.Ville)
        {
            strTmp += "<td class=\"ProfilVilleMatch\">" + user.Ville + "</td>\n";
            nbId++;
        }
        else
            strTmp += "<td class=\"ProfilVille\">" + user.Ville + "</td>\n";
    }
    else
    {
        strTmp += "<td class=\"ProfilVilleVide\">&nbsp;</td>\n";
    }
   
    if (nbId>=3)
    {
        VdcInfosProfilsMatch[VdcInfosProfilsMatch.length] = user.Identifiant;
        return "<tr class=\"ProfilMatch\">\n" + strTmp + "</tr>\n";
    }
    else
    {
        var compClass = "";
        if (alternate) compClass = " ProfilAlternate";
        return "<tr class=\"" + compClass + "\">\n" + strTmp + "</tr>\n";
    }
}

var UpdateStatsStop = false;
function StopStats() {
    UpdateStatsStop=true;
    document.getElementById("InfosProfils").innerHTML = "";
}
function UpdateStatsSuccess(result) {
    document.getElementById("InfosProfils").innerHTML = "<a href=\"javascript:StopStats();\" style=\"font-size:0.8em;font-style:italic;\">cliquez-ici pour arr&ecirc;ter l'affichage des Faire-Parts<a><br/>" + result;
}
function UpdateStatsError(result) {}
function UpdateStatsTimeout(result) {}

function UpdateStats()
{
    var divStats = document.getElementById("InfosProfils");
    if (!UpdateStatsStop && divStats != null)
    {
        if (typeof(VdcInfosService) != "undefined")
        {
            VdcInfosService.GetStats(VdcInfosId, VdcInfosRoom, VdcInfosControl, UpdateStatsSuccess, UpdateStatsError, UpdateStatsTimeout)
        }
        setTimeout("UpdateStats();", 60000);
    }
}
function OpenAnnonces()
{
    window.open('GestionAnnonces.aspx', 'Annonce', 'scrollbars=yes, menubar=no, resizable=1, height=600, width=460');
}

//////////////////////////////////////////////////////////////////////////
function StartInfosAvailable()
{
    if (VdcInfosDiv != null)
    {
        InfosAvailableTimerRefresh();
    }
}
function RestartInfosAvailable()
{
    VdcInfosDiv.innerHTML = "Chargement des informations sur les utilisateurs...";
    InfosAvailableTimerRefresh();
    VdcInfosTimer = setInterval("InfosAvailableTimerRefresh()", VdcInfosTimeToRefresh);
}

function InfosAvailableTimerRefresh()
{
    if (typeof(VdcInfosService) != "undefined")
    {
        VdcInfosRetries = 0;
        VdcInfosService.GetAllProfilsAvailable(VdcInfosId, VdcInfosControl, InfosAvailableTimerRefreshSuccess, InfosAvailableTimerRefreshError, InfosAvailableTimerRefreshTimeout);
    }
    else
    {
        if (VdcInfosRetries < 10)
        {
            VdcInfosRetries++;
            VdcInfosDiv.innerHTML = "Chargement des informations sur les utilisateurs...";
        }
        else
        {
            VdcInfosDiv.innerHTML = "Merci d'actualiser la page.";
        }
    }
    
}

function InfosAvailableTimerRefreshError(result) {return;}
function InfosAvailableTimerRefreshTimeout(result){return;}
function InfosAvailableTimerRefreshSuccess(result)
{
    if (result==null || result.length==0)
    {
        VdcInfosDiv.innerHTML = "pas de r&eacute;sultat";
        return;
    }

    var alternate = false;
    var str = "";
    str += "<table>\n";
    str += "<tr class=\"ProfilTitle\">\n";
    str += "<th class=\"ProfilPseudo\">Pseudo</th>\n";
    str += "<th class=\"ProfilPseudo\">Salle</th>\n";
    str += "<th class=\"ProfilPseudo\">Disponible</th>\n";
    str += "</tr>\n";
    for(var i = 0; i < result.length; i++)
    {
        var s = AddInfosAvailableNewUser(result[i], alternate); 
        if (s != null && s != "")
        {
            str += s;
            alternate = !alternate;
        }
    }
    str += "</table>\n";
    VdcInfosDiv.innerHTML = str;
}
function AddInfosAvailableNewUser(user, alternate)
{
    if (user==null) return "";
    if (user.Pseudo==null || user.Pseudo=="") return "";
    
    if (user.IsAvailable != null && user.IsAvailable == "True" && user.RoomId != "-1")
    {
        var strTmp = "";
        strTmp += "<td class=\"ProfilPseudo\">" + user.Pseudo + "</td>\n";
        strTmp += "<td class=\"ProfilPseudo\">" + user.Room + "</td>\n";
        strTmp += "<td class=\"ProfilPseudo\"><a href=\"../salle.aspx?GameMode=multi&idGameRoom=" + user.RoomId + "\">rejoindre la salle</a></td>\n";
        var compClass = "";
        if (alternate) compClass = " ProfilAlternate";
        return "<tr class=\"" + compClass + "\">\n" + strTmp + "</tr>\n";
    }
    else
    {
        return "";
    }
}