﻿var initInterval;  
var sessionId;
var name;
   
    /*********************************************************
    Methods InitSession
    *********************************************************/
    function InitSession(sName, sEmail, sNIF)
    {
        
    
        try
        {
            var proxy = new auchan.jumbonet.presentationservices.chatservices.webchatservicecontract();
            var userdata = {"Name":sName , "Email":sEmail , "NIF": sNIF };
            name = sName;
            var request = {"UserData" :userdata};
            proxy.InitSession(request, InitSessionSuccess, InitSessionFail);
        }
        catch (ex)
        {
            window.location = siteUrl + "/chat/ChatUnavailable.aspx"; 
        }      
            
    }
    
    function InitSessionSuccess(result) {
       
        sessionId = result.d.Session.SessionID;
        IsSessionInitialized(sessionId);
        
    }
    
    function InitSessionFail(result)
    {
        sessionId = "Fail";
        window.location = siteUrl + "/chat/ChatUnavailable.aspx"; 
    }
    
    /*********************************************************
    Methods IsSessionInitialized
    *********************************************************/
    function IsSessionInitialized(sessionId) {
      
        if(sessionId == null)
            return;
        
        var sessionData = {"CurrentSession":sessionId};
        
        var proxy = new auchan.jumbonet.presentationservices.chatservices.webchatservicecontract();    
        
        proxy.IsSessionInitialized(sessionData, IsSessionInitializedSuccess, IsSessionInitializedFailed);
        
    }

    function IsSessionInitializedSuccess(result) {

       
        if (result.d.SessionInitialized)
        {
            clearInterval(initInterval);
            window.location = siteUrl + "/chat/ChatConversation.aspx?SessionId=" + sessionId + "&UserName=" + name;     
        }       
        
        IsSessionInitialized(sessionId);
    }
    
    function IsSessionInitializedFailed(result)
    {
        window.location = siteUrl + "/chat/ChatUnavailable.aspx"; 
    }
    /*********************************************************
    Methods SendMessage
    *********************************************************/
    
    function SendMessage(sMessage, sessionId, sName)
    {
        if(sessionId.length ==0)
            return;        
        
        var sessionData = {"SessionID":sessionId};        
        var request = {"Session":sessionData , "Message":sMessage};        
        var proxy = new auchan.jumbonet.presentationservices.chatservices.webchatservicecontract();    
        
        proxy.SendMessage(request, SendMessageSuccess, SendMessageFail);
        
        textSent = sMessage;
        name = sName;
    }
    
    function SendMessageSuccess(result) {      
    
    /*  
        var actualDate = new Date();
        var actualMinutes =  (actualDate.getMinutes() < 10) ? "0" + actualDate.getMinutes() : actualDate.getMinutes()  ;
        


        document.getElementById("sDiv").innerHTML += itemTemplate.replace("{0}", name).replace("{1}", actualDate.getHours()).replace("{2}", actualMinutes).replace("{3}", textSent);
        //"<div class=\"response\"><div class=\"chatThumb\"><img src=\"../images/userChatIcon.png\" alt=\"Auchan Chat\" /></div><div class=\"chatHeaderUserDialogue\"><div class=\"dateDialogue\">" + name + "</div><div class=\"hourDialogue\">" + actualDate.getHours() + ":" + actualMinutes + "</div><div class=\"dialogueText\" style=\"width:170px;word-wrap:break-word;\" >" + textSent + "</div></div></div>";
        document.getElementById("txtMessage").focus();

        refreshScrollBar();
    */
        WriteMessage( textSent, name , false );
        
    }
    
    function SendMessageFail(result) {   
    
    /*     
        var actualDate = new Date();
        var actualMinutes =  (actualDate.getMinutes() < 10) ? "0" + actualDate.getMinutes() : actualDate.getMinutes()  ;       
        
        document.getElementById("sDiv").innerHTML +=  "<div class=\"response\"><div class=\"chatThumb\"><img src=\"../images/userChatIcon.png\" alt=\"Auchan Chat\" /></div><div class=\"chatHeaderUserDialogue\"><div class=\"dateDialogue\">" + name + "</div><div class=\"hourDialogue\">" + actualDate.getHours() + ":" + actualMinutes + "</div><div class=\"dialogueText\" style=\"width:170px;word-wrap:break-word;\" >Mensagem não enviada: <br/>" + textSent + "</div></div></div>";

        document.getElementById("txtMessage").focus();

        refreshScrollBar()
    */
        WriteMessage('Mensagem não enviada: ' + textSent, name, false);
    }
    
    /*********************************************************
    Methods GetMessages
    *********************************************************/
    
    function GetMessages(sessionId)
    {    
        if(sessionId.length ==0)
            return null;        
        
        var sessionData = {"SessionID":sessionId};        
        var request = {"Session":sessionData};        
        var proxy = new auchan.jumbonet.presentationservices.chatservices.webchatservicecontract();    
        
        proxy.GetMessages(request ,GetMessagesSuccess, GetMessagesFail );
            
    }
    
     function GetMessagesSuccess(result)
    {
        if(result == null)
            return null;            
        if(result.d.Messages == null)
            return null;


/*
        var newMessages = false;    
        
            
        var actualDate = new Date();
        
*/
        
        for ( i=0; i < result.d.Messages.length;i++)
        {
           newMessages = true;
           //var actualMinutes =  (actualDate.getMinutes() < 10) ? "0" + actualDate.getMinutes() : actualDate.getMinutes()  ;
           //document.getElementById("sDiv").innerHTML += "<div class=\"response\"><div class=\"chatThumb\"><img src=\"../images/auchanChatIconFemale.png\" alt=\"Auchan Chat\" /></div><div class=\"chatHeaderDialogue\"><div class=\"dateDialogue\">Apoio Jumbo</div><div class=\"hourDialogue\">" + actualDate.getHours() + ":" + actualMinutes + "</div><div class=\"dialogueText\" style=\"width:170px;word-wrap:break-word;\" >" + result.d.Messages[i].MessageBody + "</div></div></div>";
           WriteMessage( result.d.Messages[i].MessageBody , 'Apoio Jumbo' , true );
        }        
        
        
        /*
        if (newMessages == true) {
            init();
            sDiv.scrollTop = sDiv.scrollHeight;*/
            
        //}

       }



       function GetMessagesFail(result) {
    
        clearInterval(initInterval);
        //WriteMessage('A sessão de conversação foi perdida, por favor, inicie uma nova conversação.', 'Apoio Jumbo', true);
        SessionEnd();  
    }
    
    /*********************************************************
    Methods EndSession
    *********************************************************/
    
    function EndSession(sessionId)
    {
    
        if(sessionId.length ==0)
            return;        
        
        var sessionData = {"SessionID":sessionId};        
        var request = {"Session":sessionData};        
        var proxy = new auchan.jumbonet.presentationservices.chatservices.webchatservicecontract();    
        
        proxy.EndSession(request ,EndSessionSuccess, EndSessionFail );
    
    }
    
    function EndSessionSuccess(result)
    {
        if (result.d.SessionTerminated)
        {           
            window.close();
        }
    }
    
    function EndSessionFail(result)
    {
         window.close();
     }

     
     function GetNewMessages() {
         GetMessages(sessionId);
     }

     function ChatClose() {
         EndSession(sessionId);
         clearInterval(initInterval);
         window.close();
     }

     function SendTextMessage() {
         
         var textSent = document.getElementById("txtMessage").value;

         if (textSent != "" && textSent != "Insira a sua questão...")
             SendMessage(textSent, sessionId, name);

         document.getElementById("txtMessage").value = "";
     }

     function WriteMessage(sMessage, sUser, bGetMessages) {
         var actualDate = new Date();
         var actualMinutes = (actualDate.getMinutes() < 10) ? "0" + actualDate.getMinutes() : actualDate.getMinutes();

         document.getElementById("sDiv").innerHTML += itemTemplate.replace("{0}", sUser).replace("{1}", actualDate.getHours()).replace("{2}", actualMinutes).replace("{3}", sMessage).replace("{4}", (bGetMessages ? 'chatHeaderDialogue' : 'chatHeaderUserDialogue')).replace('{5}', (bGetMessages ? 'auchanChatIconFemale' : 'userChatIcon'));
         
         document.getElementById("txtMessage").focus();

         refreshScrollBar();
     }


     function SessionEnd() {
         window.location = 'ChatSessionEnd.aspx'  
     }