﻿var IMCount = 0;
var lockIM = 0;
var maxIndex = 9999;
var ukey = "";
var myun = "";
var myus = "";
var myuids = "";
var mymi = "";
var PhotoURL = "http://www.getmerated.com/GMRPhotos/";
//var PhotoURL = "http://getmerated.com/GMRPhotos/";

document.domain='getmerated.com';
var recipients = new Array();

function getRecipientFieldID()
{
    return document.getElementById('im_RecipientFieldID').value;
}
function getMessageFieldID()
{
    return document.getElementById('im_MessageFieldID').value;
}
function getMessageContainerID()
{
    return document.getElementById('im_MessageContainerID').value;
}
function getMessageSubmitterID()
{
    return document.getElementById('im_MessageSubmitterID').value;
}


function createNewIM(rmid, run, rg, rl, ra, ruids, rppi, rpfn, rus) 
{

    var recipient = new Object();
    recipient.mid = rmid;
    recipient.un = run;
    recipient.g = rg;
    recipient.l = rl;
    recipient.a = ra;
    recipient.uids = ruids;
    recipient.ppi = rppi;
    recipient.pfn = rpfn;
    recipient.us = rus;
    
    recipients.push(recipient);

    generateIM(mymi, rmid, rmid, null, recipient, false);
    
    
    //Chat Listener gets interrupted by this, need to reload
    initChatListener();
}

function createIMMessage(smi, rmi, message, showExclamation) 
{

    var recipientid = smi == mymi ? rmi : smi;
    var recipient = recipients[getRecipientIndex(recipientid)];
    
    generateIM(smi, rmi, recipientid, message, recipient, showExclamation);
}

