var mTimer,
firstMsg = 0,
wtime = 10000,
lLocation,
department = -1,
department_status = new Array(-1,-1,-1),
client,tech,domain,
dep,
uname,
chat = false;

$(document).ready(function() {
    $('#mj-u-name').val('Гость');
    $('#mj-u-name').attr("disabled","");
    $('#mj-message').attr("disabled","");
    client = $("#mj-client"),tech = $("#mj-tech"),domain = $("#mj-domain"),
    dep = $([]).add(client).add(domain).add(tech);
    $("#mj-msg-send").click(function(){sendMessage()});
    $("#mj-message").keypress(function(event){
        if ((event.ctrlKey) && ((event.keyCode == '10')||(event.keyCode == '13'))){
            sendMessage();
        }
    });
    $("#mj-notify input[type=checkbox]").click(function(evt){
        $.cookie("mj-chat-notify", $(this).attr("checked") );
    });
    $("#mj-msg-exit").click(function(){
        clearInterval(mTimer);
        $.post("ajax.php", {fn: 'CloseChat'},
        function(data){
            window.location = 'http://www.majordomo.ru';
        }, "json");
    });
    $("#mj-msg-restart").click(function(){
        window.location = 'http://www.majordomo.ru/chat/';
    });

    $('#mj-email-send').click(function(){
        var email = $('#mj-u-email').val();
        if ( /@majordomo\.ru/.test(email) ) {
            alert("На электронные адреса компании Мажордомо невозможно отправлять письма из чата.");
            return false;
        }
        var regexp = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;
        var evalid = regexp.test(email);
        if ((email == 'youremail@send.ru')||(email == '')||!evalid){
            $('#mj-u-lemail').text('Введите корректный электронный адрес');
            $('#mj-u-email').val('');
            return;
        }
        emaildata = encodeURIComponent($('#mj-messages').html());
        $.post("ajax.php", {fn: 'GetEmail', email: email, emaildata: emaildata},
        function(data){
            $('#mj-u-lemail').text('Ваш диалог отправлен на указанный ниже электронный адрес');
        }, "json");
    })
    $('.mj-voting-1, .mj-voting-2, .mj-voting-3').click(function(){
        $.post("ajax.php", {fn: 'grade', grade: $(this).attr('id').slice(10)},
        function(data){
        }, "json");
        $('#mj-voting').css('display','none');
    })
    getDepartment();
    handleStartDep();
});
function handleChatStart(){
    mTimer = setInterval('getMessage()', wtime);
}
function handleSendChat() {
    clearInterval(mTimer);
    getMessage();
    mTimer = setInterval('getMessage()', wtime);
}
function handleReceiveChat(data) {
    i = 0;
    while (data[i]){
        if (data[i].text == 'Сеанс чата завершен.<br>'){
            $('#mj-message, #mj-u-name').attr('disabled','disabled');
            $("#mj-msg-restart").show();
            $("#mj-msg-send, #mj-msg-exit,#mj-voting").remove();
            clearInterval(mTimer);
                $.post("ajax.php", {fn: 'CloseChat'},
                    function(data){
                }, "json");
        }
        if (data[i].name==null){
            $('#mj-messages').append('<p class="mj-msg-user">'+uname+' <span class="mj-msg-time">( '+data[i].time+' )</span></p><p class="mj-msg-body">'+data[i].text+'</p>');
        } else {
            $('#mj-messages').append('<p class="mj-msg-oper">'+data[i].name+' <span class="mj-msg-time">( '+data[i].time+' )</span></p><p class="mj-msg-body">'+data[i].text+'</p>');
            if(!data.grade)$('#mj-voting').delay(1500).fadeIn(500);
            else $('#mj-notify').css('top',243); 
            $('#mj-notify').delay(1500).fadeIn(500);
        }
        i++;
    }
    if (i){
        var chat_div = document.getElementById('mj-messages');
        chat_div.scrollTop = chat_div.scrollHeight;
        if ( $('#mj-notify').css('display') == 'block' && $.cookie("mj-chat-notify") ) {
            $('#notify').html('<audio src="notify.wav" autoplay="autoplay" controls="controls"></audio>');
        }
    }
    var x =  {"callcenter":0,"domain":1,"support":2};
    var j = x[data.department];
    if ((j != department)&(j != undefined)){
        setDepartment(j);
    }
    return i;
}
function setDepartment(d){
    $('#mj-depart').children().fadeOut(1500);
    setTimeout(function(){$('#mj-depart').html(dep.eq(d).html())},1500);
    setTimeout(function(){$('#mj-depart').children('div').eq(0).css('background-position','-47px 0px')},1500);
    setTimeout(function(){$('#mj-depart').children('div').eq(2).css('color','#8C8C8C')},1500);
    setTimeout(function(){$('#mj-depart').children('div').eq(3).remove()},1500);
    department = d;
}
function getMessage(){
    $.post("ajax.php", {fn: 'GetMSG'},
    function(data){
            handleReceiveChat(data);
    }, "json");
}
function sendMessage(){
    if ($('#mj-message').val() == '') {
        $('#mj-auth').prepend('<div id="mj-msg" style="display:none;color:#3EAFDA;position: absolute; top: 35px; left: 20px; font-size: 30px;">Не вижу текст сообщения <span style="font-size:60px;">☻</span></div>');
        $('#mj-msg').fadeIn('slow').delay(500).fadeOut('fast');
        return;
    }
    if(!chat){
        handleStopDep();
        uname = $('#mj-u-name').val();
        if ($('#mj-u-name').val() != 'Гость') {
           $('#mj-u-lname').text('Здравствуйте, ');
           $('#mj-u-name').css({'background':'none repeat scroll 0 0 #F3F3F3', 'border':'0 none', 'margin-top':'7px', 'margin-left':'1px'}).attr("disabled","disabled");
        }
        setDepartment(department);
        var umsg = $('#mj-message').val();
        $('#mj-message').val('').focus();
        $.post("ajax.php", {fn: 'SetMSG', msg: umsg, name: $('#mj-u-name').val(), email: $('#mj-u-email').val(), accaunt: $('#mj-u-account').val(), department: department},
        function(data){
                $('#mj-department').slideUp(500);
                setTimeout(function(){
                    $('#mj-messages').slideDown(500);
                    $('#mj-depart').fadeIn(500);
                    $('#mj-chat-toemail').fadeIn(500);
                    $('#mj-msg-exit').fadeIn(500);
                },1000);
                setTimeout('handleSendChat()', 250);
        }, "json");

        chat = true;
    }
    else{
        uname = $('#mj-u-name').val();
        if ($('#mj-u-name').val() != 'Гость') {
           $('#mj-u-lname').text('Здравствуйте, ');
           $('#mj-u-name').css({'background':'none repeat scroll 0 0 #F3F3F3', 'border':'0 none', 'margin-top':'7px', 'margin-left':'1px'}).attr("disabled","disabled");
        }
        var umsg = $('#mj-message').val();
        $('#mj-message').val('').focus();
        $.post("ajax.php", {fn: 'SetMSG', msg: umsg, name: $('#mj-u-name').val()},
        function(data){
                setTimeout('handleSendChat()', 250);
        }, "json");
    }
}
function setLocation(){
    $.post("ajax.php", {fn: 'SetLocation', msg: $('#mj-message').val()},
        function(data){
    }, "json");
}
function getHistory(data){
        if ((data == null) || (data == false)) return;
        if (data.name != 'Гость'){
           $('#mj-u-name').val(data.name);
           $('#mj-u-lname').text('Здравствуйте, ');
           $('#mj-u-name').css({'background':'none repeat scroll 0 0 #F3F3F3', 'border':'0 none', 'margin-top':'7px', 'margin-left':'1px'}).attr("disabled","disabled");
        }
        uname =  $('#mj-u-name').val();
        i = handleReceiveChat(data);
        if(i){
            $('#mj-wellcome').hide();
            $('#mj-department').slideUp(500);
            $('#mj-chat').fadeIn(500).delay(500).queue(function(){
                $('#mj-messages').slideDown(500);
                $('#mj-depart, #mj-chat-toemail, #mj-msg-exit').fadeIn(500).queue(function(){
                    var chat_div = document.getElementById('mj-messages');
                    chat_div.scrollTop = chat_div.scrollHeight;

                })
            })
            handleSendChat();
            handleStopDep();
        }
}
var deptimer;
function handleStartDep(){
    deptimer = setInterval('getDepartment()', 10000);
}
function handleStopDep(){
    clearInterval(deptimer);
}
function getDepartment(){
    //getHistory();
    $.post("ajax.php", {fn: 'GetDepartment'},
    function(data){
        statusDepartment(data[0]);
        getHistory(data[1]);
    }, "json");
}
function statusDepartment(status){
    var i = 0;
    while(i < 3){
        if (status[i] != department_status[i]){
            if (status[i] == -1){
                dep.eq(i).removeClass('mj-state-ready').removeClass('mj-state-busy').addClass('mj-state-out');
                dep.eq(i).unbind('click',selectDepartment);
            }
            if (status[i] == 0){
                dep.eq(i).removeClass('mj-state-ready').removeClass('mj-state-out').addClass('mj-state-busy');
                dep.eq(i).unbind('click',selectDepartment);
            }
            if (status[i] == 1){
                dep.eq(i).removeClass('mj-state-out').removeClass('mj-state-busy').addClass('mj-state-ready');
                dep.eq(i).bind('click',selectDepartment);
            }
        }
        i++;
    }
    department_status = status;
}
function selectDepartment(){
    if (department != -1){
        dep.eq(department).removeClass('mj-state-selected');
    }
    department = dep.index($(this));
    $.post("ajax.php", {fn: 'SetDepartment', department:department},function(data){}, "json");
    $(this).addClass('mj-state-selected');
    $('#mj-wellcome').hide();
    $('#mj-chat').fadeIn(500);
}
