(function ($) {

    $.fn.jForm = function () {
    
        var valid_messages = new Array();
        var messages_print = "";
        var msg_IsRequired = "- '{0}' 항목이 비어있습니다.";
        var msg_IsNoFormat = "- '{0}' 항목이 올바르지 않습니다.";
        var msg_IsNoEquals = "- '{0}' 항목이 일치하지 않습니다.";
        var msg_IsNotAgree = "- '{0}' 항목에 등의하셔야 합니다.";

        var validOptions = {
            NUMBER: /[0-9]/,
            basic_eng: /[0-9a-zA-Z_\-]*/g
        };

        this.submit(function (e) {

            valid_messages = new Array();
            messages_print = "";
            $(this).find("*[REQUIRED='REQUIRED']").each(function (idx, item) {
				
				if ($.inArray($(item).attr("HNAME"), valid_messages) < 0) {
					var itemValue = $.trim($(item).val());
					if ($(item).val() == "") {
						if($(item).attr("CUSTOM_MESSAGE"))
							messages_print += "\n- " + $(item).attr("CUSTOM_MESSAGE");
						else
							messages_print += "\n" + msg_IsRequired.replace(/\{0\}/g, $(item).attr("HNAME"));
						if ($(item).attr("CF_FIELD") && $("#" + $(this).attr("id") + " input[name='" + $(item).attr("CF_FIELD") + "']").val() == "") {
							if($(item).attr("CUSTOM_MESSAGE"))
								messages_print += "\n- " + $(item).attr("CUSTOM_MESSAGE");
							else
								messages_print += "\n" + msg_IsNoEquals.replace(/\{0\}/g, $(item).attr("HNAME"));
						}
						valid_messages.push($(item).attr("HNAME"));
					}
					else if ($(item).attr("FORMAT") && !validOptions[$(item).attr("FORMAT")].test(itemValue)) {
						if($(item).attr("CUSTOM_MESSAGE"))
							messages_print += "\n- " + $(item).attr("CUSTOM_MESSAGE");
						else
							messages_print += "\n" + msg_IsNoFormat.replace(/\{0\}/g, $(item).attr("HNAME"));
						valid_messages.push($(item).attr("HNAME"));
					}
					else if ($(item).attr("IS_AGREE") && !$(item).attr("checked")) {
						if($(item).attr("CUSTOM_MESSAGE"))
							messages_print += "\n- " + $(item).attr("CUSTOM_MESSAGE");
						else
							messages_print += "\n" + msg_IsNotAgree.replace(/\{0\}/g, $(item).attr("HNAME"));
						valid_messages.push($(item).attr("HNAME"));
					}
					
				}
            });
            
            if (messages_print != "") {
                messages_print = "다음과 같은 문제로 서버에 전송할 수 없습니다." + messages_print;
                alert(messages_print);
				e.stopPropagation();
                return false;
            }

        });

		$("#" + $(this).attr("id") + " .next_tapping").keyup(function (){
			var len = $(this).attr("maxlength");
			var val = $(this).val();
			if(val.length >= len)
			{
				$(this).next().focus();
			}

		});
    }

})(jQuery);


$(document).ready(function (){
	if($("form.required_form").size() == 0) return;

	$("form.required_form").each(function (idx, item){
		$(item).jForm();
	});

	
    var tObj = $("select[name='mail_host_helper']");
    if (tObj.get(0)) {
        tObj.prev().hide();
        tObj.change(function () {
            if ($(this).val() == "*") {
                $(this).prev().val("").show();
            }
            else {
                $(this).prev().val($(this).val()).hide();
            }
        });
        tObj.blur(function () {
            if ($(this).val() == "*") {
                $(this).prev().val("").show();
            }
            else {
                $(this).prev().val($(this).val()).hide();
            }
        });
        var dv = tObj.prev().val();
        if (dv == "")
            tObj.change();
        else {
            if ($("select[name='mail_host_helper'] > option[value='" + dv + "']").get(0)) {
                tObj.val(dv);
                tObj.prev().hide();
            }
            else {
                tObj.val("*");
                tObj.prev().show();
            }
        }
    }

});