function generateIM(smi, rmi, recipientid, message, recipient, showExclamation)
{
    var divName_TASK;
    var divName_TASK_EXCLAMATION;
    var divName_MESSAGEBOX;
    var divName_MESSAGEDISPLAYBOX;
    var messageTextBoxID;
    divName_TASK = "IM_TASK_" + recipientid;
    divName_TASK_EXCLAMATION = "IM_TASK_EXCLAMATION_" + recipientid;
    divName_MESSAGEBOX = "IM_MESSAGEBOX_" + recipientid;
    divName_MESSAGEDISPLAYBOX = "IM_MESSAGEDISPLAYBOX_" + recipientid;
    
	var visible = GetChatVisibleState(divName_MESSAGEBOX);


    if(document.getElementById(divName_TASK) == null)
    {
        IMCount = IMCount + 1;
        
        var newDIV = document.createElement('div');
        
        newDIV.setAttribute('id', divName_TASK);
        
        newDIV.innerHTML = "<div id=\"" + divName_TASK + "_bg\" class=\"" + (visible  == 1 ? "footer_toolbar_lightbluebar" : "footer_toolbar_bluebar") + "\" style=\"width: 100%; height: 100%; text-align: left;\" onclick=\"HideObject('" + divName_TASK_EXCLAMATION + "'); minimizeIM('" + divName_MESSAGEBOX + "','" + divName_TASK + "');\"><table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td><img src=\"/_images/spacer.gif\" width=\"4\"></td><td><img src=\"/_images/_im/thoughtbubble.gif\"><img src=\"/_images/spacer.gif\" width=\"2\"></td><td><b>" + recipient.un + "</b></td></tr></table></div>";
        newDIV.className = "im_menu";
        newDIV.onclick = function() {maxIndex++; this.style.zIndex=maxIndex;}
        //newDIV.onclick = function() {toggleHide(document.getElementById(divName + "chat"))}
     
        var newDIV2 = document.createElement('div');
        messageTextBoxID = "IM_MESSAGETEXTBOX_" + recipientid;
        

        newDIV2.setAttribute('id', divName_MESSAGEBOX);
        newDIV2.innerHTML = "<div style=\"width: 244px; height: 24px; background-image: url('/_images/_im/title_bar.jpg'); border-right: solid 2px #000000; border-left: solid 2px #000000;\"> \
<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width: 244px; height: 24px;\"> \
<tr> \
<td><img src=\"/_images/spacer.gif\" width=\"2\" height=\"1\"></td> \
<td align=\"left\" class=\"heading_black_reg\">" + recipient.un + "</td> \
<td align=\"right\" valign=\"bottom\"><img src=\"/_images/_im/min_button.jpg\" class=\"handcursor\" onclick=\"HideObject('" + divName_TASK_EXCLAMATION + "'); minimizeIM('" + divName_MESSAGEBOX + "','" + divName_TASK + "');\"> <img src=\"/_images/_im/close_button.jpg\" class=\"handcursor\" onclick=\"closeIM('" + divName_TASK + "', " + recipientid + ");\"></td> \
<td><img src=\"/_images/spacer.gif\" width=\"2\" height=\"1\"></td> \
</tr> \
</table> \
</div> \
<div style=\"width: 244px; height: 45px; background-image: url('/_images/_im/background_1.jpg'); border-right: solid 2px #000000; border-left: solid 2px #000000;\"> \
<table style=\"margin-left:6px; margin-right:auto;\"> \
<tr> \
<td> \
<a href=\"/Profile.aspx?id=" + recipient.mid + "\"><img src=\"" + getSmPhotoURL(recipient.uids, recipient.us) + "\" border=\"0\" style=\"border: solid 2px #FFFFFF;\"></a> \
</td> \
<td class=\"heading_black_reg\"> \
" + recipient.a + "<img src=\"" + (recipient.g == 'M' ? '/_images/_icons/male_chat.gif' : '/_images/_icons/female_chat.gif') + "\">" + recipient.l + " \
</td> \
</tr> \
</table> \
</div> \
 \
<div style=\"position: relative; width: 244px; height: 175px; border-right: solid 2px #000000; border-left: solid 2px #000000;\"><div style=\"left: 0px; top: 0px; position: absolute; background-image: url(/_images/_im/background_2.jpg); width: 244px; height: 175px;\"></div><div id=\"" + divName_MESSAGEDISPLAYBOX + "\" style=\"position: absolute; left: 0px; top: 0px; width: 244px; height: 175px; border-top: solid 2px #AAAAAA; overflow-x: none; overflow-y: scroll;\"></div></div> \
<div style=\"padding-top: 8px; width: 244px; height: 24px; background-image: url('/_images/_im/footer_bar.jpg'); border-right: solid 2px #000000; border-left: solid 2px #000000;\"> \
<input id=\"" + messageTextBoxID + "\" type=\"text\" class=\"im_messagebox\" onkeydown=\"sendMessage('" + recipientid + "','" + messageTextBoxID + "', event);\"> \
</div> \
<div style=\"width: 244px; height: 17px;\"> \
<center><img src=\"/_images/_im/footer_point.gif\"><center> \
</div>";
        newDIV2.style.position = "absolute";
        newDIV2.style.bottom = "75px";
        newDIV2.style.left = "-95px";
        newDIV2.style.width = "250px";
        newDIV2.style.height = "250px";
        newDIV2.style.display = visible  == 1 ? "block" : "none";
        newDIV.appendChild(newDIV2);
        
        
        //newDIV.style.display = "none";
        document.getElementById('im_bar').appendChild(newDIV);
        
        //Append new Message from Sender
        var newDIV3 = document.createElement('div');
        
        if(message != null)
            newDIV3.innerHTML = smi == mymi ? getMyMessageHTML(message.m) : getMessageHTML(recipient, message);
        
        document.getElementById(divName_MESSAGEDISPLAYBOX).appendChild(newDIV3);

        //Effect.Pulsate(document.getElementById(divName), { delay: 0, duration: 1, fps: 40, from: .4, to: 1 });
    }
    else
    {
        //Append new Message from Sender
        var newDIV3 = document.createElement('div');
        
        if(message != null)
            newDIV3.innerHTML = smi == mymi ? getMyMessageHTML(message.m) : getMessageHTML(recipient, message);
        
        document.getElementById(divName_MESSAGEDISPLAYBOX).appendChild(newDIV3);
        
        //Make sure chat window is not visible
        //if(document.getElementById(divName+'chat').style.display == 'none')
            //Effect.Pulsate(document.getElementById(divName), { delay: 0, duration: 1, fps: 40, from: .4, to: 1 });

        if(document.getElementById(divName_TASK_EXCLAMATION) != null)
        {
            if(visible == 0)
                document.getElementById(divName_TASK_EXCLAMATION).style.display = "block";
        }
        else if(showExclamation)
        {
            var exclamationDIV = document.createElement('div');
            exclamationDIV.innerHTML = "<img src=\"/_images/_icons/exclamation_chat.gif\">";
            exclamationDIV.style.position = "absolute";
            exclamationDIV.style.left = "20px";
            exclamationDIV.style.top = "-20px";
            if(visible == 1)
                exclamationDIV.style.display = "none";
            
            exclamationDIV.setAttribute('id', divName_TASK_EXCLAMATION);
            
            document.getElementById(divName_TASK).appendChild(exclamationDIV);
        }
    }
    
    document.getElementById(divName_MESSAGEDISPLAYBOX).scrollTop = document.getElementById(divName_MESSAGEDISPLAYBOX).scrollHeight;

    //Effect.Pulsate(divName_TASK);
}

