﻿var RelationManager_Pseudo;
var RelationManager_Hash;
var RelationManager_ControlProp;
var RelationManager_ControlProp_Time;
var RelationManager_ControlProp_Subject;
var RelationManager_ControlProp_Raison;
var RelationManager_PopUpToaster;
var RelationManager_ControlToaster;
var RelationManager_ControlChatId;
var RelationManager_ControlChat;
var RelationManager_ChatUrl;
var RelationManager_TimeToRefresh;

var RelationManager_PropositionSubject = false;
var RelationManager_StillHaveToWait_Timer = null;

var RelationManager_OpenPopUp_IsWaiting = false;
var RelationManager_OpenPopUp_Flag = null;
var RelationManager_PopUp = null;

var RelationManager_ChatIndex = -1;
var RelationManager_ChatConversationId = null;
var RelationManager_ChatConversationDuration = null;
var RelationManager_ChatConversationTimeLeft = null;
var RelationManager_ChatConversationStop = false;

var RelationManager_Smileys = null;
var RelationManager_ChatHistory = null;
var RelationManager_ChatLabelStatus = null;
var RelationManager_ChatTextBox = null;
var RelationManager_ChatLabelStatus_Time = 1000;

var RelationManager_ChatGetLastMessages_Timer = null;

var RelationManager_ChatAppreciation = null;


Array.prototype.for_each= function(f,obj){

var lg = this.length;
var temp = this;
if(lg <= 0){

for(var i in this){
if(this[i] == Array.prototype[i])continue;
else if(this[i] == Object.prototype[i])continue;
else if(this[i] == Function.prototype[i])continue;
else if(this[i] == Boolean.prototype[i])continue;
else if(this[i] == RegExp.prototype[i])continue;
else if(this[i] == String.prototype[i])continue;
else if(this[i] == Date.prototype[i])continue;
else if(this[i] == Number.prototype[i])continue;
else if(!isNaN(i)) continue;
temp[lg] = {key:i,"value":this[i]};
lg++;
}

for (var i = 0; i < lg; i++) {
f.call(obj,temp[i].value, temp[i].key, this);
}
this.length = 0;
}
else{
for (var i = 0; i < lg; i++) {
f.call(obj,this[i], i, this);
}
}
//
}


/*---------- Init & StartWaiting ----------*/

function RelationManager_Init(pseudo, hash, controlStatus, controlProp, controlToaster, controlChat, chatUrl, timeToRefresh)
{
    if (pseudo != null)
        RelationManager_Pseudo = pseudo;
        
    if (hash != null)
        RelationManager_Hash = hash;

    if (controlProp != null)
    {
        RelationManager_ControlProp = document.getElementById(controlProp);
        RelationManager_ControlProp_Time = document.getElementById(controlProp + "_PropositionTime");
        RelationManager_ControlProp_Subject = document.getElementById(controlProp + "_PropositionSubject");
        RelationManager_ControlProp_Raison = document.getElementById(controlProp + "_PropositionRaison");
    }

    if (controlToaster != null)
    {
        RelationManager_ControlToaster = document.getElementById(controlToaster);
    }

    if (controlChat != null)
    {
        RelationManager_ControlChatId = controlChat;
        RelationManager_ControlChat = document.getElementById(controlChat);
    }
               
    if (chatUrl != null)
        RelationManager_ChatUrl = chatUrl;
        
    if (timeToRefresh != null)
        RelationManager_TimeToRefresh = timeToRefresh;
   
}

function RelationManager_InitSmileys(structSmileys)
{
    var ok = true;
    for(i = 0; i < structSmileys.length; i++)
    {
        if (structSmileys[i] == null || structSmileys[i].length != 2)
            ok = false;
    }
    if (ok)
        RelationManager_Smileys = structSmileys;

    for(i = 0; i < RelationManager_Smileys.length; i++)
    {
        RelationManager_Smileys[i][2] = RelationManager_Smileys[i][0].replace("(", "\\(");
        RelationManager_Smileys[i][2] = RelationManager_Smileys[i][2].replace(")", "\\)");
        RelationManager_Smileys[i][2] = RelationManager_Smileys[i][2].replace("$", "\\$");

        RelationManager_Smileys[i][3] = RelationManager_Smileys[i][0].replace("'", "\\'");

    }
}

function RelationManager_StartWaitingForProposition()
{
    if (RelationManager_ControlProp != null && RelationManager_ControlProp_Time != null && RelationManager_ControlProp_Subject != null && RelationManager_ControlProp_Raison != null)
    {
        if (RelationManager_ControlToaster != null)
            RelationManager_ControlToaster.className = "MessageToasterInvisible";

        RelationManager_CheckForNewProposition();
    }
}

