﻿

    function UserNameCheck() {

        var Source, Result;

        Source = document.FormInput.UserName.value;
        Result = CheckRequireAndOverflow(Source, "RM", UserNameSize, "이름", "FOCUS", "UserName");

        if(Result != "") {
            return false;
        }

        return true;

    }





    function MobilePhoneNumberCheck() {

        var Target = document.FormInput;
        var Source, Result;

        Source = Target.MPN1[Target.MPN1.selectedIndex].value + "-" + Target.MPN2.value + "-" + Target.MPN3.value;
        Result = CheckRequireAndOverflow(Source, "RM", MobilePhoneNumberSize, "휴대폰번호", "FOCUS", "MPN1");

        if(Result != "") {
            return false;
        }

        if(!IsPhoneNumber(Source, "Mobile")) {
            MessageOutput("올바른 [휴대폰번호]를 입력하세요.", "FOCUS", "MPN1");
            return false;
        }

        return true;

    }





    function PhoneNumberCheck() {

        var Target          = document.FormInput;
        var PhoneNumber1    = Target.PN1[Target.PN1.selectedIndex].value;
        var PhoneNumber2    = Target.PN2.value;
        var PhoneNumber3    = Target.PN3.value;
        var Source;
        var Result;


        if(IsEmpty(PhoneNumber1+PhoneNumber2+PhoneNumber3)) return true;


        Source = PhoneNumber1 + "-" + PhoneNumber2 + "-" + PhoneNumber3;
        Result = CheckRequireAndOverflow(Source, "M", PhoneNumberSize, "전화번호", "FOCUS", "PN1");
        if(Result != "") {
            return false;
        }

        if(!IsPhoneNumber(Source, "General")) {
            MessageOutput(("올바른 [전화번호]를 입력하세요."), "FOCUS", "PN1");
            return false;
        }

        return true;

    }





    function EmailAddressCheck() {

        var Target = document.FormInput;
        var Source = Target.EmailAddress.value;
        var Result;

        if(IsEmpty(Source)) {
            return true;
        }

        Result = CheckRequireAndOverflow(Source, "M", EmailAddressSize, "이메일주소", "FOCUS", "EmailAddress");
        if(Result != "") {
            return false
        }

        if(!IsEmailAddress(Source)) {
            MessageOutput("올바른 [이메일주소]을 입력하세요.", "FOCUS", "EmailAddress");
            return false;
        }

        return true;

    }





    function AddressCheck() {

        var Target      = document.FormInput;
        var ZipCode     = Target.ZipCode.value;
        var AddressMain = Target.AddressMain.value;
        var AddressSub  = Target.AddressSub.value;
        var Result;


        if(IsEmpty(ZipCode+AddressMain+AddressSub)) {
            MessageOutput("[주소]를 입력하세요.", "", "");
            return false;
        }

        Result = CheckRequireAndOverflow(ZipCode,     "RM", ZipCodeSize,     "우편번호", "", "");
        if(Result != "") return false;

        if(!IsZipCode(ZipCode)) {
            MessageOutput("올바른 [우편번호]를 입력하세요.", "", "");
            return false;
        }


        Result = CheckRequireAndOverflow(AddressMain, "RM", AddressMainSize, "주소",     "", "");
        if(Result != "") return false;

        Result = CheckRequireAndOverflow(AddressSub,  "RM", AddressSubSize,  "주소",     "FOCUS", "AddressSub");
        if(Result != "") return false;

        return true;

    }





    function QtyCheck() {

        var Target = document.FormInput;
        var Source = Target.Qty.value;
        var Result;

        Result = CheckRequireAndOverflow(Source, "RM", QtySize, "수량", "FOCUS", "Qty");

        if(Result != "") {
            return false;
        }

        if( !IsInt(Source) ) {
            MessageOutput("[수량] 항목은 숫자만 입력 가능 합니다.", "FOCUS", "Qty");
            return false;
        }

        return true;

    }





    function GatherDateCheck() {

        var Target = document.FormInput;
        var Source = Target.GatherDate.value;

        if(Source.length > 0) {
            if( !IsDate(Source) ) {
                alert("[수거요청일] 항목 입력값이 바르지 않거나, 허용 범위를 넘었습니다.");
                Target.GatherDate.focus();
                return false;
            }

        } else {
            alert("[수거요청일] 항목을 입력하세요.");
            Target.GatherDate.focus();
            return false;
        
        }

        return true;

    }





    function EtcCheck() {

        var Target          = document.FormInput;

        var ItemValue       = Target.Item.value;
        var CommentValue    = Target.Comment.value;

        var Result;


        Result = CheckRequireAndOverflow(ItemValue , "RM", ItemSize , "기증품정보", "FOCUS", "Item");
        if(Result != "") {
            return false
        }

        if(Target.Path.selectedIndex < 1) {
            MessageOutput("[기증경로] 항목을 선택해 주세요.", "FOCUS", "Path");
            return false;
        }

        Result = CheckRequireAndOverflow(CommentValue, "M", CommentSize, "기증사연" , "FOCUS", "Comment");
        if(Result != "") {
            return false
        }

        return true;

    }





    function AuthAnswerCheck() {

        var Source, Result;

        Source = document.FormInput.AuthAnswer.value;
        Result = CheckRequireAndOverflow(Source, "RM", AuthAnswerSize, "인증답변", "FOCUS", "AuthAnswer");

        if(Result != "") {
            return false;
        }

        if( !IsInt(Source) ) {
            MessageOutput("[인증답변] 항목은 숫자만 입력 가능 합니다.", "FOCUS", "AuthAnswer");
            return false;
        }

        return true;

    }





    function StrApplyLineFeed(Source, BytePerLine) {

        var LoopCount, ByteCount;
        var StringLength = Source.length;
        var Result;

        if(Source == "" || BytePerLine <= 0) return "";


        Result       = "";
        ByteCount    = 0;

        for(LoopCount = 0; LoopCount < StringLength; LoopCount++) {

            var SourceChar     = Source.substring(LoopCount, (LoopCount+1));           
            var SourceCharCode = Source.charCodeAt(LoopCount);           
            var SourceCharByte = (SourceCharCode >= 128) ? 2 : 1;


            if(SourceChar == "\r" || SourceChar == "\n") {
                if(SourceChar == "\n") ByteCount = 0;

            } else {
                ByteCount += SourceCharByte;
                if(ByteCount > BytePerLine) {
                    Result    += "\r\n";
                    ByteCount  = 0;
                }
            }

            Result += SourceChar;

        }

        return Result;

    }





    function InputDataCheck(AuthUseFlag) {

        if(    !UserNameCheck() || !MobilePhoneNumberCheck() || !PhoneNumberCheck() || !EmailAddressCheck()
            || !AddressCheck()  || !QtyCheck()               || !GatherDateCheck()  || !EtcCheck() ) {

            return false;

        }


        if(AuthUseFlag) {
            if(!AuthAnswerCheck()) {
                return false;
            }

        }


        document.FormInput.Comment.value = StrApplyLineFeed(document.FormInput.Comment.value, 100);

        return true;

    }





    function EraseAddress() {

        if(!confirm("[주소] 지우기 확인")) return;

        Target = document.FormInput;


        Target.ZipCode.value        = "";
        Target.AddressMain.value    = "";
        Target.AddressSub.value     = "";

    }





    function EraseAllInput() {

        Target = document.FormInput;
        Target.reset();

    }





    function BindAuthQuestion() {

        if(!AuthUseFlag) return;

        var ReturnValue = BindAuthQuestionBasic();

        document.FormInput.AuthQuestion.value                 = ReturnValue;
        document.getElementById('AuthQuestionText').innerText = ReturnValue;

    }

