function zipSearch() {
	var zip = $("#customer_zip1").val()+$("#customer_zip2").val();
	if(zip.match(/[0-9]{7}/)) {
		zipAddress.parse(zip);
	}
}

var zipAddress = (
	function(callback) {
		this.proxy     = 'http://zip.ricollab.jp';
		this.callback  = callback || 'zipCallback';
		this.parse = function(zip) {
			var script = document.createElement('script'); 
			script.id = this.proxy + '/' + zip + '.json?callback=' + this.callback;
			script.charset = 'UTF-8';
			script.src = script.id; 
			document.lastChild.appendChild(script);
		};
		return this;
	}
)();

function zipCallback(json){
	var pref = json.address ? json.address.prefecture : json.description;
	var addr = json.address ? json.address.city + json.address.town : json.description;
	addr = addr.replace(/[\(（].*/, "");
	addr = addr.replace("以下に掲載がない場合", "");
	$("#customer_pref_id").val(pref).change();
	$("#customer_addr1").val(addr).change();
};

function HighlightCheckbox() {
	var selected = $("#catalog_selected_name td");
	selected.html("");
	$(".catalog_select td").each(
		function() {
			var checkbox = $(this).find("input[type=checkbox]")[0];
			var name = $(this).find("dd[class=name] label").html();
			if(checkbox.checked) {
				this.className = "select_on";
				selected.html(selected.html() + name.replace(/[「」]/g, '').replace(/<br>/, ' ') + "<br>");
			} else {
				this.className = "select_off";
			}
			$(checkbox).change();
		}
	);
	if(selected.html()=="") {
		//selected.html("<span class=\"errmsg\">カタログが選択されていません。<br>ご希望のカタログを選択してください。</span>");
		selected.html("（なし）");
	}
}

$(".formCheck").change(formCheck).blur(formCheck);
$("input[type=radio].formCheck").click(formCheck);

$("label").click(function(){
	var targetElement = $("#"+$(this).attr("for"));
	if(targetElement.attr("type")=="radio") {
		targetElement.click().blur();
	}
});

function formCheck() {
	var result = false;
	var targetElement = $(this).attr("name");
	var value = $(this).val();
	switch(targetElement) {
		case "item_id[]" : {
			if($("input[@name='item_id[]']:checked").size()>0) {
				result = alertMessage(true, null, "joint_item_msg");
			} else {
				result = alertMessage(false, null, "joint_item_msg");
			}
			break;
		}
		case "customer_sur_name" :
		case "customer_name" : {
			//var re = new RegExp("^[^ｧ-ﾝﾞﾟ]{1,7}$");
			var re = new RegExp("^[^ -~｡-ﾟ]{1,7}$");
			alertMessage(value.match(re)!=null, this, targetElement+"_msg");
			result = checkMark($("#customer_sur_name").val().match(re)!=null && $("#customer_name").val().match(re)!=null, this, "joint_customer_name_mark");
			break;
		}
		case "customer_sur_kname" :
		case "customer_kname" : {
			var re = new RegExp("^[ァ-ヴー]{1,9}$");
			$(this).val($(this).val().toZenkanaCase().toKatakanaCase());
			alertMessage(value.match(re)!=null, this, targetElement+"_msg");
			result = checkMark($("#customer_sur_kname").val().match(re)!=null && $("#customer_kname").val().match(re)!=null, this, "joint_customer_kname_mark");
			break;
		}
		case "customer_email" : {
			var re = new RegExp("^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$");
			alertMessage(value.match(re)!=null && value.length<=60, this, targetElement+"_msg");
			result = checkMark(value.match(re)!=null && value.length<=60, this, targetElement+"_mark");
			break;
		}
		case "customer_email_retype" : {
			var re = new RegExp("^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$");
			alertMessage(value.match(re)!=null && value==$("#customer_email").val(), this, targetElement+"_msg");
			result = checkMark(value.match(re)!=null && value==$("#customer_email").val(), this, targetElement+"_mark");
			break;
		}
		case "customer_zip1" :
		case "customer_zip2" :
		case "customer_pref_id" :
		case "customer_addr1" :
		case "customer_addr2" : {
			var num3 = new RegExp("^[0-9]{3}$");
			var num4 = new RegExp("^[0-9]{4}$");
			var noHanRequire = new RegExp("^[^ -~｡-ﾟ]{1,20}$");
			var noHan = new RegExp("^[^ -~｡-ﾟ]{0,25}$");
			var kanSuuji = new RegExp("[０-９]");
			switch(targetElement) {
				case "customer_zip1" :
				case "customer_zip2" : {
					$(this).val(toHankakuNum($(this).val()));
					alertMessage(value.match((targetElement=="customer_zip1")?num3:num4)!=null, this);
					alertMessage($("#customer_zip1").val().match(num3)!=null && $("#customer_zip2").val().match(num4)!=null, null, "joint_customer_zip_msg");
					break;
				}
				case "customer_pref_id" : {
					alertMessage(value!="", this, targetElement+"_msg");
					break;
				}
				case "customer_addr1" : {
					alertMessage(value.match(noHanRequire)!=null && value.match(kanSuuji)!=null, this, targetElement+"_msg");
					break;
				}
				case "customer_addr2" : {
					alertMessage(value.match(noHan)!=null, this, targetElement+"_msg");
					break;
				}
			}
			
			result = checkMark(
				$("#customer_zip1").val().match(num3)!=null &&
				$("#customer_zip2").val().match(num4)!=null &&
				($("#customer_pref_id").val()!="") &&
				$("#customer_addr1").val().match(noHanRequire)!=null &&
				$("#customer_addr1").val().match(kanSuuji)!=null &&
				$("#customer_addr2").val().match(noHan)!=null
				, this
				, "joint_customer_addr_mark"
			);
			
			break;
		}
/*
		case "permission" :
		case "howtocontact" :
		case "dayofweek" :
		case "contacttime" : {
			var permissionValue = $("input[@name=permission]:checked").val();
			if(!permissionValue) {
				result = alertMessage(false, null, "permission_msg");
			} else {
				alertMessage(true, null, "permission_msg");
				if(permissionValue=="希望しない") {
					$("#howtocontact").val("");
					$("#howtocontact").attr("disabled", "disabled");
					alertMessage(true, $("#howtocontact"), "howtocontact_msg");
					
					$("#dayofweek").val("");
					$("#dayofweek").attr("disabled", "disabled");
					$("#contacttime").val("");
					$("#contacttime").attr("disabled", "disabled");
					alertMessage(true, $("#dayofweek"));
					alertMessage(true, $("#contacttime"));
					alertMessage(true, null, "date_msg");
					
					result = checkMark(true, null, "joint_permission_mark");
				} else {
					var checkMarkFlag = true;
					
					$("#howtocontact").removeAttr("disabled");
					
					var howtocontactValue = $("#howtocontact").val();
					if(howtocontactValue=="") {
						$("#dayofweek").val("");
						$("#dayofweek").attr("disabled", "disabled");
						$("#contacttime").val("");
						$("#contacttime").attr("disabled", "disabled");
						alertMessage(true, $("#dayofweek"));
						alertMessage(true, $("#contacttime"));
						alertMessage(true, null, "date_msg");
						alertMessage(false, $("#howtocontact"), "howtocontact_msg");
						checkMarkFlag &= false;
					} else {
						alertMessage(true, $("#howtocontact"), "howtocontact_msg");
						if(howtocontactValue=="自宅TEL" || howtocontactValue=="携帯TEL") {
							var dateFlag = true;
							$("#dayofweek").removeAttr("disabled");
							$("#contacttime").removeAttr("disabled");
							dateFlag &= alertMessage($("#dayofweek").val()!="", $("#dayofweek"));
							dateFlag &= alertMessage($("#contacttime").val()!="", $("#contacttime"));
							alertMessage(dateFlag, null, "date_msg");
							checkMarkFlag &= dateFlag;
						} else {
							$("#dayofweek").val("");
							$("#dayofweek").attr("disabled", "disabled");
							$("#contacttime").val("");
							$("#contacttime").attr("disabled", "disabled");
							alertMessage(true, $("#dayofweek"));
							alertMessage(true, $("#contacttime"));
							alertMessage(true, null, "date_msg");
							checkMarkFlag &= true;
						}
					}
					
					result = checkMark(checkMarkFlag, null, "joint_permission_mark");
				}
			}
			break;
		}
*/
		case "customer_cemail" : {
			var re = new RegExp("^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$");
			result = alertMessage((value.match(re)!=null && value.length<=60) || value.length==0, this, targetElement+"_msg");
			break;
		}
		case "customer_cemail_retype" : {
			var re = new RegExp("^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$");
			result = alertMessage(((value.match(re)!=null && value==$("#customer_cemail").val()) || value.length==0) && (value.length==$("#customer_cemail").val().length), this, targetElement+"_msg");
			break;
		}
		case "customer_tel1" :
		case "customer_tel2" :
		case "customer_tel3" : {
			$(this).val(toHankakuNum($(this).val()));
			var singleRe = new RegExp("^[0-9]{1,5}$");
			var allRe = new RegExp("^[0-9]{9,11}$");
			var jointValue = $("#customer_tel1").val()+$("#customer_tel2").val()+$("#customer_tel3").val();
			result = alertMessage(
				(jointValue.match(allRe)!=null || jointValue.length==0)
				&& ($("#customer_tel1").val().match(singleRe)!=null || $("#customer_tel1").val().length==0)
				&& ($("#customer_tel2").val().match(singleRe)!=null || $("#customer_tel2").val().length==0)
				&& ($("#customer_tel3").val().match(singleRe)!=null || $("#customer_tel3").val().length==0)
			, null, "joint_customer_tel_msg");
			alertMessage(result, $("#customer_tel1"));
			alertMessage(result, $("#customer_tel2"));
			alertMessage(result, $("#customer_tel3"));
			break;
		}
		case "customer_birth_year" :
		case "customer_birth_mon" :
		case "customer_birth_mday" : {
			var flag = true;
			var isLeap = ($("#customer_birth_year").val()%4==0 && $("#customer_birth_year").val()%100!=0 || $("#customer_birth_year").val()%400==0);
			var days = [31,isLeap?29:28,31,30,31,30,31,31,30,31,30,31];
			flag &= alertMessage($("#customer_birth_year").val()!="", $("#customer_birth_year"));
			flag &= alertMessage($("#customer_birth_mon").val()!="", $("#customer_birth_mon"));
			flag &= alertMessage($("#customer_birth_mday").val()!="" && $("#customer_birth_mday").val()<=days[$("#customer_birth_mon").val()-1], $("#customer_birth_mday"));
			alertMessage(flag, null, "joint_birth_msg");
			checkMark(flag, null, "joint_birth_mark");
			result = (flag ? true : false);
			break;
		}
		case "customer_model1" : {
			result = alertMessage(value.length<=25, this, targetElement+"_msg");
			break;
		}
		case "customer_gender" : {
			var customerGenderValue = $("input[@name=customer_gender]:checked").val();
			alertMessage(customerGenderValue, null, "customer_gender_msg");
			checkMark(customerGenderValue, null, "customer_gender_mark");
			result = (customerGenderValue ? true : false);
			break;
		}
	}
	formCheckResult &= result;
}

function alertMessage(type, self, targetName) {
	var target = $("#"+targetName);
	if(type) {
		target.removeClass("has_error");
		$(self).css("background", "");
	} else {
		target.addClass("has_error");
		$(self).css("background", "#fffa9d");
	}
	return type;
}

function checkMark(type, self, targetName) {
	var target = $("#"+targetName);
	target.css("visibility", type ? "visible" : "hidden")
	return type;
}

var formCheckResult = true;
function submitHandler() {
	formCheckResult = true;
	$(".formCheck").blur();
	if(formCheckResult) {
		return true;
	} else {
		$('html,body').animate({scrollLeft:0,scrollTop:$("#input_step1").offset().top}, 500, "swing");
		//$('html,body').scrollLeft(0).scrollTop($("#input_step1").offset().top);
		//$('html,body').animate({scrollLeft:0,scrollTop:$("#input_step2").offset().top}, 500, "swing");
		//$('html,body').scrollLeft(0).scrollTop($("#input_step2").offset().top);
		return false;
	}
}

function toHankakuNum(str) {
	return str.replace(/([０-９])/g,
	function ($0) {
		return String.fromCharCode($0.charCodeAt(0) - 65248);
	});
}

$(".catalog_select td dd.name, .catalog_select td input").click(
	HighlightCheckbox
);

$("#howtocontact").attr("disabled", "disabled");
$("#dayofweek").attr("disabled", "disabled");
$("#contacttime").attr("disabled", "disabled");

if($("#form_from").val()=="confirm") {
	HighlightCheckbox();
	submitHandler();
}