function getMessageHTML(recipient, message)
{
    return "<table style=\"margin-left:auto; margin-right:6px;\"><tr><td><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> \
    <tr> \
    <td><img src=\"/_images/_im/bubble_tl.gif\"></td> \
    <td style=\"background: #FFFFFF;\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    <td align=\"left\"><img src=\"/_images/_im/bubble_tr.gif\"></td> \
    </tr> \
    <tr> \
    <td style=\"background: #FFFFFF;\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    <td style=\"background: #FFFFFF;\" class=\"font_black_small\"> \
    " + message.m + " \
    </td> \
    <td style=\"background-image: url('/_images/_im/bubble_r.gif'); background-repeat:repeat-y;\"> \
    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width: 100%; height: 100%;\"> \
    <tr> \
    <td style=\"background-image: url('/_images/_im/bubble_r.gif'); background-repeat:repeat-y; width: 8px;\"> \
    <img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"> \
    </td> \
    </tr> \
    <tr> \
    <td style=\"background-image: url('/_images/_im/bubble_r.gif'); background-repeat:repeat-y; width: 9px; height: 8px;\"> \
    <img src=\"/_images/_im/bubble_point.gif\"> \
    </td> \
    </tr> \
    <tr> \
    <td style=\"background-image: url('/_images/_im/bubble_r.gif'); background-repeat:repeat-y; width: 8px;\"> \
    <img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"> \
    </td> \
    </tr> \
    </table> \
    </td> \
    </tr> \
    <tr> \
    <td><img src=\"/_images/_im/bubble_bl.gif\"></td> \
    <td style=\"background-image: url('/_images/_im/bubble_b.gif');\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    <td align=\"left\"><img src=\"/_images/_im/bubble_br.gif\"></td> \
    </tr> \
    </table></td><td><a href=\"/Profile.aspx?id=" + recipient.mid + "\"><img src=\"" + getSmPhotoURL(recipient.uids, recipient.us) + "\" border=\"0\" style=\"border: solid 2px #FFFFFF;\"></a></td></tr></table><br>";
}


