<!DOCTYPE html>
<html lang="ko"
	xmlns:th="http://www.thymeleaf.org"
	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
	layout:decorator="mob/common/layout/LoginLayoutMob">
<!--
 *******************************************************************************
 * @source  : SigninFormMob.html
 * @desc    : 로그인 Page
 *============================================================================
 * STYLE24
 * Copyright(C) 2020 TSIT, All rights reserved.
 *============================================================================
 * VER  DATE         AUTHOR      DESCRIPTION
 * ===  ===========  ==========  =============================================
 * 1.0  2021.03.10   jsshin     최초 작성
 *******************************************************************************
 -->
<body>

<th:block layout:fragment="content">
	<main class="container mb">
		<!-- ★ 컨텐츠 시작 -->
		<section class="content mb_login">
			<div class="inner">
				<div class="close"><a class="btn_close"><span></span><span></span></a></div>
			</div>
			<div class="inner">
				<h2 class="title">로그인</h2>
			</div>
			<div class="inner">
				<form class="form_wrap form_full" name="loginForm" id="loginForm" th:action="@{/login}" method="post">
					<div class="form_head">
						<h3 class="title sr-only">로그인</h3>
					</div>
					<div class="form_field mt0">
						<input type="text" name="loginId" placeholder="아이디" class="form_control"minlength="4" maxlength="12" required="required" data-valid-name="아이디"/>
					</div>
					<div class="form_field">
						<input type="password" name="passwd" placeholder="비밀번호 8자~20자 입력" class="form_control" minlength="8" maxlength="20" required="required" data-valid-name="비밀번호"/>
					</div>
					<div class="login_check mt10">
						<div class="left">
							<div class="form_field">
								<input id="chkSaveId" type="checkbox"><label for="chkSaveId"><span>아이디 저장</span></label>
							</div>
						</div>
					</div>
					<div class="help_block">
						<!-- 보안문자 입력시 -->
							<div id="recaptcha" class="g-recaptcha" style="display: none;" data-callback="fnRecaptchaCallback" th:data-sitekey="${sitekey}"></div>
							<p class="t_err t_err_login_fail" style="display: none;">
								<span id="err_msg">보안문자 입력을 다시 시도해 주세요.</span><br>
								(10회 이상 실패하면 180초 동안 로그인이 불가능 합니다.)<br>
								<span id="login_fail_cnt">4</span>회 실패 / 잔여 : <span id="login_remain_cnt">6</span>회<span id="blockSecs1" style="display: none;"> / <span id="blockSecs2">180</span>초 남음
							</p>
						<!-- //보안문자 입력시 -->
					</div>
					<div class="ui_row mt20">
						<button type="button" class="btn btnL btn_dark" id="btnLogin">로그인</button>
					</div>
					<div class="btn_mb_wrap">
						<ul>
							<li>
								<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">회원가입</a>
							</li>
							<li>
								<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
							</li>
							<li>
								<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_PWD_FIND);">비밀번호 찾기</a>
							</li>
						</ul>
					</div>
				</form>
				<div class="t_c sns_wrap">
					<h3 class="sr-only">간편로그인</h3>
					<ul class="login_utill">
						<!-- 2021.09.01 card007 카카오싱크 검수 주석처리 -->
						<th:block th:if="${ipAddress == '180.71.39.150' || ipAddress == '127.0.0.1' || ipAddress == '192.168.104.72'}">
						<li class="lu_kakao">
							<a href="javascript:void(0)" onclick="cfnLoginKakao();">
								<div class="ico"></div>카카오
							</a>
						</li>
						</th:block>
						<!-- //2021.09.01 card007 카카오싱크 검수 주석처리 -->
						<li class="lu_naver">
							<a href="javascript:void(0)" onclick="cfnLoginNaver();">
								<div class="ico"></div>네이버
							</a>
						</li>
						<li class="lu_yes24">
							<a href="javascript:void(0)" onclick="cfnLoginYes24();">
								<div class="ico"></div>YES24
							</a>
						</li>
					</ul>
				</div>
				<div class="t_c mt30">
					<button type="button" class="btn_nonMb" onclick="cfnGoToPage(_PAGE_NON_CUSTOMER_ORDER_CONFIRM);" >
						비회원 주문조회
					</button>
				</div>
			</div>
		</section>
	<!--  컨텐츠 종료 -->
	</main>

