﻿// JavaScript Document
ask.validationInitialize = function(){
var $ = ask.$,
$C = ask.css,
$D = ask.dom,
$E = ask.event,
$Ar = ask.toArray;

ask.validationMessage ={
	email : "メールアドレスの入力が不正です。",
	numeric : "半角数字で入力してください。",
	required :"必須事項を入力してください。"
}
ask.validation = function(form){
	this.form = $(form);
	this.required = $Ar(ask.$C("valRequired",this.form));
	this.numeric = $Ar(ask.$C("valNumeric",this.form));
	this.email = $Ar(ask.$C("valEmail",this.form));
	this.invalid = [];
	this.message = "";
	this.validate = function(e){
		this.isEmpty();
		this.isEmail();
		this.isNumeric();
		if(this.invalid.length >0){
			this.invalid[0].focus();
			alert(this.message);
			this.invalid = [];
			this.message = "";
			$E.stopEvent(e);
		}
	};
	$D.addEventListener(this.form,"submit",this.validate.bind(this))
}
ask.validation.prototype = {

	isEmail : function(){
		var a,e=this.email;
		for(var i=0;i<e.length;i++){
			a = e[i].value;
			if(!a) continue;
			if(a.match(/[^\w\@\.\-]/)){
				this.addInvalidInput(e[i],"email");
			}else{
				if(a.length>=10 && a.match(/\S{3,}@\S{6,}/) && a.split("@")[1].match(/\.\S{2,}/)){
					continue;
				}else{
					this.addInvalidInput(e[i],"email");
				}
			}
		}
	},
	
	isNumeric : function(){
		var a=this.numeric;
		for(var i = 0;i<a.length;i++){
			if(!a[i].value) continue;
			if(!ask.isNumberString(a[i].value)) this.addInvalidInput(a[i],"numeric");
		}
	},
	
	isEmpty : function(){
		var a = this.required;
		for(var i=0;i<a.length;i++){
			if(a[i].value == "") this.addInvalidInput(a[i],"required");
		}
	},
	
	addInvalidInput : function(element,message){
		var m = ask.validationMessage;
		this.invalid.push(element);
		if(this.message.indexOf(m[message]) == -1) this.message+=m[message]+"\n";
	}
}

}

ask.validationInitialize()


