function displayHelp(type){
	/* 2009.05.14 記載要領・年度対応 start */
	if ( document.forms[0].knendo.value < 2009 ) {
		location.href = "./jsp/d00.jsp?senisakiName=" + document.forms[0].serviceCd.value + "-" + type;
	} else {
		location.href = "./jsp/d00.jsp?senisakiName=" + document.forms[0].knendo.value + "/" + document.forms[0].serviceCd.value + "-" + type;
	}
	/* 2009.05.14 記載要領・年度対応 end   */
}

function timeOut(sessionTime,viewTime){
var time = sessionTime - viewTime;
setTimeout("timeOutMessage()", 1000*60*time);
//setTimeout("timeOutMessage()", 1000);
return;
}
function timeOutMessage(){
	alert("１０分後（"+timeNow()+" 頃）に、自動的にサーバとの接続が中断されます。\r\n中断されると、登録ボタンを押しても記入内容が登録できないことがあります。\r\n中断される前に、この画面の下にある「一時保存」を押して、記入中の内容を\r\n保存しておくことをおすすめします。");
	return;
}
function timeNow(){
	now = new Date();

	Hours = now.getHours();
	Minutes = now.getMinutes();
	Year = now.getFullYear();
	Month = now.getMonth()+1;
	Date = now.getDate();
	if(Minutes>49){
		if(Hours>22){
			if(!chkDate(Year, Month, Date+1)){
				if(!chkDate(Year, Month+1, Date)){
					Month = 1;
					Year++;
				}else{
					Month++;
				}
				Date = 1;
			}else{
				Date++;
			}
			Hours = 0;
			Minutes = Minutes + 10 - 60;
		}else{
			Minutes = Minutes + 10 - 60;
			Hours++;
		}
	}else{
		Minutes = Minutes + 10;
	}
	var timeStr = Year+"/"+Month+"/"+Date+" "+Hours+":"+Minutes;
	return timeStr;
}

/**
 * 数値検査
 * 7項目の数値を検索する。
 * 一つでもエラーがあればエラーを表示（必須、文字チェック）
 */
