﻿// *******************************
// Instant Messaging Library
// 1.0.1
// (C) 2008 DG2
// *******************************

var strVarHost;
var strVarGUID;
var strVarListenerGUID;
var intLastIndex = 0;
var intSessionCount = 0;
var intSessionCountLoaded = 0;
var intSessionArrayCount = 0;
var arrSessions = new Array();
var strSessionNameFocused;
var strOffset = 400;
var blnIsScrolling = 0;
var isOldBrowser = 0;
var intTextType = 1;
var strTextColor = '#333333';

// *******************************
// ilChatInit        
// *******************************
var ieVersion = (navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;
if (ieVersion < 7 && ieVersion != -1) { isOldBrowser = 1; }

function ilChatInit(strHost, strGUID, strListenerGUID) {
    if (isOldBrowser == 0) {
        $get('mImHolder').style.position = 'fixed';
        $get('mImHolder').style.bottom = '-6px';
        $get('mImHolderBorder').style.top = 'auto';
    }
    
    strVarHost = strHost;
    strVarGUID = strGUID;
    strVarListenerGUID = strListenerGUID;
}

// *******************************
// ilChatSetText        
// *******************************
function ilChatSetText(intType, strColor) {
    intTextType = intType;
    strTextColor = strColor;
}

// *******************************
// ilChatScroller          
// *******************************
function ilChatScroller() {
    if (isOldBrowser == 1) {
        blnIsScrolling = 1
        var holder = $get('mImHolder')        
        str=document.documentElement.scrollTop+strOffset;
        holder.style.top=str+'px';
        blnIsScrolling = 0;
    }
}

if (isOldBrowser == 1) {
    window.onscroll=ilChatScroller;
}

// *******************************
// ilChatSettings
// *******************************
function ilChatSettings(blnNewSession) {
    var objChatSettings = $get('DgMAX_mImSettings');
    var objChatSettingsWindow = $get('mImSettingsWin');
    
    if (objChatSettingsWindow.style.display == 'block') {
        objChatSettingsWindow.style.position = 'absolute';
        objChatSettingsWindow.style.display = 'none';
        
        if (blnNewSession == undefined) {
            objChatSettings.className = 'mImSettingsHover';
        }
        
        else {
            objChatSettings.className = 'mImSettings';
        }
    }

    else {
        objChatSettingsWindow.style.position = 'absolute';
        objChatSettingsWindow.style.left = '0px';
        objChatSettingsWindow.style.bottom = '23px';
        objChatSettingsWindow.style.display = 'block';
        objChatSettings.className = 'mImSettingsSelected';
    }
}

// *******************************
// ilChatSettingsPrivacySave
// *******************************
function ilChatSettingsPrivacySave(blnRequestsB, blnRequestsF, blnRequestsM) {

    var ilChatSettingsPrivacySaveRequestPostData = 'ID='+Url.encode(strVarGUID)+'&SettingType=2&RequestsB='+Url.encode(String(blnRequestsB))+'&RequestsF='+Url.encode(String(blnRequestsF))+'&RequestsM='+Url.encode(String(blnRequestsM));
    
    $.ajax({
        type: 'POST',
        url: 'http://'+strVarHost+'/apps/api/messaging/9/',
        data: ilChatSettingsPrivacySaveRequestPostData
    });
   
}

// *******************************
// ilChatSettingsRefresh   
// *******************************
var ilChatSettingsRefreshRequestIsCompleted = 1;
function ilChatSettingsRefresh() {
    if (ilChatSettingsRefreshRequestIsCompleted == 1) {
        ilChatSettingsRefreshRequestIsCompleted = 0;

        var ilChatSettingsRefreshRequestPostData = 'ID='+Url.encode(strVarGUID)
        
        $.ajax({
            type: 'POST',
            url: 'http://'+strVarHost+'/apps/api/messaging/0/',
            data: ilChatSettingsRefreshRequestPostData,
            success: function(data) { 
                ilChatSettingsRefreshCompleted(data); 
            }
        });
        
    }
    else { 
        setTimeout('ilChatSettingsRefresh()',500)
    }
}

// *******************************
// ilChatSettingsRefreshCompleted   
// *******************************
function ilChatSettingsRefreshCompleted(strData) {
    ilChatSettingsRefreshRequestIsCompleted = 1;
    $get('mImSettingsWin').innerHTML = strData;
}

// *******************************
// ilChatListener 
// *******************************
var ilChatListenerRequestIsCompleted = 1;
var ilChatListenerLocked = 0;
var ilChatListenerFirstStart = 1;

function ilChatListener(intLoadCount) {
    if (ilChatListenerLocked == 1) {
        return false;
    }
    
    var strActiveNickNames = '';
    var strActiveSessions = '';
    
    for (x in arrSessions) {
        if (arrSessions[x][1] != '-' && arrSessions[x][2] != null) {
            if (strActiveNickNames == '') {
                strActiveNickNames = Url.encode(arrSessions[x][1]);
                strActiveSessions = Url.encode(arrSessions[x][2]);
            }
            
            else {
                strActiveNickNames += Url.encode(' ')+Url.encode(arrSessions[x][1]);
                strActiveSessions += Url.encode(' ')+Url.encode(arrSessions[x][2]);
            }
        }
    }
    
    if (ilChatListenerRequestIsCompleted == 1 && intSessionCountLoaded >= intLoadCount) {
        ilChatListenerRequestIsCompleted = 0;
        
        var ilChatListenerRequestPostData;
        
        if (strActiveNickNames == '' && strActiveSessions == '') {
             ilChatListenerRequestPostData = 'ID='+Url.encode(strVarGUID)+'&LiID='+Url.encode(strVarListenerGUID)+'&FirstStart='+ilChatListenerFirstStart
        }
        
        else {
            ilChatListenerRequestPostData = 'ID='+Url.encode(strVarGUID)+'&LiID='+Url.encode(strVarListenerGUID)+'&FirstStart='+ilChatListenerFirstStart+'&NickNames='+Url.encode(strActiveNickNames)+'&Sessions='+Url.encode(strActiveSessions);
        }

        ilChatListenerFirstStart = 0;
        
        $.ajax({
            type: 'POST',
            url: 'http://'+strVarHost+'/apps/api/messaging/6/',
            data: ilChatListenerRequestPostData,
            dataType: 'text',
            success: function(data) { 
                ilChatListenerRequestCompleted(data); 
            }
        });
        
    }
    
    setTimeout("ilChatListener("+intLoadCount+")",2000);
}

// *******************************
// ilChatListenerRequestCompleted 
// *******************************
function ilChatListenerRequestCompleted(strData) {

    ilChatListenerRequestIsCompleted = 1;
    var xmlDoc;
    
    try {
        xmlDoc=new ActiveXObject('Microsoft.XMLDOM');
        xmlDoc.async='false';
        xmlDoc.loadXML(strData);
    }
    
    catch(e) {
    
        try {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(strData, 'text/xml');
        }
        
        catch(e) {
        }
    }

    // Check for errors
    var xmlDocErrors = xmlDoc.getElementsByTagName('errormsg');
    for (i=0;i<xmlDocErrors.length;i++) { 
        var strErrorMsg = xmlDocErrors[i].childNodes[0].nodeValue;
        ilChatListenerLocked = 1;
        $get('mImHolderSessions').style.display = 'none';
        $get('mImHolderSessionsWindows').style.display = 'none';
        $get('DgMAX_mImSettings').style.display = 'none';
        $get('mImSettingsWin').style.display = 'none';
        $get('mImMessage').style.bottom = '0px'
    }
    
    // Get typing sessions
    var xmlDocTyping = xmlDoc.getElementsByTagName('typing');
    for (i=0;i<xmlDocTyping.length;i++) { 
        var intSessionID = xmlDocTyping[i].getAttribute('sessionid');
        var strSessionNickName = xmlDocTyping[i].childNodes[0].nodeValue;
        var blnIsTyping = xmlDocTyping[i].getAttribute('is');
        
        if ($get('UcImSession'+intSessionID+'_IsTyping')) {
            if (blnIsTyping == 'True') {
                $get('UcImSession'+intSessionID+'_IsTyping').innerHTML = strSessionNickName+' is aan het typen..';
            }
            
            else {
                $get('UcImSession'+intSessionID+'_IsTyping').innerHTML = '&nbsp;';
            }
        }
    }
    
    // Get new sessions
    var xmlDocSessions = xmlDoc.getElementsByTagName('session');
    for (i=0;i<xmlDocSessions.length;i++) { 
        var strSessionNickName = xmlDocSessions[i].childNodes[0].nodeValue;
        var strSessionName = xmlDocSessions[i].getAttribute('name');
        var blnSessionMinimized = xmlDocSessions[i].getAttribute('minimized');
        var intSessionExists = 0;

        for (x in arrSessions) {
            if (strSessionNickName == arrSessions[x][1]) {
                intSessionExists = 1;
                var strSessionName = arrSessions[x][2];
                
                if ($get(arrSessions[x][2]).className == 'mImSession') {
                    $get(arrSessions[x][2]).className = 'mImSessionRed';
                }
            }
        }
        
        if (intSessionExists == 0) {
            if (blnSessionMinimized == 'True') {
                ilChatSessionCreate(Math.random() + strSessionName, strSessionNickName, 'True', 'False', 0);
            }
            
            else {
                ilChatSessionCreate(Math.random() + strSessionName, strSessionNickName, 'False', 'False', 0);
            }
        }
    }

    // Get messages
    var xmlDocMessageFeeds = xmlDoc.getElementsByTagName('messagefeed');
    for (i=0;i<xmlDocMessageFeeds.length;i++) { 
        var strFrom = xmlDocMessageFeeds[i].getAttribute('from');
        var strSessionName = xmlDocMessageFeeds[i].getAttribute('sessionname');
        var intSessionID = xmlDocMessageFeeds[i].getAttribute('sessionid');
        var xmlDocMessageFeedsMessages = xmlDocMessageFeeds[i].getElementsByTagName('message');
        
        if ($get(strSessionName+'W')) {

            // Mark red if unloaded or minimized
            if ($get(strSessionName+'W').style.display == 'none') {
                $get(strSessionName).className = 'mImSessionRed';
            }
            
            // If not relative then session is loaded
            if ($get(strSessionName+'W').style.position != 'relative') {
                for (ii=0;ii<xmlDocMessageFeedsMessages.length;ii++) { 
                    var dtmMsgDTS = xmlDocMessageFeedsMessages[ii].getAttribute('datetimestamp');
                    var dtmMsgTS = xmlDocMessageFeedsMessages[ii].getAttribute('timestamp');
                    var blnSystem = xmlDocMessageFeedsMessages[ii].getAttribute('system');
                    var strFontType = xmlDocMessageFeedsMessages[ii].getAttribute('font');
                    var strFontColor = xmlDocMessageFeedsMessages[ii].getAttribute('color');
                    var strMsg = xmlDocMessageFeedsMessages[ii].childNodes[0].nodeValue;
                    
                    if (blnSystem == 'True') {
                        $get('UcImSession'+intSessionID+'_SessionMessages').innerHTML += '<div class="mImSessionWinNickNameRed">Systeembericht ('+dtmMsgTS+'):</div><div class="mImSessionWinMessageRed">'+strMsg+'</div>';
                    }
                    
                    else {
                        $get('UcImSession'+intSessionID+'_IsTyping').innerHTML = '&nbsp;';
                        $get('UcImSession'+intSessionID+'_SessionMessages').innerHTML += '<div class="mImSessionWinNickName">'+strFrom+' zegt ('+dtmMsgTS+'):</div><div class="mImSessionWinMessage" style="font-family:'+strFontType+'; color:'+strFontColor+'">'+ilChatSessionWindowMessageR(strMsg)+'</div>';
                    }
                    
                    ilChatSessionScrollBottom(intSessionID);
                }
            }

            // Set minmize to zero when session is loaded
            if ($get(strSessionName+'W').style.display != 'none' && $get(strSessionName+'W').style.position != 'relative') {
                $.ajax({
                    type: 'POST',
                    url: '/apps/api/messaging/8/',
                    data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strFrom)+'&Minimize=0'
                });
            }
        }
    }
}