function RelationManager_StartWaitingForChat()
{
    if (RelationManager_ControlChat != null)
    {
  
       if (navigator.appName != "Microsoft Internet Explorer")
            RelationManager_StillHaveToWait();
        else
            setTimeout("RelationManager_StillHaveToWait();", 1000); // On laisse le temps de fermer la popup si c'est IE
    }
}

function RelationManager_StartChatting()
{
    RelationManager_ChatHistory = document.getElementById("ChatInterface_History");
    RelationManager_ChatControls = document.getElementById("ChatInterface_Controls");
    RelationManager_ChatLabelStatus = document.getElementById("ChatInterface_Controls_SendStatus");
    RelationManager_ChatTextBox = document.getElementById("ChatInterface_Controls_TxtInput");
    RelationManager_ChatInterfaceTime = document.getElementById("ChatInterface_Time");

    if (RelationManager_ChatHistory != null && RelationManager_ChatControls != null && RelationManager_ChatLabelStatus != null && RelationManager_ChatTextBox != null && RelationManager_ChatInterfaceTime != null)
    {
        RelationManager_ChatGetConversationInformations();
        RelationManager_ChatGetLastMessages(true);
    }
}

/*---------- Fin Init & StartWaiting ----------*/








/*---------- Check For New Proposition ----------*/

function RelationManager_CheckForNewProposition()
{
    window.setTimeout("RelationManager_CheckForNewProposition();", RelationManager_TimeToRefresh);
    Vdc.Chat.WebServices.RelationManager.IsPropositionAvailableForUtilisateur(RelationManager_Pseudo, RelationManager_Hash, RelationManager_CheckForNewProposition_Success, RelationManager_CheckForNewProposition_TimeOut, RelationManager_CheckForNewProposition_Error);
}

function RelationManager_CheckForNewProposition_Success(proposition)
{
    if (proposition == null)
    {
        if (RelationManager_PropositionSubject != null)
        {
            RelationManager_PropositionSubject = null;
            RelationManager_ControlProp.style.display = "none";
            if (RelationManager_PopUpToaster != null)
            {
                RelationManager_PopUpToaster.close();
                RelationManager_PopUpToaster = null;
            }
            if (RelationManager_ControlToaster != null)
            {
                RelationManager_ControlToaster.className = "MessageToasterInvisible";
                RelationManager_ControlToaster.innerHTML = "";
            }
        }
    }
    else
    {
        if (proposition.texte != RelationManager_PropositionSubject)
        {
	        var x = screen.availWidth - 320;
	        var y = screen.availHeight - 105;
	        
	        if (navigator.appName == "Microsoft Internet Explorer")
                RelationManager_PopUpToaster = window.open('','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, top=' + y + ',left=' + x +', width=300, height=55');

            if (RelationManager_PopUpToaster != null)
            {
                RelationManager_PopUpToaster.document.write("<html><head><style>");
                RelationManager_PopUpToaster.document.write("body\n{font-size: 0.8em;\nline-height: 150%;\nfont-weight: bold;\ntext-align: justify;\nfont-family: \"trebuchet MS\" , tahoma, verdana, arial, helvetica, sans-serif;\npadding:5px;\nmargin: 0px;\n}\n");
                RelationManager_PopUpToaster.document.write(".TexteProposition, .ControlsProposition\n{\nfont-size: 0.9em;\ncolor: #6666AA;\npadding: 5px;\n}\n");
                RelationManager_PopUpToaster.document.write(".ControlsProposition\n{\nfont-size: 1.0em;\nfont-weight: bold;\ntext-align: center;\n}\n");
                RelationManager_PopUpToaster.document.write(".ControlsProposition a:link, .ControlsProposition a:visited, .ControlsProposition a:hover, .ControlsProposition a:active\n{\nmargin: 0px !important;\npadding: 0px 2px !important;\nfont-weight: bold;\n }\n");
                RelationManager_PopUpToaster.document.write(".ControlsPropositionOui\n{\ncolor: #41C457 !important;\n}\n");
                RelationManager_PopUpToaster.document.write(".ControlsPropositionNon\n{\ncolor: #e22b2b !important;\n}\n");
                RelationManager_PopUpToaster.document.write(".MessageToasterVisible\n{\nborder: 1px solid #A7A7A7;\nbackground-color: #ffffff;\"ncolor: #666666;\nfont-weight: bold;\npadding: 0px;\n}\n");
                
                RelationManager_PopUpToaster.document.write("</style></head><body>");
                
                var texte = proposition.texte.replace(/href="([/\.\:\S]*)"/g, "href=\"#\" onclick=\"window.opener.location='$1'; window.opener.focus(); window.close(); return false;\"");
                RelationManager_PopUpToaster.document.write("<div class=\"MessageToasterVisible\">\n<div class=\"ToasterText\">" + texte + "</div>\n<div class=\"ToasterControls\">Voulez-vous démarrer le chat ? <a class=\"ControlsPropositionOui\" onclick=\"window.opener.RelationManager_SetPropositionResponse(true); window.close(); return false;\" href=\"#\">OUI</a> <a class=\"ControlsPropositionNon\" onclick=\"window.opener.RelationManager_SetPropositionResponse(false); window.close(); return false;\" href=\"#\">NON</a></div>\n</div>\n");
                
                RelationManager_PopUpToaster.document.write("</body></html>");
            }

            if (RelationManager_PopUpToaster == null && RelationManager_ControlToaster != null)
            {
                RelationManager_ControlToaster.className = "MessageToasterVisible";
                RelationManager_ControlToaster.innerHTML = "<div class=\"ToasterText\">" + proposition.texte + "</div><div class=\"ToasterControls\">Voulez-vous démarrer le chat ? <a class=\"ControlsPropositionOui\" onclick=\"RelationManager_SetPropositionResponse(true); return false;\" href=\"#\">OUI</a> <a class=\"ControlsPropositionNon\" onclick=\"RelationManager_SetPropositionResponse(false); return false;\" href=\"#\">NON</a></div>";
            }
            RelationManager_PropositionSubject = proposition.texte;
            RelationManager_ControlProp_Subject.innerHTML = proposition.texte;
            RelationManager_ControlProp_Raison.innerHTML = "<span>" + proposition.raison + "</span>";
            RelationManager_ControlProp_Raison.className = "PropositionRaison Proposition_" + proposition.raison;
            RelationManager_ControlProp.style.display = "block";
        }
        RelationManager_ControlProp_Time.innerHTML = "&nbsp;" + proposition.tempsRestant + "s";
    }
}

