var EMPTY_STR = '';

// form element names sufixed with '･' are radio buttons/check boxes, and '_' selections

function check_before_send(objform) {
	var err_msg = EMPTY_STR;
	for(var i=0;i<required_flds.length;i++){
		var elemname = required_flds[i];
		var fldsufix = elemname.substr(elemname.length - 1, 1);
		var testedpass = (fldsufix == '_') ? see_if_selected_any(objform.elements[elemname])
				: (fldsufix == '･') ? see_if_checked_any(objform.elements[elemname])
				: see_if_text_entered(objform.elements[elemname]);
		err_msg += (! testedpass) ? required_names[i] + "\n" : EMPTY_STR;
	}
	if (err_msg == EMPTY_STR) return true;	
	alert("■必須項目が入力/選択されていません：\n" + err_msg);
	return false;
}

function confirm_reset(obj) {
	return confirm('入力をリセットしてもよろしいですか？');
}

function see_if_checked_any(objelement) {
	for(var j=0;j<objelement.length;j++){
		if (objelement[j].checked) return true;	
	}
	return false;	
}

function see_if_selected_any(objelement) {
	return (objelement.selectedIndex != 0);
}

function see_if_text_entered(objelement) {
	return (objelement.value != EMPTY_STR);
}

function err_clear(obj,msg){
	alert(msg);
	// obj.value=EMPTY_STR;
	// obj.focus();
	obj.style.backgroundColor = "#ee0033";
	void(0);
}

function clear_fld_bgcolor(obj) {
	obj.style.backgroundColor = "#ffffff";
}

function check_if_match(objform, fld1, fld2, msgname) {
	// fld2 is the calling field object
	clear_fld_bgcolor(fld2);
	var checkflg = (objform.elements[fld1].value == fld2.value);
	var msg = (checkflg) ? EMPTY_STR : '■2回ご記入いただいた' + msgname + 'が一致しません。再度ご記入ください。\n\n';
	if (msg != EMPTY_STR) {
		err_clear(fld2,msg);
	}
}

function check_mail(obj) {
	clear_fld_bgcolor(obj);
	str=obj.value;
	if(str==null || str==EMPTY_STR) return;
	err_msg="メールアドレスの書式が正しくないようです";
	at_count=0;
	for(k=0;k<str.length;k++) {
		if(str.charAt(k)=="@") at_count++;
	}
	if(at_count !=1) err_clear(obj,err_msg);
	if(str.indexOf('.')==-1) err_clear(obj,err_msg);
	if(str !=escape(str)) {
		excp="@=~:&";
		thest="";
		for(k=0;k<str.length;k++) {
			thest=str.charAt(k);
			if(thest !=escape(thest)){
				if(excp.indexOf(thest)==-1) err_clear(obj,err_msg);
			}
		}
		return;
	}
}

function check_tel(obj){
	clear_fld_bgcolor(obj);
	str=obj.value;
	if(str==null||str==EMPTY_STR) return;
	err_msg="番号の入力が間違っていませんか？\n半角数字で市外局番からハイフンで区切って入力してください";
	var del=str.indexOf('-'),val=0,s1=0,s2=0,s3=0;
	if(del<=0) err_clear(obj,err_msg); return;
	s1s=obj.value.substring(val,del);
	if((s1=check_digit(s1s))==0) err_clear(obj,err_msg); return;
	if(s1s.charAt(0)!=0) err_clear(obj,err_msg); return;
	val=del+1; del=obj.value.indexOf('-',val);
	if(del<=val||del==(obj.value.length-1)) err_clear(obj,err_msg); return;
	if(s2=check_digit(obj.value.substring(val,del))==0) err_clear(obj,err_msg); return;
	if(s3=check_digit(obj.value.substring(del+1,obj.value.length))==0) err_clear(obj,err_msg); return;
	if((s1+s2+s3)<10||11<(s1+s2+s3)) err_clear(obj,err_msg);
	return;
}

function check_zipcode(obj){
	clear_fld_bgcolor(obj);
	str=obj.value;
	if(str==null||str==EMPTY_STR) return;
	del=str.indexOf('-');
	if(del==-1 || check_digit(str.substring(0,del))!=3 || check_digit(str.substring(del+1,str.length))!=4){
		err_msg="郵便番号は半角数字で7桁をハイフンで区切って（xxx-xxxx）入力してください";
		err_clear(obj,err_msg);
	}
	return;
}

function check_digit(num) {
	for(i=0;i<num.length;i++){
		if(isNaN(parseInt(num.charAt(i),10))) return 0;
	}
	if(parseInt(num,10)<=0) return 0;
	return num.length;
}