// *******************************
// ilChatMessage 
// *******************************
function ilChatMessage(strTitle, strMessage) {
    $get('mImMessageTitle').innerHTML = strTitle;
    $get('mImMessageMessage').innerHTML = strMessage;
    $get('mImMessage').style.display = 'block';
}

// *******************************
// ilChatSessionCreate    
// *******************************
var ilChatSessionLoadRequestIsCompleted = 1;
var ilChatSessionLoadRequestPH = '';
var blnIsNewSession = 0;
function ilChatSessionCreate(strSessionName, strNickName, strMinimized, strSynced, blnInit) {   
    if (ilChatSessionLoadRequestIsCompleted == 1) {
        var ilChatHolder = $get('mImHolderSessions');
        var intSessionExists = 0;
        
        for (x in arrSessions) {
            if (strNickName == arrSessions[x][1]) {
                intSessionExists = 1;
                strSessionName = arrSessions[x][2]
            }
        }

        if (intSessionExists == 0) {       
            if (intSessionCount == 6) {
                ilChatMessage('Fout bij starten van gesprek','Je kan maximaal 6 gesprekken tegelijk voeren. Sluit vensters om een gesprek met '+strNickName+' te starten.');
            }
            
            else {
                intSessionCount = intSessionCount + 1;
                intSessionArrayCount = intSessionArrayCount + 1;
                arrSessions[intSessionArrayCount-1] = new Array(2);
                arrSessions[intSessionArrayCount-1][1] = strNickName;
                arrSessions[intSessionArrayCount-1][2] = strSessionName;

                if (strSynced == 'False') {
                    ilChatHolder.innerHTML += '<div id="'+strSessionName+'" onclick="ilChatSessionLoad(\''+strSessionName+'\',\''+strNickName+'\');" onselectstart="return false;" class="mImSessionRed" onmouseover="$hover(this);" onmouseout="$hover(this);">'+strNickName+'</div>';
                }
                
                else {
                    if (blnInit != 1) {
                        ilChatHolder.innerHTML += '<div id="'+strSessionName+'" onclick="ilChatSessionLoad(\''+strSessionName+'\',\''+strNickName+'\');" onselectstart="return false;" class="mImSessionSelected" onmouseover="$hover(this);" onmouseout="$hover(this);">'+strNickName+'</div>';
                    }
                    else {
                        ilChatHolder.innerHTML += '<div id="'+strSessionName+'" onclick="ilChatSessionLoad(\''+strSessionName+'\',\''+strNickName+'\');" onselectstart="return false;" class="mImSession" onmouseover="$hover(this);" onmouseout="$hover(this);">'+strNickName+'</div>';
                    }
                }
                
                blnIsNewSession = 1;
                $get('mImHolderSessionsWindows').innerHTML += '<div id="'+strSessionName+'W" class="mImSessionWin" style="display:none; position:relative"><div class="Padding"><img src="http://i.dg-2.net/DgMAX/ImageRoot/Layout/a82/e28/50e/c55ee66c20a33384a884d3b.jpg" align="left" hspace="6" /> Bezig met laden van gesprek met '+strNickName+'..<br /><a href="javascript:;" onclick="ilChatSessionUnLoad(\''+strSessionName+'\',\''+strNickName+'\');""">Gesprek sluiten</a><p class="ClearLeft" /></div></div>';
                ilChatSessionLoad(strSessionName, strNickName, strMinimized, blnInit);
            }
        }
        
        else {
            ilChatSessionLoad(strSessionName, strNickName, strMinimized, blnInit);
        }
    }
    
    else {
        setTimeout("ilChatSessionCreate('"+strSessionName+"','"+strNickName+"','"+strMinimized+"','"+strSynced+"','"+blnInit+"')",200);
    }
}

