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>");
                    }
                    
                     
                    cordova.plugins.finPlugin.getPosBizPrdNumForScheme
                    (
                         "",
                         function(res){app.setPosBizPrdNumForScheme(res);},
                         function(error){}
                    );
                      
                }
            }
        }, null);
        //저장된 내역 조회
        //저장된 내역 중 메인 사업장이 있다면 01_02_2.html 화면 이동
        cordova.plugins.finPlugin.getMainBizData("getMainBizData",function(res){
           cordova.plugins.finPlugin.moveStack(SET02_1.DATA, null, null);
        }, function(error){
            console.log(error);
        });
    },
    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){
                close_Progress();
                //실패 시 실패 팝업 발생
                open_PopupError(error);
            };
            cordova.plugins.finPlugin.requestPosAuth(authData, successCallback, failureCallback);
            open_Progress('사업장 인증정보를 보내고 있습니다.');
            return false;
        });
        //저장 버튼
        $('#allSave').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);
                app.hideAuthRequestPopup();
                app.uploadCompanyInfo();
            };
            var failureCallback = function(error){
                //실패 시 실패 팝업 발생
                close_Progress();
                open_PopupError(error);
            };
            cordova.plugins.finPlugin.requestMainSave(authData, successCallback, failureCallback);
            open_Progress('모바일 인증 결과를 저장 중입니다.');
            return false;
        });
    },
    otherInit:function(){
        if(isIphone()){
            cordova.plugins.finPlugin.checkCompanyInfo('', function(res){
                app.setPosBizPrdNumForScheme(res);
            }, function(error){
                
            });
        }else {
            document.addEventListener("backbutton", app.backbuttonAction, false);
        }
    },
    backbuttonAction:function(){
        var isPopupClose = false;
        if ($("#layerPopup.Popup05").is(':visible')){
            isPopupClose = true;
            app.hideInputPinPopup();
        }
        if ($("#layerPopup.Popup08").is(':visible')){
            isPopupClose = true;
            app.hideAuthRequestPopup();
        }
        if(!isPopupClose){
            cordova.plugins.finPlugin.backButton("", null, null);
        }
    },
    setPosBizPrdNumForScheme:function(res)
    {
        var dataObject = JSON.parse(res);
        
        $("#businessNumber").val(dataObject['bizNum']);
        $("#productNumber").val(dataObject['prdNum']);
        $('#layerPopup.Popup08').show();
    },setBattery:function(battery){
        $('#battery').html(battery);
    },
    showInputPinPopup:function(type){
        close_Progress();
        if('SCS' == type){
            $('.pinInputContent').html('<li><span class=\'blu_divice\'></span> 디바이스를 등록하려면 </li><li>기기의 \'*\'버튼을 빠르게 3번눌러</li><li>프린트된 비밀번호 를 입력하세요.</li>');
        }else if('PRINT' == type){
            $('.pinInputContent').html('<li><span class=\'blu_divice\'></span> 디바이스를 등록하려면 </li><li>기기의 전원버튼을 빠르게 3번눌러</li><li>프린트된 비밀번호 를 입력하세요.</li>');
        }else {
            $('.pinInputContent').html('<li><span class=\'blu_divice\'></span> 디바이스를 등록하려면 </li><li>기기의 전원버튼을 빠르게 3번눌러</li><li>프린트된 비밀번호 를 입력하세요.</li>');
        }
        $('#layerPopup.Popup05').show();
    },
    hideInputPinPopup:function(){
        $('#layerPopup.Popup05').hide();
    },
    showAuthRequestPopup:function(){
        $("#businessNumber").val("");
        $("#productNumber").val("");
        $('#layerPopup.Popup08').show();
    },
    showAuthRequestPopup:function(bizNum, prdNum){
        $("#businessNumber").val(bizNum);
        $("#productNumber").val(prdNum);
        $('#layerPopup.Popup08').show();
    },
    hideAuthRequestPopup:function(){
        $("#businessNumber").val("");
        $("#productNumber").val("");
        $('#layerPopup.Popup08').hide();
    },
    setCompanyInfo:function(name, company, address, phone){
        close_Progress();
        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);
        }
        var failMessage = "";
        if(!$(".clist_name").hasClass("ok")){
            failMessage += "대표자명";
        }
        if(!$(".clist_company").hasClass("ok")){
            var comma = "";
            if(0 != failMessage.length) comma = ", "
            failMessage = failMessage + comma + "상호명";
        }
        if(!$(".clist_address").hasClass("ok")){
            var comma = "";
            if(0 != failMessage.length) comma = ", "
            failMessage = failMessage + comma + "주소지";
        }
        if(!$(".clist_phone").hasClass("ok")){
            var comma = "";
            if(0 != failMessage.length) comma = ", "
            failMessage = failMessage + comma + "연락처";
        }
        if(0 < failMessage.length){
            open_PopupError(failMessage + "항목이 없어 모바일 인증 저장을 할 수 없습니다. 고객센터로 연락하여 정보 등록 바랍니다.");
        }
    },
    mobileIntegrity:function(){
        var data = SET03.DATA;
        cordova.plugins.finPlugin.moveStack(data, fnull,null);
    },mobileMultiCert:function(){
        var data = SET02_2.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    mobileSetting:function(){
        var data = SET01.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },mobileVatSet:function(){
        var data = SET04.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    mobileUserSet:function(){
        var data = SET05.DATA;
        cordova.plugins.finPlugin.moveStack(data, null,null);
    },
    uploadCompanyInfo:function(){
        cordova.plugins.finPlugin.setDeviceInfo("",function(deviceInfo){
            var sendData = JSON.parse(deviceInfo);
            if(isIphone()){
                HTTP_SEND("finpay/pos/setDeviceInfo.json", sendData, function(res){
                        if(res){
                            if("0000" == res.header.resCd){
                                //저장된 설정값이 업로드 되었으면 상태값을 1로 변경
                                cordova.plugins.finPlugin.setTMSStatus(1,null,null);
                            } else {
                                cordova.plugins.finPlugin.setTMSStatus(0,null,null);
                            }
                        }
                        close_Progress();
                        cordova.plugins.finPlugin.moveStack(SET02_1.DATA, null, null);
                });
            }else {
                HTTP_SEND("finpay/pos/setDeviceInfo.json", sendData, function(res){
                        if(res){
                            if("0000" == res.header.resCd){
                                //저장된 설정값이 업로드 되었으면 상태값을 1로 변경
                                cordova.plugins.finPlugin.setTMSStatus(1,null,null);
                            } else {
                                cordova.plugins.finPlugin.setTMSStatus(0,null,null);
                            }
                        }
                        close_Progress();
                        cordova.plugins.finPlugin.moveStack(SET02_1.DATA, null, null);
                });
            }

        }, function(error){
            //업로드 실패 시 상태값은 0
            cordova.plugins.finPlugin.setTMSStatus(0,null,null);
            cordova.plugins.finPlugin.moveStack(SET02_1.DATA, null, null);
        });
    }
};
app.initialize();