﻿
var chatRoom = 0;

function PostChat() {
    var ch = new PIAGWeb.T_Chat();
    ch.Chatroom = chatRoom;
    ch.ChatterName = txtName.value;
    ch.ChatText = txtChat.value;

    PIAGWeb.Chat.PostItem(ch, PostChatSuccess, PostChatFailure); //, 'NewPost'
}

function PostChatSuccess(result, context, methodName) {
    chatRoom = result.Chatroom;
    WriteResponse(result);
    DisableControls();
    txtChat.value = '';
    WaitForResponse(10000, true);
}

function PostChatFailure(results, context, methodName) {
    var msg = "Es ist ein Fehler aufgetreten, Ihre Frage konnte nicht übermittelt werden.\r\nBitte verwenden Sie das Kontaktformular.";
    msg += "\r\nDetails:\r\nStatus: " + results.get_statusCode() + "\r\nMessage: " + results.get_message() + "\r\ntimedOut: " + results.get_timedOut() + "\r\nStacktrace: " + results.get_stackTrace();
    alert(msg);
}

function WriteResponse(chat) {
    var style = '';
    if (chat.ChatterName != txtName.value)
        style = ' style="background-color: #F0F0F0;"';
        
    var html = '<p' + style + '><b>' + chat.ChatterName + ':</b> (' + chat.ChatDate.format('HH:mm:ss') + ') ' + chat.ChatText.split('\r\n').join('<br />') + "</p>";
    pnlChat.innerHTML = html + pnlChat.innerHTML;
    EnableControls();
}

function WaitForResponse(ms, disable) {
    if (disable)
        DisableControls();
    window.setTimeout('GetResponse();', ms);
}

function GetResponse() {
    var chI = new PIAGWeb.ChatIdent();
    chI.Chatroom = chatRoom;
    chI.ChatterName = txtName.value;
    
    PIAGWeb.Chat.GetResponse(chI, GetResponseSuccess, GetResponseFailure);
}

function GetResponseSuccess(result, context, methodName) {
    if (result && result.Chatroom != 0) {
        WriteResponse(result);
        if (result.ChatterName != 'System') {
            
        }
        else {
            txtChat.disabled = true;
            btnChatSend.disabled = true;
            btnChatSend.value = 'Funktion deaktiviert';
        }
    }
    else
        WaitForResponse(5000, true);
}

function GetResponseFailure(result, context, methodName) {
    //alert('Es ist ein Fehler aufgetreten:\r\n' + result.get_message() + '\r\n' +  result.get_stackTrace());
    EnableControls();
}

function DisableControls() {
    txtChat.disabled = true;
    btnChatSend.disabled = true;
    btnChatSend.value = 'Warte auf Antwort...';
}

function EnableControls() {
    txtChat.disabled = false;
    btnChatSend.disabled = false;
    btnChatSend.value = 'Senden';
}

var openChats;

function CheckForNewChats() {
    PIAGWeb.Chat.CheckForNewChatrooms(CheckForNewChatsSuccess, CheckForNewChatsFailure);
}

function CheckForNewChatsSuccess(result) {
    if (result.length > 0) {
        if (!openChats) {
            openChats = result.join(',').split(',');
        }
        for (var i = 0; i < result.length; i++) {
            if (!openChats.contains(result[i], openChats)) {
                openChats.push(result[i]);
                var w = window.open('/Chat.aspx?chatRoom=' + result[i], '', 'height=800,width=400');
                w.focus();
            }

        }
    }
    window.setTimeout('CheckForNewChats();', 5000);
}

function CheckForNewChatsFailure(result) {
    //alert('Es ist ein Fehler aufgetreten:\r\n' + result.get_message() + '\r\n' + result.get_stackTrace());
}

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}