function RelationManager_CheckForNewProposition_TimeOut()
{
}

function RelationManager_CheckForNewProposition_Error()
{
}

/*---------- Fin Check For New Proposition ----------*/




/*---------- PopUp ----------*/

function RelationManager_OpenPopUp()
{
    RelationManager_PopUp = window.open(RelationManager_ChatUrl,'_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=550, height=500');
   // RelationManager_PopUp = window.open(RelationManager_ChatUrl,'_blank','');

}

function RelationManager_OpenPopUp_Wait()
{
    if (RelationManager_OpenPopUp_Flag == null)
    {
        setTimeout("RelationManager_OpenPopUp_Wait();", 100);
    }
    else
    {
        if (RelationManager_OpenPopUp_Flag)
        {
            RelationManager_OpenPopUp();
        }
        RelationManager_OpenPopUp_Flag = null;
        RelationManager_OpenPopUp_IsWaiting = false;
    }
}

/*---------- Fin PopUp ----------*/




/*---------- Make Proposition ----------*/

function RelationManager_MakeProposition(otherPseudo, raison)
{
    if (!RelationManager_OpenPopUp_IsWaiting)
    {
        Vdc.Chat.WebServices.RelationManager.MakeProposition(RelationManager_Pseudo, RelationManager_Hash, otherPseudo, raison, RelationManager_MakeProposition_Success, RelationManager_MakeProposition_TimeOut, RelationManager_MakeProposition_Error);
        
//        if (navigator.appName != "Microsoft Internet Explorer")
//        {
//            RelationManager_OpenPopUp_IsWaiting = true;
//            RelationManager_OpenPopUp_Wait();
//        }
//        else
//        {
            RelationManager_OpenPopUp();
//        }
    }
}

function RelationManager_MakeProposition_Success(result)
{
    if (result)
    {
        RelationManager_OpenPopUp_Flag = true;
    }
    else
    {
//        if (navigator.appName == "Microsoft Internet Explorer")
//        {
            if (RelationManager_PopUp != null)
                RelationManager_PopUp.close();
//        }
        RelationManager_OpenPopUp_Flag = false;
        RelationManager_MakeProposition_DisplayNotPossibleAlert();
    }
}

function RelationManager_MakeProposition_TimeOut()
{
    RelationManager_MakeProposition_DisplayNotPossibleAlert();
}

function RelationManager_MakeProposition_Error()
{
    RelationManager_MakeProposition_DisplayNotPossibleAlert();
}

function RelationManager_MakeProposition_DisplayNotPossibleAlert()
{
    alert("Impossible de démarrer une conversation avec la personne choisie.\nVous pouvez réessayer plus tard ou tout de suite avec une autre personne");
}

/*---------- Fin Make Proposition ----------*/




/*---------- Set Proposition Response ----------*/

