﻿/// <reference path="jquery-1.4.2.min-vsdoc.js" />
/*
Member Script
Dependency : jquery-1.4.2.min.js, AjaxObj.js, Common.js
*/

// is businessnumber 
String.prototype.IsBusinessNumber = function() {
    var delimiter = arguments[0] ? arguments[0] : "";
    var businessNumber = eval("this.match(/[0-9]{3}" + delimiter + "[0-9]{2}" + delimiter + "[0-9]{5}$/)");
    if (businessNumber == null) {
        return false
    }
    else {
        businessNumber = businessNumber.toString();
    }

    var checkID = new Array(1, 3, 7, 1, 3, 7, 1, 3, 5, 1);
    var i = 0, sum = 0; c2 = 0; re = 0;
    var sum = 0;
    for (i = 0; i <= 7; i++) { sum += checkID[i] * businessNumber.charAt(i); }
    c2 = "0" + (checkID[8] * businessNumber.charAt(8));
    c2 = c2.substring(c2.length - 2, c2.length);
    sum += Math.floor(c2.charAt(0)) + Math.floor(c2.charAt(1));
    re = (10 - (sum % 10)) % 10;

    if (Math.floor(businessNumber.charAt(9)) != re) {
        return false;
    }

    return true;
}

var MemberCommon = {
    // 주소 검색
    OpenFindAddress: function(zipID1, zipID2, addressID) {
        var openZipUrl = "../Common/Zip.aspx?zipCode1=" + zipID1 + "&zipCode2=" + zipID2 + "&zipAddr=" + addressID;
        OpenSubWindow(openZipUrl, "FindZip", 400, 270, 'no', 'no');
    },

    // 아이디 검색
    OpenFindID: function(id) {
        var openIDUrl = "../Member/DupID.aspx?id=" + id;
        OpenSubWindow(openIDUrl, "CheckID", 400, 210, 'no', 'no');
    }
}