<script th:inline="javascript">
/*<![CDATA[*/
	let ckLoginId = "ckLoginId";
	let rechaptchCheck = true;
	let custAppAgreeYn;
	let custMkAgreeYn;
	let phoneAppAgreeYn;
	let phoneMkAgreeYn;
	let custNo;
	let returnUrl;

	// 로그인
	$('#btnLogin').on('click', function() {
		if (!gagajf.validation($('#loginForm'))) {
			return;
		}

		if (!rechaptchCheck) {
			mcxDialog.alert("자동 방지 봇을 확인 한뒤 진행 해 주세요.");
			return;
		}
		let loginId = $('#loginForm input[name=loginId]').val();

		// 아이디 저장 먼저 체크후 로그인 시
		if ($('#chkSaveId').is(':checked')) {
			let ckLoginIdValue = gagajf.getCookie(ckLoginId);
			if (gagajf.isNull(ckLoginIdValue)) {
				if (!gagajf.isNull(loginId)) {
					gagajf.setCookie(ckLoginId, loginId, 1);
				}
			} else {
				if (ckLoginIdValue !== loginId) {
					gagajf.setCookie(ckLoginId, ckLoginIdValue, -1);
					gagajf.setCookie(ckLoginId, loginId, 1);
				}
			}
		}

		let params = {};
		params.loginId = $('#loginForm input[name=loginId]').val();
		params.passwd = $('#loginForm input[name=passwd]').val();
		params.rememberMe = 'true';
		
		$.post($('#loginForm').prop('action')
			, $.param(params)
			, fnReloadAfterLogin
			, 'json');
	});


	// Save ID
	$('#chkSaveId').on('click', function() {
		if ($(this).is(":checked")) {
			if (!gagajf.isNull($('#loginForm input[name=loginId]').val())) {
				gagajf.setCookie(ckLoginId, $('#loginForm input[name=loginId]').val(), 1);
			}
		} else {
			if (!gagajf.isNull(gagajf.getCookie(ckLoginId)) && (gagajf.getCookie(ckLoginId) === $('#loginForm input[name=loginId]').val())) {
				gagajf.setCookie(ckLoginId, $('#loginForm input[name=loginId]').val(), -1);
			}
		}
	});

	//엔터키 로그인
	$('#loginForm input[name=passwd]').keypress(function (event) {
		if (event.which === 13) {
			event.preventDefault();
			$('#btnLogin').trigger('click');
		}
	});

	// 로그인 후 처리
	var fnReloadAfterLogin = function(result) {
		if (result.status === 'OK') {
			if (_isApp === 'true') {
				custAppAgreeYn = result.appAgreeYn;
				custMkAgreeYn = result.mkAgreeYn;
				custNo = result.custNo;
				returnUrl = result.returnUrl;
				setTimeout(function () {
					document.location.href = "idsend://?id=" + custNo + "^link=" + returnUrl;
				}, 1000); // 정보성 PUSH, 마케팅 PUSH 수신여부 확인이 정상적으로 처리되지 않을 때
				fnIsPushEnable(); // 정보성 PUSH, 마케팅 PUSH 수신여부 확인
			} else {
				document.location.href = result.returnUrl;
			}
		} else {
			fnFailLoginProcess(result);
		}
	};

	// 로그인 실패 후 과정
	var fnFailLoginProcess = function (result) {
		// 탈퇴회원
		if (result.status === 'SECEDE_CUST') {
			mcxDialog.alert("탈퇴 회원 입니다.");
			return;
		}
		// 휴면회원
		if (result.status === 'DORMANT_CUST') {
			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
				}
			});
			return;
		}
		// CI(본인인증)정보 없는 회원
		if (result.status === 'CI_EMPTY') {
			// 본인이증 필요한 회원
			mcxDialog.alertC("본인인증 후 다시 로그인 하시기 바랍니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_CERTIFICATION);
				}
			});
			return;
		}
		// 비밀번호 틀린 경우
		if (!gagajf.isNull(result.message)) {
			let loginFailCnt = Number(result.loginFailInfo.loginFailCnt);
			$("#err_msg").html(result.message);
			$("#login_fail_cnt").html(loginFailCnt);
			$("#login_remain_cnt").html(10 - loginFailCnt);
			$(".t_err_login_fail").show();
			if (loginFailCnt >= 5) {
				grecaptcha.reset();
			}
			// 비밀번호 5회 이상 틀린 경우 캡챠 노출
			if (loginFailCnt >= 5 && loginFailCnt < 10) {
				$('#recaptcha').show();
				rechaptchCheck = false;
			// 비밀번호 10회 이상 틀린 경우 로그인 블락
			} else if (loginFailCnt >= 10) {
				$('#recaptcha').hide();
				rechaptchCheck = true;
				let blockSecs = Number(result.loginFailInfo.blockSecs);
				if (blockSecs > 0) {
					$("#blockSecs2").html(blockSecs);
					fnSetLoginBlockTime();
					$("#blockSecs1").show();
					$('#btnLogin').attr('disabled',true);
				}
			}
		}

		return; // 정상적으로 로그인 되지 않았으므로 return
	}


	// 구글 캡챠 콜백함수
	var fnRecaptchaCallback = function () {
		let token = $("#g-recaptcha-response").val();
		let params = {};
		params.token = token;
		gagajf.ajaxSubmit('/verify/recaptcha','', fnVerifyReCaptchaCallback, params);
	};

	// Token 인증
	var fnVerifyReCaptchaCallback = function (result) {
		if (result.success) {
			rechaptchCheck = true;
		} else {
			rechaptchCheck = false;
		}
	};

	// 로그인블락시간(초) 설정
	let fnSetLoginBlockTime = function() {
		let blockSecs = Number($("#blockSecs2").html()) - 1;
		$("#blockSecs2").html(blockSecs);
		if (blockSecs <= 0) {
			clearTimeout(fnSetLoginBlockTime);
			$('#btnLogin').attr('disabled',false);
		} else {
			setTimeout(fnSetLoginBlockTime, 1000);
		}
	}

	// SNS 로그인 콜백함수(네이버, 카카오, YES24)
	var fnSnsSigninCallback = function(userInfo) {
		// 1. CI 정보로 사용자가 없어서 회원가입 프로세스 처리 중 이메일, 휴대전화 중복
		if (userInfo.custStat === 'DUP_PHONE_CUST') {
			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
			return;
		}
		if (userInfo.custStat === 'DUP_EMAIL_CUST') {
			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
			return;
		}
		// 2. SNS 로그인 정보로 탈퇴확인
		if (userInfo.custStat === 'SECEDE_CUST') {
			mcxDialog.alert("탈퇴 회원 입니다.");
			return;
		}
		// 3. SNS 로그인 정보로 휴면확인
		if (userInfo.custStat === 'DORMANT_CUST') {
			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
				}
			});
			return;
		}
		// 4. 휴대전화 정보가 없으면 SNS 가입화면 이동
		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
		}
		// 5. YES24 첫 로그인 시도 시 정보동의 페이지 이동
		if (userInfo.custStat === 'NEED_AGREE_CUST') {
			cfnConsentUseInfo(userInfo.custNm);
			return;
		}
		// 6. SNS 정보로 가입 성공시 가입완료 페이지 이동
		if (userInfo.custStat === 'NEW_CUST') {
			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
			return;
		}
		// 7.SNS 정보로 가입 실패시 안내 창 알림
		if (userInfo.custStat === 'FAIL_CUST') {
			mcxDialog.alert("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.");
			return;
		}
		// 8.SNS 정보로 가입 실패시 안내 창 알림
		if (userInfo.custStat === 'EMPTY_CI_CUST') {
			mcxDialog.alert("연계정보(CI) 값이 없습니다.<br> 고객센터에 문의 하시기 바랍니다.");
			return;
		}
		// 9. SNS 로그인 연동 성공 및 기존 SNS 연동된 회원 로그인 시도
		if (userInfo.custStat === 'SUCC_CUST') {
			let params = {};
			params.snsType = userInfo.snsType;
			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
			$.post(_frontUrl + '/login'
				, $.param(params)
				,fnReloadAfterLogin
				, "json");
		}
	};

	// 앱에서 호출되는 함수(앱푸시)
	var settingsSwitchPush = function(onOff) {
		if (onOff === 'ON') {
			phoneAppAgreeYn = 'Y';
		} else if (onOff === 'OFF'){
			phoneAppAgreeYn = 'N';
		}
		fnIsAdEnable();
	}

	// 앱에서 호출되는 함수(마케팅동의)
	var settingsSwitchAdvertise = function (onOff) {
		if (onOff === 'ON') {
			phoneMkAgreeYn = 'Y';
		} else if (onOff === 'OFF'){
			phoneMkAgreeYn = 'N';
		}

		// 기기에 등록된 정보성 PUSH, 마케팅 PUSH 수신여부와
		// 고객DB 수신여부 비교 후 다르면 기기에 등록된 데이터로 업데이트
		if (phoneAppAgreeYn !== custAppAgreeYn || phoneMkAgreeYn !== custMkAgreeYn ) {
			fnUpdatePush(phoneAppAgreeYn, phoneMkAgreeYn);
		}
		document.location.href = "idsend://?id=" + custNo + "^link=" + returnUrl;
	}

	// 정보성 PUSH ON, OFF 여부 확인
	// 호출시 앱에서 settingsSwitchPush 호출 해서 ON, OFF 값을 param 값으로 준다.
	var fnIsPushEnable = function () {
		if (_osType === 'A') {
			window.style24.isPushEnable();
		} else if (_osType === 'I') {
			window.webkit.messageHandlers.isPushEnable.postMessage({'dummy':'dummy'});
		}
	}

	// 마케팅 PUSH ON, OFF 여부확인
	// 호출시 앱에서 settingsSwitchAdvertise 호출 해서 ON, OFF 값을 param 값으로 준다.
	var fnIsAdEnable = function () {
		if (_osType === 'A') {
			window.style24.isAdEnable();
		} else if (_osType === 'I') {
			window.webkit.messageHandlers.isAdEnable.postMessage({'dummy':'dummy'});
		}
	}

	var fnUpdatePush = function (appAgreeYn, mkAgreeYn) {
		let params = {}
		params.appAgreeYn = appAgreeYn;
		params.mkAgreeYn = mkAgreeYn;
		let jsonData = JSON.stringify(params);
		gagajf.ajaxJsonSubmit('/app/push/update', jsonData);
	}

	$('.btn_close').on('click', function () {
		let referrer = document.referrer;
		if (referrer.indexOf('/customer/password/change/form') > -1 ) {
			cfnGoToPage(_PAGE_MAIN);
		} else {
			history.back(-1);
		}

	});


	$(document).ready(function() {

		$('#loginForm input[name=loginId]').val(gagajf.getCookie(ckLoginId));
		if (gagajf.isNull($('#loginForm input[name=loginId]').val())) {
			$('#loginForm input[name=loginId]').focus();
			$('#chkSaveId').prop('checked', false);
		} else {
			$('#loginForm input[name=passwd]').focus();
			$('#chkSaveId').prop('checked', true);
		}
	});
/*]]>*/
</script>

</th:block>

</body>
</html>