// *******************************
// ilChatSessionLoad    
// *******************************
function ilChatSessionLoad(strSessionName, strNickName, strMinimized, blnInit) {
    var ilChatSessionLoadF = 0;
    
    if (blnInit == undefined) { blnInit = 0 }
    if (strMinimized == undefined) { strMinimized = 'False' }
    
    var strSynced = 'True';
    if ($get(strSessionName).className == 'mImSessionRed') { strSynced = 'False'; }
    
    var ilChatSessionHolder = $get('mImHolderSessionsWindows');
    if (strSessionNameFocused == strSessionName) {
        strSessionNameFocused = '-';
        ilChatSessionMinimize(strSessionName, strNickName);
    }
    
    else {
        // Session is unloaded when position is relative, so create it
        if ($get(strSessionName+'W').style.display == 'none' && $get(strSessionName+'W').style.position == 'relative' && blnInit != 1) {
            $get(strSessionName+'W').style.position = 'absolute';
            $get(strSessionName+'W').style.display = 'block';
            
            ilChatSessionLoadRequestPH = strSessionName+'W';
            ilChatSessionLoadRequestIsCompleted = 0;
                                   
            $.ajax({
                type: 'POST',
                url: 'http://'+strVarHost+'/apps/api/messaging/4/',
                data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&ClientSessionID='+Url.encode(strSessionName)+'&Minimized='+Url.encode(strMinimized)+'&Synced='+Url.encode(strSynced),
                success: function(data) { 
                    ilChatSessionLoadRequestCompleted(data); 
                }
            });
        }
        
        // Minimize session
        else if (strMinimized != 'True' && blnInit != 1) {
            ilChatSessionLoadF = 1;
            
            $.ajax({
                type: 'POST',
                url: 'http://'+strVarHost+'/apps/api/messaging/8/',
                data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&Minimize=0'
            });
        }
        
        var objChatSessionWindow = $get(strSessionName+'W');
        var objChatSession = $get(strSessionName);
        
        // Set window to top
        intLastIndex = intLastIndex + 1;
        objChatSessionWindow.style.zIndex = intLastIndex;
        strSessionNameFocused = strSessionName;
        
        // Leave hidden new session relative
        if (objChatSessionWindow.style.position != 'relative') {
            objChatSessionWindow.style.position = 'absolute';
        }
        
        // When it's a new session, set window style properties
        if (blnIsNewSession == 1) {
            if (intSessionCount == 5 || intSessionCount == 6) {
                objChatSessionWindow.style.left = ((((intSessionCount-1)*147)+72)-(411-147))+'px';
            }
            
            else {
                objChatSessionWindow.style.left = ((intSessionCount-1)*147)+72+'px';
            }
            
            objChatSessionWindow.style.bottom = '23px';
            blnIsNewSession = 0;
        }
        
        // Highlight when synced
        if (strSynced == 'True') {
            objChatSession.className = 'mImSessionSelected';
        }
        
        
        // Reset for minimized state
        if (strMinimized == 'True') {
            strSessionNameFocused = '-';
            
            if (strSynced == 'True') {
                objChatSession.className = 'mImSession';
            }
            
            objChatSessionWindow.style.display = 'none';
            
            if (objChatSessionWindow.style.position != 'relative') {
                objChatSessionWindow.style.position = 'absolute';
            }
        }
        
        else {
            if ($get('SessionIdPH'+strSessionName)) {
                var intTSessionID = parseInt($get('SessionIdPH'+strSessionName).value);
                
                if (ilChatSessionLoadF == 1) {
                    setTimeout("ilChatSessionScrollBottom("+intTSessionID+", 1)",200);
                }
                
                else {
                    setTimeout("ilChatSessionScrollBottom("+intTSessionID+")",200);
                }
            }
            
            objChatSessionWindow.style.display = 'block';
        }
    }
}

