//==========================================
//　Form Control　（ver3.0）
//　----------------------------------------
//　フォームの値の取得する
//　取得した値を空欄かどうかをチェックする
//　
//==========================================


//==============================
//　フォーム値のチェック → 各タイプ
//==============================
function chkValue(form,element,type,comment,chk){
	//--------------------------------------------
	//　chkValue()
	//　ver 3.0 / 2006.11.25
	//--------------------------------------------
	//　form = フォームの名前
	//　element = エレメントの名前
	//　type = エレメントの種類
	//　Text = テキスト
	//　Select = セレクトメニュー
	//　Radio = ラジオボタン
	//　Check = チェックボックス
	//　comment = 警告ダイアログで出すエレメントの名前
	//　chk = 特別なチェック。特になければ無記入
	//　katakana = 全角カタカナ以外は警告
	//　number = 半角数字以外は警告
	//　alphabet = 半角アルファベット以外は警告
	//　e-mail = メール形式以外は警告
	//--------------------------------------------
	//　【特別なチェックの前に処理される自動置換】
	//　半角カタカナ→全角カタカナ
	//　全角アルファベット→半角アルファベット
	//　全角数字→半角数字
	//--------------------------------------------

	if(chkFlg!="NG"){
		if(type=="Radio"){
			chkRadioValue(form,element,comment);
		}else if(type=="Select"){
			chkSelectValue(form,element,comment);
		}else if((type=="Text")||(type=="Textarea")){
			chkTextValue(form,element,comment,chk);
		}else if(type=="Check"){
			chkRadioValue(form,element,comment);
		}
	}
}


//==============================
//　フォーム値の取得 → 各タイプ
//==============================
function getValue(type,form,element){
	if(type=="Check"){
		cb = getCheckboxValue(form,element);
		if(cb!=undefined){return cb}else{return ""}
	}else if(type=="Radio"){
		cb = getRadioValue(form,element);
		if(cb!=undefined){return cb}else{return ""}
	}else if(type=="Select"){
		cb = getSelectmenuValue(form,element);
		if(cb!=undefined){return cb}else{return ""}
	}else if((type=="Text")||(type=="Textarea")){
		cb = getTextValue(form,element);
		if(cb!=undefined){return cb}else{return ""}
	}
}


//==============================
//　エンターキーでの送信をブロックする
//==============================
function blockEnter(evt) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode :
	((evt.which) ? evt.which : evt.keyCode);
	if (charCode == 13) {
		return false;
	} else {
		return true;
	}
}


//==============================
//　フォームの送信
//==============================
function submitForm(form){
	if(chkFlg==""){
		document[form].submit();
	}
}


//==============================
//　入力制限：半角数字
//==============================
function numeralsOnly(evt) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
		((evt.which) ? evt.which : 0));
	if (charCode > 31 && (charCode < 48 || charCode > 57)) {
		alert("半角数字のみ入力できます。");
		return false;
	}
	return true;
}

//==============================
//　入力制限：半角ローマ字
//==============================
function lettersOnly(evt) {
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
	((evt.which) ? evt.which : 0));
	if (charCode > 31 && (charCode < 65 || charCode > 90) && 
		(charCode < 97 || charCode > 122)) {
		alert("半角ローマ字のみ入力できます。");
		return false;
	}
	return true;
}

