//jQuery.noConflict();


jQuery.fn.validateError = function(str){
    a = jQuery(this).attr('id') || jQuery(this).attr('name');
    i = 0;

    if (a != '') {
        a = '#' + a + '_msg';
        jQuery(document).find(a).each(function() {
            i++;
        });
    }

    this.addClass("warn-validate");

    if (i > 0) {
        return jQuery(a).after('<div class="validate-error-message">' + str + '</div>');
    } else {
        return this.after('<div class="validate-error-message">' + str + '</div>');
    }
}

jQuery.fn.validateErrorOnly = function(){
    this.addClass("warn-validate");
    return this;
}

jQuery.fn.validateOnlyError = function(str){
    return this.after('<div class="validate-error-message">' + str + '</div>');
}

jQuery.fn.validateReset = function(){
    jQuery(".warn-validate").removeClass("warn-validate");
    jQuery(".validate-error-message").remove();
    return this;
}


jQuery(function(){
    var jvali = {};

    // イベントハンドラの追加
    jvali.target = jQuery("#mailFrm");

    // フォームのサブミット
    jQuery(jvali.target).submit(function(){
        return jvali.check();
    });

    // 送信ボタン
    jQuery("#formSend").click(function(){
        jQuery(jvali.target).submit();
    });

    // リセットボタン
    jQuery("#formReset").click(function(){
        if (window.confirm('入力内容をリセットしてもよろしいですか？')) {
            jvali.reset();
            document.getElementById('mailFrm').reset();
        }

        return false;
    });

    jvali.reset = function() {
        jQuery(jvali.target).validateReset();
    }

    jvali.check = function() {
        jQuery(jvali.target).validateReset();

        $("input[@name=comp]").removeClass("required");
        $("input[@name=compkana]").removeClass("required");
        $("input[@name=div]").removeClass("required");

        if ($("input[@name=kind]:checked").val() == '企業様') {
            $("input[@name=comp]").addClass("required");
            $("input[@name=compkana]").addClass("required");
            $("input[@name=div]").addClass("required");
        }

        if ($("input[@name=kind]:checked").size() == 0) {
            $("input[@name=kind]").validateError('必ず選択して下さい。');
        }

        jQuery("input.required").each(function(){
            if (jvali.rules.empty(jQuery(this).val())) {
                jQuery(this).validateError('必ず入力してください。');
            }
        });

        jQuery("textarea.required").each(function(){
            if (jvali.rules.empty(jQuery(this).val())) {
                jQuery(this).validateError('必ず入力してください。');
            }
        });

        jQuery("select.required").each(function(){
            if (jvali.rules.empty(jQuery(this).val())) {
                jQuery(this).validateError('必ず選択してください。');
            }
        });


        jQuery("input.validate-kana").each(function(){
            if (jvali.rules.kana(jQuery(this).val())) {
                jQuery(this).validateError('全角カタカタで入力してください。');
            }
        });

        jQuery("input.validate-alpha").each(function(){
            if (jvali.rules.alpha(jQuery(this).val())) {
                jQuery(this).validateError('半角アルファベットで入力してください。');
            }
        });

        jQuery("input.validate-zip").each(function(){
            if (jvali.rules.zip(jQuery(this).val())) {
                jQuery(this).validateError('半角数字と半角ハイフン“-”で7桁の郵便番号を入力してください。');
            }
        });

        jQuery("input.validate-tel").each(function(){
            if (jvali.rules.num_(jQuery(this).val())) {
                jQuery(this).validateError('半角数字と半角ハイフン“-”で入力してください。');
            }
        });

        jQuery("input.validate-telno").each(function(){
            if (jvali.rules.telno(jQuery(this).val())) {
                jQuery(this).validateError('半角数字で入力してください。');
            }
        });

        jQuery("input.validate-mail").each(function(){
            if (jvali.rules.mail(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        jQuery("input.validate-only-mail").each(function(){
            if (jvali.rules.mail(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        jQuery("input.validate-mail-conf").each(function(){
            if (jvali.rules.mail(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        if (jQuery("input.validate-mail-conf").val() != jQuery("input.validate-mail").val()) {
            jQuery("input.validate-mail-conf").validateError('上と同じメールアドレスを入力してください。');
        }

        jQuery("input.validate-kmail").each(function(){
            if (jvali.rules.mail(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        jQuery("input.validate-kmail-conf").each(function(){
            if (jvali.rules.mail(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        if (jQuery("input.validate-kmail-conf").val() != jQuery("input.validate-kmail").val()) {
            jQuery("input.validate-kmail-conf").validateError('上と同じメールアドレスを入力してください。');
        }

        jQuery("input.validate-mail_or_no").each(function(){
            if (jvali.rules.mail_or_no(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。<br />メールアドレスがない方は「なし」と入力してく');
            }
        });
        jQuery("input.validate-mail_or_no-conf").each(function(){
            if (jvali.rules.mail_or_no(jQuery(this).val())) {
                jQuery(this).validateError('形式が不正です。半角英数で正しく入力してください。');
            }
        });

        if (jQuery("input.validate-mail_or_no-conf").val() != jQuery("input.validate-mail_or_no").val()) {
            jQuery("input.validate-mail_or_no-conf").validateError('上と同じメールアドレスを入力してください。');
        }
/*
        if (jQuery("input[@name=seikyuusya]:checked").size() == 0) {
            jQuery("#seikyuusya_msg").validateOnlyError('必ず選択してください。');
        }

        if (jQuery("input[@name=seikyuusya]:checked").val() == '6' && jQuery("#seikyuusya_txt").val() == '') {
            jQuery("#seikyuusya_txt").validateError('その他の場合は、必ず入力してください。');
        }

        if (jQuery("input.know_chk_grp:checked").size() == 0) {
            jQuery("#know_msg").validateOnlyError('必ず選択してください。');
        }
*/
        if (jQuery("input.conf:checked").size() == 0) {
            jQuery("#conf_box").validateOnlyError('同意をしてください。');
            jQuery("input.conf").validateErrorOnly();
        }

        if (jQuery(".warn-validate").size() > 0) {
            jQuery(".warn-validate")[0].focus();
            return false;
        } else {
            return true;
        }
    }

    jvali.rules = {};


    jvali.rules.empty = function(str) {
        if (jQuery.trim(str) == "") {
            return true;
        }
        return false;
    }

    jvali.rules.kana = function(str) {
        if (!(str == "" || str.match(/^[ァ-ン゛゜ー 　・]+$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.alpha = function(str) {
        if (!(str == "" || str.match(/^[0-9a-zA-Z\-\.\+ ]+$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.num_ = function(str) {
        if (!(str == "" || str.match(/^[\-\+0-9]+$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.num = function(str) {
        if (!(str == "" || str.match(/^[0-9]+$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.zip = function(str) {
        if (!(str == "" || str.match(/^[0-9]{3}\-?[0-9]{4}$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.telno = function(str) {
        if (!(str == "" || str.match(/^[0-9]{1,5}$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.mail = function(str) {
        if (!(str == "" || str.match(/^[\w\-\.]{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.mail_or_no = function(str) {
        if (!(str == "" || str == "なし" || str.match(/^[\w\-\.]{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/))) {
            return true;
        }
        return false;
    }

    jvali.rules.hira = function(str) {
        if (!(str == "" || str.match(/^[ぁ-ん゛゜ー 　・]+$/))) {
            return true;
        }
        return false;
    }
});
