function init() {
	setEvent("name",  "text");
	setEvent("kana",  "kana");
	setEvent("corp",  "text");
	setEvent("sect",  "default");
	setEvent("post",  "default");
	setEvent("pos1",  "default");
	setEvent("pos2",  "default");
	setEvent("adr1",  "select");
	setEvent("adr2",  "text");
	setEvent("adr3",  "text");
	setEvent("tel",   "tel");
	setEvent("mail",  "mail");
	setEvent("chk",   "chk");

	setCheckboxEvent("fnd6","fnd6txt");

	getId("submit").onclick = isValidForm;
}


function isValidForm() {
	var err = 0;
	var errTxt = "";
	if (!isCheckArg(getId("name").value)) {
		getId("name").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※お名前をご記入ください。\n";
	}
	if (!isCheckKana(getId("kana").value)) {
		getId("kana").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※フリガナ（カタカナ）をご記入ください。\n";
	}
	if (!isCheckArg(getId("corp").value)) {
		getId("corp").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※会社名をご記入ください。\n";
	}
	if (!isCheckArg(getId("adr1").value)) {
		getId("adr1").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※都道府県を選択してください。\n";
	}
	if (!isCheckArg(getId("adr2").value)) {
		getId("adr2").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※市区町村名をご記入ください。\n";
	}
	if (!isCheckArg(getId("adr3").value)) {
		getId("adr3").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※丁目・番地・ビル名をご記入ください。\n";
	}
	if (!isCheckTel(getId("tel").value)) {
		getId("tel").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※電話番号をお確かめください。\n";
	}
	if (!isValidMail(getId("mail").value)) {
		getId("mail").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※メールアドレスに誤りがあるようです。\n";
	}
	if (!isCheckMail(getId("mail").value, getId("chk").value)) {
		getId("chk").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※メールアドレスをお確かめください。\n";
	}

	var array = {
		fnd1 : '',
		fnd2 : '',
		fnd3 : '',
		fnd4 : '',
		fnd5 : '',
		fnd6 : 'fnd6txt'
	};
	if (!isCheckCheckbox(array)) {
		getId("fnd1").parentNode.parentNode.parentNode.style.backgroundColor = setBg("err");
		getId("fnd6txt").style.backgroundColor = setBg("err");
		err++;
		errTxt += "※チェックボックスをお確かめください。\n";
	} else {
		getId("fnd1").parentNode.parentNode.parentNode.style.backgroundColor = setBg("blur");
		getId("fnd6txt").style.backgroundColor = setBg("blur");
	}
	if (err == 0) {
		return true;
	} else {
		var errMsg = "エラーがあります。入力内容をご確認ください。\n\n\n"
		errMsg += errTxt;
		alert(errMsg);
		return false;
	}
}


