var isPopupShowing = false;
var posState2 = 0;
var mCompaynNum;
var mProductNum;
var posCompanyNum;
var posProductNum;
var app = {
    // Application Constructor
    initialize: function() {
        document.addEventListener('deviceready', this.onDeviceReady.bind(this), false);
    },

    // deviceready Event Handler
    //
    // Bind any cordova events here. Common events are:
    // 'pause', 'resume', etc.
    onDeviceReady: function() {
        this.itemInit();
        this.eventInit();
        this.otherInit();
    },
    itemInit:function() {
        //상단 표기 상태 변경
        cordova.plugins.finPlugin.getUseType("", function(res){
            if(0 < res.length){
                if('연동형' == res){
                    if(isIphone()){
                      $("#hd_title").html("<a href='#' onclick='app.backbuttonAction();' ><h3 class='btnPre'><span class='blind'>이전</span></h3></a><h3 class='title'>모바일 인증</h3><h3 id='battery' class='battery'><span></span></h3>");
                      cordova.plugins.finPlugin.checkBattery("", function(battery){
                          updateBattery(true, battery)
                      },function(error){
                          updateBattery(false, '')
                      });
                    }else {
                      $("#hd_title").html("<h3 class='title'>리더기 설정</h3><h3 id='battery' class='battery'><span></span></h3>");
                    }
                    
                }
            }
        }, null);
        var successCallback = function(res){
            //성공 하고 나면 01_02_2.html 화면으로 이동
            //화면 이동 후 사업장 리로드
            //cordova.plugins.finPlugin.moveStack(SET02_1.DATA,null, null);
            app.setCompanyList(res);
        };
        var failureCallback = function(error){
            //실패 시 실패 팝업 발생
            open_PopupError(error);
        };
        cordova.plugins.finPlugin.getAllBizData("", successCallback, failureCallback);
    },
    eventInit:function(){
        //인증하기 팝업 열기
        $('#mobileAuth').on('click',function(){
            app.showAuthRequestPopup();
        });
        //인증 취소 버튼
        $('#authCancel').on('click',function(){
            app.hideAuthRequestPopup();
        });
        //인증 요청 버튼
        $('#authRequest').on('click',function(){
            var authData = {
                "businessNum":$("#businessNumber").val(),
                "productNum":$("#productNumber").val()
            };
            var successCallback = function(res){
                //성공 하고 나면 01_02_2.html 화면으로 이동
                //화면 이동 후 사업장 리로드
                //cordova.plugins.finPlugin.moveStack(SET02_1.DATA,null, null);
                app.setCompanyInfo(res.name, res.company, res.address, res.phone);
            };
            var failureCallback = function(error){
                //실패 시 실패 팝업 발생
                open_PopupError(error);
            };
            cordova.plugins.finPlugin.requestSubBizAuth(authData, successCallback, failureCallback);
            return false;
        });
        //저장 버튼
        $('#allSave').on('click',function(){
            open_Progress('모바일 인증 결과를 저장 중입니다.');
            var multiData = {
                "registration_no":posCompanyNum,
                "serial_no":posProductNum,
                "multi_registration_no":$("#businessNumber").val(),
                "multi_serial_no":$("#productNumber").val()
            }
            //복수사업자 등록
            HTTP_SEND("finpay/pos/setMultiBizNums.json", multiData, function(res){
                if(res){
                    if("0000" == res.header.resCd){
                        cordova.plugins.finPlugin.setTMSStatus(2,null,null);
                    } else {
                        //실패 시 다음 업데이트 체크 시 등록 하도록 상태 변경
                        cordova.plugins.finPlugin.setTMSStatus(1,null,null);
                    }
                }else {
                    //실패 시 다음 업데이트 체크 시 등록 하도록 상태 변경
                    cordova.plugins.finPlugin.setTMSStatus(1,null,null);
                }
                var authData = {
                    "businessNum":$("#businessNumber").val(),
                    "productNum":$("#productNumber").val()
                };
                var successCallback = function(res){
                    app.hideAuthRequestPopup();
                    location.reload();
                    close_Progress();
                };
                var failureCallback = function(error){
                    //실패 시 실패 팝업 발생
                    close_Progress();
                    open_PopupError(error);
                };
                cordova.plugins.finPlugin.requestSubSave(authData, successCallback, failureCallback);
            });
            return false;
        });
        //사업장 삭제
        $('#deleteOK').on('click',function(){
            app.deleteConfirm();
        });
        //사업장 삭제 취소
        $('#deleteCancel').on('click',function(){
            app.hideDeletePopup();
        });
        //복수사업자 관리 버튼
        $('#manageMerchant').on('click',function(){
            app.clickManageBtn();
        });
        //저장된 사업장 업로드
        $('#btn_upload').on('click',function(){
            app.getUploadBizData();
        });
        //복수 사업장 복구
        $('#btn_download').on('click',function(){
            app.requestSubBizAuthRecovery();
        });
    },
    otherInit:function(){
        if(isIphone()){

        }else {
            document.addEventListener("backbutton", app.backbuttonAction, false);
        }
    },
    backbuttonAction:function(){
        var isPopupClose = false;
        if ($("#layerPopup.Popup05").is(':visible')){
            isPopupClose = true;
            app.hideInputPinPopup();
        }
        if ($("#layerPopup.Popup07").is(':visible')){
            isPopupClose = true;
            app.hideSaveCompletedPopup();
        }
        if ($("#layerPopup.Popup08").is(':visible')){
            isPopupClose = true;
            app.hideDeviceListPopup();
        }
        if ($("#layerPopup.Popup10").is(':visible')){
            isPopupClose = true;
            app.hideDeletePopup();
        }
        if(!isPopupClose){
            cordova.plugins.finPlugin.backButton("", null, null);
        }
    },
    setBattery:function(battery){
        $('#battery').html(battery);
    },
    setCompanyList:function(res){
        
        if(isIphone())
        {
            close_Progress();
           var dataArray = res['merchantsList'];
            $("#formKMJ").html('');
            var data = '';
            var i = 1;
            while (dataArray.length > 0) {
                var dataObject = JSON.parse(dataArray.pop());
                var main_check = "";
                //if(dataObject.biz_check == 'Y')
                if(dataObject['isUse'] == 'YES')
                {
                    main_check = "checked='checked'";
                }
                
                var bizName = dataObject['storeName'];
                var bizNumber = dataObject['businessNumber'];
                var proNumber = dataObject['productNumber'];
                var tid = dataObject['certificationType'];
                var isPosAuth = 'N';
                
                var deleteButton = "";
                if(dataObject['certificationType'] == 'merchants') {
                    isPosAuth = 'N';
                    deleteButton = "<button class='btnDel' onclick='app.listDel(\"" + bizNumber + "\" , \"" + proNumber + "\");'><span class='blind'>삭제</span></button>";
                }else {
                    isPosAuth = 'Y';
                    posCompanyNum = bizNumber;
                    posProductNum = proNumber;
                }
                data = data + " <div class='formSection02'> <span class='inputWrap02'> <span class='radioWrap'> <span> "
                + "<input type='checkbox' id='select" + i + "' name='" + isPosAuth + proNumber + "' " + main_check
                + " onclick='app.bizSelected(this, \"" + bizNumber + "\" , \"" + proNumber + "\");'/>"
                + "<label for='select" + i + "'><ul class='radioTxtWrap'><li>" + bizName + "</li><li>사업자번호</li><li>" + bizNumber + "</li></ul></label></span>"
                + "</span> " + deleteButton + " </span> </div>";
                i++;
            }
        }else
        {
            var jsonarray_posItems = res;
            if(jsonarray_posItems == null) return;
            var dataArray = JSON.parse(jsonarray_posItems);
            if(dataArray.length == 0) return;
            $("#formKMJ").html('');
            var data = '';
            var i = 1;
            
            while (dataArray.length > 0) {
                var dataObject = dataArray.pop();
                var main_check = "";
                if(dataObject.biz_check == 'Y') {
                    main_check = "checked='checked'";
                }
                var bizName = dataObject.biz_name;
                var bizNumber = dataObject.biz_number;
                var proNumber = dataObject.prod_number;
                var deleteButton = "";
                var isPosAuth = 'N';
                if(dataObject.pos_auth == 'N') {
                    isPosAuth = 'N';
                    deleteButton = "<button class='btnDel' onclick='app.listDel(\"" + bizNumber + "\" , \"" + proNumber + "\");'><span class='blind'>삭제</span></button>";
                }else {
                    isPosAuth = 'Y';
                    posCompanyNum = bizNumber;
                    posProductNum = proNumber;
                }
                data = data + " <div class='formSection02'> <span class='inputWrap02'> <span class='radioWrap'> <span> "
                + "<input type='checkbox' id='select" + i + "' name='" + isPosAuth + proNumber + "' " + main_check
                + " onclick='app.bizSelected(this, \"" + bizNumber + "\" , \"" + proNumber + "\");'/>"
                + "<label for='select" + i + "'><ul class='radioTxtWrap'><li>" + bizName + "</li><li>사업자번호</li><li>" + bizNumber + "</li></ul></label></span>"
                + "</span> " + deleteButton + " </span> </div>";
                i++;
            }
        }
        
        $("#formKMJ").html(data);
    },
    setCompanyInfo:function(name, company, address, phone){
        if(name != 0){
            $(".clist_name").addClass("ok");
            $(".clist_name").text(name);
        }
        if(company != 0){
            $(".clist_company").addClass("ok");
            $(".clist_company").text(company);
        }
        if(address != 0){
            $(".clist_address").addClass("ok");
            $(".clist_address").text(address);
        }
        if(phone != 0){
            $(".clist_phone").addClass("ok");
            $(".clist_phone").text(phone);
        }
    },
    listDel:function(companyNum, productNum){
        mCompaynNum = companyNum;
        mProductNum = productNum;
        app.showDeletePopup();
        //$("#layerPopup.Popup10").show();
    },
    deleteConfirm:function(){
        var multiData = {
            "registration_no":posCompanyNum,
            "serial_no":posProductNum,
            "multi_registration_no":mCompaynNum,
            "multi_serial_no":mProductNum
        }
        HTTP_SEND("finpay/pos/setDeleteBizNums.json", multiData, function(res){
            if(res){
                if("0000" == res.header.resCd){
                    cordova.plugins.finPlugin.setTMSStatus(2,null,null);
                }else {
                    //실패 시 다음 업데이트 체크 시 등록 하도록 상태 변경
                    cordova.plugins.finPlugin.setTMSStatus(1,null,null);
                }
            }else {
                //실패 시 다음 업데이트 체크 시 등록 하도록 상태 변경
                cordova.plugins.finPlugin.setTMSStatus(1,null,null);
            }
            var successCallback = function(res){
                app.hideDeletePopup();
                location.reload();
            };
            var failureCallback = function(error){
                app.hideDeletePopup();
            };
            var delData = {
                "businessNum":mCompaynNum,
                "productNum":mProductNum
            };
            cordova.plugins.finPlugin.requestSubDelete(delData, successCallback, failureCallback);
        });
    },
    bizSelected:function(obj, companyNum, productNum){
        var checkData = {
            "checked":obj.checked,
            "businessNum":companyNum,
            "productNum":productNum
        };
        var failureCallback = function(error){
            obj.checked = true;
        };
        cordova.plugins.finPlugin.requestSubToggle(checkData, function(res){}, failureCallback);
    },
    getUploadBizData:function(){
        open_Progress('사업장 정보를 업로드 중 입니다.');
        app.closeSetBtns();
        cordova.plugins.finPlugin.getUploadBizData("", function(bizData){
            var sendData = JSON.parse(bizData);
            if(isIphone())
            {
                if(sendData['serial_no'] && sendData['multi_registration_no'])
                {
                    HTTP_SEND("finpay/pos/setMultiBizNums.json", sendData, function(res){
                        close_Progress();
                        if(res){
                            if("0000" == res.header.resCd){
                                showToastMessage("복수사업자 업데이트를 완료 하였습니다.");
                            } else {
                                showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>다시 시도해 주시기 바랍니다.");
                            }
                        }else {
                            showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>인터넷 상태를 확인 후 다시 시도해 주시기 바랍니다.");
                        }
                    });
                }else {
                    close_Progress();
                    showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>저장된 사업장이 있는지 확인 해 주시기 바랍니다.");
                }
            }else{
                if(sendData.serial_no && sendData.multi_registration_no)
                {
                    HTTP_SEND("finpay/pos/setMultiBizNums.json", sendData, function(res){
                        close_Progress();
                        if(res){
                            if("0000" == res.header.resCd){
                                showToastMessage("복수사업자 업데이트를 완료 하였습니다.");
                            } else {
                                showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>다시 시도해 주시기 바랍니다.");
                            }
                        }else {
                            showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>인터넷 상태를 확인 후 다시 시도해 주시기 바랍니다.");
                        }
                    });
                }else {
                    close_Progress();
                    showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>저장된 사업장이 있는지 확인 해 주시기 바랍니다.");
                }
            }
            
        },function(error){
            close_Progress();
            showToastMessage("복수사업자 업데이트를 실패 하였습니다.<br>저장된 사업장이 있는지 확인 해 주시기 바랍니다.");
        });
    },
    requestSubBizAuthRecovery:function(){
        open_Progress('복수 사업장을 다운로드 중 입니다.');
        app.closeSetBtns();
        //사업자 목록 있는지 확인
        if($("#formKMJ").html()) {
            //메인 사업장 인지 아닌지 확인
            var posAuth = $("#select1").attr("name").substring(0,1);
            if('Y' === posAuth){
                var proNo = $("#select1").attr("name").substring(1);
                var productNo = {
                    "serial_no":proNo
                };
                open_Progress("복수사업자 다운로드 중 입니다.");
                HTTP_SEND("finpay/pos/getPosInfo.json", productNo, function(res){
                    close_Progress();
                    if(res){
                        if("0000" == res.header.resCd){
                            console.log(":: downloadMultiBiz : " + JSON.stringify(res));
                            open_Progress("저장된 복수 사업자를 복구 합니다.");
                            cordova.plugins.finPlugin.requestSubBizAuthRecovery(JSON.stringify(res),
                                function(res){
                                    close_Progress();
                                    showToastMessage(res);
                                    location.reload();
                                }, function(error){
                                    close_Progress();
                                    showToastMessage(error);
                                    location.reload();
                            });
                        } else {
                            showToastMessage("복수사업자 다운로드를 실패 하였습니다.<br>다시 진행 해 주시기 바랍니다.");
                        }
                    }else {
                        showToastMessage("복수사업자 다운로드를 실패 하였습니다.<br>인터넷 상태를 확인 후 다시 시도해 주시기 바랍니다.");
                    }
                });
            }else {
                close_Progress();
                showToastMessage("메인 사업장이 인증 되어 있지 않습니다.<br>메인 사업장 모바일 인증을 먼저 실시 해 주시기 바랍니다.");
            }
        }else {
            close_Progress();
            showToastMessage("메인 사업장이 인증 되어 있지 않습니다.<br>메인 사업장 모바일 인증을 먼저 실시 해 주시기 바랍니다.");
        }
    },
    showAuthRequestPopup:function(){
        $("#businessNumber").val("");
        $("#productNumber").val("");
        $('#layerPopup.Popup08').show();
    },
    hideAuthRequestPopup:function(){
        $("#businessNumber").val("");
        $("#productNumber").val("");
        $('#layerPopup.Popup08').hide();
    },
    showDeletePopup:function(){
        $('#layerPopup.Popup10').css('position', 'absolute');
        $('#layerPopup.Popup10').css('top', Math.max(0, (($(window).height() - $('#layerPopup.Popup10').outerHeight())/2) + $(window).scrollTop()) + 'px');
        $("#layerPopup.Popup10").css('top',$(document).scrollTop() + 300).show();
    },
    hideDeletePopup:function(){
        mCompaynNum = "";
        mProductNum = "";
        $("#layerPopup.Popup10").hide();
    },
    clickManageBtn:function(){
        if(0 == posState2){
            app.openSetBtns();
        }else {
            app.closeSetBtns();
        }
    },
    openSetBtns:function(){
        posState2 = 1;
        document.getElementById('popup_err').innerHTML = "<div class='Dim' id='DimClick'></div>";
        $('#popup_err.PopupError').show();
        $('#manage_div').animate({bottom: '65px'}, 500, 'easeInOutBack', function(){
            $('#manage_div').css('z-index','9999');
            $('#DimClick').click(function(){
                app.clickManageBtn();
            });
        });
    },
    closeSetBtns:function(){
        posState2 = 0;
        document.getElementById('popup_err').innerHTML = "";
        $('#manage_div').css('z-index','99');
        $('#manage_div').animate({bottom: '-115px'}, 300, 'easeInOutBack', function(){});    
    },
    mobileSetting:function(){
        var data = SET01.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    mobileIntegrity:function(){
        var data = SET03.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },mobileVatSet:function(){
        var data = SET04.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    mobileCert:function(){
        var data = SET02.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },mobileMultiCert:function(){
        var data = SET02_2.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    mobileUserSet:function(){
        var data = SET05.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    }
};

app.initialize();