function RelationManager_SetPropositionResponse(response)
{
    if (!RelationManager_OpenPopUp_IsWaiting)
    {
        Vdc.Chat.WebServices.RelationManager.SetPropositionResponse(RelationManager_Pseudo, RelationManager_Hash, response, RelationManager_SetPropositionResponse_Success, RelationManager_SetPropositionResponse_TimeOut, RelationManager_SetPropositionResponse_Error);
        
        if (response)
        {
            if (navigator.appName != "Microsoft Internet Explorer")
            {
                RelationManager_OpenPopUp_IsWaiting = true;
                RelationManager_OpenPopUp_Wait();
            }
            else
            {
                RelationManager_OpenPopUp();
            }
        }
    }
}

function RelationManager_SetPropositionResponse_Success(result)
{
    if (result != null)
    {
        if (result)
            RelationManager_OpenPopUp_Flag = true;
        else
        {
            if (navigator.appName == "Microsoft Internet Explorer")
            {
                if (RelationManager_PopUp != null)
                    RelationManager_PopUp.close();
            }

            RelationManager_ControlProp.style.display = "none";
            RelationManager_OpenPopUp_Flag = false;
        }
    }
    else
    {
        RelationManager_MakeProposition_DisplayNotPossibleAlert();
        RelationManager_OpenPopUp_Flag = false;
    }
}

function RelationManager_SetPropositionResponse_TimeOut()
{
    RelationManager_MakeProposition_DisplayNotPossibleAlert();
}

function RelationManager_SetPropositionResponse_Error()
{
    RelationManager_SetPropositionResponse_DisplayNotPossibleAlert();
}

function RelationManager_SetPropositionResponse_DisplayNotPossibleAlert()
{
    alert("Une erreur s'est produite durant l'envoie de votre réponse.\nCette dernière n'a donc pas pu être prise en compte.");
}

/*---------- Fin Set Proposition Response ----------*/




/*---------- Still Have To Wait ----------*/

function RelationManager_StillHaveToWait()
{
    RelationManager_StillHaveToWait_Timer = window.setTimeout("RelationManager_StillHaveToWait();", RelationManager_TimeToRefresh);
    //alert(RelationManager_TimeToRefresh);
    Vdc.Chat.WebServices.RelationManager.StillHaveToWait(RelationManager_Pseudo, RelationManager_Hash, RelationManager_StillHaveToWait_Success, RelationManager_StillHaveToWait_TimeOut, RelationManager_StillHaveToWait_Error);
}

function RelationManager_StillHaveToWait_Success(result)
{
    if (result)
    {
        if (result == Vdc.Chat.WebServices.RelationManager_StatutPropositionConnection.ContinueWaiting)
        {
            RelationManager_ControlChat.innerHTML += ".";
        }
        else if (result == Vdc.Chat.WebServices.RelationManager_StatutPropositionConnection.StartChatting)
        {
            clearTimeout(RelationManager_StillHaveToWait_Timer);
            
            // Mise en place des controles pour le chat
            RelationManager_ControlChat.innerHTML = RelationManager_CreateChatInterface();
            
            // Démarrage des appels Web Services
            RelationManager_StartChatting();
        }
        else if (result == Vdc.Chat.WebServices.RelationManager_StatutPropositionConnection.ConnectionLost)
        {
            clearTimeout(RelationManager_StillHaveToWait_Timer);
            RelationManager_ControlChat.innerHTML = "D&eacute;sol&eacute;, la conversation avec votre correspondant n'a pas pu aboutir.";
        }
    }
    else
    {
        clearTimeout(RelationManager_StillHaveToWait_Timer);
        RelationManager_StillHaveToWait_DisplayNotPossibleAlert();
    }
}

function RelationManager_StillHaveToWait_TimeOut()
{
}

function RelationManager_StillHaveToWait_Error()
{
}

function RelationManager_StillHaveToWait_DisplayNotPossibleAlert()
{
    alert("Oups, il semblerait que les informations fournies soient incorrectes.");
}

/*---------- Fin Still Have To Wait ----------*/




/*---------- Create Chat Interface ----------*/

