const vChatCloud = new VChatCloud();
let channel, userNick, userKey, profileJson = {} ,channelKey="", youtubeId;
let profileImgPath = {
    "1": "img/profile/1.png"
    ,"2": "img/profile/2.png"
    ,"3": "img/profile/3.png"
    ,"4": "img/profile/4.png"
    ,"5": "img/profile/5.png"
};

var getParameters = function (paramName) {
    // 리턴값을 위한 변수 선언
    var returnValue;

    // 현재 URL 가져오기
    var url = location.href;

    // get 파라미터 값을 가져올 수 있는 ? 를 기점으로 slice 한 후 split 으로 나눔
    var parameters = (url.slice(url.indexOf('?') + 1, url.length)).split('&');

    // 나누어진 값의 비교를 통해 paramName 으로 요청된 데이터의 값만 return
    for (var i = 0; i < parameters.length; i++) {
        var varName = parameters[i].split('=')[0];
        if (varName.toUpperCase() == paramName.toUpperCase()) {
            returnValue = parameters[i].split('=')[1];
            return decodeURIComponent(returnValue);
        }
    }
};
channelKey = getParameters('channelKey');

// 채팅방 연결
$(function() {
    if (getParameters('youtubeId') != undefined ) {
        youtubeId = getParameters('youtubeId');
        $("#ytplayer").attr("src","https://www.youtube.com/embed/"+youtubeId+"?autoplay=1&controls=0&mute=1&modestbranding=1&rel=0&playlist="+youtubeId+"&loop=1");
    }

    let p = $('div.login').show(),
        c = $('div.chat_field').hide(),
        cn = $('div.chat_name').show(),
        ci = $('div.chat_input').show();

        // 프로필 이미지 선택
        $("#profileMob li a").click(function () {
            $('#profileMob li a').attr('class', '');
            $(this).attr('class', 'active');
        })

        $('button.popupbtn', p).click(function() {
            let r = {nick: $('input#name', p).val() };
            if (r.nick) {
                $('div.bottom div.name').text(r.nick);
                joinRoom(channelKey, 'xxxxxxxx'.replace(/[xy]/g, function(a, b) { return (b = Math.random() * 16, (a == 'y' ? b & 3 | 8 : b | 0).toString(16)) }), r.nick, function(err, history) {
                    if (err) {

                        console.log(err);
                        openError(err.code, function() {
                            p.show();
                            cn.show();
                            ci.show();
                            c.css('background', '#fff');
                            c.hide();
                            vChatCloud.disconnect();
                        });

                        p.hide();
                        cn.hide();
                        ci.hide();
                        c.css('background', '#f7fafb');
                        c.show();

                    } else {

                        // 채팅영역에 글쓰기가 활성화될시 활성화(최신공지 한개만 남기기)
                        let flag = undefined;
                        if (typeof write == 'function') history && history.forEach(function(m) { 
                            if(m.messageType == 'notice') {
                                if (flag == undefined) {
                                    flag = true;
                                    write(m, 'notice', 'history');
                                }
                            } else {
                                write(m, '', 'history');
                            }
                        });

                        p.hide();
                        c.show();

                        // 이벤트 바인딩 시작
                        chatInit();
                        personalInit();
                        msgInit();
                        likeInif();
                        getRoomInfo();
                        $('#profileMob li a').each(function(i, item) {
                            if ($(item).attr("class") == "active") {
                                $("#chat_icon_input").attr("src", $(item).children("img").attr("src"));
                            }
                        })
                        let param = {
                            "profile": $('div.login div.profile a.active').attr("profile")
                        };
                        console.log(JSON.stringify(param));
                        channel.sendCustom({
                            message: JSON.stringify(param)
                            ,type : "profile"
                        });
                    }
                });
            }
        });

    $('a#closebtn').click(function() {
        p.show();
        c.hide();
        likeEnd();
        vChatCloud.disconnect();
    })
    
});

function joinRoom(roomId, clientKey, nickName, callback) {
    // vchatcloud 객체
    channel = vChatCloud.joinChannel({
        roomId: roomId,
        clientKey: clientKey,
        nickName: nickName
    }, function(error, history) {
        $('div#content1 div.content, div.notice, div.entery, div.chatout, div.whisper, div.warn').remove();
        if (error) {
            if (callback) return callback(error, null);
            return error;
        }
        if (callback) callback(null, history);
        // 채팅영역에 글쓰기가 활성화될시 활성화
        if (typeof write == 'function') write("실시간 채팅에 오신 것을 환영합니다. 개인정보를 보호하고 커뮤니티 가이드를 준수하는 것을 잊지 마세요!", 'notice');
    })
}

function openError(code, callback) {
    console.log(code);
    let p = $('div.errorpopup').hide();
    if(errMsg[code] == undefined){
        $('p:nth-child(2)', p).text(code);
    } else {
        $('p:nth-child(2)', p).text(errMsg[code].kor);
    }
    $('a', p).off().click(function() { p.hide(); if (typeof callback == 'function') { callback() } });
    p.show();
}

function openLayer(e) {
    console.log(e)
    let sWidth = $('.chat_contents').width();
    let sHeight = $('.chat_contents').height();

    console.log("sWidth :" + sWidth + " sHeight :" + sHeight);

    let oWidth = $('.popupLayer').width();
    let oHeight = $('.popupLayer').height();

    console.log("oWidth :" + oWidth + " oHeight :" + oHeight);

    let fWidth = $("#chat").offset().left;
    let fHeight = $("#chat").offset().top;

    console.log("fWidth :" + fWidth + " fHeight :" + fHeight);

    let cHeight = $("#content1").height();

    console.log("cHeight :" + cHeight);

    // 레이어가 나타날 위치를 셋팅한다.
    let divLeft = e.clientX - fWidth + $('html').scrollLeft();
    let divTop = e.clientY - fHeight + $('html').scrollTop();

    console.log("e.clientX :" + e.clientX + " e.clientY :" + e.clientY);
    console.log("divLeft :" + divLeft + " divTop :" + divTop);

    // 레이어가 화면 크기를 벗어나면 위치를 바꾸어 배치한다.
    if ((divLeft + oWidth) > sWidth) divLeft -= oWidth;
    if ((divTop + oHeight) > sHeight) divTop -= oHeight;
    if (divTop > (cHeight - oHeight)) {
        divTop = divTop - oHeight;
    }

    // 레이어 위치를 바꾸었더니 상단기준점(0,0) 밖으로 벗어난다면 상단기준점(0,0)에 배치하자.
    if (divLeft < 0) divLeft = 0;
    if (divTop < 0) divTop = 0;

    $('.popupLayer').data($(this).data()).css({
        "top": Math.max(0, divTop),
        "left": Math.max(0, divLeft),
        "position": "absolute",
        "z-index": 1
    }).show();
    /*$("#whisper").show();*/
}


// 채팅방 제목 (채팅방 입장시 제목 변경)
function getRoomInfo(){
    const api_url = "https://vchatcloud.com/api/openapi/getChatRoomInfo";
    let param = {
        "room_id": channelKey
    };
    $.post(api_url, param, function(data) {
        if (data.result_cd == 1) {
            $("#roomNm").html(data.param.room_nm);
        } else {
            console.log("조회 실패")
        }
    }, "json");
}

