MakeForm = function(){ };
MakeForm.setUnip = function(){ };
MakeForm.cookieId = 'atmailform';
MakeForm.Running = 0;
MakeForm.form = [];
MakeForm.Errors = [];
MakeForm.PUSH = [];
MakeObj = function(){};

MakeForm.ErrorConfig = 0;
MakeForm.ConfirmConfig = 0;
MakeForm.ErrorMessage = "以下の項目に誤りがあります。";
MakeForm.ConfirmMessage = "送信します。よろしいですか？";
MakeForm.thanksMessage = "ご登録ありがとうございました。";
MakeForm.ErrorMesDef = "(未入力)";
MakeForm.ErrorMesEmail_1 = "(形式不備)";
MakeForm.ErrorMesEmail_2 = "(不一致)";
MakeForm.ErrorMesDate = "(存在しない日付)";

MakeForm.data = new Array();
//
MakeForm.data['mail'] = new Array('メールアドレス','mail','1','0');
MakeForm.p = new Array('mail');


MakeForm.chekced = new Array();

MakeForm.check = function(f, obj){
	// 初期化
	MakeForm.Errors = [];
	MakeForm.PUSH = [];
	var results = new Array;
	var element = new Array;
	
	for(i=0;i<f.length;i++){
		var objName = f[i].name;
		var objType = f[i].type;
		var objValue = f[i].value.replace(/^[\s　]+|[\s　]+$/g, "");
		var elems = obj.data[objName];
		var error_message = "";
		
		// 項目以外は除外
		if( !elems ) continue;
		
		// チェック済み項目
		MakeForm.chekced[objName] = 1;
		
		var objTitle = elems[0];
		var objExcept = elems[1];
		var objNec = elems[2] -0;
		var objWithin = elems[3] -0;
		
		if( objName.match(/^mail(_?)(\d*)/g) ){
			if( objNec && objValue == '' ){
				error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else{
				if( !MakeForm.isEmail(f[i].value) ){
					error_message =  objTitle + ' ' + MakeForm.ErrorMesEmail_1;
				}
			}
		}
		else if( objName.match(/^_mail(_?)(\d*)/g) ){
			var mail_name = 'mail' + RegExp.$1 + RegExp.$2;
			var mail = f.elements[mail_name].value;
			if( objNec && objValue == '' ){
				if( mail != '' ){
					error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
				}
			}else if( mail != f[i].value ){
				error_message = objTitle + ' ' + MakeForm.ErrorMesEmail_2;
			}
		}
		else if( objName.match(/^email(_?)(\d*)/g) ){
			if( objNec && objValue == '' ){
				error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else{
				if( !MakeForm.isEmail(f[i].value) ){
					error_message =  objTitle + ' ' + MakeForm.ErrorMesEmail_1;
				}
			}
		}
		else if( objName.match(/^_email(_?)(\d*)/g) ){
			var mail_name = 'email' + RegExp.$1 + RegExp.$2;
			var mail = f.elements[mail_name].value;
			if( objNec && objValue == '' ){
				if( mail != '' ){
					error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
				}
			}else if( mail != f[i].value ){
				error_message = objTitle + ' ' + MakeForm.ErrorMesEmail_2;
			}
		}
		else if( objName.match(/zip_2(_?)(\d*)/g) ){
			var zip1_name = 'zip_1' + RegExp.$1 + RegExp.$2;
			var zip1 = f.elements[zip1_name].value;
			var zip2 = objValue;
			
			if( objNec && (zip1 == '' || objValue == '') ){
				error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else{
				
				if( zip1 != '' || zip2 != '' ){
					if( !zip1.match("^[0-9]{3}$") ){
						error_message = objTitle + ' ' +MakeForm.ErrorMesEmail_1;
					}
					if( !zip2.match("^[0-9]{4}$") ){
						error_message = objTitle + ' ' +MakeForm.ErrorMesEmail_1;
					}
				}
			}
		}
		else if( objName.match(/day(_?)(\d*)/g) ){
			var mon_name = 'mon' + RegExp.$1 + RegExp.$2;
			var mon = f.elements[mon_name].value;
			if( objNec && objValue == '' ){
				error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else{
				var dateFlag = MakeForm.isDate( mon, objValue );
				if( dateFlag ){
					 error_message = objTitle + ' ' + MakeForm.ErrorMesDate;
				}
			}
		}
		else{
			
			if( objType == 'text' || objType == 'textarea'){
				if( objNec && objValue == '' ) error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else if( objType == 'select-one' || objType == 'select-multiple' ){
				if( objNec && objValue == '' ) error_message =  objTitle + ' ' + MakeForm.ErrorMesDef;
			}else{
				if( f[i].checked == true ) results[objExcept] = 1;
				if( objNec ){
					error_message = (results[objExcept])? '': objTitle + ' ' + MakeForm.ErrorMesDef;
				}
			}
		}
		// 入力文字制限
		var withInMes = MakeForm.withIn(f[i],objWithin);
		if( withInMes != '' ){
			error_message = objTitle + ' ' + withInMes;
		}
		
		if( error_message != '' || results[objExcept] ){
		
			if( !MakeForm.Errors[objExcept] ){
				MakeForm.PUSH.push(objExcept);
			}
			MakeForm.Errors[objExcept] = error_message;
		}
		
	}
	
	
	// 未チェックの項目を検査
	for(var i=0;i<obj.p.length;i++){
		MakeForm.chekced[obj.p[i]] -= 0;
		var elems = obj.data[obj.p[i]];
		var Nec = elems[2];
		if( Nec > 0 && !MakeForm.chekced[MakeForm.p[i]] ){
			var message =  obj.data[obj.p[i]][0] + ' ' + MakeForm.ErrorMesDef;
			if( !MakeForm.Errors[obj.data[obj.p[i]][1]] ){
				MakeForm.PUSH.push(obj.data[obj.p[i]][1]);
			}
			MakeForm.Errors[obj.data[obj.p[i]][1]] = message;
		}
	}
	var total_message = '';
	for(var i=0;i<MakeForm.PUSH.length;i++){
		if( MakeForm.Errors[MakeForm.PUSH[i]] != '' ) total_message += MakeForm.Errors[MakeForm.PUSH[i]] + "\n";
	}
	return total_message;
};

MakeForm.isEmail = function(p){
	if( p == '' ){
		return 1;
	}
	if(p.match("^[0-9a-zA-Z\-\_\.\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+\@[0-9a-zA-Z\-\_\.]+$")){
		return 1;
	}else{
		return 0;
	}
};

MakeForm.sender = function(f, atmf){
	
	MakeObj = function(){};
	MakeObj = MakeForm;
	
	if(atmf != ''){
		MakeObj.data = atmf.data;
		MakeObj.p = atmf.p;
		MakeObj.ErrorConfig = atmf.ErrorConfig;
		MakeObj.ConfirmConfig = atmf.ConfirmConfig;
		MakeObj.ErrorMessage = atmf.ErrorMessage;
		MakeObj.ConfirmMessage = atmf.ConfirmMessage;
		MakeObj.thanksMessage = atmf.thanksMessage;
	};
	
	f.send.value = 1;
	MakeForm.form = f;
	
	// エラーチェック
	var error_message = MakeForm.check(f, MakeObj);
	
	MakeForm.submit = function(){
		var f = MakeForm.form;
		var ErrConfig = MakeObj.ErrorConfig;
		var ConfConfig = MakeObj.ConfirmConfig;
		
		if( ErrConfig <= 0 ){
			if( error_message ){
				alert( MakeObj.ErrorMessage + "\n" + error_message );
				return false;
			}
		}
		
		if( ConfConfig <= 0 ){
			var flag = MakeForm.sendConfirm( MakeObj.ConfirmMessage );
			if( flag == true ){
				f.send.value = 2;
			}else{
				return false;
			}
		}
		MakeForm.setUnip(f);
		f.submit();
	};
	
	MakeForm.submit();
	
	// 事前チェック（フォーム更新）
	//MakeForm.myConn2(f);
	//return false;
	
};

MakeForm.sendConfirm = function(msg){
	var what=confirm(msg);
    return what;
};

MakeForm.winLoad = function (func){
	if (window.addEventListener) { //for W3C DOM
		window.addEventListener("load", func, false);
	}else if (window.attachEvent) { //for IE
		window.attachEvent("onload", func);
	}else  {
		window.onload = func;
	}
}

MakeForm.thanks = function(){
	
	var myUniq; //ユニークID
	var Anchor = 0;
	var myhref = location.href;
	
	if( MakeForm.chkCookie() ){
		var uniq = MakeForm.getCookie(MakeForm.cookieId);
		myUniq = uniq;
	}else{
		Anchor = 1;
		var parts = location.href.split("#");
		var params = {};
		if (parts.length == 2) {
			var uniq = parts[1];
			if (uniq.search(/^atmailform/i) != -1) {
		 		myUniq = uniq;
				myhref = parts[0];
			}else{
				Anchor = 0;
			}
		}
	}
	
	//コールバック
	MakeFormCallBack = function( flag, mes ){
		if( flag ){
			alert(mes);
		}
	}
	
	if( myUniq ){
		MakeForm.myConn(myUniq);
	}
	
	if( Anchor ){
		MakeForm.setUnip = function(obj){
			if( obj.uniq_a.value != '' || obj.uniq_a.value == 'nojs' )
				return;
			var uniq = 'atmailform-' + Math.random();
			obj.uniq_a.value = uniq;
			obj.href.value = myhref;
		};
	}else{
		MakeForm.setUnip = function(obj){
			
			if( obj.uniq_c.value != '' || obj.uniq_c.value == 'nojs' )
				return;
			var uniq = 'atmailform-' + Math.random();
			MakeForm.setCookie(MakeForm.cookieId,uniq);
			obj.uniq_c.value = uniq;
			obj.href.value = myhref;
		};
	}
}

MakeForm.setCookie = function(cookieId,myValue){
	myItem = cookieId + "=" + escape(myValue) + ";";
	document.cookie =  myItem;
}

MakeForm.getCookie = function(cookieId){
	var cookie_name = cookieId + "=";
	myValue = null;
	myStr = document.cookie + ";" ;
	myOfst = myStr.indexOf(cookie_name);
	if (myOfst != -1){
		myStart = myOfst + cookie_name.length;
		myEnd   = myStr.indexOf(";" , myStart);
		myValue = unescape(myStr.substring(myStart,myEnd));
		return myValue;
	}
	return myValue;
}
MakeForm.chkCookie = function(){
	var cookieId = 'myCookieText';
	var str = 1;
	MakeForm.setCookie(cookieId,str);
	var myCookie = MakeForm.getCookie(cookieId);
	if( str == myCookie ){
		MakeForm.setCookie(cookieId,'');
		return 1;
	}
	return 0;
}

MakeForm.myConn = function(uniq){
	var url = 'https://sv224.xserver.jp/~hinanokai/hinanokai.com/public_html/form.cgi?mode=jsonp&call=AjaxZipMyCallback&p=';
	var rnd = Math.random();
    var script = document.createElement("script");
    script.charset = "shift_jis";
    script.src = url + uniq + '&f=1' + '&rnd='+ rnd;
	script.type= "text/javascript";
	document.body.appendChild(script);
}

MakeForm.myConn2 = function(f){
	MakeFormRun = function( run ){
		
		if( run ){
			alert(run);
		}else{
			MakeForm.submit();
		}
		MakeForm.Running = 0;
	}
	MakeForm.Running = 1;
	var url = 'https://sv224.xserver.jp/~hinanokai/hinanokai.com/public_html/form.cgi?mode=jsonp&call=AjaxZipMyCallback&p=';
	var rnd = Math.random();
	var fu = '';
	if( f.fu ){
		fu = f.fu.value
	}
	var script = document.createElement("script");
	script.charset = "shift_jis";
	script.src = url + f.id.value + '&r=1' + '&fu=' + fu + '&' + rnd;
	script.type= "text/javascript";
	document.body.appendChild(script);
};

MakeForm.isDate = function(month, day){
	if( month != '' ){
		if( month < 1 || month > 12 ){
			return 1;
		}
		if( day < 1 || day > 31 ){
			return 1;
		}
		var m = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
		month -= 1;
		var d = m[month];
		if( d < day ){
			return 1;
		}
	}else{
		if( day != '' )
			return 1;
	}
	return 0;
}

MakeForm.winLoad(MakeForm.thanks);

MakeForm.send = function(f){
	
	var id = f.id.value;
	
	if( MakeForm.Running == 1 ){
		return false;
	}
	
	MakeForm.Running = 1;
	MakeFormLoadIn = function(obj){
		
		MakeForm.Running = 0;
		if( obj["fu"]["flag"] > 0 ){
			alert(obj["fu"]["message"]);
			return false;
		}
		
		atmf = function(){ };
		atmf.data = obj["form"];
		atmf.p = obj["prop"];
		atmf.ErrorConfig = obj["ErrorConfig"];
		atmf.ConfirmConfig = obj["ConfirmConfig"];
		atmf.ErrorMessage = obj["ErrorMessage"];
		atmf.ConfirmMessage = obj["ConfirmMessage"];
		atmf.thanksMessage = obj["thanksMessage"];
		
		MakeForm.sender(f,atmf);
		
	}
	
	var url = 'https://sv224.xserver.jp/~hinanokai/hinanokai.com/public_html/form.cgi?mode=jsonp&call=AjaxZipMyCallback&p=';
	var rnd = Math.random();
    var script = document.createElement("script");
    script.charset = "shift_jis";
    script.src = url + '&prop=1&i=' + id + '&fu='+ f.fu.value + '&rnd=' + rnd;
	script.type= "text/javascript";
	document.body.appendChild(script);
	
	return false;
}

MakeForm.withIn = function (obj,n){
	var func = new Array();
	func[0] = function(){ return; };
	func[1] = MakeForm.isHan;
	func[2] = MakeForm.isNumber;
	func[3] = MakeForm.isZen;
	func[4] = MakeForm.isSuji;
	func[5] = MakeForm.isHiragana;
	func[6] = MakeForm.isKatakana;
	
	var mes = new Array();
	mes[0] = '';
	mes[1] = '(半角のみ)';
	mes[2] = '(半角数字のみ)';
	mes[3] = '(全角のみ)';
	mes[4] = '(全角数字のみ)';
	mes[5] = '(全角かなのみ)';
	mes[6] = '(全角カナのみ)';
	
	var myfunc = func[n];
	var f = myfunc(obj);
	if( f ){
		return mes[n];
	}
	return '';
}

/* 半角のみ */
MakeForm.isHan = function (obj){
	var str=obj.value;
	for(var i=0; i<str.length; i++){
		var len=escape(str.charAt(i)).length;
		if(len>=4){
			return true;
		}
	}
	return false;
}
/* 半角数字のみ */
MakeForm.isNumber = function (obj) {
   var str=obj.value.replace(/[\n\r]*/g, "");
   if( str.match( /[^0-9]+/ ) ) {
      return true;
   }
   return false;
}
/* 全角のみ */
MakeForm.isZen = function (obj){
	var str=obj.value.replace(/[\n\r]*/g, "");
	if( str.match( /[ｧ-ﾝ]+/ ) ) {
		return true;
	}
	for(var i=0; i<str.length; i++){
		var len=escape(str.charAt(i)).length;
		if(len<4){
			return true;
		}
	}
	return false;
}
/* 全角数字のみ */
MakeForm.isSuji = function (obj) {
   var str=obj.value.replace(/[\n\r]*/g, "");
   if( str.match( /[^０-９]+/ ) ) {
      return true;
   }
   return false;
}
/* 全角ひらがなのみ */
MakeForm.isHiragana = function (obj) {
	var str=obj.value.replace(/[\n\r　]*/g, "");
	if( str.match( /[^ぁ-ん]+/ ) ) {
		return true;
	}
	return false;
}
/* 全角カタカナ */
 MakeForm.isKatakana = function(obj) {
 	var str=obj.value.replace(/[\n\r　]*/g, "");
	if( str.match( /[^ァ-ヶ]+/ ) ) {
		return true;
	}
	return false;
}