function RelationManager_CreateChatInterface()
{
    var str = "";

    str += "<div id=\"ChatInterface\">\n";
    
    str += "<div id=\"ChatInterface_Time\">\n";
    str += "</div>\n";

    str += "<div id=\"ChatInterface_History\">\n";

    str += "<div class=\"ChatInterface_History_Message\">\n";
    str += "\t<span class=\"ChatInterface_History_Message_StartTexte\">Votre mission : faire sourire votre correspondant en moins de 10 minutes</span>\n";
    str += "</div>\n";
    
    str += "</div>\n";
    
    str += "<div id=\"ChatInterface_Controls\">\n";
    
    str += "<div id=\"ChatInterface_Controls_Smileys\">\n";
    
    if (RelationManager_Smileys != null)
    {
        for(i = 0; i < RelationManager_Smileys.length; i++)
        {
            str += "<img src=\"" + RelationManager_Smileys[i][1] + "\" onmouseover=\"this.style.borderColor = '#A7A7A7'\" onmouseout=\"this.style.borderColor = '#ffffff'\" onclick=\"RelationManager_AddSmiley('" + RelationManager_Smileys[i][3] + "'); return false;\" alt=\"" + RelationManager_Smileys[i][3] + "\" />\n";
        }
    }
    
    str += "</div>\n";

    str += "<input type=\"text\" id=\"ChatInterface_Controls_TxtInput\" onKeyPress=\"return RelationManager_ChatCatchEnter(event);\" />\n";
    str += "<a href=\#\"id=\"ChatInterface_Controls_BttSubmit\" onclick=\"RelationManager_ChatSendMessage(); return false;\" />Envoyer</a>\n";
    str += "<span id=\"ChatInterface_Controls_SendStatus\">&nbsp;\n";
    str += "</span>\n";
    
    str += "<span id=\"ChatInterface_Controls_Stop\"><a id=\"\" href=\"#\" onclick=\"RelationManager_ChatArreteConversation(); return false;\">Terminer la conversation</a></span>\n";
    //str += "<span id=\"ChatInterface_Controls_Alert\"><a id=\"\" href=\"#\" onclick=\"RelationManager_ChatAlerteConversation(); return false;\">Alerter</a></span>\n";
    
    str += "</div>\n";

    str += "</div>\n";

    return str;
}

function RelationManager_AddSmiley(smiley)
{
    RelationManager_ChatTextBox.value += smiley;
    RelationManager_ChatTextBox.focus();
}

/*---------- Fin Create Chat Interface ----------*/




/*---------- Gestion du Chat ----------*/

function RelationManager_DisplayMessageInStatus(message)
{
    RelationManager_ChatLabelStatus.innerHTML = message;
    setTimeout("RelationManager_ChatLabelStatus.innerHTML = '&nbsp;';", RelationManager_ChatLabelStatus_Time);
}

function RelationManager_ChatCatchEnter(e)
{
    if (e == null)
        e == window.event;
    code = -1;
    for (prop in e)
    {
        if(prop == 'which')
            code = e.which;
    }
    if (code == -1)
        code = e.keyCode;

    if (code == 13)
    {
        RelationManager_ChatSendMessage();
        return false;
    }
    else
    {
        return true;
    }
}

/*---------- Fin Gestion du Chat ----------*/




/*---------- Chat Send Message ----------*/

function RelationManager_ChatSendMessage()
{
    var msg = RelationManager_ChatTextBox.value;
    if (msg != "")
    {
        Vdc.Chat.WebServices.RelationManager.ChatSendMessage(RelationManager_Pseudo, RelationManager_Hash, msg, RelationManager_ChatSendMessage_Success, RelationManager_ChatSendMessage_TimeOut, RelationManager_ChatSendMessage_Error);
        RelationManager_ChatTextBox.value = "";
        RelationManager_ChatTextBox.focus();
    }
}

function RelationManager_ChatSendMessage_Success(result)
{
    if (result)
        RelationManager_DisplayMessageInStatus("Message envoy&eacute; avec succ&egrave;s");
    else
        RelationManager_DisplayMessageInStatus("Message refus&eacute; par le serveur");
}

function RelationManager_ChatSendMessage_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi du message");
}

function RelationManager_ChatSendMessage_Error()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi du message");
}

/*---------- Fin Chat Send Message ----------*/




/*---------- Chat Get Last Messages ----------*/

function RelationManager_AddNewMessage(message)
{
//alert("in");
    if (message == null)
        return;

    if (RelationManager_ChatIndex > message.index)
        return ;

    RelationManager_ChatIndex = message.index;

    var msg = message.texte;

    if (RelationManager_Smileys != null)
    {
        for(i = 0; i < RelationManager_Smileys.length; i++)
        {
            msg = eval("msg.replace(/" + RelationManager_Smileys[i][2] + "/g, \"<img src='" + RelationManager_Smileys[i][1] + "' />\");");
        }
    }
    
    var str = "";
    str += "<div class=\"ChatInterface_History_Message\">\n";
    str += "\t<span class=\"ChatInterface_History_Message_Auteur\">" + message.auteur + "</span>\n";
    str += "\t<span class=\"ChatInterface_History_Message_Texte\">" + msg + "</span>\n";
    str += "</div>\n";
    
    RelationManager_ChatHistory.innerHTML += str;
}