function num7(num1,num2,num3,num4,num5,num6,num7){
	error_msg = num7Chk(num1,num2,num3,num4,num5,num6,num7);
	msg(error_msg,num1);
}
function num7Chk(num1,num2,num3,num4,num5,num6,num7){
	var array = new Array(document.frm.elements[num1],
						document.frm.elements[num2],
						document.frm.elements[num3],
						document.frm.elements[num4],
						document.frm.elements[num5],
						document.frm.elements[num6],
						document.frm.elements[num7]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == "" || array[1].value == "" || array[2].value == "" || array[3].value == "" || array[4].value == "" || array[5].value == ""){
		error_msg = "エラー理由:必須う項目です。<br>";
		color ++;
	}
	if( isNaN(array[0].value) || isNaN(array[1].value) || isNaN(array[2].value) || isNaN(array[3].value) || isNaN(array[4].value) || isNaN(array[5].value)){
		error_msg = error_msg + "エラー理由:文字は入力できません。";
		color = color + 2;
	}
	hidden(num1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 数値検査
 * 6項目の数値を検索する。
 * 一つでもエラーがあればエラーを表示（必須、文字チェック）
 */
function num6(num1,num2,num3,num4,num5,num6){
	error_msg = num6Chk(num1,num2,num3,num4,num5,num6);
	msg(error_msg,num1);
}
function num6Chk(num1,num2,num3,num4,num5,num6){
	var array = new Array(document.frm.elements[num1],
						document.frm.elements[num2],
						document.frm.elements[num3],
						document.frm.elements[num4],
						document.frm.elements[num5],
						document.frm.elements[num6]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == "" || array[1].value == "" || array[2].value == "" || array[3].value == "" || array[5].value == ""){
		error_msg = "エラー理由:必須う項目です。<br>";
		color ++;
	}
	if( isNaN(array[0].value) || isNaN(array[1].value) || isNaN(array[2].value) || isNaN(array[3].value) || isNaN(array[5].value)){
		error_msg = error_msg + "エラー理由:文字は入力できません。";
		color = color + 2;
	}
	hidden(num1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 数値検査
 * 5項目の数値を検索する。
 * 一つでもエラーがあればエラーを表示（必須、文字チェック）
 */
function num5(num1,num2,num3,num4,num5){
	error_msg = num5Chk(num1,num2,num3,num4,num5);
	msg(error_msg,num1);
}
function num5Chk(num1,num2,num3,num4,num5){
	var array = new Array(document.frm.elements[num1],
						document.frm.elements[num2],
						document.frm.elements[num3],
						document.frm.elements[num4],
						document.frm.elements[num5]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == "" || array[1].value == "" || array[2].value == "" || array[3].value == "" || array[4].value == ""){
		error_msg = "エラー理由:必須う項目です。<br>";
		color ++;
	}
	if(isNaN(array[0].value) || isNaN(array[1].value) || isNaN(array[2].value) || isNaN(array[3].value) || isNaN(array[4].value)){
		error_msg = error_msg + "エラー理由:文字は入力できません。";
		color = color + 2;
	}
	hidden(num1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 数値検査
 * 4項目の数値を検索する。
 * 一つでもエラーがあればエラーを表示（必須、文字チェック）
 */
function num4(num1,num2,num3,num4){
	error_msg = num4Chk(num1,num2,num3,num4);
	msg(error_msg,num1);
}
function num4Chk(num1,num2,num3,num4){
	var array = new Array(document.frm.elements[num1],
						document.frm.elements[num2],
						document.frm.elements[num3],
						document.frm.elements[num4]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == "" || array[1].value == "" || array[2].value == "" || array[3].value == ""){
		error_msg = "エラー理由:必須う項目です。<br>";
		color ++;
	}
	if( isNaN(array[0].value) || isNaN(array[1].value) || isNaN(array[2].value) || isNaN(array[3].value)){
		error_msg = error_msg + "エラー理由:文字は入力できません。";
		color = color + 2;
	}
	hidden(num1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * IDの項目を表示する。
 */
function showMenu(id) {
	var e = document.getElementById(id);
	if (e.style.display == "none") {
		e.style.display = "";
	} else {
		e.style.display = "none";
	}
}
/**
 * 時間チェック
 * 必須、文字、範囲をチェックする。
 */
function time(num1,num2,num3,num4){
	error_msg = timeChk(num1,num2,num3,num4);
	msg(error_msg,num1);
}
function timeChk(num1,num2,num3,num4){
	var array = new Array(document.frm.elements[num1],
						document.frm.elements[num2],
						document.frm.elements[num3],
						document.frm.elements[num4]);

	var error_msg = "";
	var color = 0;
	if(array[0].value == "" || array[1].value == "" || array[2].value == "" || array[3].value == ""){
		error_msg = "エラー理由:必須う項目です。<br>";
		color ++;
	}
	if(isNaN(array[0].value) || isNaN(array[1].value) || isNaN(array[2].value) || isNaN(array[3].value)){
		error_msg = error_msg +"エラー理由:文字は入力できません。<br>";
		color = color + 2;
	}
	if(parseInt(array[0].value) > 24 || parseInt(array[1].value) > 60 || parseInt(array[2].value) > 24 || parseInt(array[3].value) > 60){
		error_msg = error_msg + "エラー理由:時は24まで分は６０まで入力してください。";
		color ++;
	}
	if(parseInt(array[0].value+array[1].value) > parseInt(array[2].value+array[3].value)){
		error_msg = error_msg + "エラー理由:後の時間より前の時間が大きいです。";
		color ++;
	}

	hidden(num1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 数値チェック
 * 必須、文字をチェックする。
 */
function num(num){
	error_msg = numChk(num);
	msg(error_msg,num);
}
function numChk(num){
	var array = new Array(document.frm.elements[num]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == ""){
		error_msg = "エラー理由:必須う項目です。";
		color ++;
	}
	if(isNaN(array[0].value)){
		error_msg = "エラー理由:文字は入力できません。";
		color = color + 2;
	}
	hidden(num,color);
	colorChange(array,color);

	return error_msg;
}

/**
 * flgでnameを活性or非活性
 */
function inputName(flg,name){
	var frm = document.frm.elements[name];
	frm.disabled = (flg=="true") ? false:true;
}
function radioName(radio,name){
	error_msg = radioNameChk(radio,name);
	msg(error_msg,radio);
}
function radioNameChk(radio,name){
	var array = new Array(document.frm.elements[radio][0],
						document.frm.elements[radio][1],
						document.frm.elements[name]);
	var error_msg = "";
	var color = 0;

	if(array[1].checked == true && array[2].value == ""){
		error_msg = "エラー理由:必須う項目です。";
		color++;
	}
	hidden(radio,color);
	colorChange(array,color);
	return error_msg;
}
/**
 * 年月日チェック
 * 正しい年月日をチェックする。
 */
function date(yyyy,mm,dd){
	error_msg = dateChk(yyyy,mm,dd);
	msg(error_msg,yyyy);
}
function dateChk(yyyy,mm,dd){
	var array = new Array(document.frm.elements[yyyy],
						document.frm.elements[mm],
						document.frm.elements[dd]);

	var error_msg = "";
	var color = 0;

	if(!chkDate(array[0].value,array[1].value,array[2].value)){
		error_msg = "エラー理由:存在しない年月日です。";
		color++;
	}
	hidden(yyyy,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 必須チェック
 */
function name(name){
	error_msg = nameChk(name);
	msg(error_msg,name);
}
function nameChk(name){
	var array = new Array(document.frm.elements[name]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == null || array[0].value == ""){
		error_msg = "エラー理由:必須う項目です。";
		color ++;
	}
	hidden(name,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 必須チェック（名、ふりがな）
 */
function nameKana(nameKana,name){
	error_msg = nameKanaChk(nameKana,name);
	msg(error_msg,nameKana);
}
function nameKanaChk(nameKana,name){
	var array = new Array(document.frm.elements[nameKana],
						document.frm.elements[name]);

	var error_msg = "";
	var color = 0;

	if(array[0].value == null || array[0].value == "" ||
		array[1].value == null || array[1].value == ""){
		error_msg = "エラー理由:必須う項目です。";
		color ++;
	}
	hidden(nameKana,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 郵便番号をチェックする。
 */
function post(post_1,post_2){
	error_msg = postChk(post_1,post_2);
	msg(error_msg,post_1);
}

function postChk(post_1,post_2){
	var array = new Array(document.frm.elements[post_1],
						document.frm.elements[post_2]);

	var error_msg = "";
	var color = 0;

	if(array[0].value.length < 3 || array[1].value.length < 4){
		error_msg = "エラー理由:入力桁数が不足しています。";
		color ++;
	}

	hidden(post_1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * 電話番号をチェックする。
 */
function tel(tel_1,tel_2,tel_3){
	error_msg = telChk(tel_1,tel_2,tel_3);
	msg(error_msg,tel_1);
}

function telChk(tel_1,tel_2,tel_3){
	var array = new Array(document.frm.elements[tel_1],
						document.frm.elements[tel_2],
						document.frm.elements[tel_3]);

	var error_msg = "";
	var color = 0;


	if(array[0].value.length < 2 || array[1].value.length < 4 || array[2].value.length < 4){
		error_msg = "入力：半額数値を入力してください。<br>エラー理由:入力桁数が不足しています。<br>差戻理由:携帯番号は入力できません。<br>";
		color++;
	}

	if(array[0].value == "070" || array[0].value == "080" || array[0].value == "090"){
		if(error_msg != ""){
			error_msg = error_msg + "<br>";
		}
		error_msg = error_msg +"差戻理由:携帯番号は入力できません。";
		color = color + 2;
	}

	hidden(tel_1,color);
	colorChange(array,color);

	return error_msg;
}
/**
 * エラーメッセージを表示する。
 */
function msg(error_msg,btn){
	if(error_msg == ""){
		showMenu("err"+btn);
//		alert("エラーはありません。");
		return true;
	}else{
		document.getElementById("err"+btn).innerHTML = "<nobr>"+error_msg+"</nobr>";
		showMenu("err"+btn);
		return false;
	}
}
/**
 * 項目を色を表示する。
 */
function colorChange(array,color){
	var setColor;
	switch(color){
		case 1:
			setColor = "red";
		break;
		case 2:
			setColor = "blue";
		break;
		case 3:
			setColor = "yellow";
		break;
		default:
			setColor = "white";
		break;
	}
	for(var i=0; i < array.length; i++){
		array[i].style.background = setColor;
	}
}
/**
 * リンクを表示する。
 */
function hidden(name,color){
	if(color == 0){
		document.getElementById("A"+name).style.display = "none";
		document.getElementById("S"+name).style.display = "";
	}else{
		document.getElementById("A"+name).style.display = "";
		document.getElementById("S"+name).style.display = "none";
	}

}
/**
 * 年月日検査
 * boolean chkDate(年、月、日）
 */
function chkDate(y, m, d) {
	// 2009.06.29 Murayama DEL 日付チェックの修正
	return isDate(leftPad(y,4,0) + leftPad(m,2,0) + leftPad(d,2,0));
//	var daa = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//	if (y%1000 != 0 && y%4 == 0) daa[1] = 29;
//	if (d > daa[m-1] || d < 1) return false;
//	if (m < 1 || m > 12) return false;
//	if (m%1 != 0 || y%1 != 0 || d%1 != 0) return false;
//	return true;
}



var submitFlg = 0;

/**
 * 前後の空白を削除
 * @param str 処理対象の文字列
 * @return 空白を削除した文字列
 */
function Trim(str){
	if ( str == null ) {
		return "";
	}
	str = str.replace(/^[ 　]+/,"");
	str = str.replace(/[ 　]+$/,"");
	return str;
}

/**
 * メッセージの置換
 * @param msg 元文字列
 * @param repStr 置換文字列
 * @param point 置換対象の番号
 * @return 置換後の文字列
 */
function repMessage(msg, repStr, point) {

	var str = "";

	switch ( point ) {
		case 0:
			str = msg.replace(/\{0\}/,repStr);
			break;
		case 1:
			str = msg.replace(/\{1\}/,repStr);
			break;
		case 2:
			str = msg.replace(/\{2\}/,repStr);
			break;
		default :
			str = msg;
			break;
	}

	return str;

}

/**
 * 登録側入力値のディフォルト変換を行う。
 * 半角カタカナ → 全角カタカナ
 * #全角英数字 → 半角英数字  (保留）
 * 前後の空白の削除
 *
 * @param msg 元文字列
 * @return 変換後の文字列
 */
function replaceStr( value ) {

	// 半角カタカナ → 全角カタカナ
	value = repKana( value );

	// 全角英数字 → 半角英数字
// 後で復活するかも
//	value = repAlphanum( value );

	// 前後の空白を削除
	value = Trim(value);

	return value;

}

/**
 * 登録側入力値のディフォルト変換を行う。
 * 半角カタカナ → 全角カタカナ
 * #全角英数字 → 半角英数字  (保留）
 * 全角スペース → 半角スペース
 * 前後の空白の削除
 *
 * @param msg 元文字列
 * @return 変換後の文字列
 */
function replaceStr2( value ) {

	// 半角カタカナ → 全角カタカナ
	value = repKana( value );

	// 全角スペース → 半角スペース
	value = value.replace(/^[　]+/," ");

	// 全角英数字 → 半角英数字
// 後で復活するかも
//	value = repAlphanum( value );

	// 前後の空白を削除
	value = Trim(value);

	return value;

}

/**
 * 半角カタカナを全角カタカナに変換する。
 *
 * @param value 元文字列
 * @return 変換後の文字列
 */
function repKana ( value ) {

	// 検索文字列を変換するための変換文字列配列
	var Kana1 = new Array("ｶﾞ","ｷﾞ","ｸﾞ","ｹﾞ","ｺﾞ","ｻﾞ","ｼﾞ","ｽﾞ","ｾﾞ","ｿﾞ","ﾀﾞ","ﾁﾞ",
		"ﾂﾞ","ﾃﾞ","ﾄﾞ","ﾊﾞ","ﾋﾞ","ﾌﾞ","ﾍﾞ","ﾎﾞ","ﾊﾟ","ﾋﾟ","ﾌﾟ","ﾍﾟ","ﾎﾟ","ｳﾞ");
	var Kana2 = new Array("ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ",
		"ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ","ヴ");

	// 半角カナ（2文字）→ 全角カナ（１文字）の変換
	for(var i = 0; i < Kana1.length; i++){
		while( value.match(Kana1[i]) ){
			value = value.replace(Kana1[i], Kana2[i]);  //文字列置換
		}
	}

	// 検索文字列を変換するための変換文字列配列
	var hankaku = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯ､｡ｰ｢｣ﾞﾟ･";
	var zen = "アイウエオカキクケコサシスセソタチツテトナニヌネノ";
	zen+= "ハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ、。ー「」゛゜・";

	// 半角カナ（1文字）→ 全角カナ（１文字）の変換
	str = "";
	for (i=0; i<value.length; i++)
	{
		c = value.charAt(i);
		n = hankaku.indexOf(c,0);
		if (n >= 0) c = zen.charAt(n);
		str += c;
	}

	return str;
}

/**
 * 全角英数字を半角英数字に変換する。
 *
 * @param value 元文字列
 * @return 変換後の文字列
 */
function repAlphanum( value ) {
	han = "0123456789";
	zen = "０１２３４５６７８９";
	str = "";
	for (i=0; i<value.length; i++)
	{
		c = value.charAt(i);
		n = zen.indexOf(c,0);
		if (n >= 0) c = han.charAt(n);
		str += c;
	}
	return str;
}

/**
 * 半角英数のみかチェックをする。
 *
 * @param value チェック文字列
 * @return チェック結果
 */
function eisuCheck(value)
{
  	var chstr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
	for(i = 0; i < value.length; i++)
	{
		if(chstr.indexOf(value.charAt(i)) == -1)
		{
			return false;
		}
	}
	return true;
}

/**
 * 半角数字のみかチェックをする。
 *
 * @param value チェック文字列
 * @return チェック結果
 */
function numCheck(value)
{
  	var chstr = '0123456789';
	for(i = 0; i < value.length; i++)
	{
		if(chstr.indexOf(value.charAt(i)) == -1)
		{
			return false;
		}
	}
	return true;
}
/**
 * 印刷ボタン押下時
 * 画面を印刷します。
 */
function PrintPage(){
	if(document.getElementById || document.layers){
		window.print();		//印刷をします
	}
}
/**
 * 2度押し防止用 Submit
 */
function doSubmit( actionName ){
	if(submitFlg == 0){
		submitFlg = 1;
		document.forms[0].method="post";
		document.forms[0].target="_self";
		document.forms[0].action=actionName;
		document.forms[0].submit();
	} else {
//		alert('2度押し防止');
	}
}

// firefoxやOperaでの履歴操作対応
window.onunload = clearFlg;
function clearFlg() {submitFlg = 0;}

/**
 * 日付不整合（同一日可）チェック
 * return 0:正常 1:開始日エラー 2:終了日エラー 3:整合性エラー
 */
function datecheck(start,end) {
	var s_year = eval(start.substring(0,4));
	var s_month = eval(start.substring(4,6)) - 1;
	var s_day = eval(start.substring(6,8));
	var s_date = new Date(s_year,s_month,s_day);
	var e_year = eval(end.substring(0,4));
	var e_month = eval(end.substring(4,6)) - 1;
	var e_day = eval(end.substring(6,8));
	var e_date = new Date(e_year,e_month,e_day);

	//開始日
	if(s_year != s_date.getYear() || s_month != s_date.getMonth() || s_day != s_date.getDate()) {
		return 1;
	}
	//終了日
	if(e_year != e_date.getYear() || e_month != e_date.getMonth() || e_day != e_date.getDate())
	{
		return 2;
	}
	//整合性
	if( s_date > e_date ){
		return 3;
	}

	return 0;
}


/**
 * エラーメッセージの表示/非表示
 * msgid:表示/非表示を切り替えるObjectのID
 */
function toggleMessage( msgid ) {
	var msgobj = document.getElementById ( msgid );
	if ( msgobj ) {
		if ( msgobj.style.display == "none" ) {
			msgobj.style.display = "block";
		} else {
			msgobj.style.display = "none";
		}
	}
}
// 2009.11.9 start
function doNumCheck(value) {
	
	if (value - 0 || value - 0 == 0) {
		return value;
	} else {
	    return 0;
	}
}
// 2009.11.9 end
// add chai 2008.1.16 start
function doNumCount10(value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "") ? 0 : doNumCheck(frm.elements[value3].value);
	var inum4 = (frm.elements[value4].value == "") ? 0 : doNumCheck(frm.elements[value4].value);
	var inum5 = (frm.elements[value5].value == "") ? 0 : doNumCheck(frm.elements[value5].value);
	var inum6 = (frm.elements[value6].value == "") ? 0 : doNumCheck(frm.elements[value6].value);
	var inum7 = (frm.elements[value7].value == "") ? 0 : doNumCheck(frm.elements[value7].value);
	var inum8 = (frm.elements[value8].value == "") ? 0 : doNumCheck(frm.elements[value8].value);
	var inum9 = (frm.elements[value9].value == "") ? 0 : doNumCheck(frm.elements[value9].value);
	var inum10 = (frm.elements[value10].value == "") ? 0 : doNumCheck(frm.elements[value10].value);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4 + inum5 + inum6 + inum7 + inum8 + inum9 + inum10;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5,inum6,inum7,inum8,inum9,inum10));
}
function doNumCount7(value1, value2, value3, value4, value5, value6, value7, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "") ? 0 : doNumCheck(frm.elements[value3].value);
	var inum4 = (frm.elements[value4].value == "") ? 0 : doNumCheck(frm.elements[value4].value);
	var inum5 = (frm.elements[value5].value == "") ? 0 : doNumCheck(frm.elements[value5].value);
	var inum6 = (frm.elements[value6].value == "") ? 0 : doNumCheck(frm.elements[value6].value);
	var inum7 = (frm.elements[value7].value == "") ? 0 : doNumCheck(frm.elements[value7].value);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4 + inum5 + inum6 + inum7;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5,inum6,inum7));
}

function doNumCount6(value1, value2, value3, value4, value5, value6, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "") ? 0 : doNumCheck(frm.elements[value3].value);
	var inum4 = (frm.elements[value4].value == "") ? 0 : doNumCheck(frm.elements[value4].value);
	var inum5 = (frm.elements[value5].value == "") ? 0 : doNumCheck(frm.elements[value5].value);
	var inum6 = (frm.elements[value6].value == "") ? 0 : doNumCheck(frm.elements[value6].value);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4 + inum5 + inum6;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5,inum6));
}
// 2009.07.14 Murayama ADD STA
function doNumCount5span(value1, value2, value3, value4, value5, total) {
	var inum1 = (document.getElementById(value1).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value1).innerHTML);
	var inum2 = (document.getElementById(value2).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value2).innerHTML);
	var inum3 = (document.getElementById(value3).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value3).innerHTML);
	var inum4 = (document.getElementById(value4).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value4).innerHTML);
	var inum5 = (document.getElementById(value5).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value5).innerHTML);
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5));
}
// 2009.07.14 Murayama ADD END
function doNumCount6span(value1, value2, value3, value4, value5, value6, total) {
	var inum1 = (document.getElementById(value1).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value1).innerHTML);
	var inum2 = (document.getElementById(value2).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value2).innerHTML);
	var inum3 = (document.getElementById(value3).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value3).innerHTML);
	var inum4 = (document.getElementById(value4).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value4).innerHTML);
	var inum5 = (document.getElementById(value5).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value5).innerHTML);
	var inum6 = (document.getElementById(value6).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value6).innerHTML);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4 + inum5 + inum6;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5,inum6));
}
function doNumCount5(value1, value2, value3, value4, value5, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "") ? 0 : doNumCheck(frm.elements[value3].value);
	var inum4 = (frm.elements[value4].value == "") ? 0 : doNumCheck(frm.elements[value4].value);
	var inum5 = (frm.elements[value5].value == "") ? 0 : doNumCheck(frm.elements[value5].value);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4 + inum5;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4,inum5));
}
function doNumCount4(value1, value2, value3, value4, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "" || frm.elements[value1].value == "-") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "" || frm.elements[value2].value == "-") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "" || frm.elements[value3].value == "-") ? 0 : doNumCheck(frm.elements[value3].value);
	var inum4 = (frm.elements[value4].value == "" || frm.elements[value4].value == "-") ? 0 : doNumCheck(frm.elements[value4].value);
	//document.getElementById(total).innerHTML = inum1 + inum2 + inum3 + inum4;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3,inum4));
}
// 2009.07.07 Murayama ADD STA
// 3箇所合計の関数を追加
function doNumCount3(value1, value2, value3, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	var inum3 = (frm.elements[value3].value == "") ? 0 : doNumCheck(frm.elements[value3].value);
	//document.getElementById(total).innerHTML = inum1 + inum2;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2,inum3));
}
// 2009.07.07 Murayama ADD END
function doNumCount2(value1, value2, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	var inum2 = (frm.elements[value2].value == "") ? 0 : doNumCheck(frm.elements[value2].value);
	//document.getElementById(total).innerHTML = inum1 + inum2;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2));
}
function doNumCount2span(value1, value2, total) {
	var inum1 = (document.getElementById(value1).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value1).innerHTML);
	var inum2 = (document.getElementById(value2).innerHTML == "") ? 0 : doNumCheck(document.getElementById(value2).innerHTML);
	//document.getElementById(total).innerHTML = inum1 + inum2;
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,inum2));
}
// 2009.07.13 S.FUKAI ADD START
function doNumCount1(value1, total) {
	var frm = document.forms[0];
	var inum1 = (frm.elements[value1].value == "") ? 0 : doNumCheck(frm.elements[value1].value);
	document.getElementById(total).innerHTML = scale_sum(new Array(inum1,0));
}
// 2009.07.13 S.FUKAI ADD END
// 小数点を整数にして加算する。
function scale_sum(org_array) {


	var sorted_array = new Array(org_array.length)
	for (i = 0; i < org_array.length; i++) {
    	sorted_array[i] = unscaledValue(org_array[i]);
	}
    //小数点が一番深いものを抽出
	sorted_array.sort().reverse();
	var maxPowValue = sorted_array[0];

	var sum  = 0;
	for (i = 0; i < org_array.length; i++) {
	    // 整数に変換して加算
    	sum = sum + Math.round(org_array[i] * maxPowValue);
	}

	return (sum / maxPowValue);
}