function getMyMessageHTML(message)
{
    return "<table style=\"margin-left:6px; margin-right:auto;\"><tr><td><a href=\"/Profile.aspx?id=" + mymi + "\"><img src=\"" + getSmPhotoURL(myuids, myus) + "\" border=\"0\" style=\"border: solid 2px #FFFFFF;\"></a></td> \
    <td><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\"> \
    <tr> \
    <td><img src=\"/_images/_im/blue_bubble_tl.gif\"></td> \
    <td style=\"background-image: url('/_images/_im/blue_pixel.gif');\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    <td><img src=\"/_images/_im/blue_bubble_tr.gif\"></td> \
    </tr> \
     \
    <tr> \
     \
    <td style=\"background-image: url('/_images/_im/blue_bubble_l.gif'); background-repeat:repeat-y;\"> \
     \
    <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width: 100%; height: 100%;\"> \
    <tr> \
    <td style=\"background-image: url('/_images/_im/blue_bubble_l.gif'); background-repeat:repeat-y; width: 8px;\"> \
    <img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"> \
    </td> \
    </tr> \
     \
    <tr> \
    <td style=\"background-image: url('/_images/_im/blue_bubble_l.gif'); background-repeat:repeat-y; width: 9px; height: 8px;\"> \
    <img src=\"/_images/_im/blue_bubble_point.gif\"> \
    </td> \
    </tr> \
     \
    <tr> \
    <td style=\"background-image: url('/_images/_im/blue_bubble_l.gif'); background-repeat:repeat-y; width: 8px;\"> \
    <img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"> \
    </td> \
    </tr> \
    </table> \
     \
    </td> \
    <td style=\"background-image: url('/_images/_im/blue_pixel.gif');\" class=\"font_black_small\"> \
    " + message + "</td> \
    <td style=\"background-image: url('/_images/_im/blue_pixel.gif');\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    </tr> \
     \
    <tr> \
    <td><img src=\"/_images/_im/blue_bubble_bl.gif\"></td> \
    <td style=\"background-image: url('/_images/_im/blue_bubble_b.gif');\"><img src=\"/_images/spacer.gif\" width=\"1\" height=\"1\"></td> \
    <td><img src=\"/_images/_im/blue_bubble_br.gif\"></td> \
    </tr> \
     \
    </table></td></tr></table><br>";
}

function getSmPhotoURL(uids, us)
{
    if(us != null && us != "")
        return PhotoURL + uids.substring(0,1) + "/" + uids.substring(0,2) + "/" + uids + "/" + us + "_st.jpg";
    else
        return "/_images/_icons/smphoto_u.gif";
}

function getRecipientIndex(mID)
{
    for(var i=0; i<recipients.length; i++)
    {
        if(recipients[i].mid == mID)
            return i;
    }
    
    return -1;
}

function removeElement(element) 
{

  document.getElementById('im_bar').removeChild(element);
  element = null;

}

function minimizeIM(messageBox, taskName)
{
    
    var visible = toggleHide(document.getElementById(messageBox));
    var arrChatVisibleState = new Array();
    var arrChatMessageBoxes = new Array();
    var arrCookieVS = readCookie("ChatVisibleState");
    var arrCookieMB = readCookie("ChatMessageBoxes");
    var found = false;
    
    if(arrCookieVS != null && arrCookieMB != null)
    {
        arrChatVisibleState = arrCookieVS.split(',');
        arrChatMessageBoxes = arrCookieMB.split(',');
    }
    
    for ( i=0; i < arrChatMessageBoxes.length; i++ )
    {
        if(arrChatMessageBoxes[i] == messageBox)
        {
            arrChatVisibleState[i] = visible;
            found = true;
        }
    } 
    
    if(!found)
    {
        arrChatMessageBoxes[arrChatVisibleState.length] = messageBox;
        arrChatVisibleState[arrChatVisibleState.length] = visible;
    }

    eraseCookie("ChatVisibleState");
    eraseCookie("ChatMessageBoxes");
    createCookie("ChatMessageBoxes", arrChatMessageBoxes.join(','), 1);
    createCookie("ChatVisibleState", arrChatVisibleState.join(','), 1);

    toggleClass(taskName + '_bg', 'footer_toolbar_bluebar', 'footer_toolbar_lightbluebar'); 
}