function RelationManager_ChatGetLastMessages(refresh)
{
    if (refresh)
        RelationManager_ChatGetLastMessages_Timer = setTimeout("RelationManager_ChatGetLastMessages(true)", RelationManager_TimeToRefresh);
    Vdc.Chat.WebServices.RelationManager.ChatGetLastMessages(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatIndex, RelationManager_ChatGetLastMessages_Success, RelationManager_ChatGetLastMessages_TimeOut, RelationManager_ChatGetLastMessages_Error);
}

function RelationManager_ChatGetLastMessages_Success(status)
{
//alert(status.status);
    if (status.status!=-1)
    {
   
        if (status.status !=0)        
        {   
        //alert(status.status);
            status.messages.for_each(RelationManager_AddNewMessage);
            RelationManager_ChatHistory.scrollTop = RelationManager_ChatHistory.scrollHeight;
        }
        
        RelationManager_ChatConversationTimeLeft = status.secondes;
        if (status.secondes == -1)
        {
            RelationManager_ChatInterfaceTime.innerHTML = "Temps illimit&eacute;";
        }
        else
        {
            var min = Math.floor(status.secondes / 60);
            var sec = status.secondes % 60;
            var strTime = "";
            if (min != 0)
                strTime += min + "m ";
            strTime += sec + "s";
            RelationManager_ChatInterfaceTime.innerHTML = "<div id=\"ChatInterface_Time_Details\">" + strTime + "</div>\n" + RelationManager_GetProgressBar(0, RelationManager_ChatConversationDuration * 60, RelationManager_ChatConversationDuration * 60 - status.secondes, "", "ChatInterface_Time_ProgressBar");
        }
    }
    else
    {
        // Si le retour est null c'est que la conversation n'existe pas ou plus
        clearTimeout(RelationManager_ChatGetLastMessages_Timer);

        // Si RelationManager_ChatConversationId alors on était dans une conversation
        if (RelationManager_ChatConversationId != null)
        {
            RelationManager_CreateAvisInterface();
        }
    }
    
}

function RelationManager_ChatGetLastMessages_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de la r&eacute;cup&eacute;reration des derniers messages");
}

function RelationManager_ChatGetLastMessages_Error()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de la r&eacute;cup&eacute;reration des derniers messages");
}

/*---------- Fin Chat Get Last Messages ----------*/




/*---------- Chat Alerte Conversation ----------*/

function RelationManager_ChatAlerteConversation()
{
    Vdc.Chat.WebServices.RelationManager.ChatAlerteConversation(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatAlerteConversation_Success, RelationManager_ChatAlerteConversation_TimeOut, RelationManager_ChatAlerteConversation_Error);
}

function RelationManager_ChatAlerteConversation_Success(result)
{
    if (result)
        RelationManager_DisplayMessageInStatus("Alerte envoy&eacute;e avec succ&egrave;s");
    else
        RelationManager_DisplayMessageInStatus("Alerte refus&eacute;e par le serveur");
}

function RelationManager_ChatAlerteConversation_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi de l'alerte");
}

function RelationManager_ChatAlerteConversation_Error()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi de l'alerte");
}

/*---------- Fin Chat Alerte Conversation ----------*/




/*---------- Chat Arrete Conversation ----------*/

function RelationManager_ChatArreteConversation()
{
    Vdc.Chat.WebServices.RelationManager.ChatArreteConversation(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatArreteConversation_Success, RelationManager_ChatArreteConversation_TimeOut, RelationManager_ChatArreteConversation_Error);
}

function RelationManager_ChatArreteConversation_Success(result)
{
    if (result)
    {
        RelationManager_ChatConversationStop = true;
        RelationManager_DisplayMessageInStatus("Arret envoy&eacute;e avec succ&egrave;s");
    }
    else
        RelationManager_DisplayMessageInStatus("Arret refus&eacute;e par le serveur");
}

function RelationManager_ChatArreteConversation_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi de l'arret");
}

function RelationManager_ChatArreteConversation_Error()
{
    RelationManager_DisplayMessageInStatus("Une erreur est survenue durant l'envoi de l'arret");
}

/*---------- Fin Chat Arrete Conversation ----------*/




/*---------- Chat Get Conversation Informations ----------*/

function RelationManager_ChatGetConversationInformations()
{
    Vdc.Chat.WebServices.RelationManager.ChatGetConversationInformations(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatGetConversationInformations_Success, RelationManager_ChatGetConversationInformations_TimeOut, RelationManager_ChatGetConversationInformations_Error);
}

function RelationManager_ChatGetConversationInformations_Success(infos)
{
    if (infos != null)
    {
        RelationManager_ChatConversationId = infos.id;
        RelationManager_ChatConversationDuration = infos.duree;
    }
}