// *******************************
// ilChatSessionLoadRequestCompl
// *******************************
function ilChatSessionLoadRequestCompleted(strData) {
    ilChatSessionLoadRequestIsCompleted = 1;
    intSessionCountLoaded = intSessionCountLoaded + 1;
    $get(ilChatSessionLoadRequestPH).innerHTML = strData;
    
    // Get Temporary SessionID
    for (x in arrSessions) {
        var strTSessionName = arrSessions[x][2];
        
        if ($get('SessionIdPH'+strTSessionName)) {
            var intTSessionID = parseInt($get('SessionIdPH'+strTSessionName).value);
            setTimeout("ilChatSessionScrollBottom("+intTSessionID+")",200);            
        }
    }
}

// *******************************
// ilChatSessionScrollBottom
// *******************************
function ilChatSessionScrollBottom(intSessionID, blnFocus) {
    $get('UcImSession'+intSessionID+'_SessionMessages').scrollTop = 0;
    $get('UcImSession'+intSessionID+'_SessionMessages').scrollTop = $get('UcImSession'+intSessionID+'_SessionMessages').scrollHeight;
    
    
    if (blnFocus != undefined) {
        try {
            $get('UcImSession'+intSessionID+'_SessionTextArea').focus();
        }
                
        catch(e) {
                
        }
    }
}

