

$(document).ready(function() {
	$("#isJS").val('1');
	$("#confirmBt").css('display','inline');
	var elms = ["s_name","s_kana","s_mail","s_msg"];
	formSender.formElmsInit();
	formSender.init(elms, 2);

	$("#confirmBt").click(
				   function() {
					   formSender.errResetState();
					   formSender.validate();
					   formSender.checkResult();
				   });
	
	$("#submitBt").click(
				   function() {
					   formSender.mailSend();
				   });
});

var formSender = {
	requiredObjs: new Object(),
	len: 0,
	errObj: new Object(),
	name: "formSender",
	
	formElmsInit: function() {
		$("#defRadio").attr('checked', 'checked');
	},
	
	init: function(elms, mail1, mail2) {
			$("#submitBt").attr('disabled','disabled');
			$("#clicksend").hide();
			
			if(elms.length > 0) {
				this.len = elms.length;
				
				for(var i=0; i<this.len; i++) {
					var elmID = elms[i];
					var elmObj = document.getElementById(elms[i]);
					var elmType;
					
					var tagname = elmObj.nodeName.toLowerCase();
					if(tagname == "input") {
						elmType = $(elmObj).attr('type');
					} else {
						elmType = tagname;
					};
					
					var mail = false;
					if(mail1) {
						if(i == mail1 || i == mail2) mail = true;
					};
					
					var obj = {
						id: elmID,
						obj: elmObj,
						type: elmType,
						isMail: mail
					};
					
					this.requiredObjs[i] = obj;
				};
			};
	},
		
	validate: function() {
				this.errObj.name = "none";

				if(this.len > 0) {
					for(var i=0; i<this.len; i++) {
						var thisObj = document.getElementById(this.requiredObjs[i]['id']);
						
						switch(this.requiredObjs[i]['type']) {
							case "text":
								if($(thisObj).val() == "" || $(thisObj).val() == " " || $(thisObj).val() == "　") this.errObj.errlist.push(i);
								break;
							case "checkbox":
								if(!$(thisObj).attr('checked')) this.errObj.errlist.push(i);
								break;
							case "textarea":
								if($(thisObj).val() == "") this.errObj.errlist.push(i);
								break;
								
							default:
								break;
						};
					};
					
					if(this.errObj.errlist.length > 0) {
						this.errObj.name = "empty";
						return;
						
					} else {
						var mail1;
						for(var k=0; k<this.len; k++) {
							if(this.requiredObjs[k]['isMail']) {
								var str = $(this.requiredObjs[k]['obj']).val();
								
								if(!mail1 && !str.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)) {
									this.errObj.name = "mailErr";
									this.errObj.errlist.push(k);
									return;
									
								} else {
									if(!mail1) mail1 = str;
								};
								
								if(mail1) {
									if(mail1 != str) {
										this.errObj.name = "mailNotSame";
										this.errObj.errlist.push(k);
										return;
									};
								};
							};
						};
					};
						
				};
	},
	
	errResetState: function() {
					this.errObj.name = "";
					this.errObj.errlist = [];
					$(".commonerr").css('display', 'none');
					$(".errmsg").css("display", "none");
					$(".mailerr").css("display", "none");
					$(".mailnotsame").css("display", "none");
	},
	
	inputEmptyState: function() {
						for(var i=0; i<this.errObj.errlist.length; i++) {
							var e = this.errObj.errlist[i];
							var errmsg = $(this.requiredObjs[e]['obj']).siblings().filter(".errmsg").css('display', 'block');
						};
	},
	
	commonErrState: function() {
						$(".commonerr").css('display', 'block');
	},
	
	mailErrState: function() {
						$(".mailerr").css('display', 'block');
	},
	
	mailNotSameState: function() {
						$(".mailnotsame").css('display', 'block');
	},
	
	mailSend: function() {
				try {
					$('#sendform').ajaxForm({
											dataType:'json',
											beforeSubmit:function() {
												$("#submitBt").attr('disabled','disabled');
												$("#clicksend").hide();
											},
											success:this.getRes,
											timeout: 1000
											});
				} catch (err){
					alert("エラーが発生しました。サイト管理者へお問合せ下さい。" + err);
				};
	},
	
	getRes: function(objHTTP, status) {
				formSender.errObj = objHTTP;
				
				if(status == "success") {
					formSender.checkResult();
				} else {
					alert("送信エラーが発生しました。サイト管理者へお問合せ下さい。" + status);
				};
	},
	
	checkResult: function() {
		var m = this.errObj.name;
					switch(this.errObj.name) {
						case "none":
							$("#clicksend").show();
							$("#submitBt").attr('disabled', false);
							break;
						case "empty":
							this.commonErrState();
							this.inputEmptyState();
							break;
						case "mailErr":
							this.commonErrState();
							this.mailErrState();
							break;
						case "mailNotSame":
							this.commonErrState();
							this.mailNotSameState();
							break;
						case "send":
							$('#sendform').clearForm();
							this.mailSent();
							break;
					};
	},
	
	mailSent: function() {
				$('#sendform').css('display', 'none');
				$('#sentMsg').show();
	}
	
};