// 小数点を整数にする値の算出
function unscaledValue(value) {
	var str = new String(value)
	var period_index = str.indexOf(".",0);
	if(period_index == -1) {
		return 1;
	}
	var exponent = str.length - period_index - 1;
	if(exponent <= 0) {
		return 1;
	}
	return Math.pow(10, exponent);
}

function onKeyPressNumCheck(eventTag) {
	var evt = eventTag||window.event;
	var code = evt.charCode||event.keyCode;
	if (48 <= code & code <= 57 || code == 43 || code == 45 || code == 46) { return true; } else { return false; } //数字
}
function onKeyPressNumCheck2(eventTag) {
	var evt = eventTag||window.event;
	var code = evt.charCode||event.keyCode;
	if (48 <= code & code <= 57 || code == 43 || code == 45 || code == 46) { return true; } else { return false; } //数字
}
function checkHojinSyurui(value1, value2, name) {
	var frm = document.forms[0].elements[name];
	frm.disabled = (value1==value2) ? false:true;
}
// add chai 2008.1.16 end

// add tang 2008.1.17 start
function inputRadio(flg,radio){
	var frm0 = document.forms[0].elements[radio][0];
	var frm1 = document.forms[0].elements[radio][1];
	frm0.disabled = (flg=="1") ? false:true;
	frm1.disabled = (flg=="1") ? false:true;
}
function inputRadioTxt(flg,radio,txt1,txt2,txt3,txt4){
	var frm0 = document.forms[0].elements[radio][0];
	var frm1 = document.forms[0].elements[radio][1];
	var frm2 = document.forms[0].elements[txt1];
	var frm3 = document.forms[0].elements[txt2];
	var frm4 = document.forms[0].elements[txt3];
	var frm5 = document.forms[0].elements[txt4];
	frm0.disabled = (flg=="1") ? false:true;
	frm1.disabled = (flg=="1") ? false:true;
	frm2.disabled = (flg=="1") ? false:true;
	frm3.disabled = (flg=="1") ? false:true;
	frm4.disabled = (flg=="1") ? false:true;
	frm5.disabled = (flg=="1") ? false:true;
}
function inputTxt(flg,txt1,txt2,txt3,txt4){
	var frm1 = document.forms[0].elements[txt1];
	var frm2 = document.forms[0].elements[txt2];
	var frm3 = document.forms[0].elements[txt3];
	var frm4 = document.forms[0].elements[txt4];
	frm1.disabled = (flg=="1") ? false:true;
	frm2.disabled = (flg=="1") ? false:true;
	frm3.disabled = (flg=="1") ? false:true;
	frm4.disabled = (flg=="1") ? false:true;
}
function inputTxt2(flg,txt1,txt2){
	var frm1 = document.forms[0].elements[txt1];
	var frm2 = document.forms[0].elements[txt2];
	frm1.disabled = (flg=="1") ? false:true;
	frm2.disabled = (flg=="1") ? false:true;
}
// add tang 2008.1.17 end