// *******************************
// ilChatSessionSetIndex 
// *******************************
function ilChatSessionSetIndex(strSessionName) {
    if ($get(strSessionName+'W').style.zIndex == intLastIndex) {
        return false;
    }
    
    else {
        intLastIndex = intLastIndex + 1;
        $get(strSessionName+'W').style.zIndex = intLastIndex;
        strSessionNameFocused = strSessionName;
        
        if ($get('SessionIdPH'+strSessionName)) {
            var intTSessionID = parseInt($get('SessionIdPH'+strSessionName).value);
            
            try {
                $get('UcImSession'+intTSessionID+'_SessionTextArea').focus();
            }
            
            catch(e) {
            
            }
        }
    }
}

// *******************************
// ilChatSessionSend
// *******************************
function ilChatSessionSend(intSessionID, strNickName, strProfileNickName) {
    var objTextArea = $get('UcImSession'+intSessionID+'_SessionTextArea');
    strMessage = objTextArea.innerHTML;
    
    if (strMessage.length == 0) {
        strMessage = objTextArea.value;
    }

    objTextArea.innerHTML = '';
    objTextArea.value = '';
    objTextArea.focus();

    strMessage = strMessage.replace(/\n/,'');
    
    if (strMessage.length > 0) {
        var currentTime = new Date();
        var intHours = currentTime.getHours();
        var intMinutes = currentTime.getMinutes();
        
        if (intMinutes < 10) {
            intMinutes = '0' + intMinutes;
        }

        $get('UcImSession'+intSessionID+'_SessionMessages').innerHTML += '<div class="mImSessionWinNickName">'+strNickName+' zegt ('+intHours+':'+intMinutes+'):</div><div class="mImSessionWinMessage" style="font-family:'+objTextArea.style.fontFamily+'; color:'+strTextColor+'">'+ilChatSessionWindowMessageR(strMessage)+'</div>';
        ilChatSessionScrollBottom(intSessionID, 1);
               
        $.ajax({
            type: 'POST',
            url: 'http://'+strVarHost+'/apps/api/messaging/5/',
            data: 'SessionID='+intSessionID+'&FontType='+intTextType+'&FontColor='+Url.encode(strTextColor)+'&Message='+Url.encode(strMessage)+'&ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strProfileNickName)
        });
    }
}

// *******************************
// ilChatSessionRegisterTyping    
// *******************************
var ilChatSessionRegisterTypingNow = 0;
function ilChatSessionRegisterTyping(objTextArea, e, intSessionID, strNickName, strProfileNickName) {
    var objTextArea = $get('UcImSession'+intSessionID+'_SessionTextArea');
    switch(intTextType) {
        case 1: objTextArea.style.fontFamily = 'Verdana'; break;
        case 2: objTextArea.style.fontFamily = 'Arial'; break;          
        case 3: objTextArea.style.fontFamily = 'Comic Sans MS'; break;
        case 4: objTextArea.style.fontFamily = 'Tahoma'; break;
        case 5: objTextArea.style.fontFamily = 'Times New Roman'; break;
        case 6: objTextArea.style.fontFamily = 'Courier New'; break;
        default: objTextArea.style.fontFamily = 'Verdana';
    }
    objTextArea.style.color = strTextColor;

    var keynum;
    
    if(window.event) {
      keynum = e.keyCode;
    }
    
    else if(e.which) {
      keynum = e.which;
    }

    if (keynum == 13) {
        ilChatSessionSend(intSessionID, strNickName, strProfileNickName);
    }
    
    else {
        if (ilChatSessionRegisterTypingNow == 0) {
            ilChatSessionRegisterTypingNow = 1;
            
            $.ajax({
                type: 'POST',
                url: 'http://'+strVarHost+'/apps/api/messaging/7/',
                data: 'SessionID='+intSessionID+'&ID='+Url.encode(strVarGUID)
            });
            
            setTimeout("ilChatSessionRegisterTypingC('"+intSessionID+"')",500);
        }
    }
}

// *******************************
// ilChatSessionRegisterTypingC    
// *******************************
function ilChatSessionRegisterTypingC(intSessionID) {
    ilChatSessionRegisterTypingNow = 0;
    setTimeout("ilChatSessionRegisterTypingCC('"+intSessionID+"')",500);
}

// *******************************
// ilChatSessionRegisterTypingCC
// *******************************
function ilChatSessionRegisterTypingCC(intSessionID) {
    if (ilChatSessionRegisterTypingNow == 0) {
        
        $.ajax({
            type: 'POST',
            url: 'http://'+strVarHost+'/apps/api/messaging/7/',
            data: 'SessionID='+intSessionID+'&ID='+Url.encode(strVarGUID)+'&UnRegister=1'
        });
    }
}