function setEvent(id, type) {
	var node = getId(id);
	switch (type) {
		case "text" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isCheckArg(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "select" :
			node.onchange = function() {
				if (isCheckArg(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "mail" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isValidMail(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "chk" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isCheckMail(getId("mail").value, this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "kana" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isCheckKana(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "tel" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isCheckTel(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		case "num" :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				if (isCheckNum(this.value)) {
					node.style.backgroundColor = setBg("blur");
				} else {
					node.style.backgroundColor = setBg("err");
				}
			}
			break;
		default :
			node.onfocus = function() {
				node.style.backgroundColor = setBg("focus");
			}
			node.onblur = function() {
				node.style.backgroundColor = setBg("blur");
			}
			break;
	}
}


function setCheckboxEvent(id1, id2) {
	var node1 = getId(id1);
	var node2 = getId(id2);

	node1.onclick = function() {
		if (node1.checked) {
			node2.focus();
		} else {
			if (isCheckArg(node2.value)) {
				node2.value = '';
			} else {
				node2.style.backgroundColor = setBg("blur");
			}
		}
	}
	node2.onfocus = function() {
		node1.checked = true;
		node2.style.backgroundColor = setBg("focus");
	}
	node2.onblur = function() {
		if (node1.checked && isCheckArg(this.value)) {
			node2.style.backgroundColor = setBg("blur");
		} else if (!node1.checked && isCheckArg(this.value)){
			node2.style.backgroundColor = setBg("err");
		} else if (node1.checked && !isCheckArg(this.value)){
			node2.style.backgroundColor = setBg("err");
		} else {
			node2.style.backgroundColor = setBg("err");
		}
	}
}

function setBg(type) {
	var color;
	switch (type) {
		case "focus" :
			return "#f5f5f5";
			break;
		case "blur" :
			return "#ffffff";
			break;
		case "err" :
			return "#ffff99";
			break;
		default :
			return "#ffffff";
			break;
	}
}


function isCheckArg(arg) {
	if (arg != "") {
		return true;
	} else {
		return false;
	}
}


function isCheckMail(mail, chk) {
	if (mail == chk) {
		if (isValidMail(mail)) {
			return true;
		}
	}
	return false;
}


function isValidMail(mail) {
	var regexp = new RegExp("^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$");
//	var regexp = new RegExp("^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+\.[A-Za-z0-9_\.\-]+$");
	var result = regexp.test(mail);
	if (result) {
		return true;
	} else {
		return false;
	}
}


function isCheckKana(kana) {
	var regexp = new RegExp("^[ｱ-ﾝア-ン]+$");
	var result = regexp.test(kana);
	if (result) {
		return true;
	} else {
		return false;
	}
}


function isCheckTel(tel) {
	var regexp = new RegExp("^[0-9]{2,5}-?[0-9]{1,5}-?[0-9]{4}$");
	var result = regexp.test(tel);
	if (result) {
		return true;
	} else {
		return false;
	}
}


function isCheckNum(num) {
	var regexp = new RegExp("^[0-9]+$");
	var result = regexp.test(num);
	if (result) {
		return true;
	} else {
		return false;
	}
}


function isCheckCheckbox(array) {
	var checked = 0;
	var txt     = 0;
	var txtval  = 0;
	var result  = false;

	for (chk in array) {
		if (getId(chk).checked) {
			if (array[chk]) {
				txt++;
				if (getId(array[chk]).value) {
					txtval++;
				}
			}
			checked++;
		}
	}

	if (!checked) {
		result = false;
	} else {
		result = true;
	}

	if (txt) {
		if (txt != txtval) {
			result = false;
		} else {
			result = true;
		}
	}

	if (result) {
		return true;
	} else {
		return false;
	}
}

function getId(id) {
	if (typeof id == "string") {
		return document.getElementById(id);
	}
	return id;
}


function getElements(classname, tagname, root) {
	if (!root) {
		root = document;
	} else if (typeof root == "string") {
		root = GC_mod.getId(root);
	}
	if (!tagname) {
		tagname = "*";
	}

	var all = root.getElementsByTagName(tagname);
	if (!classname) {
		return all;
	}
	var elements = [];
	for (var i = 0; i < all.length; i++) {
		var element = all[i];
		if (isMember(element, classname)) {
			elements.push(element);
		}
	}
	return elements;

	function isMember(element, classname) {
		var classes = element.className;
		if (!classes) {
			return false;
		}
		if (classes == classname) {
			return true;
		}
		var whitespace = /\s+/;
		if (!whitespace.test(classes)) {
			return false;
		}
		var c = classes.split(whitespace);
		for (var i = 0; i < c.length; c++) {
			if (c[i] == classname) {
				return true;
			}
		}
		returnfalse;
	}
}


function getStyle(element, property, pseudo) {
	if( element.currentStyle ) {
		return element.currentStyle[property];
	} else if( document.defaultView.getComputedStyle ) {
		return getComputedStyle( element, pseudo ).getPropertyValue( property );
	}
	return "";
}


window.onload = function() {
	init();
}

