/* --------------------------------------------------- */
/* Functions                                           */
/* --------------------------------------------------- */
let coview_api = new CoviewApi();
var isDocument = false;
let isLeaved = false;
$(function() {
    var coviewApiActive = coview_api.Init(
            {
                testSTRParam : "param1",
                testNUMParam : 77,
                testBOOLParam : false,
                coview_api_srv_addr: "https://livetaskyell.abookcloud.com",
                coview_wrap_id : "coviewShare",
                coview_api_key: "8dda7092c5820d663"
            }
    );

     // special button IN Chat ui
    $("#coviewShareMainBtn").on("click", function(e) {
        e.stopPropagation();
        if ($(".coview_share_dropdown_bar").is(':visible') == true) {
            Coview_shareDropdownHide();

            if ($(".coview_share_photo_select_bubble").is(':visible') == true) {
                $(".coview_share_photo_select_bubble").slideUp();
            }
        } else {
            $(".coview_share_dropdown_bar").slideDown();
        }
    });

    $("#coviewShareCloseButton").on("click", function(e) {
        coview_api.LeaveRoom();
        $(".coview_share_area").hide();

    });

    $("body").on("click", function(){
        Coview_shareDropdownHide();

        if ($(".coview_share_photo_select_bubble").is(':visible') == true) {
            $(".coview_share_photo_select_bubble").slideUp();
        } else {
            $(".coview_share_dropdown_bar").slideDown();
        }

    });

    $(document).on("click", ".coview_share_request", function() {
        console.log("globalUserInfo", globalUserInfo);
        if ($(this).hasClass(collaborationTypeKey.VIDEO) == true) {
            globalUserInfo.coWorkType = collaborationTypeKey.VIDEO;
            $(".coview_share_title_name").text("LIVE");
        } else if ($(this).hasClass(collaborationTypeKey.CAMERA) == true) {
            globalUserInfo.coWorkType = collaborationTypeKey.CAMERA;
            $(".coview_share_title_name").text("ライブラリ");
        } else if ($(this).hasClass(collaborationTypeKey.AUDIO) == true) {
            globalUserInfo.coWorkType = collaborationTypeKey.AUDIO;
            $(".coview_share_title_name").text("音声通話");
        }

        coview_api.JoinRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
        Coview_moveToVideoShareArea();
    });


    /* --------------------------------------------------- */
    /* Video, photo, chat, doc                             */
    /* --------------------------------------------------- */
    $("#coviewShareChat").on("click", function() {
        console.log("ON click coviewShareChat");
    });

    $("#coviewSharePhoto").on("click", function(e) {
        e.stopPropagation();
        console.log("ON click coviewSharePhoto");

        if ($(".coview_share_photo_select_bubble").is(':visible') == true) {
            $(".coview_share_photo_select_bubble").slideUp();
        } else {
            $(".coview_share_photo_select_bubble").slideDown();
        }
    });




    $("#coviewSharePhotoCamera").on("click", function() {
        $(".coview_share_photo_select_bubble").hide();
        globalUserInfo.coWorkType = collaborationTypeKey.CAMERA;
        coview_api.CreateRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
        Coview_moveToVideoShareArea();

        $(".coview_share_title_name").text("カメラ");
    });
    $("#coviewSharePhotoGallery").on("click", function() {
        $(".coview_share_photo_select_bubble").hide();
        globalUserInfo.coWorkType = "gallery";
        coview_api.CreateRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
        Coview_moveToVideoShareArea();

        $(".coview_share_title_name").text("ライブラリ");
    });

    $("#coviewShareAudio").on("click", function() {
        Coview_connect_audio_collaboration();
    })


    $("#coviewShareLive").on("click", function() {
        console.log("ON click coviewShareLive");
        globalUserInfo.coWorkType = "video";
        console.log("globalUserInfo", globalUserInfo);

        coview_api.CreateRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
        Coview_moveToVideoShareArea();

        $(".coview_share_title_name").text("LIVE");
    });

//     $("#coviewShareDoc").on("click", function(){
//         console.log("ON click coviewShareDoc");
//         alert("INTO a document share mode (only audio)");
//         globalUserInfo.coWorkType = "audio";
//     });

    coview_api.addEventListener ("ready", function () {
        console.log("=============> READY : ready for coview api");
        Coview_addLoginId(globalUserInfo.loginId);
        coview_api.Login(globalUserInfo.loginId);
    });

    coview_api.addEventListener ("start", function () {
        console.log("=============> START : share start");
        $("#loadingIndicator").removeClass("full_active");
    });

    coview_api.addEventListener ("allbye", function () {
        console.log("=============> ALL BYE : share allbye");
        $("#loadingIndicator").removeClass("full_active");
    });

    coview_api.addEventListener ("guestbye", function () {
        console.log("=============> GUEST BYE : share guestbye");
        $("#loadingIndicator").removeClass("full_active");
    });

    coview_api.addEventListener ("hostbye", function () {
        console.log("=============> HOST BYE : share hostbye");
        alert(getLocalizedString("inform_exit_host_collaboration"));
        Coview_exitCollaboration();
        $("#loadingIndicator").removeClass("full_active");
    });

    coview_api.addEventListener ("destroy", function () {
        console.log("=============> DESTROY : share destroy");
        coview_api.LeaveRoom();
        $(".coview_share_area").hide();
        $("#loadingIndicator").removeClass("full_active");
    });
    var meetingId;
    coview_api.addEventListener ("message", async function (event, json) {
        console.log("+++ addEventListener", json);
        console.log("processMessage api = ", json.api);
        if (isLeaved) return;
        let loginIdList = new Array();
        switch (json.api){
            case "LoginResponse":
                console.log('------------------------------');
                console.log(globalUserInfo.coWorkType);
                console.log(collaborationJoinFlg);
                if (globalUserInfo.coWorkType == collaborationTypeKey.DOCUMENT) {
                    isDocument = true;
                    globalUserInfo.coWorkType = collaborationTypeKey.AUDIO;
                }
                if (collaborationJoinFlg == '1') {
                    coview_api.JoinRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
                    if (isDocument) {
                        if (CHAT_UTIL.isIOS()) {
                            webkit.messageHandlers.startContentView.postMessage({"meetingId": meetingId});
                        } else if (CHAT_UTIL.isAndroid()) {
                            android.startContentView(meetingId);
                        }
                    }
                } else if (collaborationJoinFlg == '0') {
                    coview_api.CreateRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
                    if (isDocument) {
                        if (CHAT_UTIL.isIOS()) {
                            meetingId = CHAT_DB.createContentView();
                        } else if (CHAT_UTIL.isAndroid()) {
                            meetingId = android.createContentView();
                        }
                    }
                } else if (collaborationJoinFlg == '2') {
                    coview_api.JoinRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
                }
                Coview_moveToVideoShareArea();
                break;
            case "CreateRoomResponse":
                if (json.resultCode == 200) {
                    var coviewInviteMessage;
                    if (isDocument) {
                        coviewInviteMessage = "" + messageSeperator + messageType.COMMUNICATIONSTART + messageSeperator + CHAT_UTIL.getCollaborationType(collaborationTypeKey.DOCUMENT) + messageSeperator + meetingId;
                    } else {
                        coviewInviteMessage = "" + messageSeperator + messageType.COMMUNICATIONSTART + messageSeperator + CHAT_UTIL.getCollaborationType(globalUserInfo.coWorkType);
                    }
                    socket.emit('createMessage', {
                        text: coviewInviteMessage
                    }, 0);

                } else {
                }
                break;
            case "JoinRoomInfoResponse":
                if (json.resultCode == 200) {
                } else {
                    alert("Not exist sharing call (" + json.resultCode + ")\nPlease using share menu.");
                    coview_api.LeaveRoom();
                    $(".coview_share_area").hide();
                    $("#loadingIndicator").removeClass("full_active");
                }
                break;
            case "JoinRoomResponse":
                if (json.resultCode == 200) {
                    for (let key in g_participants) {
                        loginIdList.push(key);
                    }
                    CHAT_UI.refreshJoinedCollaboration(loginIdList);
                 } else {
                 }
                 break;
            case "RoomMemberJoinedEvent":
                for (let key in g_participants) {
                    loginIdList.push(key);
                }
                CHAT_UI.refreshJoinedCollaboration(loginIdList);
                break;
            case "RoomMemberLeavedEvent":
                for (let key in g_participants) {
                    loginIdList.push(key);
                }
                CHAT_UI.refreshJoinedCollaboration(loginIdList);
                break;
            default:
                console.log('Unrecognized api', json);
                break;
         }
    });
});

