﻿
function getXmlHttpRequestObject() 
{
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if(window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert('Please update your browser to the latest verson of IE or Firefox');
    }
}

var receiveReq = getXmlHttpRequestObject();
var StopCache = '&t=' + new Date().getTime();
var s
var r 

function InitialiseChat(Sender,Recipient)
{
    s = Sender;
    r = Recipient;
    
    //Set the record
     if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {
        receiveReq.open("GET", '121Live.aspx?method=INITIALISECHAT&-u=' + Sender + '&-r=' + Recipient + StopCache, true);
        receiveReq.onreadystatechange = OpenChatWindow;
        receiveReq.send(null);
    }
}

function OpenChatWindow()
{
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {
     
     var cs = receiveReq.responseText
     if (cs == "FULL")
        {
            alert('You can not open any more chats');
        }
     else
        {
       
            modelesswin("chat121/121chat.aspx?-u=" + s + "&-r=" + r + "&-cs=" + cs + StopCache,342,500);
        }
    }
}

function launchChatWindow(u,cs)
{

    if (modelesswin("chat121/121livechat.aspx?-u=" + u + "&-s=" + s + "&-cs=" + cs + StopCache,342,500) == true )
    {
    //chat window caught by block up stopper
    //alert('pop up blocked');
        SetBlockupCaughtUI(cs,u);
    }
    else
    {
    //window on receipient managed to open
    //alert('pop up allowed');
   
    }
}

function Check121ChatStatus(cs,r,t)
{
//Set the record

     if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
           var qs = new Querystring()
           var cs = qs.get("-cs");
           var r = qs.get("-r");
 
            receiveReq.open("GET", '../121Live.aspx?method=CHATSTATUS&-cs=' + cs + '&-r=' + r + StopCache, true);
            receiveReq.onreadystatechange = determinStatus;
            receiveReq.send(null);
            
        }
}

function RecheckStatus()
{
    var qs = new Querystring()
    var cs = qs.get("-cs")
    var r = qs.get("-r")
    
    location.reload(true);
    
    Check121ChatStatus(cs,r,StopCache);
}

function determinStatus()
{

    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {
    
            var qs = new Querystring()
            var cs = qs.get("-cs")
            var r = qs.get("-r")
            
        //lets check the status of the chat
        switch(receiveReq.responseText)
        {
        case "ERROR":
            alert('There was an error checking the chat status');
            break
        case '1':
            //Awaiting reply from recipient
             SetWaitingReplyUI(cs,r);
             setTimeout('RecheckStatus();',5000);
             break
        case '2':
            ChatDecined(cs,r);
            break
        case '3':
            ChatRequestAccepted(cs,r);
            break
        case '4':
            ChatCancelled();
            break
        case '5':
            //Popup blocker caught receipient
            RecipientPopupCaught(cs,r);
            break
        case '6':
            //request time out
            RequestTimeOut(cs,r);
            break
        }
    }
}

function SetBlockupCaughtUI(cs,r)
{

        receiveReq.open("GET", '../121Live.aspx?method=SETPOPUPCATCH&-cs=' + cs + '&-r=' + r + StopCache, true);
        receiveReq.onreadystatechange = SetBlockupCaughtUIReply;
        receiveReq.send(null);
        
}
function SetBlockupCaughtUIReply()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
            alert(receiveReq.responseText);
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        closeMessage();
        //alert('Please enable pop ups for this site.');
        
        }   
}


function SetWaitingReplyUI(cs,r)
{
//live121chat
        
        
        receiveReq.open("GET", '../121LiveUI.aspx?method=WAITINGANSWER&-cs=' + cs + '&-r=' + r + StopCache, true);
        receiveReq.onreadystatechange = SetWaitingReply;
        receiveReq.send(null);
}

function SetWaitingReply()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
       
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        
        }   
}

function ChatDecined(cs,r)
{

            receiveReq.open("GET", '../121LiveUI.aspx?method=CHATDECLINED&-cs=' + cs + '&-r=' + r + StopCache, true);
            receiveReq.onreadystatechange = SetDeclinedUI;
            receiveReq.send(null);
         
}
function SetDeclinedUI()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        }   
}

function RecipientPopupCaught(cs,r)
{

            receiveReq.open("GET", '../121LiveUI.aspx?method=POPUPCAUGHT&-cs=' + cs + '&-r=' + r + StopCache, true);
            receiveReq.onreadystatechange = SetCaughtPopup;
            receiveReq.send(null);
         
}
function SetCaughtPopup()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        }   
}

function RequestTimeOut(cs,r)
{

            receiveReq.open("GET", '../121LiveUI.aspx?method=TIMEOUT&-cs=' + cs + '&-r=' + r + StopCache, true);
            receiveReq.onreadystatechange = SetTimeOut;
            receiveReq.send(null);
         
}
function SetTimeOut()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        }   
}

function ChatCancelled()
{
        var divLayer1 = document.getElementById("live121chat");
        divLayer1.innerHTML = "";
        divLayer1.innerHTML = "The sender cancelled the chat";
}
function ChatRequestAccepted(cs,r)
{
 
       receiveReq.open("GET", '../121LiveUI.aspx?method=CHATACCEPTED&-cs=' + cs + '&-r=' + r + StopCache, true);
       receiveReq.onreadystatechange = SetChatAcceptedUI;
       receiveReq.send(null);
        
        loadChatApp()
        //setTimeout('loadChatApp()',1000);
}

function SetChatAcceptedUI()
{
        var divLayer1 = document.getElementById("live121chat");
       
        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
        {
         divLayer1.innerHTML = "";
         divLayer1.innerHTML = receiveReq.responseText;
        }   
}

function loadChatApp()
{
 var qs = new Querystring()
    var u = qs.get("-u")
    var s = qs.get("-s")
    var cs = qs.get("-cs")
    
    self.location = "121livechat.aspx?-u=" + u + "&-s=" + s + "&-cs=" + cs + StopCache
}

function UpdateStatus(UserId)
{
          
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {
        receiveReq.open("GET", '121Live.aspx?method=STATUSUPDATE&-s=' + UserId + StopCache, true);
        receiveReq.onreadystatechange = HandleReceiveStatusUpdate;
        receiveReq.send(null);
        setTimeout('UpdateStatus(' + UserId + ');',10000);
        
    }
}

function HandleReceiveStatusUpdate()
{
    //alert('updated');
    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) 
    {
        var returned = receiveReq.responseText
        var returnedarray = returned.split(",")
        
        switch(returnedarray[0])
        {
        case 0:
            break
        case '1':
            AnswerChatRequest(returnedarray[1],returnedarray[2]);
            break
        }
    }
}

function AnswerChatRequest(s,cs)
{

//cause the window to be the primary activate window on the desktop
//alert('You have a chat request from ' + s);
window.focus();
displayMessage('IncomingChatRequest.aspx?-s=' + s + '&-cs=' + cs + StopCache);return false
}

function AcceptChatRequest(s,cs)
{
    displayMessage('IncomingChatRequest.aspx?method=ACCEPTREQUEST&-s=' + s + '&-cs=' + cs + StopCache);
}

function DeclineChatRequest(s,cs)
{
    displayMessage('IncomingChatRequest.aspx?method=DECLINEREQUEST&-s=' + s + '&-cs=' + cs + StopCache);
}

function modelesswin(url,mwidth,mheight)
{
        var mine
        var popUpsBlocked
        
          eval('mine = window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=0,scrollbars=0")')
          if(mine)
            popUpsBlocked = false
         else
            popUpsBlocked = true
         
          return popUpsBlocked
          /*window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=0,scrollbars=0")*/

}