//日付チェック
// add K.T
function ckDate(datestr) {
	return isDate(datestr);
// 2009.06.29 Murayama DEL 日付チェックの修正
//    if ( datestr.length != 8 ) {
//        return false;
//    }
//    if(isNaN(datestr)){
//	    return false;
//    }
//    var s_year = eval(datestr.substring(0,4));
//	var s_month = eval(datestr.substring(4,6)) - 1;
//	var s_day = eval(datestr.substring(6,8));
//	var s_date = new Date(s_year,s_month,s_day);
//
//	//日
//	if(s_year != s_date.getYear() || s_month != s_date.getMonth() || s_day != s_date.getDate()) {
//		return false;
//	}
//	return true;
}

// 2009.06.29 Murayama ADD STA
// 日付チェック
// @param yyyymmdd 形式の文字列
function isDate(strDate) {
	// 8桁数値チェック
	if (!strDate.match(/^\d{8}$/)) {
		return false;
	}
	// 各数値取得(文字列 -> 数値型変換)
	var s_year = strDate.substring(0,4) - 0;
	var s_month = strDate.substring(4,6) - 0;
	var s_day = strDate.substring(6,8) - 0;

	// 簡易範囲チェック
	if (s_year < 1) {
		return false;
	} else if (s_month < 1 || 12 < s_month) {
		return false;
	} else if (s_day < 1 || 31 < s_day) {
		return false;
	}

	// 日付生成
	s_month = s_month - 1;	// 月は0潤ｵ11に補正する必要がある
	var s_date = new Date(s_year,s_month,s_day);
	if (isNaN(s_date)) {
		return false;
	}

	// 2桁指定をすると19xxに変更されるため00xx年に再設定
	if (s_year < 100) {
		s_date.setFullYear(s_year);
	}

	if (s_date.getFullYear() != s_year
		|| s_date.getMonth() != s_month
		|| s_date.getDate() != s_day) {
		return false;
	}
	return true;
}