function GetChatVisibleState(messageBox)
{
    var arrChatVisibleState = new Array();
    var arrChatMessageBoxes = new Array();
    var arrCookieVS = readCookie("ChatVisibleState");
    var arrCookieMB = readCookie("ChatMessageBoxes");
    
    if(arrCookieVS != null && arrCookieMB != null)
    {
        arrChatVisibleState = arrCookieVS.split(',');
        arrChatMessageBoxes = arrCookieMB.split(',');
    }
    else
    {
        return 1;
    }
    
    for ( i=0; i < arrChatMessageBoxes.length; i++ )
    {
        if(arrChatMessageBoxes[i] == messageBox)
        {
            return arrChatVisibleState[i];
        }
    }
    
    return 1;
}

function toggleHide(element)
{
    if(element.style.display == 'none')
    {
        element.style.display = 'block';
        return 1;
    }
    else
    {
        element.style.display = 'none';
        return 0;
    }
}

function closeIM(id, recipientID)
{
    Effect.DropOutThenRemove(document.getElementById(id), { delay: 0, duration: 1 });
    
    var url = "/ChatPost.aspx?tid=" + recipientID + "&ri=1";
    var xmlHttpRequest = getRequest();
    
    xmlHttpRequest.open("GET", url + '&t=' + (new Date()).getTime(), true);
    xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
              
    xmlHttpRequest.onreadystatechange=function()
    {  
        if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status==200)
        {  
            //Check Status        
            switch(xmlHttpRequest.responseText)
            {
                case "1":
                    //Success
                    
                    //Chat Listener gets interrupted by this, need to reload
                    initChatListener();
                break;
                
                default:
                    //Error
                    
                break;
            } 
        }

    }
    
    xmlHttpRequest.send(null);
    
}

function sendMessage(recipientID, messageTextBoxID, e)
{
    var message = trim(document.getElementById(messageTextBoxID).value);
    
    if(message == '')
        return false;
    if(lockIM == 1)
        return false;
        
    if ((e.which ? e.which : e.keyCode) == 13)
    {
        document.getElementById(messageTextBoxID).value = '';
    
        //lockIM = 1;
        
        var url = "/ChatPost.aspx?tid=" + recipientID + "&m=" + escape(message);
        
        //Convert HTML Codes
        message = convertIllegalChars(message);
        
        var xmlHttpRequest = getRequest();
        
        xmlHttpRequest.open("GET", url + '&t=' + (new Date()).getTime(), true);
        xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                  
        xmlHttpRequest.onreadystatechange=function()
        {  
            if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status==200)
            {  
                //Check Status        
                switch(xmlHttpRequest.responseText)
                {
                    case "1":
                        var divName_MESSAGEDISPLAYBOX = "IM_MESSAGEDISPLAYBOX_" + recipientID;
                                      
                        //Append new Message from Sender
                        var newDIV3 = document.createElement('div');
                        newDIV3.innerHTML = getMyMessageHTML(message);
                        document.getElementById(divName_MESSAGEDISPLAYBOX).appendChild(newDIV3);
                        
                        document.getElementById(divName_MESSAGEDISPLAYBOX).scrollTop = document.getElementById(divName_MESSAGEDISPLAYBOX).scrollHeight;

                        //Chat Listener gets interrupted by this, need to reload
                        initChatListener();
                    break;
                    
                    default:
                        //Error
                        
                    break;
                } 
            }

        }
        
        xmlHttpRequest.send(null);
        
        //setTimeout("lockIM = 0;", 1000);
    }
}

function getRequest()
{
    var req;
    if (window.XMLHttpRequest && !(window.ActiveXObject))
    {
        try
        {
            req = new XMLHttpRequest();
        }
        catch (e)
        {
            req = false;
        }
        // branch for IE/Windows ActiveX version
    }
    else if (window.ActiveXObject)
    {
        try
        {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                req = false;
            }
        }
    }
    
    return req;
}