//==============================
//　テキストの値をチェック
//==============================
function chkTextValue(form,element,comment,chk){
	var chk = chk;
	var check=document.forms[form].elements[element].value;
	if(check=="null" || check=="" || check==undefined){
		alert(comment+"が未入力です。");
		chkFlg="NG";
	}

	//置換：半角カタカナ→全角カタカナ
	check = chk_kanaHankaku(comment,check);
	if(check!="null" || check!="" || check!=undefined){
		document.forms[form].elements[element].value = check;
	}

	//置換：全角アルファベット→半角アルファベット
	check = chk_romanZenkaku(comment,check);
	if(check!="null" || check!="" || check!=undefined){
		document.forms[form].elements[element].value = check;
	}

	//置換：全角数字→半角数字
	check = chk_sujiZenkaku(comment,check);
	if(check!="null" || check!="" || check!=undefined){
		document.forms[form].elements[element].value = check;
	}

	if(chk=="e-mail"){
		chk_mail(comment,check);
	}else if(chk=="katakana"){
		chk_Katakana(comment,check);
	}else if(chk=="number"){
		chk_suji(comment,check);
	}else if(chk=="alphabet"){
		chk_roman(comment,check);
	}
}

//==============================
//　チェック：全角カタカナ以外→エラー
//==============================
function chk_Katakana(comment,check) {
	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		if (c >= 0x30a1 && c <= 0x30fc) {
			//全角カタカナの場合

		}else{
			//全角カタカナ以外の場合
			alert(comment+"にカタカナ以外の文字が含まれています。");
			chkFlg="NG";
			break;
		}
	}
}


//==============================
//　チェック：メールアドレス以外→エラー
//==============================
function chk_mail(comment,check) {
	if(check.match("^[0-9A-Za-z._¥-]+@[0-9A-Za-z.¥-]+$")){
		//メールアドレスが正しい場合
		
	}else{
		//メールアドレスが正しくない場合
		alert(comment+"が正しくありません。");
		chkFlg="NG";
	}
}


//==============================
//　チェック：半角数字以外→エラー
//==============================
function chk_suji(comment,check) {
	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		if (c >= 0x0030 && c <= 0x0039) {
			//半角数字の場合

		}else{
			//半角数字以外の場合
			alert(comment+"に半角数字以外の文字が含まれています。");
			chkFlg="NG";
			break;
		}
	}
}


//==============================
//　チェック：半角アルファベット以外→エラー
//==============================
function chk_roman(comment,check) {
	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		if ((c >= 0x0061 && c <= 0x007a)||(c >= 0x0041 && c <= 0x005a)) {
			//半角数字の場合

		}else{
			//半角数字以外の場合
			alert(comment+"に半角アルファベット以外の文字が含まれています。");
			chkFlg="NG";
			break;
		}
	}
}


//==============================
//　置換：全角アルファベット→半角アルファベット　ＡＢＣ
//==============================
function chk_romanZenkaku(comment,check){
	checkCash = check;
	var check_Ex = "";
	var roman1 = new Array("ａ","ｂ","ｃ","ｄ","ｅ","ｆ","ｇ","ｈ","ｉ","ｊ","ｋ","ｌ",
		"ｍ","ｎ","ｏ","ｐ","ｑ","ｒ","ｓ","ｔ","ｕ","ｖ","ｗ","ｘ","ｙ","ｚ",
		"Ａ","Ｂ","Ｃ","Ｄ","Ｅ","Ｆ","Ｇ","Ｈ","Ｉ","Ｊ","Ｋ","Ｌ",
		"Ｍ","Ｎ","Ｏ","Ｐ","Ｑ","Ｒ","Ｓ","Ｔ","Ｕ","Ｖ","Ｗ","Ｘ","Ｙ","Ｚ");
	var roman2 = new Array("a","b","c","d","e","f","g","h","i","j","k","l",
		"m","n","o","p","q","r","s","t","u","v","w","x","y","z",
		"A","B","C","D","E","F","G","H","I","J","K","L",
		"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");

	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		//  全角アルファベットは不許可
		if (c >= 0xff21 && c <= 0xff5a) {
			for(romanNum=0; romanNum<51; romanNum++){	
				checkCut = checkCut.replace(roman1[romanNum],roman2[romanNum])
			}
		}
		check_Ex = check_Ex+checkCut;
	}
	return check_Ex;
}


