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(true);
        //상단 표기 상태 변경
        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){
                        //스키마 값이 있는 경우 해당 번호 기반으로 인증 정보를 가져와야 한다
                        //번호가 없는 경우 메인 사업장을 가져온다
                        app.getSchemeData();
                    }, function(error){
                        //스키마 값이 없는 경우 해당 앱에 정보 없음 Callback 을 한다.
                    });
                }else {
                    //통합형 인 경우 연결된 모든 사업장을 가져온다
                    isPeristalsis = false;
                    app.getAllBizData();
                }
            }
        }, null);
    },
    eventInit:function(){

    },
    otherInit:function(){
         document.addEventListener("backbutton", app.backbuttonAction, false);
         UPDATE_CHECK();
    },
    backbuttonAction:function(){
        var isPopupClose = false;
        if ($("#layerPopup.Popup12").is(':visible')){
            isPopupClose = true;
            app.hideWarnningPopup();
        }
        if ($("#layerPopup.Popup13").is(':visible')){
            isPopupClose = true;
            app.hideWarnningPopup2();
        }
        if ($("#popup_fb.PopupFB").is(':visible')){
            isPopupClose = true;
            close_Fallback();
        }
        if(!isPopupClose){
            cordova.plugins.finPlugin.backButton("", null, null);
        }
    },
    setBattery:function(battery){
        $('#battery').html(battery);
    },
    numberWithCommas:function(x) {
        return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    },
    getSchemeData:function(){
        cordova.plugins.finPlugin.getSchemeData("", function(schemeData){
            app.setSchemeData(schemeData);
        },function(error){
          if(isIphone()){
            //console.log('>>>>>>>>>>> getSchemeData error -> ' + error);
                /*
                if(confirm("기기등록정보 혹은 POS 정보가 없습니다. \n리더기 등록 페이지로 이동합니다.")) {
                   cordova.plugins.finPlugin.moveStack(SET01.DATA,null, null);
                }
                 */
              
                                                
              //showToastMessage("기기등록정보 혹은 POS 정보가 없습니다. \n리더기 등록 페이지로 이동합니다.");
              close_Progress();
              //$('#schemeErrorlayerPopup.Popup12').show();
                                                
            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":"common_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++;
             }
        }else
        {
            var dataArray = JSON.parse(data);

//            if(dataArray.length == 1) {
//                $("#bizInfo.inputWrap").html('');
//                var dataObject = dataArray.pop();
//                app.changeCompany(dataObject.cat_id);
//                data = "<option value='" + dataObject.cat_id + "'>" + dataObject.biz_name + "(" + dataObject.biz_number + ")</option>";
//                return;
//            }
            if(dataArray.length == 1) isOneCompany = true;
            var tmpCnt = 0;
            while (dataArray.length > 0) {
                var dataObject = dataArray.pop();
                if(0 == tmpCnt) app.changeCompany(dataObject.cat_id);
                html = html + "<option value='" + dataObject.cat_id + "'>" + dataObject.biz_name + "(" + dataObject.biz_number + ")</option>";
                tmpCnt++;
            }
        }
        $("#slt_company").html(html);
        //사업장이 하나라면 화면에 표기 하지 않는다
        if(isOneCompany) $("#bizInfo").hide();
        else $("#bizInfo").show();
    },
    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);
    },
    setTokenInfo:function(_val){

        fMarkingCardNum = _val;
        $("#uCardN").val(maskAsterisk(_val));
        close_Progress();
        close_Fallback();
        app.setSignButton(true);

    },
    setCardNum:function(res){
        app.setTokenInfo(res);
    },
    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);
        }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.setTokenInfo(dataObject.hipassToken);
            app.setDisableMerchant(true);
        }
    },
    requestSign:function(){
        var price = $("#uSum").val(); // 판매금액 입력값
        var month = $("#uInstPlan").val(); // 할부개월 입력값
        var catId = $(".company").val(); // 상호 선택값
        var cardnum = $("#uCardN").val(); // 카드번호 입력값

        if(price == "" || catId == "" || cardnum == ""){
            app.showWarnningPopup();
        }else{
            var sendData = {
                "catId":$(".company").val(),
                "price":replaceAll($("#uSum").val(), ",", ""),
                "sepa":"common_card"
            };
            app.requestPayment("");
        }
    },
    requestPayment:function(signData){
//        open_PopupError('결제 승인 요청 중 입니다.');
        open_Progress('결제 승인 요청 중 입니다.');
        var sendData = {
            "catId":$(".company").val(),
            "price":replaceAll($("#uSum").val(), ",", ""),
            "month":$("#uInstPlan").val(),
            "sign":signData,
            "sepa":"common_card"
        };
        cordova.plugins.finPlugin.requestPayment(sendData, function(dbId){
            if(!isIphone()) //ios는 native에서 자체 이동
             {
                 open_PopupError('결제가 완료 되었습니다.');
                 RECEIPT_CARD.DATA.RECEIPT_ID = dbId;
                 cordova.plugins.finPlugin.moveStack(RECEIPT_CARD.DATA,null, null);
             }
             close_Progress();
//             close_PopupError();
        }, function(error){
            if(error) open_PopupError(error);
            else open_PopupError('결제 요청에 실패 하였습니다.');
            if(!isPeristalsis){//통합형                                     
                cordova.plugins.finPlugin.backButton("", null, null);
            }
        });
    },
    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){
        app.setDisableAmount(true);
        if(!isPeristalsis){
            app.setDisableInstallment(true);
        }
        app.setDisableMerchant(true);
        var sendData = {
            "catId":$(".company").val(),
            "price":replaceAll($("#uSum").val(), ",", ""),
            "sepa":"common_card"
        };
        $(".SaveBtnWrap02").html( "<a href='javascript:app.requestSign();' class=''>승인요청</a>");
    },
    showWarnningPopup:function(){
        close_Progress();
        $('#layerPopup.Popup12').show();
    },
    hideWarnningPopup:function(){
        $('#layerPopup.Popup12').hide();
    },
    hideWarnningPopup2:function(){
        $('#layerPopup.Popup13').hide();
    }
    ,makeEnableInputText:function()
    {
        app.setDisableAmount(false);
        app.setDisableInstallment(false);
        app.setDisableMerchant(false);
        $("#uCardN").val('');
    },errorOfPaymentByNetwork:function()
    {
        close_PopupError();
        open_PopupError('네트워크 문제로 인하여 결제 요청에 실패 하였습니다.');
        cordova.plugins.finPlugin.backButton("", null, null);
    }
    
};

app.initialize();