// 指定された桁数になるよう、指定された文字を文字列の左に付加する
// @param str      付加対象
// @param size     全体の長さ
// @param padChar  付加する文字(1字指定)
function leftPad(str, size, padChar) {
	var padStr = str + "";
	for (var i = 0; padStr.length < size; i++) {
		padStr = padChar + padStr;
	}
	return padStr;
}
//2009.06.29 Murayama ADD END

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
* 2009.06.02 Murayama ADD STA                                                          *
* 使用する場合は機種依存文字用の外部jsファイルをincludeして必要がある。                *
* formフィールドに存在するTextまたは、TextAreaの要素にチェックを行う。                 *
* ※同名のTextまたは、TextAreaが存在する場合の動作は保障しない。                       *
* 処理対象の画面にはonLoadイベント時に「DependentCharCheck.init();」を行う必要がある。 *
* ※フォーカスのイベントを拾う場合は引数に「true」を設定する。                         *
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
var DependentCharCheck = {
	// 初期化処理
	init: function() {

		// 2009.09.03 add by nagano
		this.isInitialize = true;	// 初期化判定フラグ

		this.stackElement = [];		// チェックオブジェクト管理
		this.elementInfo  = [];		// 対象オブジェクトの状態管理

		this.setCheckCharList();	// 比較用の文字列を設定

		if (arguments[0]) {
			// チェック対象の要素にイベント、オブジェクト情報の初期値を設定
			var formElements = document.forms[0].elements;
			for (var i = 0; i < formElements.length; i++) {
				if (this.isCheckElementType(formElements[i].type)) {
					// 選択、選択解除時にイベントを設定
					this.addEvent(formElements[i],'focus', this.setCheckElement, false);
					this.addEvent(formElements[i],'blur', this.isCheckElement, false);

					// 画面表示時点の各オブジェクトの背景色を保持させる
					this.elementInfo[formElements[i].name + 'bgColor'] = formElements[i].style.backgroundColor;
				}
			}
		}
	},

	// イベント設定
	addEvent: function(elm, evType, fn, useCapture) {
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		}
		else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		}
		else {
			elm['on' + evType] = fn;
		}
	},

	// onFocusイベント処理
	setCheckElement: function() {
		var focusElm = document.activeElement;
		
		// 2009.09.10 add STR
		if ( focusElm == null || focusElm == "" ) {
			return true;
		}
		if ( focusElm.name == null || focusElm.name == "" ) {
			return true;
		}
		// 2009.09.10 add END
		
		if (!focusElm) {
			focusElm = this;
		}
		DependentCharCheck.getStackElement().push(focusElm);
	},

	// onBlurイベント処理
	isCheckElement: function() {
		var checkElm = DependentCharCheck.getStackElement().pop();
		
		// 2009.09.10 add STR
		if ( checkElm == null || checkElm == "" ) {
			return true;
		}
		if ( checkElm.name == null || checkElm.name == "" ) {
			return true;
		}
		// 2009.09.10 add END
		
		// 変換可能な機種依存文字を置換
		checkElm.value =
			DependentCharCheck.replaceDependentChar(checkElm.value);

		// 機種依存文字の存在チェック
		if (DependentCharCheck.isCheckError(checkElm.value)) {
			DependentCharCheck.setErrorStyleForElement(checkElm);

			DependentCharCheck.moveElementPosition(checkElm);
			DependentCharCheck.showErrorMessage();
		} else {
			DependentCharCheck.setNormalStyleForElement(checkElm);
		}
	},

	// 機種依存文字のうち変換可能なものを置換する
	// 2字以上のものを先に置換したのち、1対n字に置換する。
	// ※設定ファイルを誤ると無限ループしかねないため、
	// 処理後に置換対象文字列と一致したものは置換されない。
	replaceDependentChar: function(val) {
		var tmpVal = val;

		// 2009.09.03 add by nagano start
		if (this.isInitialize) {
			// チェック配列の初期化判定。
			this.setCheckCharList();
			this.isInitialize = false;
		}
		// 2009.09.03 add by nagano end

		for (var i = 0; i < this.anyReplaceList.length; i++) {
			var reg = new RegExp(this.anyReplaceList[i][0], 'g');
			tmpVal = tmpVal.replace(reg, this.anyReplaceList[i][1]);  //文字列置換
		}

		for (var i = 0; i < this.oneReplaceList.length; i++) {
			var reg = new RegExp(this.oneReplaceList[i][0], 'g');
			tmpVal = tmpVal.replace(reg, this.oneReplaceList[i][1]);  //文字列置換
		}
		return tmpVal;
	},

	// 要素全体のエラーを判定する。
	isAllErrorCheck: function() {

		// 2009.09.03 add by nagano
		this.isInitialize = false;		// 念のためチェック配列を初期化する。

		var formElements = document.forms[0].elements;

		for (var i = 0; i < formElements.length; i++) {
			if (this.isCheckElementType(formElements[i].type)) {
				formElements[i].value = this.replaceDependentChar(formElements[i].value);
				// 機種依存文字の存在チェック
				if (this.isCheckError(formElements[i].value)) {
					DependentCharCheck.setErrorStyleForElement(formElements[i]);
				} else {
					DependentCharCheck.setNormalStyleForElement(formElements[i]);
				}
			}
		}

		return this.isCheckedErrorFound();
	},

	// エラーチェック
	isCheckError: function(val) {
		var isError = false;

		// 2009.08.27 kishita add
		var bfCharCode = 0;

		for (var i = 0; i < val.length && !isError; i++) {
			if (0 <= this.dependentString.indexOf(val.charAt(i))) {
				// 機種依存文字の一覧に存在する場合はエラー
				isError = true;
			} else {
				var codeChar = val.charCodeAt(i);
				for (var j = 0; j < this.errorCodeRange.length; j++) {
					if (this.errorCodeRange[j][0] <= codeChar
							&& codeChar <= this.errorCodeRange[j][1]) {
						// 指定された範囲以内
						isError = true;
					}
				}
				// 2009.08.27 kishita add STR
				// 「叱」対応
				if (bfCharCode == 55362 && codeChar == 57247) {
					isError = true;
				}
				bfCharCode = codeChar;
				// 2009.08.27 kishita add END
			}
		}
		return isError;
	},

	// チェック済みの項目にエラーが残っているか判定
	isCheckedErrorFound: function() {
		var isError = false;
		var formElements = document.forms[0].elements;

		for (var i = 0; i < formElements.length; i++) {
			if (this.isCheckElementType(formElements[i].type)) {
				if (this.elementInfo[formElements[i].name + 'IsError']) {
					this.moveElementPosition(formElements[i]);
					this.showErrorMessage();
					isError = true;
					break;
				}
			}
		}
		return isError;
	},

	// 指定項目まで表示位置移動
	moveElementPosition: function(elm) {
		// ブラウザ間で動作が違うため2通り設定
		var targetElm = elm;
		var pos = - 5;			// 少し余裕を持たせる

		while( targetElm ){
			pos += targetElm.offsetTop;
			targetElm = targetElm.offsetParent;
		}

		document.documentElement.scrollTop = pos;
		document.body.scrollTop = pos;
	},

	// エラー時の設定
	// エラー情報設定、背景色変更
	setErrorStyleForElement: function(elm) {
		this.elementInfo[elm.name + 'IsError'] = true;
		elm.style.backgroundColor = '#FF00FF';
	},

	// エラーでない場合の設定（エラー解除時）
	// エラー情報の取消、背景色を画面表示時点に戻す
	setNormalStyleForElement: function(elm) {
		this.elementInfo[elm.name + 'IsError'] = false;
		elm.style.backgroundColor = this.elementInfo[elm.name + 'bgColor'];
	},

	// チェック対象項目判定
	isCheckElementType: function(elementType) {
		return (elementType == 'text' || elementType == 'textarea');
	},

	// エラーメッセージ表示
	showErrorMessage: function() {
		alert('常用文字以外が入力されています。\r\nシステムの制約上、表示が出来ませんので、\r\n申し訳ありませんが常用文字で入力をお願いします。');
	},

	// チェック対象スタック 要素（Event処理用）
	getStackElement: function() {
		return this.stackElement;
	},

	// チェック処理用のリストなどを取得
	setCheckCharList: function() {
		this.dependentString = getDependentString();	// 機種依存文字用の外部js参照（機種依存文字一覧）
		this.replaceCharList = getReplaceCharList();	// 機種依存文字用の外部js参照（変換リスト）
		this.errorCodeRange = getErrorCodeRange();		// 機種依存文字用の外部js参照（Unicode範囲チェック用リスト）

		this.oneReplaceList = [];			// 1字からn字へ変換するタイプ
		this.anyReplaceList = [];			// 2字以上からn字へ変換するタイプ

		var len = this.replaceCharList.length;
		for (var i = 0; i < len; i++) {
			if (1 < this.replaceCharList[i][0].length) {
				// 2字以上をn字へ変換
				this.anyReplaceList.push([this.replaceCharList[i][0], this.replaceCharList[i][1]]);
			} else {
				// 1文字からn字へ変換
				this.oneReplaceList.push([this.replaceCharList[i][0], this.replaceCharList[i][1]]);
			}
		}
	}
}
//2009.06.02 Murayama ADD END