//==============================
//　置換：全角数字→半角数字　０１２３
//==============================
function chk_sujiZenkaku(comment,check){
	checkCash = check;
	var check_Ex = "";
	var suji1 = new Array("０","１","２","３","４","５","６","７","８","９");
	var suji2 = new Array("0","1","2","3","4","5","6","7","8","9");

	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		//  全角アルファベットは不許可
		if (c >= 0xff10 && c <= 0xff19) {
			for(sujiNum=0; sujiNum<10; sujiNum++){	
				checkCut = checkCut.replace(suji1[sujiNum],suji2[sujiNum])
			}
		}
		check_Ex = check_Ex+checkCut;
	}
	return check_Ex;
}


//==============================
//　置換：半角カタカナ→全角カタカナ　ｶﾀｶﾅ
//==============================
function chk_kanaHankaku(comment,check){
	checkCash = check;
	var check_Ex = "";
	var Kana1 = new Array("ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ","ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ",
		"ﾂﾞ","ﾃﾞ","ﾄﾞ","ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ","ｦ","ｧ",
		"ｨ","ｩ","ｪ","ｫ","ｬ","ｭ","ｮ","ｯ","ｰ","ｱ","ｲ","ｳ","ｴ","ｵ","ｶ","ｷ","ｸ","ｹ",
		"ｺ","ｻ","ｼ","ｽ","ｾ","ｿ","ﾀ","ﾁ","ﾂ","ﾃ","ﾄ","ﾅ","ﾆ","ﾇ","ﾈ","ﾉ","ﾊ","ﾋ",
		"ﾌ","ﾍ","ﾎ","ﾏ","ﾐ","ﾑ","ﾒ","ﾓ","ﾔ","ﾕ","ﾖ","ﾗ","ﾘ","ﾙ","ﾚ","ﾛ","ﾜ","ﾝ");
	var Kana2 = new Array("ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ",
		"ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ","ヲ","ァ",
		"ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ","ー","ア","イ","ウ","エ","オ","カ",
		"キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ",
		"ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ",
		"ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ン");

	for (var i = 0; i < check.length; ++i) {
		var c = check.charCodeAt(i);
		var checkCut = check.charAt(i);
		//  半角カタカナは不許可
		if (c >= 0xff61 && c <= 0xff9f) {
			for(kanaNum=0; kanaNum<81; kanaNum++){	
				checkCut = checkCut.replace(Kana1[kanaNum],Kana2[kanaNum])
			}
		}
		check_Ex = check_Ex+checkCut;
	}
	return check_Ex;
}


//==============================
//　セレクトの値をチェック
//==============================
function chkSelectValue(form,element,comment){
	var check=document.forms[form].elements[element].options[document.forms[form].elements[element].selectedIndex].value;
	if(check=="null" || check=="" || check==undefined){
		alert(comment+"が未選択です。");
		chkFlg="NG";
	}
}

//==============================
//　ラジオボタンの値をチェック
//==============================
function chkRadioValue(form,element,comment){
	var check=getRadioValue(form,element);
	if(check=="null" || check=="" || check==undefined){
		alert(comment+"が未選択です。");
		chkFlg="NG";
	}
}

//==============================
//　ラジオボタンの値を取得
//==============================
function getRadioValue(form,element){
	if(document.forms[form].elements[element].length){
		for (i = 0; i < document.forms[form].elements[element].length; i++){
			if (document.forms[form].elements[element][i].checked){
				return document.forms[form].elements[element][i].value;
			}
		}
	}
}

//==============================
//　チェックボックスの値を取得
//==============================
function getCheckboxValue(form,element){
	if(document.forms[form].elements[element].checked){
		return document.forms[form].elements[element].value;
	}
}

//==============================
//　セレクトメニューの値を取得
//==============================
function getSelectmenuValue(form,element){
	var n = document.forms[form].elements[element].selectedIndex;
	return document.forms[form].elements[element].options[n].value;
}

//==============================
//　テキストの値を取得
//==============================
function getTextValue(form,element){
	return document.forms[form].elements[element].value;
}


