function formValidation(){
	this.init();
}
formValidation.prototype = {
	init:function(){

		var AUTH_URL = "https://127.0.0.1/acby/htdocs/www/acby/app/index.php/form/event/authCodeCheck";
	},

	manager:function(validation_name, form_obj,val){

		switch(validation_name){
			case "required":
				var reg = this.required(form_obj,val);
				return reg;
				break;

			case "email":
				var reg = this.email(form_obj,val);
				return reg;
				break;

			case "zip":
				var reg = this.zip(form_obj,val);
				return reg;
				break;

			case "number":
				var reg = this.number(form_obj,val);
				return reg;
				break;

			case "auth_code":
				var reg = this.auth_code(form_obj,val);
				return reg;
				break;
		    default:
			    break;
		 }

	},

	validator_messages:{
		true_messages  : "OK",
		emailErr1      : "メールアドレスの形式が違います",
		emailErr2      : "メールアドレスを入力してください",
		requiredErr    : "*必須項目です",
		zipErr1        : "数字以外の文字が入力されています。",
		zipErr2        : "郵便番号は、数字を7桁で入力して下さい。",
		numberErr      : "数字以外の文字が入力されています。",
		auth_codeErr   : "コードが違います。"
	},

	email:function (form_obj,val){
		var str = form_obj.find("input.input_email").val();
        /* E-mail形式の正規表現パターン */
        /* @が含まれていて、最後が .(ドット)でないなら正しいとする */
        var Seiki=/[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i;

        if(str!=""){
            if(str.match(Seiki)){
            	val["messages"] = this.validator_messages.true_messages;
            	val["check"]    = true;
                return val;
            }else{
            	val["messages"] = this.validator_messages.emailErr1;
            	val["check"]    = false;
            	return val;
            }
        }else{
        	return val;
        }
    },

	required:function (form_obj,val){
    	var required_err_ck = false;
		form_obj.find("input").each(function(idx){
			if ( form_obj.find("input:eq(" + idx + ")").val() ){
			} else {
				required_err_ck = true;
			}
		});
		form_obj.find("select").each(function(idx){
			if ( form_obj.find("select:eq(" + idx + ")").val()){
			} else {
				required_err_ck = true;
			}
		});
		form_obj.find("input:radio").each(function(idx){
			if ( form_obj.find("input:checked").val()){
			} else {
				required_err_ck = true;
			}
		});



        if( required_err_ck == true ){
    		val["messages"] = this.validator_messages.requiredErr;
    		val["check"]    = false;
    		return val;
		} else {
    		return val;
		}
    },

    zip:function(form_obj,val){

    	var zip1 = form_obj.find("input.input_zip1").val();
    	var zip2 = form_obj.find("input.input_zip2").val();
    	var zip_str = zip1 + zip2;
    	if(zip_str.match(/[^0-9]+/)){				//数字以外の文字である場合
    		val["messages"] = this.validator_messages.zipErr1;
    		val["check"]    = false;
    		return val;
		}else if(!zip_str.match(/^[0-9]{7}$/)){			//数字以外の文字である場合
			val["messages"] = this.validator_messages.zipErr2;
    		val["check"]    = false;
    		return val;
		}else{							//正常に入力された場合
			return val;
		}
    },

    number:function(form_obj,val){

    	var number_err_ck = false;
		form_obj.find("input").each(function(idx){
			var number_str = form_obj.find("input:eq(" + idx + ")").val();
			if ( number_str.match(/[^0-9]+/) ){
				number_err_ck = true;
			}
		});

		if( number_err_ck == true ){
    		val["messages"] = this.validator_messages.numberErr;
    		val["check"]    = false;
    		return val;
		} else {
    		return val;
		}

    },

    auth_code:function(form_obj,val){
    	var p_data = form_obj.find("input.input_auth_code").val();
    	//var reg = jQuery.post( this.AUTH_URL, form_obj.find("input.input_auth_code").val());
    	$.ajax({
		    url: "https://127.0.0.1/acby/htdocs/www/acby/app/index.php/form/event/authCodeCheck",  // リクエストURL
		    //url: URL,
		    data: {"auth_code":p_data},
		    dataType: "text",
		    type:"post",
		    //cache: true,  // キャッシュする
		    success: function(data,status,XMLHttpRequest) {
		    		alert("[ 通信完了！]\n"
		    		        + "--- responseText ---\n"   + data + "\n"
		    		        + "--- status ---\n"         + status       + "\n"
		    		        + "--- XMLHttpRequest ---\n" + XMLHttpRequest
		    		);

	    		if( data == "true" ){
	        		val["messages"] = this.validator_messages.auth_codeErr;
	        		val["check"]    = false;
	        		return val;
	        		//console.log(val);
	    		} else {
	        		return val;
	        		//console.log(val);
	    		}
	    		//console.log(val);
		    }
		});

    	//return "pending";



    }
}



