require(['config'], function() {
	require([
		'jquery'
	], function($) {

	});
});

let EASYPAY_PAYMENT_CREATE = '/api/easypay/payment/create'; // 이지페이 결제 생성
let EASYPAY_PAYMENT_REQUEST = '/api/easypay/payment/request';

let KICC_JAVASCRIPT_URL;
let KICC_ACTION_WEB_URL;
let KICC_ACTION_MOBILE_URL; 
let MALL_ID;
let WEB_RETURN_URL;
let MOBILE_RETURN_URL;

var popPageObj = {
	init: function () {
		this.form();
		this.button();
		this.change();
		this.view();
	},
	parentPopFn: null,
	args: null,
	returnType: null,
	form: function() {
		itp_fn_form_event.onKeyup('#ITP_FORM_PO_PAYMENT_POPUP');
	},
	button: function() {
		$('#ITP_BTN_PO_PAYMENT_CLOSE_POP').on('click', function () {
			$('#ITP_BIZPOP_PO_PAYMENT').modal('hide'); // 팝업닫기
		});
		$('#ITP_BTN_PO_PAYMENT_CONFIRM_POP').on('click', function () {
			popPageObj.fnPaymentReq();
		});
	}, 
	change: function() {
	}, 	
	view: function() {
		$('#ITP_FORM_PO_PAYMENT_POPUP_PAY_TP_CD').val(popPageObj.args.payTpCd);
		$('#ITP_FORM_PO_PAYMENT_POPUP_BRAND_ID').val(popPageObj.args.brandId);
		$('#ITP_FORM_PO_PAYMENT_POPUP_BRAND_NM').val(fn_make_user_info.get('brandNm'));
		$('#ITP_FORM_PO_PAYMENT_POPUP_STORE_ID').val(popPageObj.args.storeId);
		
		// 결제타입코드 : 10(선불(충전)), 20(후불(결제)), 30(후불(선결제)), 40(구매요청)
		if(popPageObj.args.payTpCd == '10') {  
			$('#ITP_BIZPOP_PO_PAYMENT_PAY_TP_NM').text('선불(충전)');
		} else if(popPageObj.args.payTpCd == '20') {  
			$('#ITP_BIZPOP_PO_PAYMENT_PAY_TP_NM').text('후불(결제)');
			// $('#ITP_FORM_PO_PAYMENT_POPUP_STTL_MGNT_UNQ_NO').val(popPageObj.args.sttlMgntUnqNo); // 정산관리고유번호
			$('#ITP_FORM_PO_PAYMENT_POPUP_STTL_MGNT_UNQ_NO_LIST').val(popPageObj.args.sttlMgntUnqNoList); // 정산관리고유번호 리스트
			$('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val(popPageObj.args.goodsAmt); // 결제금액
			$('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').attr('readonly','readonly');			
		} else if(popPageObj.args.payTpCd == '30') {  
			$('#ITP_BIZPOP_PO_PAYMENT_PAY_TP_NM').text('후불(선결제)');
		} else if(popPageObj.args.payTpCd == '40') {  
			$('#ITP_FORM_PO_PAYMENT_POPUP_PCH_REQ_UNQ_NO').text('구매요청');
			$('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val(popPageObj.args.goodsAmt); // 결제금액
			$('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').attr('readonly','readonly');		
		}				
		// 이지페이 결제 생성
		let param = $('#ITP_FORM_PO_PAYMENT_POPUP').serializeObject();	
		param.goodsAmt = $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val() == '' ? 0 : $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val();	
		fn_ajax_call(EASYPAY_PAYMENT_CREATE, JSON.stringify(param), function(result) {
			// console.log(JSON.stringify(result));
			
			$('#ITP_FORM_PO_PAYMENT_POPUP_PO_ORD_NO').val(result.poOrdNo); // 주문번호
			$('#ITP_FORM_PO_PAYMENT_POPUP_ORD_NM').val(result.ordNm); // 구매자명
			$('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_NM').val(result.goodsNm); // 상품명
			$('#ITP_FORM_PO_PAYMENT_POPUP_KICC_JAVASCRIPT_URL').val(result.kicc_javascript_url); // 
			$('#ITP_FORM_PO_PAYMENT_POPUP_KICC_ACTION_WEB_URL').val(result.kicc_action_web_url); // 
			$('#ITP_FORM_PO_PAYMENT_POPUP_KICC_ACTION_MOBILE_URL').val(result.kicc_action_mobile_url); // 
			$('#ITP_FORM_PO_PAYMENT_POPUP_MALL_ID').val(result.mallId); // 
			
			$('#ITP_FORM_PO_PAYMENT_POPUP .fnPoOrdNo').text(result.poOrdNo); // 주문번호
			$('#ITP_FORM_PO_PAYMENT_POPUP .fnOrdNm').text(result.ordNm); // 구매자명
			$('#ITP_FORM_PO_PAYMENT_POPUP .fnGoodsNm').text(result.goodsNm); // 상품명
			$('#ITP_FORM_PO_PAYMENT_POPUP_ORD_TEL').val(result.ordTel); // 휴대전화번호
			$('#ITP_FORM_PO_PAYMENT_POPUP_ORD_EMAIL').val(result.ordEmail); // 이메일
			
			KICC_JAVASCRIPT_URL = result.kicc_javascript_url;
            KICC_ACTION_WEB_URL = result.kicc_action_web_url;
            KICC_ACTION_MOBILE_URL = result.kicc_action_mobile_url;
			MALL_ID = result.mallId;
			WEB_RETURN_URL = window.location.href.replace('main.html', 'easypay/oqpo/oqpo_order_res.jsp');
			MOBILE_RETURN_URL = window.location.href.replace('main.html', 'easypay/oqpo/mobile_order_res_submit.jsp');
			
			const js = '<script src="'+KICC_JAVASCRIPT_URL+'"></script>';
	        $('#ITP_ASIDE #ITP_BIZPOP_PO_PAYMENT #ITP_POPUP_KICC_JS').empty();
	        $('#ITP_ASIDE #ITP_BIZPOP_PO_PAYMENT #ITP_POPUP_KICC_JS').append(js);
			
			// console.log('KICC_JAVASCRIPT_URL : ' + KICC_JAVASCRIPT_URL);
            // console.log('KICC_ACTION_WEB_URL : ' + KICC_ACTION_WEB_URL);
			// console.log('MALL_ID : ' + MALL_ID);
			// console.log('WEB_RETURN_URL : ' + WEB_RETURN_URL);
			
			var frm_pay = document.frm_pay;

			/*--웹 결제--*/
		    /*--공통--*/        
		    frm_pay.kiccActionWebUrl.value  	= KICC_ACTION_WEB_URL;       						  
		    frm_pay.kiccActionMobileUrl.value  	= KICC_ACTION_MOBILE_URL;       						  
		    frm_pay.EP_mall_id.value        = MALL_ID;       						   //브랜드그룹 ID
		    frm_pay.EP_mall_nm.value        = fn_make_user_info.get('brandNm');		   //브랜드그룹명
		    frm_pay.EP_order_no.value       = result.poOrdNo;   					   //브랜드그룹 주문번호    
		                                                                               //결제수단(select)
		    frm_pay.EP_currency.value       = "00";                                    //통화코드 : 00-원
		    frm_pay.EP_product_nm.value     = result.goodsNm;				   		   //상품명
		    frm_pay.EP_product_amt.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val();	//상품금액
		                                                                               //브랜드그룹 return_url(윈도우 타입 선택 시, 분기)
		    frm_pay.EP_lang_flag.value      = "KOR"                                    //언어: KOR / ENG
		    frm_pay.EP_charset.value        = "UTF-8"                                  //브랜드그룹 Charset: EUC-KR(default) / UTF-8
		    frm_pay.EP_user_id.value        = "";		                               //브랜드그룹 고객 ID
		    frm_pay.EP_memb_user_no.value   = "";			                           //브랜드그룹 고객 일련번호
		    frm_pay.EP_user_nm.value        = result.ordNm;						   	   //브랜드그룹 고객명
		    frm_pay.EP_user_mail.value      = result.ordEmail;                     	   //브랜드그룹 고객 이메일
		    frm_pay.EP_user_phone1.value    = result.ordTel;                       	   //브랜드그룹 고객 번호1
		    frm_pay.EP_user_phone2.value    = "";			                           //브랜드그룹 고객 번호2
		    frm_pay.EP_user_addr.value      = "";      								   //브랜드그룹 고객 주소
		    frm_pay.EP_product_type.value   = "0";                                     //상품정보구분 : 0-실물, 1-서비스
		    frm_pay.EP_product_expr.value   = "";             				           //서비스기간 : YYYYMMDD
		    frm_pay.EP_return_url.value     = WEB_RETURN_URL;  							   // Return 받을 URL (HTTP부터 입력)
		                                    
		    /*--신용카드--*/                    
		    frm_pay.EP_usedcard_code.value  = "";                                      //사용가능한 카드 LIST
		    frm_pay.EP_quota.value          = "";                                      //할부개월
		
		                                                                               //무이자 여부(Y/N) (select)   
		    frm_pay.EP_noinst_term.value    = "";		                               //무이자기간
		                                                                               //카드사포인트 사용여부(select) 
		    frm_pay.EP_point_card.value     = "";	                                   //포인트카드 LIST
		                                                                               //조인코드(select)
		                                                                               //국민 앱카드 사용(select)                                                                                  
		                                                                                                               
		    /*--가상계좌--*/
		    frm_pay.EP_vacct_bank.value     = "";                                      //가상계좌 사용가능한 은행 LIST 
		    frm_pay.EP_vacct_end_date.value = "";		                               //입금 만료 날짜
		    frm_pay.EP_vacct_end_time.value = "";        	                           //입금 만료 시간
		    
			/*--모바일 결제--*/
		    /*--공통--*/        
		    frm_pay.sp_mall_id.value        = MALL_ID;    							   //브랜드그룹 ID
		    frm_pay.sp_mall_nm.value        = fn_make_user_info.get('brandNm');		   //브랜드그룹명
		    frm_pay.sp_order_no.value       = result.poOrdNo;  						   //브랜드그룹 주문번호    
		                                                                               //결제수단(select)
		    frm_pay.sp_currency.value       = "00";                                    //통화코드 : 00-원
		    frm_pay.sp_product_nm.value     = result.goodsNm;               	   	   //상품명
		    frm_pay.sp_product_amt.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val(); 	//상품금액
		                                                                               //브랜드그룹 return_url(윈도우 타입 선택 시, 분기)
		    frm_pay.sp_lang_flag.value      = "KOR"                                    //언어: KOR / ENG
		    frm_pay.sp_charset.value        = "UTF-8"                                  //브랜드그룹 Charset: EUC-KR(default) / UTF-8
		    frm_pay.sp_user_id.value        = "";           	                       //브랜드그룹 고객 ID
		    frm_pay.sp_memb_user_no.value   = "";                 		  	           //브랜드그룹 고객 일련번호
		    frm_pay.sp_user_nm.value        = result.ordNm;                            //브랜드그룹 고객명
		    frm_pay.sp_user_mail.value      = result.ordEmail;                         //브랜드그룹 고객 이메일
		    frm_pay.sp_user_phone1.value    = result.ordTel;                           //브랜드그룹 고객 번호1
		    frm_pay.sp_user_phone2.value    = "";              				           //브랜드그룹 고객 번호2
		    frm_pay.sp_user_addr.value      = "";  									   //브랜드그룹 고객 주소
		    frm_pay.sp_product_type.value   = "0";                                     //상품정보구분 : 0-실물, 1-서비스
		    frm_pay.sp_product_expr.value   = "";									   //서비스기간 : YYYYMMDD
		    frm_pay.sp_app_scheme.value     = "";                                      //브랜드그룹 app scheme : 모바일app으로 서비스시 필수
		                                    
		    /*--신용카드--*/                    
		    frm_pay.sp_usedcard_code.value  = "";                                      //사용가능한 카드 LIST
		    frm_pay.sp_quota.value          = "";                                      //할부개월
		                                                                               //무이자 여부(Y/N) (select)   
		    frm_pay.sp_noinst_term.value    = "";		                               //무이자기간
		                                                                               //카드사포인트 사용여부(select) 
		    frm_pay.sp_point_card.value     = "";         		                       //포인트카드 LIST
		                                                                               //조인코드(select)
		    /*--가상계좌--*/                        
		    frm_pay.sp_vacct_bank.value     = "";                                      //가상계좌 사용가능한 은행 LIST 
		    frm_pay.sp_vacct_end_date.value = "";               		               //입금 만료 날짜
		    frm_pay.sp_vacct_end_time.value = "";                       	           //입금 만료 시간
			
		}, 'POST');
	}, 
	fnPaymentReq: function() {
		const formId = '#ITP_FORM_PO_PAYMENT_POPUP';
		itp_fn_form_clear_validate(null, formId);
		
		var vali_goodsAmt = itp_fn_form_validate(formId, formId + '_GOODS_AMT', ['empty','number'], undefined);
		var vali_ordTel = itp_fn_form_validate(formId, formId + '_ORD_TEL', ['empty'], undefined);
		var vali_ordEmail = itp_fn_form_validate(formId, formId + '_ORD_EMAIL', ['email'], undefined);
		
		if (vali_goodsAmt && vali_ordTel && vali_ordEmail) {		
			// var sttlRjctRsn = $('#ITP_FORM_PO_PAYMENT_POPUP_STTL_RJCT_RSN').val();	
			
			// popPageObj.parentPopFn(sttlRjctRsn);
			// $('#ITP_BIZPOP_PO_PAYMENT').modal('hide'); // 팝업닫기
			
			// $(formId).attr('action', '/oqpo-view/easypay/oqpo/oqpo_order.jsp');
			// $(formId).submit();
			
			var frm_pay = document.frm_pay;
			frm_pay.EP_pay_type.value       = $('#ITP_FORM_PO_PAYMENT_POPUP_PAY_METHOD').val();  	// 결제방법
			frm_pay.EP_product_amt.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val();  	// 결제금액			
			frm_pay.EP_user_phone1.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_ORD_TEL').val();  		// 휴대폰
			frm_pay.EP_user_mail.value      = $('#ITP_FORM_PO_PAYMENT_POPUP_ORD_EMAIL').val();  	// 이메일
			
			frm_pay.sp_pay_type.value       = $('#ITP_FORM_PO_PAYMENT_POPUP_PAY_METHOD').val();  	// 결제방법
			frm_pay.sp_product_amt.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_GOODS_AMT').val();  	// 결제금액			
			frm_pay.sp_user_phone1.value    = $('#ITP_FORM_PO_PAYMENT_POPUP_ORD_TEL').val();  		// 휴대폰
			frm_pay.sp_user_mail.value      = $('#ITP_FORM_PO_PAYMENT_POPUP_ORD_EMAIL').val();  	// 이메일
			
			f_cert();
			
			// if (isMobile() || window.innerWidth < 1201 ) {
			// f_mobile_cert();
			// } else {
			// f_cert();
			// }
		}
	} 
};

/* 인증창 호출, 인증 요청 */
function f_cert() {
    var frm_pay = document.frm_pay;
    
    /*  주문정보 확인 */
    if( !frm_pay.EP_order_no.value ) {
        alert("브랜드그룹주문번호가 존재하지않습니다.");
        frm_pay.EP_order_no.focus();
        return;
    }

    if( !frm_pay.EP_product_amt.value ) {
        alert("상품금액이 존재하지않습니다.");
        frm_pay.EP_product_amt.focus();
        return;
    } 

    /* UTF-8 사용브랜드그룹의 경우 EP_charset 값 셋팅 필수 */
    if( frm_pay.EP_charset.value == "UTF-8" ) {
        // 한글이 들어가는 값은 모두 encoding 필수.
        frm_pay.EP_mall_nm.value        = encodeURIComponent( frm_pay.EP_mall_nm.value );
        frm_pay.EP_product_nm.value     = encodeURIComponent( frm_pay.EP_product_nm.value );
        frm_pay.EP_user_nm.value        = encodeURIComponent( frm_pay.EP_user_nm.value );
        frm_pay.EP_user_addr.value      = encodeURIComponent( frm_pay.EP_user_addr.value );
    }

    /* 브랜드그룹에서 원하는 인증창 호출 방법을 선택 */
    if( frm_pay.EP_window_type.value == "iframe" ) {
	
    	easypay_webpay(frm_pay,"/oqpo-view/easypay/oqpo/oqpo_iframe_req.jsp","hiddenifr","0","0","iframe",30);

        if( frm_pay.EP_charset.value == "UTF-8" ) {
            // encoding 된 값은 모두 decoding 필수.
            frm_pay.EP_mall_nm.value        = decodeURIComponent( frm_pay.EP_mall_nm.value );
            frm_pay.EP_product_nm.value     = decodeURIComponent( frm_pay.EP_product_nm.value );
            frm_pay.EP_user_nm.value        = decodeURIComponent( frm_pay.EP_user_nm.value );
            frm_pay.EP_user_addr.value      = decodeURIComponent( frm_pay.EP_user_addr.value );
        }
    } else if( frm_pay.EP_window_type.value == "popup" ) {
    	
        easypay_webpay(frm_pay,"/oqpo-view/easypay/oqpo/oqpo_popup_req.jsp","hiddenifr","","","popup",30);

        if( frm_pay.EP_charset.value == "UTF-8" ) {
            // encoding 된 값은 모두 decoding 필수.
            frm_pay.EP_mall_nm.value        = decodeURIComponent( frm_pay.EP_mall_nm.value );
            frm_pay.EP_product_nm.value     = decodeURIComponent( frm_pay.EP_product_nm.value );
            frm_pay.EP_user_nm.value        = decodeURIComponent( frm_pay.EP_user_nm.value );
            frm_pay.EP_user_addr.value      = decodeURIComponent( frm_pay.EP_user_addr.value );
        }
    }
}

/* 인증창 호출, 인증 요청 */
function f_mobile_cert() {
    var frm_pay = document.frm_pay;
    
    /*  주문정보 확인 */
    if( !frm_pay.sp_order_no.value ) {
        alert("브랜드그룹주문번호가 존재하지않습니다.");
        frm_pay.sp_order_no.focus();
        return;
    }

    if( !frm_pay.sp_product_amt.value ) {
        alert("상품금액이 존재하지않습니다.");
        frm_pay.sp_product_amt.focus();
        return;
    }
    /* UTF-8 사용브랜드그룹의 경우 EP_charset 값 셋팅 필수 */
    if( frm_pay.sp_charset.value == "UTF-8" ) {
        // 한글이 들어가는 값은 모두 encoding 필수.
        frm_pay.sp_mall_nm.value      = encodeURIComponent( frm_pay.sp_mall_nm.value );
        frm_pay.sp_product_nm.value   = encodeURIComponent( frm_pay.sp_product_nm.value );
        frm_pay.sp_user_nm.value      = encodeURIComponent( frm_pay.sp_user_nm.value );
        frm_pay.sp_user_addr.value    = encodeURIComponent( frm_pay.sp_user_addr.value );
    }

   	frm_pay.sp_return_url.value = MOBILE_RETURN_URL; //    	
    easypay_card_webpay(frm_pay,"/oqpo-view/easypay/oqpo/mobile_order_req.jsp","_self","0","0","submit",30);    
}

/* 승인 요청 */
function f_submit() {
	
	$('#frm_pay #poOrdNo').val($('#ITP_FORM_PO_PAYMENT_POPUP_PO_ORD_NO').val()); 
	$('#frm_pay #payTpCd').val($('#ITP_FORM_PO_PAYMENT_POPUP_PAY_TP_CD').val()); 
	// $('#frm_pay #sttlMgntUnqNo').val($('#ITP_FORM_PO_PAYMENT_POPUP_STTL_MGNT_UNQ_NO').val()); 
	$('#frm_pay #brandId').val($('#ITP_FORM_PO_PAYMENT_POPUP_BRAND_ID').val()); 
	$('#frm_pay #storeId').val($('#ITP_FORM_PO_PAYMENT_POPUP_STORE_ID').val()); 
	
	var reqDataList = [];	
	var ca = $('#ITP_FORM_PO_PAYMENT_POPUP_STTL_MGNT_UNQ_NO_LIST').val().split(';');
    for(var i = 0 ; i < ca.length ; i++) {
		reqDataList.push( { sttlMgntUnqNo : ca[i] } );
	}	
		
	let param = $('#frm_pay').serializeObject();
	param.reqDataList = reqDataList;
	
	// console.log("REQ : " + JSON.stringify(param));
		
	fn_ajax_call(EASYPAY_PAYMENT_REQUEST, JSON.stringify(param), function(result) {
		
		// console.log("RES : " + JSON.stringify(result));
		
		if(result.res_cd == '0000') {
			popPageObj.parentPopFn(result);			
			$('#ITP_BIZPOP_PO_PAYMENT').modal('hide'); // 팝업닫기
		} else {
			itp_fn_modal_alert_ajax(result.res_msg);			
		}
		
	}, 'POST');	
}

/* 모바일 승인 요청 */
function f_moblie_submit() {
     var frm_pay = document.frm_pay;
     
     // 정상("0000") 일 때 승인요청페이지로 이동.
     if( frm_pay.sp_res_cd.value == "0000" ) {
    	 
         if( frm_pay.sp_charset.value == "UTF-8" ) {
             // 인증요청 시 인코딩 한 값은 승인요청 시 디코딩 처리해야함.
             frm_pay.sp_mall_nm.value      = decodeURIComponent( frm_pay.sp_mall_nm.value );
             frm_pay.sp_product_nm.value   = decodeURIComponent( frm_pay.sp_product_nm.value );
             frm_pay.sp_user_nm.value      = decodeURIComponent( frm_pay.sp_user_nm.value );
             frm_pay.sp_user_addr.value    = decodeURIComponent( frm_pay.sp_user_addr.value );
         }
         
         frm_pay.target = "_self";
         // frm_pay.action = "${contextPath}/easypay_request.itp";
         // frm_pay.submit();
     }
}

function isMobile() {
    // if we want a more complete list use this: http://detectmobilebrowsers.com/
    // str.test() is more efficent than str.match()
    // remember str.test is case sensitive
    var isMobile = (/iphone|ipod|android|ie|blackberry|fennec/).test(navigator.userAgent.toLowerCase());
    return isMobile;
}

function itp_fn_BIZPOP_PO_PAYMENT(parentPopFn, args, returnType) {
	$('#ITP_BIZPOP_PO_PAYMENT').one('shown.bs.modal', function(e) {
		itp_fn_fire_window_resize();
	}).one('hidden.bs.modal', function(e) {
		$('#ITP_BIZPOP_PO_PAYMENT').remove();
	}).modal('show');

	popPageObj.parentPopFn = parentPopFn;
	popPageObj.args = args;
	popPageObj.returnType = returnType;
	popPageObj.init();
}