// *******************************
// ilChatSessionMinimize          
// *******************************
function ilChatSessionMinimize(strSessionName, strNickName, blnWindow) {

    $.ajax({
        type: 'POST',
        url: 'http://'+strVarHost+'/apps/api/messaging/8/',
        data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&Minimize=1'
    });
    
        
    var objChatSessionWindow = $get(strSessionName+'W');
    var objChatSession = $get(strSessionName);
    
    objChatSessionWindow.style.display = 'none';
    objChatSessionWindow.style.position = 'absolute';
    
    if (blnWindow == undefined) {
        objChatSession.className = 'mImSessionHover';
    }
    
    else {
        if (strSessionNameFocused == strSessionName) {
            strSessionNameFocused = '-';
        }
        
        objChatSession.className = 'mImSession';
    }
}

// *******************************
// ilChatSessionUnLoad          
// *******************************
function ilChatSessionUnLoad(strSessionName, strNickName, blnFunction) {
    if (blnFunction == undefined) {
        
        $.ajax({
            type: 'POST',
            url: 'http://'+strVarHost+'/apps/api/messaging/8/',
            data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&Minimize=1&Close=1'
        });
    }
    
    var objChatSessionWindow = $get(strSessionName+'W');
    var objChatSession = $get(strSessionName);
    objChatSessionWindow.innerHTML = '';
    objChatSessionWindow.style.display = 'none';
    objChatSessionWindow.style.position = 'absolute';
    objChatSession.style.display = 'none';
    objChatSessionWindow.style.top = '0px';
    objChatSession.style.position = 'absolute';
    intSessionCount = intSessionCount - 1;
    
    for (x in arrSessions) {
        if (strNickName == arrSessions[x][1]) {
            arrSessions[x][1] = '-';
            arrSessions[x][2] = '-';
        }
        
    }
    
    var intCurrentSession = 0;
    for (x in arrSessions) {
        if (arrSessions[x][1] != '-' && arrSessions[x][2] != null) {
            intCurrentSession = intCurrentSession + 1;

            var objChatSessionCurrentWindow = $get((arrSessions[x][2]+'W'));
            
            if (intCurrentSession == 5 || intCurrentSession == 6) {
                objChatSessionCurrentWindow.style.left = ((((intCurrentSession-1)*147)+72)-(411-147))+'px';
            }
            
            else {
                objChatSessionCurrentWindow.style.left = ((intCurrentSession-1)*147)+72+'px';
            }
        }
    }
}

// *******************************
// ilChatSessionDelete    
// *******************************
function ilChatSessionDelete(strSessionName, strNickName) {
    var blockConfirm = confirm('Weet je zeker dat je '+strNickName+' wilt verwijderen uit je contactpersonen? Alle bericht geschiedenis wordt meeverwijderd.');
    
	if (!blockConfirm) {
		return false;
	}
	   
    $.ajax({
        type: 'POST',
        url: 'http://'+strVarHost+'/apps/api/messaging/8/',
        data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&Minimize=0&Delete=1',
        success: function(data) { 
            ilChatSessionDeleteRequestCompleted(); 
        }
    });
    
    ilChatSessionUnLoad(strSessionName, strNickName, 1);
}

// *******************************
// ilChatSessionDeleteCompleted     
// *******************************
function ilChatSessionDeleteRequestCompleted() {
    ilChatMessage('Lid verwijderd','Het lid is verwijderd uit je contactpersonen.<br />Je kan het lid altijd opnieuw toevoegen via zijn of haar profielpagina.');
    ilChatSettingsRefresh();
}


// *******************************
// ilChatSessionBlock       
// *******************************
function ilChatSessionBlock(strSessionName, strNickName) {

    var blockConfirm = confirm('Weet je zeker dat je '+strNickName+' wilt blokkeren? Alle bericht geschiedenis wordt verwijderd en '+strNickName+' kan niet meer op je profiel komen.');
    
	if (!blockConfirm) {
		return false;
	}
	
	$.ajax({
        type: 'POST',
        url: 'http://'+strVarHost+'/apps/api/messaging/8/',
        data: 'ID='+Url.encode(strVarGUID)+'&NickName='+Url.encode(strNickName)+'&Minimize=0&Block=1',
        success: function(data) { 
            ilChatSessionBlockRequestCompleted(); 
        }
    });
    
    ilChatSessionUnLoad(strSessionName, strNickName, 1);
    
}

// *******************************
// ilChatSessionBlockCompleted     
// *******************************
function ilChatSessionBlockRequestCompleted() {
    ilChatMessage('Blokkade actief','Het lid is verwijderd uit je contactpersonen en is geblokkeerd.<br />Wil je dit ongedaan maken ga dan naar <a href="/MijnProfiel/BlockList/">deze pagina</a>.');
    ilChatSettingsRefresh();
}

// *******************************
// ilChatSessionWindowSmileys
// *******************************
function ilChatSessionWindowSmileys(intSessionID) {
    var objSmileyButton = $get('UcImSession'+intSessionID+'_SessionSmileysButton');
    var ObjChatSessionWindowSmileys = $get('UcImSession'+intSessionID+'_mImSessionWinSmileys');
    
    if (ObjChatSessionWindowSmileys.style.display == 'block') {
        ObjChatSessionWindowSmileys.style.display = 'none';
        objSmileyButton.className = 'Button';
    }
    
    else {
        ObjChatSessionWindowSmileys.style.left = '4px';
        ObjChatSessionWindowSmileys.style.top = '158px';
        ObjChatSessionWindowSmileys.style.display = 'block';
        objSmileyButton.className = 'ButtonBlue';
    }
}