function Coview_shareDropdownHide() {
    $(".coview_share_dropdown_bar").slideUp();
    $(".coview_share_photo_select_bubble").slideUp();
}

function Coview_moveToVideoShareArea() {
    $("#loadingIndicator").addClass("full_active");
    $(".coview_share_area").show();
    $('#collabo_main').removeClass('none');
}

function Coview_exitCollaboration(isDocument = false) {
    if (isDocument) {
        if (CHAT_UTIL.isIOS()) {
            webkit.messageHandlers.exitMeetingRoom.postMessage({});
        } else if (CHAT_UTIL.isAndroid()) {
            android.exitMeetingRoom();
        }
    }
    coview_api.LeaveRoom();
    isLeaved = true;
    if (collaborationJoinFlg != '2') {
        CHAT_UI.joinRoom(CHAT.globalLoginParameter.roomId, CHAT.globalLoginParameter.name);
    } else {
        if (typeof(android) != "undefined") {
            android.openCommunicationHome();
        } else {
            webkit.messageHandlers.openCommunicationHome.postMessage({});
        }
    }
}

function Coview_changeHost(userId) {
    console.log("Change Host To " + userId);
    changeOwnerSend(userId);
}

function Coview_addLoginId(loginId) {
    console.log("addUser loginId = " + loginId);
    coview_api.addUser(loginId);
}

function Coview_connect_audio_collaboration() {
    globalUserInfo.coWorkType = collaborationTypeKey.AUDIO;
    coview_api.CreateRoom(globalUserInfo.roomId, globalUserInfo.coWorkType);
    Coview_moveToVideoShareArea();

    $(".coview_share_title_name").text("音声通話");
}
