var fMarkingCardNum = "";
//연동형 체크
// 연동형 : true , 통합형 : false
// default 는 통합형으로 시작
var isPeristalsis = false;
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() {

       $(document).on("keyup", ".uPayN", function() {
           $(this).number(true);
       });
       if ($(".uPayN").length > 0) {
           $(".uPayN").number(true);
       }
        app.setSignButton(false);
        //상단 표기 상태 변경
        cordova.plugins.finPlugin.getUseType("", function(res){
            if(0 < res.length){
                if('연동형' == res){
                    isPeristalsis = true;
                    $("#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.checkScheme("", function(isScheme){
                       if(isIphone())
                       {
                            cordova.plugins.finPlugin.getType("",
                            function(rps){
                              if('ear'==rps)
                              {
                                 app.showNotUseEar();
                              }else
                              {
                                 app.getSchemeData();
                              }
                            },
                            null);
                       }else
                       {
                            app.getSchemeData();
                       }
                        
                    }, function(error){
                        //스키마 값이 없는 경우 해당 앱에 정보 없음 Callback 을 한다.
                    });
                }else {
                    isPeristalsis = false;
                    //통합형 인 경우 연결된 모든 사업장을 가져온다
                    if(isIphone())
                    {
                         cordova.plugins.finPlugin.getType("",
                         function(rps){
                           if('ear'==rps)
                           {
                              app.showNotUseEar();
                           }else
                           {
                              app.getAllBizData();
                           }
                         },
                         null);
                    }else
                    {
                         app.getAllBizData();
                    }
                }
                
            }
        }, null);
    },
    eventInit:function(){
        
    },
    otherInit:function(){
        if(isIphone()){

        }else {
            document.addEventListener("backbutton", app.backbuttonAction, false);
        }
        UPDATE_CHECK();
    },
    backbuttonAction:function(){
        if(isIphone())
        {
            cordova.plugins.finPlugin.backButton("", null, null);
        }else
        {
            var isPopupClose = false;
            if ($("#layerPopup.Popup12").is(':visible')){
                isPopupClose = true;
                app.hideWarnningPopup();
            }
            if ($("#popup_fb.PopupFB").is(':visible')){
                isPopupClose = true;
                close_Fallback();
            }
            if(!isPopupClose){
                cordova.plugins.finPlugin.backButton("", null, null);
            }
        }
        
    },
    setBattery:function(battery){
        $('#battery').html(battery);
    },
    getSchemeData:function(){
        cordova.plugins.finPlugin.getSchemeData("", function(schemeData){
            app.setSchemeData(schemeData);
        },function(error){
            if(isIphone()) cordova.plugins.finPlugin.moveStack(SET01.DATA,null, null);
        });
    },
    getAllBizData:function(){
        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);
        };
        var sendData = {
            "sepa":"union_card"
        };
        cordova.plugins.finPlugin.getAllBizData(sendData, successCallback, failureCallback);
    },
    setCompanyList:function(data){
        var html = "";
        var isOneCompany = false;
        if(isIphone())
        {
            var dataArray = data['merchantsList'];
            if(dataArray.length == 1) isOneCompany = true;
             
             var tmpCnt = 0;
             while (dataArray.length > 0)
             {
                 var dataObject = JSON.parse(dataArray.pop());
                 var bizName = dataObject['storeName'];
                 var bizNumber = dataObject['businessNumber'];
                 var proNumber = dataObject['productNumber'];
                 var redNumber = dataObject['readerNumber'];
                 var valuer = proNumber + "|" + bizNumber + "|" + redNumber;
                 if(0 == tmpCnt) app.changeCompany(valuer);
                 html = html + "<option value='" + valuer + "'>" + bizName + "(" + bizNumber + ")</option>";
                 tmpCnt++;
                 
             }
            
            $("#slt_company").html(html);
            //사업장이 하나라면 화면에 표기 하지 않는다
            if(isOneCompany) $("#bizInfo").hide();
            else $("#bizInfo").show();
        }else
        {
            var dataArray = JSON.parse(data);
            if(dataArray.length == 1) {
                $("#bizInfo.inputWrap").html('');
                var dataObject = dataArray.pop();
                app.changeCompany(dataObject.cat_id);
                return;
            }
            var data = "";
            var tmpCnt = 0;
            while (dataArray.length > 0) {
                var dataObject = dataArray.pop();
                if(0 == tmpCnt) app.changeCompany(dataObject.cat_id);
                data = data + "<option value='" + dataObject.cat_id + "'>" + dataObject.biz_name + "(" + dataObject.biz_number + ")</option>";
                tmpCnt++;
            }
            $("#slt_company").html(data);
        }
        
    },
    changeAmount:function(_val){
        //가격 변동 시 계속 갱신
        cordova.plugins.finPlugin.changePrice(replaceAll(_val,",",""), null, null);
    },
    changeInst:function(_val){
        //할부 개월 변동 시 계속 갱신
        cordova.plugins.finPlugin.changeInstPlan(replaceAll(_val,",",""), null, null);
    },
    changeCompany:function(_val){
        cordova.plugins.finPlugin.changeCompany(_val, null, null);
    },
    setCardInfo:function(_val){

        fMarkingCardNum = _val;
        var nums = replaceAll(_val,'F','*');
        $("#uCardN").val(nums);
        if(-1 != nums.indexOf('*')){
            close_Progress();
            close_Fallback();
            app.setSignButton(true);
        }
    },
    setSchemeData:function(schemeData){
        var dataObject = JSON.parse(schemeData);
        if(isIphone())
        {
            
           $("#uSum").val(dataObject['totalAmount']);
             app.setDisableAmount(true);
             $("#uInstPlan").val(dataObject['instlmtMonth']);
//             app.setDisableInstallment(true);
             $("#slt_company").html('');
             var valuer = dataObject['productNumber'] + "|" + dataObject['businessNumber'] + "|" + dataObject['readerNumber'];
              
             var data = "<option value='" + valuer + "'>" + dataObject['businessName'] + "(" + dataObject['businessNumber'] + ")</option>";
            
             $("#slt_company").html(data);
             $("#slt_company").val(valuer).prop("selected", true);
             app.setDisableMerchant(true);
             //값 체크 로직 추가 필요
             setTimeout(function(){
                 app.requestReadCard();
             },500);
            
            
           
            
            
            
        }else
        {
            
                   $("#uSum").val(dataObject.totalAmount);
                   app.setDisableAmount(true);
                   $("#uInstPlan").val(dataObject.instPlan);
//                   app.setDisableInstallment(true);
                   $("#slt_company").html('');
                   var data = "<option value='" + dataObject.catId + "'>" + dataObject.companyName + "(" + dataObject.companyNumber + ")</option>";
                   $("#slt_company").html(data);
                   $("#slt_company").val(dataObject.catId).prop("selected", true);
                   app.setDisableMerchant(true);
                   //값 체크 로직 추가 필요
                   setTimeout(function(){
                       app.requestReadCard();
                   },500);
        }
        
        
        
        
       
    },
    requestReadCard:function(){
        
        var price = $("#uSum").val(); // 판매금액 입력값
        var instPlan = $("#uInstPlan").val(); // 할부개월 입력값
        var catId = $(".company").val(); // 상호 선택값
        if(price == "" || catId == ""){
            app.showWarnningPopup();
        }else{
            //open_Progress('카드 읽기를 시작 합니다.');
            app.setCardInfo('카드 읽기를 시작 합니다.');
            showToastMessage('카드 읽기를 시작 합니다.', 10000);
            var sendData = {
                "price":replaceAll(price, ",", ""),
                "instPlan":instPlan,
                "catId":catId,
                "sepa":"union_card"
            };
            cordova.plugins.finPlugin.requestReadCard(sendData, function(res){

            }, function(error){
                close_Progress();
                showToastMessage(error);
                
            });
        }
    },
    requestSign:function(){
        var price = $("#uSum").val(); // 판매금액 입력값
        var month = $("#uInstPlan").val(); // 할부개월 입력값
        var company = $(".company").val(); // 상호 선택값
        var cardnum = $("#uCardN").val(); // 카드번호 입력값

        if(price == "" || company == "" || cardnum == ""){
            app.showWarnningPopup();
        }else{
            var sendData = {
                "catId":company,
                "price":replaceAll($("#uSum").val(), ",", ""),
                "sepa":"union_card"
            };
            cordova.plugins.finPlugin.checkNoCVMValue(sendData, function(res){
                if(1 > res){
                  if(isIphone()){
                      if('입력완료' != $('#uCardPW').val())
                      {
                        $('#uCardPW').val('입력완료');
                        cordova.plugins.finPlugin.requestPinPassword("",null,null);
                      }
                                                      
                      setTimeout(function(){
                          app.requestPayment("");
                      },500);
                  }else
                  {
                    app.requestPayment("");
                  }
                                                      
                    
                }else {
                    if(isIphone())
                    {
                        if('입력완료' != $('#uCardPW').val())
                        {
                          $('#uCardPW').val('입력완료');
                          cordova.plugins.finPlugin.requestPinPassword("",null,null);
                        }else {
                            var signData = {"TYPE":"NON"};
                            setTimeout(function(){
                                cordova.plugins.finPlugin.onUnionCardRequestBySign(signData,function(signData){
                                    
                                      var stackData = {
                                          "SUBTITLE":$('.title').html(),
                                          "CARDINFO":fMarkingCardNum,
                                          "STACK_ID":"SIGN",
                                          "STACK_URL":"02_03_2.html",
                                          "SEPA":"UNION_CARD",
                                          "merchant":company,
                                          //"merchant":productNumber+"|"+businessNumber+"|"+$('#catId').val(),
                                          "price":$("#uSum").val(),
                                          "installment":$("#uInstPlan").val()
                                         };
                                      
                                                                                   
                                       
                                      cordova.plugins.finPlugin.moveStack(stackData,null, null);
                                                                          
                                                                          
                                }, function(error){
                                    showToastMessage(error);
                                });
                            },500);
                        }
                         
                    } else
                    {
                        if('입력완료' == $('#uCardPW').val()){
                            SIGN.DATA.SUBTITLE = $('.title').html();
                            SIGN.DATA.CARDINFO = fMarkingCardNum;
                            cordova.plugins.finPlugin.requestSignData(SIGN.DATA,function(signData){
                              app.requestPayment(signData);
                            }, function(error){
                              showToastMessage(error);
                            });
                        }else {
                            cordova.plugins.finPlugin.requestPinPassword("",null,null);
                        }
                    }
                }
            }, function(error){
                showToastMessage(error);
            });
        }
    },
    requestPayment:function(signData){
        open_PopupError('결제 승인 요청 중 입니다.');
        var sendData = {
            "catId":$(".company").val(),
            "price":replaceAll($("#uSum").val(), ",", ""),
            "month":$("#uInstPlan").val(),
            "sign":signData,
            "sepa":"union_card"
        };
        cordova.plugins.finPlugin.requestPayment(sendData, function(dbId){
             close_PopupError();
             if(!isIphone()) //ios는 native에서 자체 이동
             {
                open_PopupError('결제가 완료 되었습니다.');
                RECEIPT_CARD.DATA.RECEIPT_ID = dbId;
                cordova.plugins.finPlugin.moveStack(RECEIPT_CARD.DATA,null, null);
             }
            
        }, function(error){
            if(error) open_PopupError(error);
            else open_PopupError('결제 요청에 실패 하였습니다.');
            if(!isPeristalsis){//통합형                                     
              cordova.plugins.finPlugin.backButton("", null, null);
            }
        });
    },
    setCardPassword:function(_pass){
        close_Progress();
        if(_pass == 'pin 번호 입력') $('.requestPurchase').addClass('disabled');
        else {
            $('#uCardPW').val(_pass);
            if(6 <= _pass.length || "입력완료" == _pass){
                $('.requestPurchase').removeClass('disabled');
            }else $('.requestPurchase').addClass('disabled');
        }
        
        if(isIphone() && "입력완료" == _pass)
        {
            setTimeout(function(){
                app.requestSign();
            },500);
        }
            
    },
    setCardNum:function(res){
        app.setCardInfo(res);
    },
    setDisableAmount:function(_state) {
        $("#uSum").prop("disabled", _state);
    },
    setDisableInstallment:function(_state) {
        $("#uInstPlan").prop("disabled", _state);
    },
    setDisableMerchant:function(_state) {
        $("#slt_company").prop("disabled", _state);
    },
    setSignButton:function(isSign){
        if(isSign == true) {
            app.setDisableAmount(true);
            if(!isIphone()){
                app.setDisableInstallment(true);
            }
            app.setDisableMerchant(true);
            var sendData = {
                "catId":$(".company").val(),
                "price":replaceAll($("#uSum").val(), ",", ""),
                "sepa":"union_card"
            };
            cordova.plugins.finPlugin.checkNoCVMValue(sendData, function(res){
                if(1 > res){
                    $(".SaveBtnWrap02").html( "<a href='#' onclick='app.requestSign();' class='requestPurchase'>승인요청(무서명)</a>");
                }else {
                    $(".SaveBtnWrap02").html( "<a href='#' onclick='app.requestSign();' class='requestPurchase'>서명요청</a>");
                }
            }, function(error){
                showToastMessage(error);
            });
            
            if(isIphone()){
              setTimeout(function(){
                 $('.requestPurchase').addClass('disabled');
              },500);
            }
        }else {
            app.setDisableAmount(false);
            app.setDisableInstallment(false);
            app.setDisableMerchant(false);
            $(".SaveBtnWrap02").html( "<a href='javascript:app.requestReadCard();' class=''>카드읽기</a>");
        }
    },
    showWarnningPopup:function(){
        close_Progress();
        $('#layerPopup.Popup12').show();
    },
    hideWarnningPopup:function(){
        $('#layerPopup.Popup12').hide();
    },setPIN:function(res){
        app.setCardPassword(res);
    },makeEnableInputText:function()
    {
         app.setDisableAmount(false);
       app.setDisableInstallment(false);
       app.setDisableMerchant(false);
        $("#uCardN").val('');
    },showNotUseEar:function()
    {
        $('#layerPopup.Popup07').show();
    },hideNotUseEar:function()
    {
        $('#layerPopup.Popup07').hide();
        
        cordova.plugins.finPlugin.getUseType("", function(res){
        if(0 < res.length){
            console.log("}}}}}}}}} res" + res);
            if('연동형' == res){
                cordova.plugins.finPlugin.returnerForUnionPayEarDongle("", null, null);
            }else
            {
                cordova.plugins.finPlugin.backButton("", null, null);
            }
        }
        }, null);
    },errorOfPaymentByNetwork:function()
    {
        close_PopupError();
        open_PopupError('네트워크 문제로 인하여 결제 요청에 실패 하였습니다.');
        cordova.plugins.finPlugin.backButton("", null, null);
    }
};

app.initialize();