// *******************************
// ilChatSessionWindowMessageR
// *******************************
function ilChatSessionWindowMessageR(str) {

    try {
        str = str.replace(/\:\)/gim,' smilie_happy_peace.gif');
        str = str.replace(/\:D/gim,' smiley_toothblink.gif');
        str = str.replace(/\;\)/gim,' smilie_knipoog.gif');
        str = str.replace(/\:\(/gim,' smilie_verdrietig.gif');
        str = str.replace(/\:O/gim,' smilie_duh.gif');
        str = str.replace(/\:@/gim,' smiley_stupidme.gif');
        str = str.replace(/\:S/gim,' smilie_confused_scheel.gif');
        str = str.replace(/\:\'\(/gim,'smilie_cry.gif');
        str = str.replace(/\:\|/gim,' smilie_depressive.gif');
        str = str.replace(/\:\$/gim,' smilie_schamen.gif');
        str = str.replace(/\:P/gim,' smilie_tongue_updown.gif');
        str = str.replace(/\:X/gim,' smilie_character_sealed.gif');
        str = str.replace(/\:E/gim,' sarcasme.gif');
        str = str.replace(/\(H\)/gim,' smilie_cool_shades.gif');
        str = str.replace(/\(A\)/gim,' smilie_innocent.gif');
        str = str.replace(/\(G\)/gim,' smilie_character_ghost.gif');
        str = str.replace(/\(E\)/gim,' smilie_animal_elephant.gif');
        str = str.replace(/\(S\)/gim,' smiley_spider.gif');
        str = str.replace(/\(M\)/gim,' smiley_mouse.gif');
        str = str.replace(/lol/gim,' smilie_happy_rolling.gif');
        str = str.replace(/\(L\)/gim,' smilie_heart_bounce.gif');
        str = str.replace(/\(K\)/gim,' smilie_love_lips.gif');
        str = str.replace(/XD/gim,' smilie_ex.gif');
        str = str.replace(/\(C\)/gim,' schater.gif');
        str = str.replace(/\(N\)/gim,' smilie_party_funky_banana.gif');
        str = str.replace(/\:L/gim,' loser.gif');
        str = str.replace(/\(Y\)/gim,' smilie_happy_thumbup.gif');
        str = str.replace(/\(HB\)/gim,' smilie_happy_birthday.gif');
        
        str = str.replace(/(ftp|http|https|file):\/\/[\S][^\' ]+(\b|$)/gim,'<a href="$&" target="_blank">$&</a>').replace(/([^\/])(www[\S]([^\' ])+(\b|$))/gim,'$1<a href="http://$2" target="_blank">$2</a>');
        str = str.replace(/^(www[\S][^\' ]+(\b|$))/gim,'<a href="http://$&" target="_blank">$&</a>');

        var strSmileyURL = 'http://i.dg-2.net/dg/img/HAhaha/';
        str = str.replace(/smilie_happy_peace.gif/gim, '<img src="'+strSmileyURL+'smilie_happy_peace.gif" />');
        str = str.replace(/smiley_toothblink.gif/gim, '<img src="'+strSmileyURL+'smiley_toothblink.gif" />');
        str = str.replace(/smilie_knipoog.gif/gim, '<img src="'+strSmileyURL+'smilie_knipoog.gif" />');
        str = str.replace(/smilie_verdrietig.gif/gim, '<img src="'+strSmileyURL+'smilie_verdrietig.gif" />');
        str = str.replace(/smilie_duh.gif/gim, '<img src="'+strSmileyURL+'smilie_duh.gif" />');
        str = str.replace(/smiley_stupidme.gif/gim, '<img src="'+strSmileyURL+'smiley_stupidme.gif" />');
        str = str.replace(/smilie_confused_scheel.gif/gim, '<img src="'+strSmileyURL+'smilie_confused_scheel.gif" />');
        str = str.replace(/smilie_cry.gif/gim, '<img src="'+strSmileyURL+'smilie_cry.gif" />');
        str = str.replace(/smilie_depressive.gif/gim, '<img src="'+strSmileyURL+'smilie_depressive.gif" />');
        str = str.replace(/smilie_schamen.gif/gim, '<img src="'+strSmileyURL+'smilie_schamen.gif" />');
        str = str.replace(/smilie_tongue_updown.gif/gim, '<img src="'+strSmileyURL+'smilie_tongue_updown.gif" />');
        str = str.replace(/smilie_character_sealed.gif/gim, '<img src="'+strSmileyURL+'smilie_character_sealed.gif" />');
        str = str.replace(/sarcasme.gif/gim, '<img src="'+strSmileyURL+'sarcasme.gif" />');
        str = str.replace(/smilie_cool_shades.gif/gim, '<img src="'+strSmileyURL+'smilie_cool_shades.gif" />');
        str = str.replace(/smilie_innocent.gif/gim, '<img src="'+strSmileyURL+'smilie_innocent.gif" />');
        str = str.replace(/smilie_character_ghost.gif/gim, '<img src="'+strSmileyURL+'smilie_character_ghost.gif" />');
        str = str.replace(/smilie_animal_elephant.gif/gim, '<img src="'+strSmileyURL+'smilie_animal_elephant.gif" />');
        str = str.replace(/smiley_spider.gif/gim, '<img src="'+strSmileyURL+'smiley_spider.gif" />');
        str = str.replace(/smiley_mouse.gif/gim, '<img src="'+strSmileyURL+'smiley_mouse.gif" />');
        str = str.replace(/smilie_happy_rolling.gif/gim, '<img src="'+strSmileyURL+'smilie_happy_rolling.gif" />');
        str = str.replace(/smilie_heart_bounce.gif/gim, '<img src="'+strSmileyURL+'smilie_heart_bounce.gif" />');
        str = str.replace(/smilie_love_lips.gif/gim, '<img src="'+strSmileyURL+'smilie_love_lips.gif" />');
        str = str.replace(/smilie_ex.gif/gim, '<img src="'+strSmileyURL+'xd.gif" />');
        str = str.replace(/schater.gif/gim, '<img src="'+strSmileyURL+'schater.gif" />');
        str = str.replace(/smilie_party_funky_banana.gif/gim, '<img src="'+strSmileyURL+'smilie_party_funky_banana.gif" />');
        str = str.replace(/loser.gif/gim, '<img src="'+strSmileyURL+'loser.gif" />');
        str = str.replace(/smilie_happy_thumbup.gif/gim, '<img src="'+strSmileyURL+'smilie_happy_thumbup.gif" />');
        str = str.replace(/smilie_happy_birthday.gif/gim, '<img src="'+strSmileyURL+'smilie_happy_birthday.gif" />');
    }
    
    catch(e) {
       
    }
    
    return str;
    
}

// *******************************
// ilChatSessionWindowText
// *******************************
function ilChatSessionWindowText(intSessionID) {
    var objTextButton = $get('UcImSession'+intSessionID+'_SessionTextButton');
    var ObjChatSessionWindowText = $get('UcImSession'+intSessionID+'_mImSessionWinText');
    if (ObjChatSessionWindowText.style.display == 'block') {
        ObjChatSessionWindowText.style.position = 'absolute';
        ObjChatSessionWindowText.style.display = 'none';
        objTextButton.className = 'Button';
    }
    
    else {
        ObjChatSessionWindowText.style.position = 'absolute';
        ObjChatSessionWindowText.style.left = '59px';
        ObjChatSessionWindowText.style.top = '108px';
        ObjChatSessionWindowText.style.display = 'block';
        objTextButton.className = 'ButtonBlue';
    }
}

// *******************************
// ilChatSessionWindowTextColorS
// *******************************
function ilChatSessionWindowTextColorS(strColor, intSessionID) {
    $get('UcImSession'+intSessionID+'_mImSessionWinText_FontColor').innerHTML = strColor;
    $get('UcImSession'+intSessionID+'_mImSessionWinText_FontColor').style.color = strColor;
}

// *******************************
// ilChatSessionWindowTextTypeS
// *******************************
function ilChatSessionWindowTextFontS(intType, intSessionID) {
    $get('UcImSession'+intSessionID+'_mImSessionWinText_FontTypeS').value = intType;
}

// *******************************
// ilChatSessionWindowTextSubmit
// *******************************
function ilChatSessionWindowTextSubmit(intSessionID) {
    var objTextArea = $get('UcImSession'+intSessionID+'_SessionTextArea');
    
    switch(parseInt($get('UcImSession'+intSessionID+'_mImSessionWinText_FontTypeS').value)) {
        case 1: objTextArea.style.fontFamily = 'Verdana'; break;
        case 2: objTextArea.style.fontFamily = 'Arial'; break;          
        case 3: objTextArea.style.fontFamily = 'Comic Sans MS'; break;
        case 4: objTextArea.style.fontFamily = 'Tahoma'; break;
        case 5: objTextArea.style.fontFamily = 'Times New Roman'; break;
        case 6: objTextArea.style.fontFamily = 'Courier New'; break;
        default: objTextArea.style.fontFamily = 'Verdana';
    }
    
    objTextArea.style.color = $get('UcImSession'+intSessionID+'_mImSessionWinText_FontColor').innerHTML;
    intTextType = parseInt($get('UcImSession'+intSessionID+'_mImSessionWinText_FontTypeS').value);
    strTextColor = $get('UcImSession'+intSessionID+'_mImSessionWinText_FontColor').innerHTML
    
    var ilChatSessionWindowTextSubmitRequeststrPostData = 'SettingType=1&ID='+Url.encode(strVarGUID);
    ilChatSessionWindowTextSubmitRequeststrPostData += '&FontType='+$get('UcImSession'+intSessionID+'_mImSessionWinText_FontTypeS').value;
    ilChatSessionWindowTextSubmitRequeststrPostData += '&FontColor='+Url.encode($get('UcImSession'+intSessionID+'_mImSessionWinText_FontColor').innerHTML);
       
    $.ajax({
        type: 'POST',
        url: 'http://'+strVarHost+'/apps/api/messaging/9/',
        data: ilChatSessionWindowTextSubmitRequeststrPostData
    });
    
    ilChatSessionWindowText(intSessionID);
}