var MemberValidator = {
    MIN_USERNAME_SIZE: 2,             // 1자
    MAX_USERNAME_SIZE: 30,            // 15자

    // 약관 동의 체크
    CheckAgree: function(agree1, agree2, agree3) {
        if (!CommonValidator.CheckInputCheck(agree1, 'chk_agree1')) {
            return false;
        }
        if (!CommonValidator.CheckInputCheck(agree2, 'chk_agree2')) {
            return false;
        }
        if (!CommonValidator.CheckInputCheck(agree3, 'chk_agree3')) {
            return false;
        }
        return true;
    },

    // ID 체크
    CheckJoinID: function(joinID) {
        if (!CommonValidator.CheckIsNullOrEmpty(joinID, 'in_ID')) {
            return false;
        }

        // 영문, 숫자만 가능
        if (!$('#' + joinID).val().IsUserId()) {
            AJAXObj.AlertErrorMsg('right_ID');
            $('#' + joinID).focus();
            return false;
        }
        return true;
    },

    CheckPW: function(pw1) {
        if ($('#' + pw1).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_Password');
            $('#' + pw1).focus();
            return false;
        }
        if (!$('#' + pw1).val().IsPassWord()) {
            AJAXObj.AlertErrorMsg('right_password');
            $('#' + pw1).focus();
            return false;
        }
        return true;
    },

    // PW 체크
    CheckJoinPW: function(pw1, pw2) {
        if (!MemberValidator.CheckPW(pw1)) {
            return false;
        }
        if ($('#' + pw2).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_passwordConfirm');
            $('#' + pw2).focus();
            return false;
        }
        if ($('#' + pw1).val() != $('#' + pw2).val()) {
            AJAXObj.AlertErrorMsg('in_passwordNotEqual');
            $('#' + pw2).focus();
            return false;
        }
        return true;
    },

    // 중복 가입 체크
    CheckJoin: function(userName, biz1, biz2, biz3, chkPersonal) {
        if (!MemberValidator.CheckUserName(userName)) {
            return false;
        }
        if (!MemberValidator.CheckBizNum(biz1, biz2, biz3, chkPersonal)) {
            return false;
        }
        return true;
    },

    // 사업자 등록번호 체크
    CheckBizNum: function(num1, num2, num3, chkPersonal) {
        // 개인 가입자
        if (!$('#' + chkPersonal).is(':checked')) {
            if (!CommonValidator.CheckIsNullOrEmpty(num1, 'in_Biznum')) {
                return false;
            }
            if (!CommonValidator.CheckLength(num1, 3, 'right_Biznum')) {
                return false;
            }
            if (!CommonValidator.CheckIsNullOrEmpty(num2, 'in_Biznum')) {
                return false;
            }
            if (!CommonValidator.CheckLength(num2, 2, 'right_Biznum')) {
                return false;
            }
            if (!CommonValidator.CheckIsNullOrEmpty(num3, 'in_Biznum')) {
                return false;
            }
            if (!CommonValidator.CheckLength(num3, 5, 'right_Biznum')) {
                return false;
            }
            var bizNum = $('#' + num1).val() + $('#' + num2).val() + $('#' + num3).val();
            if (bizNum.IsNullOrEmpty() || !bizNum.IsBusinessNumber() || bizNum == '0000000000') {
                AJAXObj.AlertErrorMsg('right_Biznum');
                $('#' + num1).val('');
                $('#' + num2).val('');
                $('#' + num3).val('');
                $('#' + num1).focus();
                return false;
            }
        }
        return true;
    },

    // 이름(상호) 체크
    CheckUserName: function(userName) {
        if (!CommonValidator.CheckIsNullOrEmpty(userName, 'in_UserName')) {
            return false;
        }
        if (!CommonValidator.CheckLengthPeriod(userName, this.MIN_USERNAME_SIZE, this.MAX_USERNAME_SIZE, 'in_UserName')) {
            return false;
        }
        return true;
    },

    // 아이디 중복확인 체크
    CheckDupUserID: function(hfDupCheck) {
        if ($('#' + hfDupCheck).val().IsNullOrEmpty() || $('#' + hfDupCheck).val() != "ok") {
            AJAXObj.AlertErrorMsg('in_DupUserID');
            return false;
        }
        return true;
    },

    // 패스워드 체크
    CheckPW: function(pw1) {
        if (!CommonValidator.CheckIsNullOrEmpty(pw1, 'in_Password')) {
            return false;
        }
        if (!$('#' + pw1).val().IsPassWord()) {
            AJAXObj.AlertErrorMsg('right_password');
            $('#' + pw1).focus();
            return false;
        }
        return true;
    },

    // PW 체크
    CheckJoinPW: function(pw1, pw2) {
        if (!MemberValidator.CheckPW(pw1)) {
            return false;
        }
        if ($('#' + pw2).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_passwordConfirm');
            $('#' + pw2).focus();
            return false;
        }
        if ($('#' + pw1).val() != $('#' + pw2).val()) {
            AJAXObj.AlertErrorMsg('in_passwordNotEqual');
            $('#' + pw2).focus();
            return false;
        }
        return true;
    },

    // 비번 확인 체크
    CheckConfirmPW: function(pw1, pw2) {
        if (!MemberValidator.CheckPW(pw1)) {
            return false;
        }

        if (!CommonValidator.CheckIsNullOrEmpty(pw2, 'in_passwordConfirm')) {
            return false;
        }

        if ($('#' + pw1).val() != $('#' + pw2).val()) {
            AJAXObj.AlertErrorMsg('in_passwordNotEqual');
            $('#' + pw2).focus();
            return false;
        }
        return true;
    },

    // 전화번호 (대표번호 포함)
    CheckPhoneWithMainNumber: function(num1, num2, num3, chkMainNumber) {
        if (!CommonValidator.CheckIsNullOrEmpty(num1, 'in_Phone')) {
            return false;
        }
        if (!CommonValidator.CheckIsNullOrEmpty(num2, 'in_Phone')) {
            return false;
        }

        // 대표번호 인 경우
        if ($('#' + chkMainNumber).is(':checked')) {
            var phone = $('#' + num1).val() + $('#' + num2).val();
            if (!phone.IsMainPhone()) {
                AJAXObj.AlertErrorMsg('right_Phone');
                $('#' + num1).focus();
                return false;
            }
        } else { // 일반번호 인 경우
            if (!CommonValidator.CheckIsNullOrEmpty(num3, 'in_Phone')) {
                return false;
            }
            var phone = $('#' + num1).val() + $('#' + num2).val() + $('#' + num3).val();
            if (!phone.IsPhone()) {
                AJAXObj.AlertErrorMsg('right_Phone');
                $('#' + num1).focus();
                return false;
            }
        }
        return true;
    },
    
    // 주소 검색 체크
    CheckAddressSearch: function(address) {
        if (!CommonValidator.CheckIsNullOrEmpty(address, 'in_AddressSearch')) {
            return false;
        }
        return true;
    },

    // 위치확인
    CheckAddressPos: function(address) {
        if (!CommonValidator.CheckIsNullOrEmpty(address, 'in_Address')) {
            return false;
        }
        return true;
    },

    // 전화번호
    CheckPhone: function(num1, num2, num3, chkMainNumber) {
        if (!CommonValidator.CheckIsNullOrEmpty(num1, 'in_Phone')) {
            return false;
        }
        if (!CommonValidator.CheckIsNullOrEmpty(num2, 'in_Phone')) {
            return false;
        }
        if (!CommonValidator.CheckIsNullOrEmpty(num3, 'in_Phone')) {
            return false;
        }

        var phone = $('#' + num1).val() + $('#' + num2).val() + $('#' + num3).val();
        if (!phone.IsPhone()) {
            AJAXObj.AlertErrorMsg('right_Phone');
            $('#' + num1).focus();
            return false;
        }
        return true;
    },

    // 전화번호 (대표번호 포함)
    CheckPhoneWithMainNumber: function(num1, num2, num3, chkMainNumber) {
        if (!CommonValidator.CheckIsNullOrEmpty(num1, 'in_Phone')) {
            return false;
        }
        if (!CommonValidator.CheckIsNullOrEmpty(num2, 'in_Phone')) {
            return false;
        }

        // 대표번호 인 경우
        if ($('#' + chkMainNumber).is(':checked')) {
            var phone = $('#' + num1).val() + $('#' + num2).val();
            if (!phone.IsMainPhone()) {
                AJAXObj.AlertErrorMsg('right_Phone');
                $('#' + num1).focus();
                return false;
            }
        } else { // 일반번호 인 경우
            if (!CommonValidator.CheckIsNullOrEmpty(num3, 'in_Phone')) {
                return false;
            }
            var phone = $('#' + num1).val() + $('#' + num2).val() + $('#' + num3).val();
            if (!phone.IsPhone()) {
                AJAXObj.AlertErrorMsg('right_Phone');
                $('#' + num1).focus();
                return false;
            }
        }
        return true;
    },

    // 주소 체크
    CheckJoinAddress: function(zip1, zip2, addressDetail) {
        if ($('#' + zip1).val().IsNullOrEmpty() || $('#' + zip2).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_Address');
            return false;
        }
        if ($('#' + addressDetail).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_AddressDetail');
            $('#' + addressDetail).focus();
            return false;
        }
        return true;
    },

    // 지도 좌표 유효성 체크
    CheckMapPosition: function(lat, lon) {
        if ($('#' + lat).val() == '0.0' || $('#' + lon).val() == '0.0') {
            AJAXObj.AlertErrorMsg('in_MapPostion');
            return false;
        }
        return true;
    },

    // 휴대폰
    CheckMobile: function(selectNum1, num1, num2) {
        if (!CommonValidator.CheckIsNullOrEmpty(num1, 'in_Mobile')) {
            return false;
        }
        if (!CommonValidator.CheckIsNullOrEmpty(num2, 'in_Mobile')) {
            return false;
        }

        var mobile = $('#' + selectNum1 + ' > option:selected').val() + $('#' + num1).val() + $('#' + num2).val();
        if (!mobile.IsNumber()) {
            AJAXObj.AlertErrorMsg('right_Mobile');
            $('#' + num1).focus();
            return false;
        }
        return true;
    },

    // 핸드폰 인증번호 입력 박스 체크
    CheckInputSMSAuth: function(smsAuth) {
        if ($('#' + smsAuth).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_SMSAuth');
            if (!$('#' + smsAuth).is(':disabled')) {
                $('#' + smsAuth).focus();
            }
            return false;
        }
        return true;
    },

    // 핸드폰 인증번호 체크
    CheckSMSAuth: function(hfSmsAuth) {
        if ($('#' + hfSmsAuth).val().IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_SMSAuthOk');
            return false;
        }
        return true;
    },

    // 이메일 체크
    CheckEmail: function(emailID, checkEmailEtc, EmailEtcDomain) {
        var checkInputEmailID = $('#' + emailID).val();
        var checkInputEmailEtc = $('#' + EmailEtcDomain).val();
        if (checkInputEmailID.IsNullOrEmpty()) {
            AJAXObj.AlertErrorMsg('in_Email');
            $('#' + emailID).focus();
            return false;
        }

        if ($('#' + checkEmailEtc).is(':checked')) {
            if (checkInputEmailEtc.IsNullOrEmpty()) {
                AJAXObj.AlertErrorMsg('in_Email');
                $('#' + EmailEtcDomain).focus();
                return false;
            }
            var email = checkInputEmailID + '@' + checkInputEmailEtc;
            if (!email.IsEmail()) {
                AJAXObj.AlertErrorMsg('in_Email_Valid');
                $('#' + EmailEtcDomain).focus();
                return false;
            }
        }
        return true;
    },

    // 이메일 체크 (이메일은 옵션이므로 입력이 있을 때만 사용)
    CheckEmailEmpty: function(emailID, checkEmailEtc, EmailEtcDomain) {
        var checkInputEmailID = $('#' + emailID).val();
        var checkInputEmailEtc = $('#' + EmailEtcDomain).val();

        if ($('#' + checkEmailEtc).is(':checked')) {
            if (checkInputEmailEtc.IsNullOrEmpty()) {
                AJAXObj.AlertErrorMsg('in_Email');
                $('#' + EmailEtcDomain).focus();
                return false;
            }
            var email = checkInputEmailID + '@' + checkInputEmailEtc;
            if (!email.IsEmail()) {
                AJAXObj.AlertErrorMsg('in_Email_Valid');
                $('#' + EmailEtcDomain).focus();
                return false;
            }
        }
        return true;
    }
}