function RelationManager_ChatGetConversationInformations_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de la r&eacute;cup&eacute;reration des informations sur la conversation en cours");
}

function RelationManager_ChatGetConversationInformations_Error()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de la r&eacute;cup&eacute;reration des informations sur la conversation en cours");
}

/*---------- Fin Chat Get Conversation Id ----------*/




/*---------- Create Avis Interface ----------*/

function RelationManager_CreateAvisInterface()
{
    var str = "";
    
    str += "<h2>Votre avis sur cette conversation</h2>\n";
    str += "<p>\n";
    str += "<span id=\"ChatInterface_Controls_Inputs\">\n";

    str += "<span id=\"ChatInterface_Controls_Inputs_Avis\"><span>Cette conversation vous a plu ?</span><input type=\"radio\" onclick=\"RelationManager_ChatSetAvisForConversation('o');\" name=\"ChatInterface_Controls_Vote\" value=\"o\" />oui <input type=\"radio\" onclick=\"RelationManager_ChatSetAvisForConversation('n');\" name=\"ChatInterface_Controls_Vote\" value=\"n\" />non</span>\n";
    
    str += "<span id=\"ChatInterface_Controls_Inputs_Appreciation\" style=\"display: none;\">";
    str += "<span>Donnez une &agrave; cinq &eacute;toiles &agrave; cette conversation</span>\n";
    str += "<a id=\"ChatInterface_Controls_Inputs_Appreciation_1\" href=\"#\" class=\"empty\" onmouseout=\"RelationManager_ColorizeAppreciation(RelationManager_ChatAppreciation, 'filled', 'empty');\"; onmouseover=\"RelationManager_ColorizeAppreciation(1, 'filled', 'empty');\" onclick=\"RelationManager_ChatSetAppreciationForConversation(1); return false;\" ><span>1</span></a>";
    str += "<a id=\"ChatInterface_Controls_Inputs_Appreciation_2\" href=\"#\" class=\"empty\" onmouseout=\"RelationManager_ColorizeAppreciation(RelationManager_ChatAppreciation, 'filled', 'empty');\"; onmouseover=\"RelationManager_ColorizeAppreciation(2, 'filled', 'empty');\" onclick=\"RelationManager_ChatSetAppreciationForConversation(2); return false;\" ><span>2</span></a>";
    str += "<a id=\"ChatInterface_Controls_Inputs_Appreciation_3\" href=\"#\" class=\"empty\" onmouseout=\"RelationManager_ColorizeAppreciation(RelationManager_ChatAppreciation, 'filled', 'empty');\"; onmouseover=\"RelationManager_ColorizeAppreciation(3, 'filled', 'empty');\" onclick=\"RelationManager_ChatSetAppreciationForConversation(3); return false;\" ><span>3</span></a>";
    str += "<a id=\"ChatInterface_Controls_Inputs_Appreciation_4\" href=\"#\" class=\"empty\" onmouseout=\"RelationManager_ColorizeAppreciation(RelationManager_ChatAppreciation, 'filled', 'empty');\"; onmouseover=\"RelationManager_ColorizeAppreciation(4, 'filled', 'empty');\" onclick=\"RelationManager_ChatSetAppreciationForConversation(4); return false;\" ><span>4</span></a>";
    str += "<a id=\"ChatInterface_Controls_Inputs_Appreciation_5\" href=\"#\" class=\"empty\" onmouseout=\"RelationManager_ColorizeAppreciation(RelationManager_ChatAppreciation, 'filled', 'empty');\"; onmouseover=\"RelationManager_ColorizeAppreciation(5, 'filled', 'empty');\" onclick=\"RelationManager_ChatSetAppreciationForConversation(5); return false;\" ><span>5</span></a>";
    str += "</span>";
    
    str += "<a id=\"ChatInterface_Controls_Inputs_Close\" onclick=\"window.close();\" style=\"display: none;\" href=\"#\">Fermer la fen&ecirc;tre</a>\n";
    
    str += "</span>\n";
    str += "</p>\n";

    RelationManager_ChatControls.innerHTML = str;
    RelationManager_ChatInterfaceTime.className = "UserOffLineMessage";

    if (RelationManager_ChatConversationTimeLeft >= 5 && !RelationManager_ChatConversationStop)
        RelationManager_ChatInterfaceTime.innerHTML = "Votre correspondant n'est plus disponible : conversation termin&eacute;e";
    else
        RelationManager_ChatInterfaceTime.innerHTML = "Conversation termin&eacute;e";
}