// 2009.06.15 A.Takahira Add Start
//********************************//
//** 汎用コンボ絞込みクラス     **//
//********************************//

/**
 * 上位コンボにより下位コンボの絞込みを行うオブジェクト。
 * このオブジェクトひとつはオプション要素ひとつに相当する。
 */

    /**
     * コンストラクタ
     * @param ラベル
     * @param バリュー
     */
    function IntelliCombo(l, v){

    	/** オプションのラベル */
    	this.label = l;
    	/** オプションのバリュー */
    	this.value = v;

    	/** 下位のコンボ */
    	this.slaveList = new Array();

        return this;
    }

    /**
     * コンボの要素を追加。
     * @param IntelliComboオブジェクト
     */
    IntelliCombo.prototype.add = function(ele) {
		this.slaveList.push(ele);
		return this;
    };

	/**
     * コンボの入れ替え。
     * @param target
     */
    IntelliCombo.prototype.apply = function(target) {
		target.length = 0;
		var combo = this.slaveList;
		var max = combo.length;
		for(i=0; i < max; i++){
		    var e = combo[i];
			target[i] = new Option(e.label, e.value);
		}
		target.selected = 0;

		return this;
    };

	/**
     * コンボの入れ替え。
     * @param index
     * @param target
     * @return 選択されたオプションに対応するIntelliComboオブジェクト
     */
    IntelliCombo.prototype.change = function(index, target) {
		target.length = 0;
		var combo = this.slaveList[index];
		combo.apply(target);
		return combo;
    };

	/**
     * コンボの入れ替え。
     * @param index
     * @param target
     * @return 選択されたオプションに対応するIntelliComboオブジェクト
     */
    IntelliCombo.prototype.changeFromValue = function(value, target) {
		target.length = 0;
		for(var i=0; i < this.slaveList.length; i++){
			var combo = this.slaveList[i];
			if(combo.value == value){
				combo.apply(target);
				return combo;
			}
		}
    };
// 2009.06.15 A.Takahira Add End