//該当欄にエラーを表示
$.fn.validateError = function(str){
    this.addClass("warn-validate");
    return this.after('<ul class="validate-error-message red f11"><li>' + str + '</li></ul>');
}

//リセット時にエラー内容も消去
$.fn.validateReset = function(){
    $(".warn-validate").removeClass("warn-validate");
    $(".validate-error-message").remove();
    return this;
}

$(function(){
    var jvali = {};

    // イベントハンドラの追加
    jvali.target = $("#topform");

    // フォームのサブミット
    $(jvali.target).submit(function(){
        return jvali.check();
    });

    // 送信ボタン
    $("#formSend").click(function(){
        $(jvali.target).submit();
    });

    // リセットボタン
    $("#formReset").click(function(){
        if (window.confirm('入力内容をリセットしてもよろしいですか？')) {
            jvali.reset();
            document.getElementById('topform').reset();
        }

        return false;
    });

	//リセットを押下した場合
    jvali.reset = function() {
        $(jvali.target).validateReset();
    }

	//エラー内容の表示
    jvali.check = function() {

		//フラグ
    	var flag_yubin1=0;
    	var flag_yubin2=0;
    	var flag_tel1=0;
    	var flag_tel2=0;
    	var flag_tel3=0;
    	var flag_fax1=0;
    	var flag_fax2=0;
    	var flag_fax3=0;

        $(jvali.target).validateReset();

		//会社名
        $("input[@name=comp]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('必須項目です。');
            }
        });

		//会社名カナ
        $("input[@name=compkana]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('必須項目です。');
            }
            if (jvali.rules.kana($(this).val())) {
                $(this).validateError('全角カタカナで入力してください。');
            }
        });

		//部署名
        $("input[@name=div]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('必須項目です。');
            }
        });
        
		//担当者名
        $("input[@name=name]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('必須項目です。');
            }
        });

		//e-mail
        $("input[@name=mail]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('必須項目です。');
            }
            if (jvali.rules.mail($(this).val())) {
                $(this).validateError('形式が正しくありません。');
            }
        });

		//住所（郵便番号）
        $("input[@name=yubin1]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_yubin1 = 1;
            }else if (jvali.rules.yubin1($(this).val())) {
                flag_yubin1 = 2;
            }
        });
        $("input[@name=yubin2]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_yubin2 = 1;
            }else if (jvali.rules.yubin2($(this).val())) {
                flag_yubin2 = 2;
            }
	        if ((flag_yubin1 == "1") || (flag_yubin2 == "1")){
                $(this).validateError('郵便番号を入力して下さい。');
			}else if ((flag_yubin1 == "2") || (flag_yubin2 == "2")){
                $(this).validateError('形式が正しくありません。');
			}
        });

		//住所（都道府県）
        $("select[@name=pref]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('都道府県を選択して下さい。');
            }
        });

		//住所（番地）
        $("input[@name=add1]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('住所は番地まで入力して下さい。');
            }
        });
        
		//電話番号
        $("input[@name=tel1]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_tel1 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_tel1 = 2;
            }
            if (jvali.rules.telno1($(this).val())) {
                flag_tel1 = 3;
            }

        });
        $("input[@name=tel2]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_tel2 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_tel2 = 2;
            }
        });
        $("input[@name=tel3]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_tel3 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_tel3 = 2;
            }
	        if ((flag_tel1 == "1") || (flag_tel2 == "1") || (flag_tel3 == "1")){
                $(this).validateError('必須項目です。');
			}else if ((flag_tel1 == "2") || (flag_tel2 == "2") || (flag_tel3 == "2")){
                $(this).validateError('形式が正しくありません。');
			}else if ((flag_tel1 == "3")){
                $(this).validateError('携帯電話の番号は登録できません。');
			}
        });

		//FAX番号
        $("input[@name=fax1]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_fax1 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_fax1 = 2;
            }
        });
        $("input[@name=fax2]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_fax2 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_fax2 = 2;
            }
        });
        $("input[@name=fax3]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                flag_fax3 = 1;
            }
            if (jvali.rules.telno($(this).val())) {
                flag_fax3 = 2;
            }
	        if ((flag_fax1 == "1") || (flag_fax2 == "1") || (flag_fax3 == "1")){
                $(this).validateError('必須項目です。');
			}else if ((flag_fax1 == "2") || (flag_fax2 == "2") || (flag_fax3 == "2")){
                $(this).validateError('形式が正しくありません。');
			}
        });

		//業種
        $("select[@name=gyoshu]").each(function(){
            if (jvali.rules.empty($(this).val())) {
                $(this).validateError('業種を選択して下さい。');
            }
        });

        if ($(".warn-validate").size() > 0) {
            $(".warn-validate")[0].focus();
            return false;
        } else {
            return true;
        }
    }

	//Validate
    jvali.rules = {};

	//空欄かどうかをチェック
    jvali.rules.empty = function(str) {
        if ($.trim(str) == "") {
            return true;
        }
        return false;
    }

	//カタカナで入力されているかをチェック
    jvali.rules.kana = function(str) {
        if (!(str == "" || str.match(/^[ァ-ン゛゜ー 　・]+$/))) {
            return true;
        }
        return false;
    }

	//郵便番号前半の形式をチェック
    jvali.rules.yubin1 = function(str) {
        if (!(str == "" || str.match(/^[0-9]{3}$/))) {
            return true;
        }
        return false;
    }

	//郵便番号後半の形式をチェック
    jvali.rules.yubin2 = function(str) {
        if (!(str == "" || str.match(/^[0-9]{4}$/))) {
            return true;
        }
        return false;
    }

	//電話番号・FAX番号の形式をチェック
    jvali.rules.telno = function(str) {
        if (!(str == "" || str.match(/^[0-9]{1,5}$/))) {
            return true;
        }
        return false;
    }
    
    //携帯番号かどうかをチェック
    jvali.rules.telno1 = function(str) {
        if ((str == "" || str.match(/^[0]{1}[789]{1}[0]{1}$/))) {
            return true;
        }
        return false;
    }

	//E-mailの形式をチェック
    jvali.rules.mail = function(str) {
        if (!(str == "" || str.match(/^[\w\-\.]{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/))) {
            return true;
        }
        return false;
    }
});