function RelationManager_ColorizeAppreciation(appr, className1, className2)
{
    if (appr == null)
        appr = 0;
    for(var i = 1; i <= appr; i++)
        document.getElementById("ChatInterface_Controls_Inputs_Appreciation_" + i).className = className1;
    for(var i = appr + 1; i <= 5; i++)
        document.getElementById("ChatInterface_Controls_Inputs_Appreciation_" + i).className = className2;
         
}

/*---------- Fin Create Vote Interface ----------*/




/*---------- Chat Set Vote For Conversation ----------*/

function RelationManager_ChatSetAvisForConversation(avis)
{
    if (RelationManager_ChatConversationId != null)
    {
        Vdc.Chat.WebServices.RelationManager.ChatSetAvisForConversation(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatConversationId, avis, RelationManager_ChatSetAvisForConversation_Success, RelationManager_ChatSetAvisForConversation_TimeOut, RelationManager_ChatSetAvisForConversation_Error);
        if (avis == 'n')
        {
            document.getElementById("ChatInterface_Controls_Inputs_Close").style.display = "block";
            document.getElementById("ChatInterface_Controls_Inputs_Appreciation").style.display = "none";
        }
        else
        {
            RelationManager_ChatAppreciation = 0;
            RelationManager_ColorizeAppreciation(0, 'filled', 'empty');
            document.getElementById("ChatInterface_Controls_Inputs_Close").style.display = "none";
            document.getElementById("ChatInterface_Controls_Inputs_Appreciation").style.display = "inline";
        }
    }
}

function RelationManager_ChatSetAvisForConversation_Success(result)
{
    if (result)
    {
        RelationManager_DisplayMessageInStatus("Avis pris en compte avec succ&eacute;s");
    }
    else
    {
        RelationManager_DisplayMessageInStatus("Le serveur a refus&eacute; votre avis");
    }
}

function RelationManager_ChatSetAvisForConversation_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de l'envoie de votre avis");
}

function RelationManager_ChatSetAvisForConversation_Error()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de l'envoie de votre avis");
}

/*---------- Fin Chat Set Vote For Conversation ----------*/




/*---------- Chat Set Appreciation For Conversation ----------*/

function RelationManager_ChatSetAppreciationForConversation(appr)
{
    if (RelationManager_ChatConversationId != null)
    {
        RelationManager_ChatAppreciation = appr;
        Vdc.Chat.WebServices.RelationManager.ChatSetAppreciationForConversation(RelationManager_Pseudo, RelationManager_Hash, RelationManager_ChatConversationId, appr, RelationManager_ChatSetAppreciationForConversation_Success, RelationManager_ChatSetAppreciationForConversation_TimeOut, RelationManager_ChatSetAppreciationForConversation_Error);
        document.getElementById("ChatInterface_Controls_Inputs_Close").style.display = "block";
    }
}

function RelationManager_ChatSetAppreciationForConversation_Success(result)
{
    if (result)
    {
        RelationManager_DisplayMessageInStatus("Appr&eacute;ciation pris en compte avec succ&eacute;s");
    }
    else
    {
        RelationManager_DisplayMessageInStatus("Le serveur a refus&eacute; votre appr&eacute;ciation");
    }
}

function RelationManager_ChatSetAppreciationForConversation_TimeOut()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de l'envoie de votre appr&eacute;ciation");
}

function RelationManager_ChatSetAppreciationForConversation_Error()
{
    RelationManager_DisplayMessageInStatus("Erreur lors de l'envoie de votre appr&eacute;ciation");
}

/*---------- Fin Chat Set Appreciation For Conversation ----------*/




/*---------- Progress Bar ----------*/

function RelationManager_GetProgressBar(min, max, value, cssClass, id)
{
    if (min > max)
    {
        var tmp = min;
        min = max;
        max = tmp;
    }
    
    if (value < min)
        value = min;
    else if (value > max)
        value = max;

    var percent = (value - min) / (max - min) * 100;


    // Modif spécifique à la flamme MISSION IMPOSSIBLE !!!
    if (percent < 3)
    {
        percent = 3;
    }

    var str = "";
    str += "<table cellspacing=\"0\" class=\"" + cssClass + "\" id=\""+ id + "\" >\n";
    str += "<tr>\n";
    if (value != min)
        str += "<td class=\"start\" style=\"width: " + percent + "%;\">&nbsp;</td>";
    if (value != max)
        str += "<td class=\"end\" style=\"width: " + (100 - percent) + "%;\">&nbsp;</td>";
    str += "</tr>\n";
    str += "</table>\n";
    
    return str;
}

function RelationManager_DrawProgressBar(containerName, min, max, value, cssClass, id)
{
    var containerName = document.getElementById(containerName);
    if (containerName == null)
        return ;

    container.containerName = GetProgressBar(min, max, value, cssClass, id);
}

/*---------- Fin Progress Bar ----------*/


