// TODO ** Netscape Navigater 6, Internet Explorer 5 以上対応を目指す */
window.document.onkeydown=invalidKey;
window.document.onkeypress=invalidKey;

// エラーフィールドを保持する変数
var __returnObject = null;

var wndArray = new Array();
var keyboardHistory;
var __submit_twice=false;

var isNN = false;
var isIE = false;
var eventObj


// IEかどうか
if(navigator.userAgent.indexOf("MSIE") != -1){
	isNN = false;
	isIE = true;
// NNかどうか
} else if(navigator.userAgent.indexOf("Gecko") != -1){
	isNN = true;
	isIE = false;
	
// それ以外はとりあえずIE
} else {
	isNN = false;
	isIE = true;
}


//***********************************************************************
//
// invalidKey		Version :1.00
//
// 目的 :	ショートカットキーの封殺
//
// 引数 :	なし
//
// 戻り値 :	なし
//
// 新規作成:	2001/09/12(中川)
//
// 最終更新:	2001/09/12(中川)
//
//***********************************************************************
function invalidKey(e)
{
//	return true;
	if(isNN){
		eventObj = e;
	} else {
		eventObj = window.event;
	}
}

//***********************************************************************
//
// replaceAll		Version :1.00
//
// 目的 :	文字の置換
//
// 引数 :	input=処理対象文字列、pattern=置換前の文字列、replacement=置換後の文字列
//
// 戻り値 :	置換後の文字列
//
// 新規作成:	2003/05/12(谷岡)
//
// 最終更新:	2003/06/26(谷岡)
//
//***********************************************************************
function replaceAll(input,pattern,replacement){
	while(input.indexOf(pattern)!=-1){
		input=input.replace(pattern,replacement);
	}
	return input;
}
//***********************************************************************
//
// replaceNotNumber		Version :1.00
//
// 目的 :	数字以外の文字の置換
//
// 引数 :	obj:フォームオブジェクト 
//
// 戻り値 :	置換後の文字列
//
// 新規作成:	2004/06/08（八谷）
//
// 最終更新:	2004/06/08（八谷）
//
//***********************************************************************
function replaceNotNumber(obj){
	
	var input=obj.value;
	var output="";//出力用
	//もし、数字でないならば文字を除く
	if(isNaN(input)){
		//文字列の長さの分だけ繰り返す
		for (i=0 ; i < input.length ; i++){
			var tmp = input.charAt(i);
			//マイナス、コンマ、数字、カンマならばそのまま結合
			if(tmp=='-' || tmp=='.' || !isNaN(tmp) || tmp==','){
				output = output+tmp;
			}
		}
		obj.value= output;

	}else{
		obj.value=input;
	}
	return true;
}


//***********************************************************************
//
// putcomma		Version :1.00
//
// 目的 :	カンマ制御
//
// 引数 :	フォームオブジェクト
//
// 戻り値 :	なし
//
// 新規作成:	2003/05/12(谷岡)
//
// 最終更新:	2004/06/03(八谷)　ドル化フラグ削除
//
//***********************************************************************
function putcomma(obj){
	var str=obj.value;//文字列コピー
	var buf="";//バッファ
	var sign="";//符号
	var cIndex;//コンマのインデックス

	//先頭に0がある場合はカンマをつけない
	if(!(str.charAt(0) == '0' || (str.charAt(0)=='-' && str.charAt(1)=='0'))){
		if(obj.value==""){
			return false;
		}

		//値が負か？
		if(str.charAt(0)=='-'){
			sign="-";
		}
		
		//負符号、カンマの除去
		str=replaceAll(str,'-','');
		str=replaceAll(str,',','');
		//コンマ位置確認
		cIndex=str.indexOf(".");
		if(cIndex==-1){
			cIndex=str.length;
		}
	
		decimalsPart="";
		//小数部があるか
		if(cIndex!=str.length){
			var decimalsPart=replaceAll(str.substring(cIndex,str.length),".","");
			decimalsPart="."+decimalsPart;
	
	
		}
	
		//整数部取得
		var integralPart=str.substring(0,cIndex);
		if(cIndex==0){
			integralPart="0";
			cIndex=1;
		}
	
		//カンマ付加
		buf="";
		var index=cIndex;
		for(;index>3;index-=3){
			buf=","+integralPart.substring(index-3,index)+buf;
		}
		buf=integralPart.substring(0,index)+buf;
	
		obj.value=sign+buf+decimalsPart;
	}else{
		obj.value= str;
	}
	
}


//***********************************************************************
//
// checkNum		Version :1.00
//
// 目的 :	数字の入力チェック用イベントハンドラ。
//
// 引数 :	なし
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2001/03/26(中川)
//
// 最終更新:	2004/06/07(八谷) このメソッドは不必要
//
//***********************************************************************
function checkNum(e,obj)
{
	//IEの場合
	if(isIE){
		if( (e.keyCode>57) | (e.keyCode<48) ){
			return false;
		}
	
	//NNの場合
	}else{
		//キーコードが1〜9以外を入力した場合の処理
		if(!(48 <= e.which && e.which <= 57)){
			return false ;		
		}
	}
	
	return true;
}


//***********************************************************************
//
// checkNumWithComma		Version :1.00
//
// 目的 :	数字&カンマの入力チェック用イベントハンドラ。
//
// 引数 :	なし
//
// 戻り値 :	なし
//
// 新規作成:	2003/06/12(谷岡)
//
// 最終更新:	2003/06/12(谷岡)
//
//***********************************************************************
function checkNumWithComma(e)
{
	if(e == null){
		e=window.event;
	}
	
	if( (e.keyCode!=45) & (e.keyCode!=46) )
	{
		checkNum(e);
	}
	return false;
}

//***********************************************************************
//
// checkDragNum		Version :1.00
//
// 目的 :	数字インプトットボックスのドラッグ用イベントハンドラ。
//
// 引数 :	なし
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2003/06/12(谷岡)
//
// 最終更新:	2004/06/03(八谷)
//
//***********************************************************************
function checkDragNum(flag,e)
{

	var objReg;

	//カンマを自動生成する
	if (flag == "true"){
		objReg = new RegExp(/^-?(([0-9](,?))*)(\.?[0-9]*)?$/);

	
	//自動生成しない場合の正規表現
	}else{
		objReg = new RegExp(/^-?[0-9]*(\.?[0-9]*)?$/);
	}
	return execDragReg(objReg,e);
}



//***********************************************************************
//
// execDragReg		Version :1.00
//
// 目的 :	正規表現を行います。(ドラッグ用)
//
// 引数 :	objReg=正規表現オブジェクト
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2003/06/12(谷岡)
//
// 最終更新:	2004/06/03(谷岡)
//
//***********************************************************************
function execDragReg(objReg,e){
	//IEの場合
	if(isIE){
		e=window.event;
		if( objReg.test(e.dataTransfer.getData("Text")) == true ){
			e.returnValue=e.dataTransfer.getData("Text");
		} else{
			e.dataTransfer.clearData("Text");
			e.returnValue=false;
		}
	}
	return true;
}

//***********************************************************************
//
// checkPasteNumWithComma		Version :1.00
//
// 目的 :	数字インプトットボックスのペースト用イベントハンドラ。
//			（コンマ、カンマも許可）
//
// 引数 :	なし
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2001/07/10(山野)
//
// 最終更新:	2005/05/31(近藤)使用されていないので削除
//
//***********************************************************************
//function checkPasteNumWithComma()
//{
//	//正規表現
//	var objReg = new RegExp(/^-?(([0-9](,?))*)(.[0-9]+)?$/);
//
//	return execPasteReg(objReg);
//}
//
//***********************************************************************
//
// checkPasteNum		Version :1.00
//
// 目的 :	数字インプトットボックスのペースト用イベントハンドラ。
//
// 引数 :	なし
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2003/06/12(谷岡)
//
// 最終更新:	2004/06/03(八谷)
//
//***********************************************************************
function checkPasteNum(obj,flag,e)
{
	var objReg;
	//カンマを自動生成する場合の正規表現
	if (flag == "true"){
		objReg= new RegExp(/^-?(([0-9](,?))*)(\.?[0-9]+)?$/);

	
	//自動生成しない場合の正規表現
	}else{
		objReg= new RegExp(/^-?[0-9]*(\.?[0-9]+)?$/);
	}

	return execPasteReg(obj,objReg,e);
}


//***********************************************************************
//
// execPasteReg		Version :1.00
//
// 目的 :	正規表現を行います。(ドラッグ用)
//
// 引数 :	objReg=正規表現オブジェクト、target=対象オブジェクト
//
// 戻り値 :	true=数字、false=それ以外
//
// 新規作成:	2003/06/12(谷岡)
//
// 最終更新:	2003/06/12(谷岡)
//
//***********************************************************************
function execPasteReg(obj,objReg,e){
	//IEの場合
	if(isIE){
		e = window.event;
		if( objReg.test(clipboardData.getData("Text")) == true ){
			e.returnValue=clipboardData.getData("Text");
		}else{
			e.returnValue=false;
		}
	
	//NNの場合は実行しない
	}
	return true;
}

//***********************************************************************
//
// getRowCnt		Version :1.00
//
// 目的 :	行数カウント
//
// 引数 :	text:カウントする対象文字列
//
// 戻り値 :	行数
//
// 新規作成:	2003/08/11(中川)
//
// 最終更新:	2003/08/11(中川)
//
//***********************************************************************
function getRowCnt(text){
	var cnt = 0;
	var pos = 0;
	while(true){
		pos = text.indexOf("\n",pos);
		if( pos==-1 ){
			break;
		}
		pos++;
		cnt++;
	}
	return ++cnt;
}

//***********************************************************************
//
// checkEnterOnTextArea		Version :1.00
//
// 目的 :	行数制御
//
// 引数 :	objTextArea:対象オブジェクト、maxRowNum:最大列数、
//			maxRowSize：一行あたりの最大文字数
//
// 戻り値 :	
//
// 新規作成:	2003/08/11(中川)
//
// 最終更新:	2003/08/11(中川)
//				2003/10/06(別府)
//
//***********************************************************************
function checkEnterOnTextArea(objTextArea, maxRowNum, maxRowSize){
	//テキストエリアの行数制限
	if( eventObj.keyCode==13 && getRowCnt(objTextArea.value)>=maxRowNum){
		eventObj.returnValue=false;
	}

	if(eventObj.returnValue != false ){
		eventObj.returnValue = true;
	}
	return false;
}

//***********************************************************************
//
// window.unload		Version :1.00
//
// 目的 :	エラーメッセージダイアログを複数表示させない
//
// 引数 :	
//
// 戻り値 :	
//
// 新規作成:	2003/09/11(和田)
//
// 最終更新:	2003/09/11(和田)
//
//***********************************************************************
/*
function window.onunload(){
	for(var i=0; i<wndArray.length; i++){
		wndArray[i].close();
	}
}
*/

//***********************************************************************
//
// moveFocus		Version :1.00
//
// 目的 :	フォーカスを自動的に移動する
//			(maxLengthサイズ入力があった場合に)
//
// 引数 :	obj:フォームオブジェクト
// 			dest:フォーカス先のname属性
//
// 戻り値 :	なし
//
// 新規作成:	2004/05/20(和田)
//
// 最終更新:	2004/05/20(和田)
//
//***********************************************************************
function moveFocus(target, objs){
	/*
	var doFocus = false;
	var no = objs.length;
	
	if(objs == null){
		return;
	}

	for(var i=0; i<objs.length; i++){
	
		// 対象のオブジェクトの値がmaxLength以上かつ
		// 「Esc」「半角/全角」「Tab」「Caps Lock」「Shift」「Ctrl」「Windowsキー」
		// 「Alt」「無変換」「Space」「前候補変換」「カタカナひらがな」「Windowsキー(右)」
		// 「プロパティのキー」「Enter」「BS」「Delete」「Insert」「Scroll Lock」
		// 「Home」「End」「Page Down」「Page Up」「Pause」「↑」「↓」「→」「←」
		// 「F1」「F2」「F3」「F4」「F5」「F6」「F7」「F8」「F9」「F10」「F11」「F12」「Num Lock」
		// ボタンを押下していない場合にフラグをたてる
		if(objs[i].name == target && objs[i].value.length >= objs[i].maxLength
		 && eventObj.keyCode != 27 && eventObj.keyCode != 244 && eventObj.keyCode != 9
		 && eventObj.keyCode != 240 && eventObj.keyCode != 16 && eventObj.keyCode != 17
		 && eventObj.keyCode != 91 && eventObj.keyCode != 18 && eventObj.keyCode != 29
		 && eventObj.keyCode != 32 && eventObj.keyCode != 229 && eventObj.keyCode != 229
		 && eventObj.keyCode != 92 && eventObj.keyCode != 93 && eventObj.keyCode != 13
		 && eventObj.keyCode != 8 && eventObj.keyCode != 46 && eventObj.keyCode != 45
		 && eventObj.keyCode != 145 && eventObj.keyCode != 36 && eventObj.keyCode != 35
		 && eventObj.keyCode != 34 && eventObj.keyCode != 33 && eventObj.keyCode != 19
		 && eventObj.keyCode != 38 && eventObj.keyCode != 40 && eventObj.keyCode != 39
		 && eventObj.keyCode != 37 && eventObj.keyCode != 112 && eventObj.keyCode != 113
		 && eventObj.keyCode != 114 && eventObj.keyCode != 115 && eventObj.keyCode != 116
		 && eventObj.keyCode != 117 && eventObj.keyCode != 118 && eventObj.keyCode != 119
		 && eventObj.keyCode != 120 && eventObj.keyCode != 121 && eventObj.keyCode != 122
		 && eventObj.keyCode != 123 && eventObj.keyCode != 144	){
			doFocus = true;
			no = i+1;
			i = sortedObjs.length;
		}
	}

	for(var i=no; i<objs.length; i++){
		// maxLength文字列が入力されたならば、フォーカスを移動
		if(doFocus && objs[i] != null && objs[i].type != 'hidden'){
			//SPANタグなどで非表示の場合、フォーカス移動できないので、次の要素へ
			try{
				objs[i].focus();
			} catch(e) {
				continue;
			}
			return;
		}	
	}
	*/
}

//***********************************************************************
//
// calcValue		
//
// 目的 : 四捨五入、切り上げ、切り捨てを行う
//
// 引数 :　obj:フォームオブジェクト
//    	   roundClass:どの計算を行うか。計算の種類は以下の通り
//		　　	4:四捨五入 0:切り上げ 1:切り捨て
//				それ以外は何もしない
//		   numOfDecimals:小数以下の残す桁数
//
// 戻り値 :	なし
//
// 新規作成:	2004/06/03(八谷)
//
// 最終更新:	2004/06/21(八谷)
//
//***********************************************************************
function calcValue(obj,roundClass,numOfDecimals,fillZero){
	//値を取得する
	var num = obj.value;
	//カンマが付加されていたならば除去
	if(num.indexOf(",") != -1){
		num=replaceAll(num,',','');
	}
	
	var minusFlag=false; //マイナスが含まれているかどうか
	var tmp = Math.pow(10,numOfDecimals);
	var returnData ;
	
	
	//マイナス符号があるかどうか判定する
	if(num.charAt(0) == '-'){
		minusFlag= true;
		//マイナスを削除
		num = replaceAll(num,'-','');

	}
	//カンマの位置を求める
	var nIndex = num.indexOf(".");

	//カンマが存在すれば以下の処理を行う
	if(nIndex!=-1){
		
		//小数部格納
		var tmpDecimalsPart = num.substring(nIndex+1,num.length);
		
		//四捨五入後の小数部格納
		var decimalsPart="";
		//最初から(numOfDecimals+1)番目までの数字を取得する
		//桁が足りない場合は0を付加
		for(var i=0 ; i<=numOfDecimals;i++){
			if(i<tmpDecimalsPart.length){
				decimalsPart = decimalsPart+tmpDecimalsPart.charAt(i);
			} else {
				decimalsPart = decimalsPart+'0';
			}
		}
		
		//四捨五入の計算
		if(roundClass==4){
			//四捨五入対象の位の値が5以上ならば切り上げ
			if(decimalsPart.charAt(decimalsPart.length-1) >= 5){
				decimalsPart = "" +(new Number(decimalsPart.substring(0,numOfDecimals))+1);
			}else{

				decimalsPart = decimalsPart.substring(0,numOfDecimals);
			}
			//整数部と小数部を組み合わせる
			//その際、小数部の最後を省く
			returnData = ""+(new Number(num.substring(0,nIndex))+new Number(decimalsPart)/Math.pow(10,numOfDecimals));

		//切り上げの計算
		}else if(roundClass==0){
			decimalsPart = "" +(new Number(decimalsPart.substring(0,numOfDecimals))+1);
			returnData = ""+(new Number(num.substring(0,nIndex))+new Number(decimalsPart)/Math.pow(10,numOfDecimals));

	//切り捨て(何もしない場合は、numOfDecimals=0の場合も切り捨てる)
		}else if (roundClass==1 || (roundClass==7 && numOfDecimals==0)){
			var numIndex = num.indexOf('.');
			//小数部の取得
			var decimalsPart = num.substring(numIndex+1,num.length);
						
			var decimalsNum = decimalsPart.charAt(numOfDecimals);
			//もし、丸めたい位の値が4以下ならば切り捨て
			decimalsPart=decimalsPart.substring(0,numOfDecimals);
			returnData = num.substring(0,numIndex)+"."+decimalsPart;
		//何もしない
		}else{
			returnData = num;
		}
	}else{
		returnData = num;
	}
	
	//結果が数字であればその値を返す
	if (!isNaN(returnData)){
		if(minusFlag==true){
			obj.value= '-'+returnData;
		}else{
			obj.value= returnData;
		}
	}
	
	//0付加
	if(fillZero == true && numOfDecimals>0){
		addZeroBehindNumber(obj,numOfDecimals);
	}

	return true;
}


//***********************************************************************
//
// addZeroBehindNumber		
//
// 目的 : 数値の後ろに0を付加する
//
// 引数 :　obj:フォームオブジェクト
//		   numOfDecimals:小数以下の残す桁数
//		   但し00と入力しても0.00…となる(JavaScriptの仕様)
//
// 戻り値 :	なし
//
// 新規作成:	2004/06/11(八谷)
//
// 最終更新:	2004/06/11(八谷)
//
//***********************************************************************
function addZeroBehindNumber(obj,numOfDecimals){
	//value値取得
	var num = obj.value; 
	//maxlengthの長さを計算する
	var objLen = obj.maxLength;
	
	//マイナス記号が含まれているならばフラグをtrueにする
	var minusFlag = false;
	if(num.charAt(0) == '-'){
		minusFlag= true;
	}
	
	//空白でなくmaxlengthが指定されているならば実行する
	if(num!="" && objLen!= 2147483647){
		//value値の桁数を数える
		var numLen = num.length;

		//カンマの位置を検索する
		var nIndex = num.indexOf(".");
		if(nIndex==-1){
			nIndex = numLen;
		}
		
		//整数部と小数部を分離
		var intPart= num.substring(0,nIndex);
		var decimalsPart = num.substring(nIndex+1,numLen);
		//小数(numOfDecimals-1)位まで0を追加する。
		for(i= decimalsPart.length; i<numOfDecimals;i++){
				decimalsPart=decimalsPart+'0';
		}
		if(decimalsPart !=""){
		
			obj.value = intPart+"."+decimalsPart;
		}else{
			obj.value = intPart;
		}
	}else{
		obj.value= num;
	}
}


//***********************************************************************
//
// addZeroFrontOfNumber		
//
// 目的 : 数値の後ろに0を付加する
//
// 引数 :　obj:フォームオブジェクト
//		   numOfDecimals:小数以下の残す桁数
//
// 戻り値 :	なし
//
// 新規作成:	2004/06/11(八谷)
//
// 最終更新:	2004/06/11(八谷)
//
//***********************************************************************
function addZeroFrontOfNumber(obj){
	
	//value値を取得する
	var num = obj.value;
	//maxlengthの長さを計算する
	var objLen = obj.maxLength;
	//maxlengthが指定されているならば実行する
	if(num != "" && objLen!= 2147483647){
		//カンマを全て除去する	
		num=replaceAll(num,',','');
	
		//value値の桁数を数える
		var numLen = num.length;
		//整数かつvalue値が正ならばmaxlengthの数を超えないように0を値の前に追加
		if (num.indexOf(".") == -1  && num.indexOf('-')==-1){
			for(i=numLen; i<objLen ;i++){
				num='0'+num;
			}
		}
	}
	obj.value = num;
}

//***********************************************************************
//
// checkInputNum ver2.0
//
// 目的 :キーボードから入力した値をチェック
//
// 引数 :　obj:フォームオブジェクト
//		 　comma:カンマが入力可能かどうか判定する
//		 　minus:マイナスが入力可能かどうか判定する
//		 　decimals:小数点が入力可能かどうか判定する
//		 　e:イベント
//
// 戻り値 :	正しく入力されたらtrue,そうでない場合はfalseを返す
//
// 新規作成:	2004/06/12 (八谷)
// 最終更新:	2004/06/12 (八谷)
//
//***********************************************************************
function checkInputNum(obj,comma,minus,decimals,e){

	//値を取得する
	keyboardHistory=obj.value;
	
	//入力されたキーコードを取得し、文字に変換する
	var code; //文字
	
	//IE用
	if(isIE){
		e=window.event;
		code = String.fromCharCode(e.keyCode);
	
	//NN用
	}else{
		//文字コード取得
		var keyNumber = e.which;
		code = String.fromCharCode(keyNumber);
		//Alt,Ctrl,Tab,Deleteキーを押したときに正しく動作するようにする
		if(e.altKey || e.ctrlKey || keyNumber == 8 || keyNumber == 0 ){
			return true;
		}

	}
	
	//マイナスの位置と小数点の位置を探す
	var minusIndex = keyboardHistory.lastIndexOf('-'); //マイナスの位置
	var countMinus= countStr(keyboardHistory,'-'); //マイナスの個数
	var decimalsIndex = keyboardHistory.indexOf('.'); //小数点の位置
	var countDecimals = countStr(keyboardHistory,'.');//小数点の個数
	

	//入力された文字が","かつ、カンマが入力可能であればtrueを返す
	if(code==',' && comma==true){
		return true;
	
	/*
	 * 入力された文字が"-"かつ、マイナスが入力可能であり、
	 * 初めてマイナスを入力するかマイナスの位置が先頭ならばtrueを返す
	 */
	}else if(code=='-' && minus==true && (countMinus==0) &&  (minusIndex==-1 || minusIndex==0)){
		return true;
		
	/*
	 * 入力された文字が"."かつ小数点が入力可能であり
	 * 初めて小数点を入力し、小数点が先頭以外の場所にあるならばtrueを返す
	 */
	}else if(code=='.' && decimals==true && (countDecimals ==0 || countDecimals==1) && (decimalsIndex==-1 || decimalsIndex!=0)){
		return true;
	
	//入力された文字が半角スペースの場合、falseとする。
	}else if(code == ' '){

		//制御をfalse時のものにするため、何もしない。

	//入力された文字が数字ならばtrue
	}else if(!isNaN(code)){
		return true;
	}
	
	//それ以外ならばfalseを返す
	if(isIE){
		e.returnValue = false;
	}
	return false;

}


//***********************************************************************
//
// checkValue ver1.0
//
// 目的 :テキストボックスのvalue値が正しいものかチェックする
//
// 引数 :　obj:フォームオブジェクト
//		 　reg:正規表現
//		 　e:イベント
//
// 戻り値 :	正しく入力されたらtrue,そうでない場合はfalseを返す
//
// 新規作成:	2004/06/12 (八谷)
// 最終更新:	2004/06/15 (八谷)
//
//***********************************************************************
function checkValue(obj,reg,e){
	var str="";
	var result=""; //結果を格納する変数
	
	//現在の値を取得する
	var num = obj.value;
	//先頭の文字がマイナスならばtrueとする
	var includeMinus=false;
	if(num.charAt(0) == '-'){
		includeMinus =true;
	}
	
	//マイナスを削除する
	num = replaceAll(num,'-','');
	
	//0の位置を検索する
	var zeroIndex = num.indexOf('0');
	if(zeroIndex == -1){
		zeroIndex=num.length;
	}
	
	//小数点の位置を検索する
	var decimalsIndex = num.indexOf('.');
	if(decimalsIndex == -1){
		decimalsIndex = num.length;
	}
	//整数部と小数部に分ける
	var intPart = num.substring(0,decimalsIndex);
	var decimalsPart = num.substring(decimalsIndex+1,num.length);
	
	//整数部の0の位置を検索する
	var intZeroIndex = intPart.lastIndexOf('0');
	//数字の位置を検索する
	var numIndex = intPart.search(/[1-9]/);
	if(numIndex == -1){
		numIndex = num.length;
	}

	//0を取り除く
	if(decimalsPart != 0){
		str = intPart.substring(numIndex,intPart.length)+'.'+decimalsPart;
	}else{
		str = intPart.substring(numIndex,intPart.length);
	}
	

	//もし、整数部が0のみだったならば0を付加する
	if(intZeroIndex == 0){
		str = '0'+str;
	}
	
	//マイナスフラグをつける
	if(includeMinus){
		str='-'+str;
	}

	//文字列の最後まで以下の処理を繰り返す
	for(var i= 0 ; i < str.length; i++){
		//i番目の文字を変数strに入れる
		result = result+str.charAt(i);
		
		//strが正規表現にマッチしているならば、テキストボックスに変数を入れる
		if(reg.test(result)){
			obj.value = result;
		//そうでなければループを抜ける	
		}else{
			break;
		}
	}
	return true;
}


//***********************************************************************
//
// countStr ver1.0
//
// 目的 :文字列中に存在する特定の文字の数を数える
//
// 引数：str:文字列　serch:検索したい文字 
// 戻り値 :	result：結果の個数
//
// 新規作成:	2004/06/14 (八谷)
// 最終更新:	2004/06/14 (八谷)
//
//***********************************************************************
function countStr(str,serch){
	var result=0; //個数
	
	for(var i=0 ; i<str.length ; i++){
		if(str.charAt(i) == serch){
			result++;
		}
	}
	
	return result;
}

//***********************************************************************
//
// changeFieledColor ver1.0
//
// 目的 :入力フィールドの色を変更します。
//
// 引数：obj:色変更対象フィールド　color:変更する色 
//
// 新規作成:	2004/06/25 (wada)
// 最終更新:	2004/06/25 (wada)
//
//***********************************************************************
function changeFieledColor(obj, color){
//	if( obj.item!=null && obj.item(0)!=null && ((obj.item(0).type=='radio' ) || (
//		obj.item(0).type=='checkbox' ))){
//		for(var j=0 ; j<obj.length ; j++ ) {
//			if( obj.item(j)!=null && obj.item(j).style!=null)obj.item(j).style.backgroundColor=color;
//		}
//	}else{
//		if( obj!=null && obj.style!=null)obj.style.backgroundColor=color;
//	}
}

//***********************************************************************
//
// getObject		Version :1.00
//
// 目的 :	指定の名前のオブジェクトを取得する。複数ブラウザ対応
//
// 引数 :	取得したいオブジェクトの名前
//
// 戻り値 :	取得したいオブジェクト
//
// 新規作成:	2004/06/02(中川)
//
// 最終更新:	2004/06/02(中川)
//
//***********************************************************************
function getObject(name){  
	if(document.getElementById) 
		return document.getElementById(name);           //e5,e6,n6,m1,o6用
	else if(document.all)
		return document.all(name);    //e4用
	else if(document.layers)
		return document.layers[name]; //n4用
}

//***********************************************************************
//
// getStyleObject		Version :1.00
//
// 目的 :	指定の名前のオブジェクトに含まれるスタイルオブジェクトを取得する。複数ブラウザ対応
//
// 引数 :	取得したいオブジェクトの名前
//
// 戻り値 :	取得したいスタイルオブジェクト
//
// 新規作成:	2004/06/02(中川)
//
// 最終更新:	2004/06/02(中川)
//
//***********************************************************************
function getStyleObject(name){  
	return (!!document.layers)?getObject(name):getObject(name).style;
}

//***********************************************************************
//
// appendEventHandler		Version :1.00
//
// 目的 :	イベントハンドラ(onchange等)に処理を追加する
//			追加する位置は設定済みのイベントの後。
//
// 引数 :	eventHandler: イベントハンドラのオブジェクト
//			appendProcess: 追加する処理
//
// 戻り値 :	なし
//
// 新規作成:	2004/07/01(和田)
//
// 最終更新:	2004/07/01(和田)
//
//***********************************************************************
function appendEventHandler(eventHandler, appendProcess, objName){  
	if(eventHandler != null){
		var obj=document.getElementsByName(objName)[0];
		obj.__backup = eventHandler;
		eventHandler = new Function("document.getElementsByName(\'"+objName+"\')[0].__backup();" + appendProcess);
	} else {
		eventHandler = new Function(appendProcess);
	}
	return eventHandler;
}

//***********************************************************************
//
// _paramSet1		Version :1.00
//
// 目的 :	画面初期表示の際に実行されるJavaScriptで使用される関数必要最小限セット。
//			必要最小限のものだけを設定する。
//			（関数化により、HTMLがサイズを縮小する）
//
// 引数 :	i: FORMタグのエレメント番号
//			objName: オブジェクト名
//
// 戻り値 :	なし
//
// 新規作成:	2004/10/07(中川)
//
// 最終更新:	2004/10/10(和田)
//
//***********************************************************************
function _paramSet1(objName){  
/*	try{
		var obj=document.getElementsByName(objName);
		if( obj !=null) {
			obj = obj.item(0);
			//obj.tabIndex='-1';
		}
	}catch(e){
	}
	*/
}

//***********************************************************************
//
// _paramSetNoRadio		Version :1.00
//
// 目的 :	画面初期表示の際に実行されるJavaScriptで使用される関数必要最小限セット。
//			RADIOではない項目の設定。
//			（関数化により、HTMLがサイズを縮小する）
//
// 引数 :	i: FORMタグのエレメント番号
//			helpString: 		ヘルプ
//			tabIndex: 			タブインデックス
//			isText: 			テキスト
//			escapeFieldName: 	フィールド名
//			escapeFieldName2: 	次のフィールド名
//			imeMode: 			IMEモード
//			color: 				色
//
// 戻り値 :	なし
//
// 新規作成:	2005/05/27(池谷)
//
// 最終更新:	2005/05/27(池谷)
//
//***********************************************************************
function _paramSetNoRadio(helpString,tabIndex,isText,escapeFieldName,escapeFieldName2,imeMode,color){
	/*
	try{
		var obj=document.getElementsByName(escapeFieldName).item(0);
		if(obj == null){
			return;
		}
	}catch(e){
		return;
	}
	
	// help文字列設定
	if(helpString != 'null' && helpString.length > 0){
		obj.title=replaceTitle(obj,helpString);
	}


	// タブインデックス設定
	//obj.tabIndex= tabIndex;
	
	//MODIFY takayama_t 20060111 ↓
	// テキストフィールドの場合
	//if(isText){
	//	obj.onkeyup=appendEventHandler(obj.onkeyup,"moveFocus('" + escapeFieldName + "', sortedObjs);",'escapeFieldName');
	//}
	//MODIFY takayama_t 20060111 ↑
		
	// 色
	if(color != 'null'){
		//changeFieledColor(obj,color);
	}

 	//IME
	if(obj.style != null && obj.style.imeMode != null){
		obj.style.imeMode= imeMode;
	}
	
	sortedObjs[sortedObjs.length]=obj;
		
	if(escapeFieldName2 != null){
		// 次の項目がCHECKBOXの場合はエラーとなる
		try{
			obj.onkeypress=appendEventHandler(obj.onkeypress,"focusOnNextField(sortedObjs,'" + escapeFieldName2 + "');" ,'escapeFieldName');
		}catch(e){
		}
	}
	*/	
}

function _paramSetRadio(helpString,tabIndex,escapeFieldName,color){
/*
	try{
		var obj=document.getElementsByName(escapeFieldName).item(0);
		if(obj == null){
			return;
		}
	}catch(e){
		return;
	}

	var radioObj=document.getElementsByName(escapeFieldName);
	changeAllTitle(radioObj,helpString);
	//changeAllTabindex(radioObj,tabIndex);

	if(color != 'null'){
		//changeAllColor(radioObj,color);
	}	
	sortedObjs[sortedObjs.length]=obj;
	*/
}

//***********************************************************************
//
// insertEvnetHandler		Version :1.00
//
// 目的 :	イベントハンドラ(onchange等)に処理を追加する。
//			追加する位置は設定済みのイベントの前。
//
// 引数 :	eventHandler: イベントハンドラのオブジェクト
//			insertProcess: 追加する処理
//
// 戻り値 :	なし
//
// 新規作成:	2004/07/01(和田)
//
// 最終更新:	2004/07/01(和田)
//
//***********************************************************************
function insertEventHandler(eventHandler, insertProcess, objName){  
	if(eventHandler != null){
		var obj=document.getElementsByName(objName)[0];
		obj.__backup = eventHandler;
		eventHandler = new Function(insertProcess + "document.getElementsByName("+objName+")[0].__backup();");
	} else {
		eventHandler = new Function(insertProcess);
	} 
	return eventHandler;
}

//***********************************************************************
//
// focusOnNextField		Version :1.00
//
// 目的 :	フォーカスを移す。
//
// 引数 :	nextField: フォーカスを移スフィールドのname属性
//
// 戻り値 :	なし
//
// 新規作成:	2004/07/01(和田)
//
// 最終更新:	2004/07/01(和田)
//
//***********************************************************************
function focusOnNextField(sortedObjs, target){  

	if(sortedObjs == null || eventObj.keyCode != 13){
		return;
	}
	
	var no = sortedObjs.length;
	
	for(var i=0; i<sortedObjs.length; i++){
		if(sortedObjs[i].name == target){
			no = i;
			i = sortedObjs.length;
		}
	}
	
	for(var i=no; i<sortedObjs.length; i++){
		if(sortedObjs[i] != null && sortedObjs[i].type != 'hidden'){
			//フォーカス移動ができない場合は次の要素へ
			try{
				sortedObjs[i].focus();
			} catch(e) {
				continue;
			}
			return;
		}
	}
}

//***********************************************************************
//
// isSubmitTwice		Version :1.00
//
// 目的 :	2重送信をチェックする。
//
// 引数 :	なし
//
// 戻り値 :	2重送信でない場合: false, 2重送信の場合: true
//
// 新規作成:	2004/07/05(和田)
//
// 最終更新:	2004/07/05(和田)
//
//***********************************************************************
function isSubmitTwice(){
	if(__submit_twice){
		return true;
	} else {
		__submit_twice = true;
		return false;
	}
}


//***********************************************************************
//
// blurWhenPressRetKey		Version :1.00
//
// 目的 :	リターンキーが押されたか判別する。
//
// 引数 :	object,event
//
// 戻り値 :	
//
// 新規作成:	2004/07/08(谷岡)
//
// 最終更新:	2004/07/08(谷岡)
//
//***********************************************************************
function pressRetKey(obj,e){
	var keyCode;
	if(isNN){
		keyCode=e.witch;
	} else {
		keyCode=e.keyCode;
	}
	if(keyCode=='13'){
		return true;
	}
	return false;
}


//***********************************************************************
//
// execScript		Version :1.00
//
// 目的 :	引数で渡された文字列をJavaScriptとして実行
//
// 引数 :	実行するscript
//
// 戻り値 :	
//
// 新規作成:	2004/07/09(谷岡)
//
// 最終更新:	2004/07/09(谷岡)
//
//***********************************************************************
function execScript(script){
	_func=new Function(script);
	return _func();
}



//***********************************************************************
//
// encodeURL		Version :1.00
//
// 目的 :	引数で渡された文字列のエンコードをUTF-8に変換します。
//
// 引数 :	変換したい文字列
//
// 戻り値 :	変換後の文字列
//
// 新規作成:	2004/07/23(谷岡)
//
// 最終更新:	2004/07/23(谷岡)
//
//***********************************************************************
function encodeURL(str){
	var s0, i, s, u;
	s0 = "";    // encoded str
	for (i = 0; i < str.length; i++){ // scan the source
		s = str.charAt(i);
		u = str.charCodeAt(i);   // get unicode of the char
		if (s == " "){s0 += "+";}  // SP should be converted to "+"
		else {
			if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){  // check for escape
				s0 = s0 + s;   // don't escape
			}
			else {     // escape
				if ((u >= 0x0) && (u <= 0x7f)){  // single byte format
					s = "0"+u.toString(16);
					s0 += "%"+ s.substr(s.length-2);
				}
				else if (u > 0x1fffff){  // quaternary byte format (extended)
					s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
					s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
				else if (u > 0x7ff){  // triple byte format
					s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
				else {      // double byte format
					s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
			}
		}
	}
	return s0;
} 


//***********************************************************************
//
// quickSearchOnChangeAction		Version :1.00
//
// 目的 :	クイック検索のonchangeハンドラから呼び出される。
//
// 引数 :	クイック検索のオブジェクト名,iframeオブジェクト
//			,コールバックスクリプト,iframeの遷移先URL
//
// 戻り値 :	変換後の文字列
//
// 新規作成:	2004/07/23(谷岡)
//
// 最終更新:	2004/07/23(谷岡)
//
//***********************************************************************
function quickSearchOnChangeAction(objName,iframeObj,callBackScript,URL){
	var obj = document.getElementsByName(objName)[0];

	obj.changeFlag=true;
	if(obj.callback==null){
		obj.callback=callBackScript;
	}
	if(window.quickSearchSelectDialogOpened==true){
		if(isNN==true){
			if(window.quickSearchSelectDialog!=null&&!parent.quickSearchSelectDialog.closed){
				window.quickSearchSelectDialog.focus();
			}
		}
		return;
	}

	if(obj.changeFlag==true){
		obj.inputValue=obj.value;
		obj.readOnly=true;
		obj.style.color="#999999";
		obj.value='検索中です...。';
		window.quickSearchSelectDialogOpened=true;
		iframeObj.location.replace(URL);
	}

}

//***********************************************************************
//
// focusFirstObj		Version :1.00
//
// 目的 :	HTMLFieldManageTagにおいて一番最初の入力フィールドにフォーカスをあてる
//
// 引数 :	入力フィールドのオブジェクトの配列(tabindex順)
//
// 戻り値 :	なし
//
// 新規作成:	2004/08/11(和田)
//
// 最終更新:	2005/11/15(近藤)
// コメントアウト
//
//***********************************************************************
function focusFirstObj(sortedObjs){
	return;
/*
	if(sortedObjs == null){
		return;
	}
	
	for(var i=0; i<sortedObjs.length; i++){
		if(sortedObjs[i] != null && sortedObjs[i].type != 'hidden'){
			try{
				sortedObjs[i].focus();
				i = sortedObjs.length;
			}catch(e){
				continue;
			}
		}
	}
*/
}
//***********************************************************************
//
// getMenuData		Version :1.00
//
// 目的 :	メニューの階層、表示順を取得する
//
// 引数 :	クリックされたメニューの階層
//			クリックされたメニューの表示順
//
// 戻り値 :	なし
//
// 新規作成:	2004/09/07(八谷)
//
// 最終更新:	2004/09/07(八谷)
//
//***********************************************************************
function getMenuData(menuClass,menuOrder,iframeID,iframeHeight){
	//前にクリックしたメニューと違うメニューをクリックしたならばsubmitする
	if(menuOrder != document.ssfMenuForm.clickedMenuOrder.value){
    	document.ssfMenuForm.clickedMenuClass.value=menuClass;
    	document.ssfMenuForm.clickedMenuOrder.value=menuOrder;
    	document.ssfMenuForm.action="menu.html?iframeID="+iframeID+"&iframeHeight="+iframeHeight;
    	document.ssfMenuForm.submit();
 	}
}

//***********************************************************************
//
// openURL		Version :1.00
//
// 目的 :	ポップアップ以外の画面遷移を行う。URLが'#'以外のときに動作
//
// 引数 :	URL
//			ターゲット
//
// 戻り値 :	なし
//
// 新規作成:	2004/09/07(八谷)
//
// 最終更新:	2004/09/07(八谷)
//
//***********************************************************************
function openURL(menuURL ,menuTarget){

    if(menuURL !='#'){
        window.open(menuURL,menuTarget);
    }
}

//***********************************************************************
//
// setIFrameHight		Version :1.00
//
// 目的 :	インラインフレームの高さを階層に応じてセットする
//
// 引数 :	インラインフレーム名
//			1階層の高さ
//
// 戻り値 :	なし
//
// 新規作成:	2004/09/07(八谷)
//
// 最終更新:	2004/09/07(八谷)
//
//***********************************************************************
function setIFrameHeight(frameName,frameHeight){	
	//初期値として、デフォルトの階層を持っておく
    var menuClassCnt=document.ssfMenuForm.defaultMenuClass.value; 
	
	//クリックした階層の高さをセット
	var clickedMenuClass = document.ssfMenuForm.clickedMenuClass.value;
	
    if(clickedMenuClass != 'null'){
        menuClassCnt = eval(clickedMenuClass)+1;
    }
	
	//xmlにpx,%があるか調べ、存在すればそれを変数suffixに入れる
    var suffix='';
    if(frameHeight.lastIndexOf('px')!=-1){
    	suffix='px';
		frameHeight = replaceAll(frameHeight,'px','');
	}else if(frameHeight.lastIndexOf('%')!=-1){
		suffix='%';
		frameHeight = replaceAll(frameHeight,'%','');
	}
	
	if(!isNaN(frameHeight) && !isNaN(menuClassCnt)){
		//高さを計算して階層をセットする(高さ＝現在の階層×1階層の高さ)
		var tmp = menuClassCnt * frameHeight;
		//100%を超えるときは高さをセットしない。
		if(!(suffix == '%' && tmp > 100)){
			parent.document.getElementById(frameName).height = tmp+suffix;
		}
	}
}
//***********************************************************************
//
// backPage		Version :1.00
//
// 目的 :	メニューが1つも取得できなかったときに指定した画面へ戻る
//
// 引数 :	戻りたいページのURL
//
// 戻り値 :	なし
//
// 新規作成:	2004/09/07(八谷)
//
// 最終更新:	2004/09/07(八谷)
//
//***********************************************************************
function backPage(backURL){
	alert("表示できるメニューがありません");
	if(backURL != "" && backURL != null){
		window.open(backURL,"_top");
	}else{
		history.back(-1);
	}
}

//***********************************************************************
//
// openWindow		Version :1.10
//
// 目的 :	ポップアップでウィンドウを開く
//
// 引数 :	URL,タイトル,横幅、高さツールバー,ロケーションバー,ディレクトリバー,ステータスバー,
//			メニューバー,スクロールバー,ウィンドウ変更
//
// 戻り値 :	なし
//
// 新規作成:	2004/09/07(八谷)
//
// 最終更新:	2004/09/15(八谷)
//
//***********************************************************************
function openWindow(menuURL,menuTitle,menuWidth,menuHeight,tbar,lbar,dbar,stbar,mbar,scbar,resize){
	if(menuURL != '#'){
		var command = "window.open('"+menuURL+"','"+menuTitle+"','";
		
		//幅のセット
		if(menuWidth != -1){
			command = command + "width="+menuWidth+",";
		}
		
		//高さのセット
		if(menuHeight != -1){	
			command =command + "height="+menuHeight+",";
		}
		
		//ツールバーのセット
		command = command+"toolbar="+tbar+",";
				
		//ロケーションバーのセット
		command = command+"location="+lbar+",";
				
		//ディレクトリバーのセット
		command = command +"directories="+dbar+",";
		//ステータスバーのセット
		command = command+"status="+stbar+",";
		
		//メニューバーのセット
		command = command+"menubar="+mbar+",";
		
		//スクロールバーのセット
		command = command+"scrollbars="+scbar+",";
				
		//ウィンドウのサイズが変更かどうかを設定
		command = command+"resizable="+resize+"')";
		eval(command);
	}
}

//***********************************************************************
// getCheckedRadioObj		Version :1.00
// 目的 :	HTMLFieldManageTagにおいてチェックされているラジオのオブジェクトを返却
// 引数 :	入力フィールドのオブジェクトの配列(tabindex順)
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function getCheckedRadioObj(obj){
	for(var i=0; i<obj.length; i++){
		if(obj.item(i).checked)
			return obj.item(i);
	}
	return obj.item(0);
}

//***********************************************************************
// changeAllTitle		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのtitle属性を変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllTitle(obj, title){
	for(var i=0; i<obj.length; i++)
		replaceTitle(obj.item(i),title);
}

//***********************************************************************
// changeAllTabindex		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのtabindex属性を変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllTabindex(obj, tabindex){
	//for(var i=0; i<obj.length; i++)
		//obj.item(i).tabIndex=tabindex;
}

//***********************************************************************
// changeAllOnchange		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのonchange属性を変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllOnchange(obj, onchangeStr, nameAtt){
	for(var i=0; i<obj.length; i++)
		obj.item(i).onchange=appendEventHandler(obj.item(0).onchange,onchangeStr,nameAtt);
}

//***********************************************************************
// changeAllOnfocus		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのonfocus属性を変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllOnfocus(obj, onfocusStr, nameAtt){
	for(var i=0; i<obj.length; i++)
		insertEventHandler(obj.item(i).onfocus,onfocusStr,nameAtt);
}

//***********************************************************************
// changeAllImeMode		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのimemodeを変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllImeMode(obj, imemode){
	for(var i=0; i<obj.length; i++)
		if(obj.item(i).style != null && obj.item(i).style.imeMode!=null)
			obj.item(i).style.imeMode=imemode;
}

//***********************************************************************
// changeAllColor		Version :1.00
// 目的 :	HTMLFieldManageTagにおいて対象となるオブジェクトすべてのstyle.backgroundColor属性を変更
// 引数 :	入力フィールドのオブジェクト、title属性値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function changeAllColor(obj, color){
	//for(var i=0; i<obj.length; i++)
		//changeFieledColor(obj.item(i),color);
}

//***********************************************************************
// replaceTitle		Version :1.00
// 目的 :	title属性がセットされていない場合のみtitle属性をセット
// 引数 :	入力フィールドのオブジェクト,title属性の値
// 戻り値 :	なし
// 新規作成:	2004/10/11(和田)
// 最終更新:	2004/10/11(和田)
//***********************************************************************
function replaceTitle(obj, title){
	if(obj.title == null || obj.title=='')
		return title;
	return obj.title;
}

//***********************************************************************
//
// selectCheckTable		Version :1.00
//
// 目的 :	checkTable用JavaScript
//
// 引数 :	name  チェックテーブルの名前
//       label ラベル
//       ID    ID
//
// 戻り値 :	なし
//
// 新規作成:	2004/10/13(谷岡)
//
// 最終更新:	2004/10/13(谷岡)
//
//***********************************************************************
function selectCheckTable(name,label,ID){
	var _checkObj=document.getElementsByName(name)[0];
	var _labelObj=document.getElementsByName(name+'Label')[0];
	var _IDObj=document.getElementsByName(name+'ID')[0];
	if(_checkObj==null){
		return false;
	}
	if(_checkObj.checked){
		_labelObj.value=label;
		_IDObj.value=ID;
	} else {
		_labelObj.value="";
		_IDObj.value="";
	}
}
//***********************************************************************
//
// selectCheck		Version :1.00
//
// 目的 :	checkbox用JavaScript
//
// 引数 :	name  チェックの名前
//       VALUE VALUEの入っているHIDDEN
//
// 戻り値 :	なし
//
// 新規作成:	2005/05/13(近藤)
//
// 最終更新:	2005/05/13(近藤)
//
//***********************************************************************
function selectCheck(name,VALUE){
	var _checkObj=document.getElementsByName(name+'_CHECK')[0];
	var _IDObj=document.getElementsByName(name+'_VALUE')[0];
	if(_checkObj==null){
		return false;
	}
	if(_checkObj.checked){
		_IDObj.value=VALUE;
	} else {
		_IDObj.value="";
	}
}

//***********************************************************************
//
// selectCombo		Version :1.00
//
// 目的 :	日付選択タグの日選択タグの選択情報の更新処理。
//
// 引数 :	objName:日付選択タグのname属性
//			disableDay:日選択コンボを表示しない
//
// 戻り値 :	なし
//
// 新規作成:	2004/10/13(谷岡)
//
// 最終更新:	2004/10/13(谷岡)
//
//***********************************************************************
function selectCombo(name){
	var _comboObj=document.getElementsByName(name)[0];
	var _labelObj=document.getElementsByName(name+'Label')[0];
	
	var label="";
	if(_comboObj==null){
		return false;
	}
	if(_comboObj.selectedIndex!=-1){
		label=_comboObj.options[_comboObj.selectedIndex].text;
	}

	_labelObj.value=label;
}

//***********************************************************************
//
// replaceString		Version :1.00
//
// 目的 :	"<br>"と"<!"が入っている文字列は画面で正しく表示できるため処理。
//
// 引数 :	stringValue:変更したい文字列
//
// 戻り値 :	なし
//
// 新規作成:	2006/06/06(王艶)
//
// 最終更新:	2004/06/06(王艶)
//
//***********************************************************************
function replaceString(stringValue){
	stringValue = stringValue.replace(/</,"&lt;");
	stringValue = stringValue.replace(/>/,"&gt;");
	stringValue = stringValue.replace(/<!/,"&lt;!");
	return stringValue;
}





//***********************************************************************
//
// candidateDetailWithPopup		Version :1.00
//
// 目的 :	候補者詳細画面をポップアップで表示する。
// 引数 :	staffId：候補者詳細画面での情報取得に必要なキー値
//			openUrl：候補者詳細画面のURL
// 戻り値 :	なし
//
// 新規作成:	2006/09/12(熊谷)
// 最終更新:	2004/09/13(熊谷)
//
// 候補者詳細3段ポップアップ表示スクリプト。
// 最大3個のポップアップウィンドウをを開き、
// 3個開いている場合は、最も古いポップアップ窓に開き直す。
// 
//【使用方法】
//	画面項目に親画面に渡すparaStaffIdを実装し、
// 	スタッフID、遷移先のURLを引数として、candidateDetailWithPopupを呼ぶ。
// 	注意点として、呼び出し先(子画面)に以下のOPEN時間を保持するhidden項目が必要となる。
// 	hidden項目には、loadメソッドにて画面表示時にOPEN時間を記録する。
// 
// 	1.子画面<from>タグ内に以下を実装
// 	--------------- ここから ---------------
// 	<INPUT type="hidden" name="popTime">
// 	--------------- ここまで ---------------
// 	
// 	2.子画面javaScriptのloadメソッド内に以下を実装
// 	--------------- ここから ---------------
// 	//ウィンドウOPEN時間を保持
//	document.form.popTime.value = (new Date()).getTime();
// 	--------------- ここまで ---------------
// 
// 実際に実装している、JDSTAF02.vm(親)とJDSTAF03P.vm(子)を参考にしてください。
//*********************************************************************** 
function candidateDetailWithPopup(staffId, openUrl){
	
	//候補者IDをインターフェースにセット
	document.form.paraStaffId.value = staffId;
	
	//ポップアップ許可数
	var popWinMax = 3;
	
	//各子窓の開いた時間を保持する変数
	var openTime = new Array(popWinMax);
	
	/*
	 * window.openでwindowオブジェクトを作成。
	 * すでに同名の窓が開いている場合は、窓が開かれずにwindowオブジェクトを得ることができる。
	 * 開いていない場合は、開いた窓をポップアップ画面として使用する。
	 * 得たwindowオブジェクトから子窓のOPEN時間取得を試み、
	 * 取得できた場合は既存窓、できなかった場合は新規に開いたblank窓と判断する。
	 */
	var openWinNo;
	for(var i = 0; i < popWinMax; i++){
	
		//windowオブジェクト取得
		var popWin = window.open("", i, "width=550, height=600, menubar=no, location=no, risizable=yes, status=no, toolbar=no, scrollbars=yes, dependent=yes");
		
		try{
			openTime[i] = popWin.form.popTime.value;
		}catch(e){
			openTime[i] = null;
			openWinNo = i;
			break;
		}
		
	}
	
	//新規に子窓を開いた場合は、その子窓にFormを投げる
	if(openWinNo != null){
		throwForm(openUrl, openWinNo);
	}else{
		//子窓が全て開かれている場合(blankの子窓を新たに開いていない場合)は最古の子窓を判断
		var minNo = getMinOpenTime(openTime);
		//最古の子窓にFormを投げる
		throwForm(openUrl, minNo);
	}
	
	//子窓に渡すキー項目の初期化
	document.form.paraStaffId.value = null;
}


//JOB詳細版
function jobDetailWithPopup(jobID, openUrl){

	//候補者IDをインターフェースにセット
	document.form.paraJobId.value = jobID;
	
	//ポップアップ許可数
	var popWinMax = 3;
	
	//各子窓の開いた時間を保持する変数
	var openTime = new Array(popWinMax);
	
	/*
	 * window.openでwindowオブジェクトを作成。
	 * すでに同名の窓が開いている場合は、窓が開かれずにwindowオブジェクトを得ることができる。
	 * 開いていない場合は、開いた窓をポップアップ画面として使用する。
	 * 得たwindowオブジェクトから子窓のOPEN時間取得を試み、
	 * 取得できた場合は既存窓、できなかった場合は新規に開いたblank窓と判断する。
	 */
	var openWinNo;
	for(var i = 0; i < popWinMax; i++){
	
		//windowオブジェクト取得
		var popWin = window.open("", i, "width=550, height=600, menubar=no, location=no, risizable=yes, status=no, toolbar=no, scrollbars=yes, dependent=yes");
		
		try{
			openTime[i] = popWin.form.popTime.value;
		}catch(e){
			openTime[i] = null;
			openWinNo = i;
			break;
		}
		
	}
	
	//新規に子窓を開いた場合は、その子窓にFormを投げる
	if(openWinNo != null){
		throwForm(openUrl, openWinNo);
	}else{
		//子窓が全て開かれている場合(blankの子窓を新たに開いていない場合)は最古の子窓を判断
		var minNo = getMinOpenTime(openTime);
		//最古の子窓にFormを投げる
		throwForm(openUrl, minNo);
	}

	//子窓に渡すキー項目の初期化
	document.form.paraJobId.value = null;
	
}



//子窓にformを投げる
function throwForm(openUrl, popWinName){
	
	//子窓に投げるform情報を変数に格納
	var thisPageForm = document.form;
	//子窓へターゲットを指定
	thisPageForm.target = popWinName;
	//子窓に表示するURLを指定
	thisPageForm.action = openUrl;
	
	//子窓にform情報を投げる
	thisPageForm.submit();
	
	//親のformのターゲットを親自身に戻す
	document.form.target = "_self";
	
}


//配列として受け取った時間(ミリ秒)の内、最古の子窓を判断し、最古の配列番号を返す。
function getMinOpenTime(openTime) {
	var min = openTime[0];
	var minNo = 0;
	for (var i = 1; i < openTime.length; i++) {
		if (openTime[i] < min) {
			min = openTime[i];
			minNo = i;
		}
	}
	return minNo;
}
//***********************************************************************
//
// secureReload		Version :1.00
//
// 目的 :	プロトコルがhttpだった場合、httpsに変更してリロードする。
//
// 引数 :	なし
//
// 戻り値 :	なし
//
// 新規作成:	2006/11/10(富岡)
//
// 最終更新:	2006/11/10(富岡)
//
//***********************************************************************
function secureReload(){
	if(location.protocol == "http:"){
		location.replace(document.URL.replace("http://","https://"));
	}
}

//***********************************************************************
//
// getNameLength		Version :1.00
//
// 目的 :	入力された文字列の長さを計算する。
//
// 引数 :	obj,id
//
// 戻り値 :	なし
//
// 新規作成:	2006/12/07(陳)
//
// 最終更新:	2006/12/07(陳)
//
//***********************************************************************
function getNameLength(obj,id) {
	var length = 0;
	length = document.form.elements[obj].value.length;
	var input_string = document.getElementById(id).firstChild;
	input_string.nodeValue = length;					
}

/*
var gHdImgPath = '/image/user/cmn/';		//Image Path
var gHdImgAct = '';
var gHdImgActSub = '';
//---------------------------------------------
// Image Loading
//---------------------------------------------

gHdImgArys = new Array(
	'hd_navi01.gif','hd_navi01_on.gif',
	'hd_navi02.gif','hd_navi02_on.gif',
	'hd_navi03.gif','hd_navi03_on.gif',
	'hd_navi04.gif','hd_navi04_on.gif',
	'hd_navi05.gif','hd_navi05_on.gif',
	
	'hd_navi02_02.gif','hd_navi02_02_on.gif',
	'hd_navi02_03.gif','hd_navi02_03_on.gif',
	'hd_navi02_04.gif','hd_navi02_04_on.gif',
	'hd_navi02_05.gif','hd_navi02_05_on.gif'
);

gHdImgLoad = new Array();
for( var i = 0; i < gHdImgArys.length; i++ ){
	gHdImgLoad[i] = new Image();
	gHdImgLoad[i].src = gHdImgPath + gHdImgArys[i];
	//document.write("<img src='" + gHdImgLoad[i].src + "'><br>");
}

//---------------------------------------------
// hd_over()
//---------------------------------------------
function hd_over(wk){
	var mDoc;
	var mExt;
	var mEnd = "_on";    //onMouseOver時のイメージファイル名の末尾
	
	if( document.images[wk] && gHdImgAct != wk ){
		mDoc = document.images[wk];
		mExt = mDoc.src.substring(mDoc.src.lastIndexOf(".") , mDoc.src.length);
		
		mDoc.src = gHdImgPath + wk + mEnd + mExt;
	}
}

//---------------------------------------------
// hd_out()
//---------------------------------------------
function hd_out(wk){
	var mDoc;
	var mExt;
	
	if( document.images[wk] && gHdImgAct != wk && gHdImgActSub != wk){
		mDoc = document.images[wk];
		mExt = mDoc.src.substring(mDoc.src.lastIndexOf(".") , mDoc.src.length);
		
		mDoc.src = gHdImgPath + wk + mExt;
	}
}

//---------------------------------------------
// hd_active()
//---------------------------------------------
function hd_active(mName){
	var mDir = gHdImgPath;
	if( document.images[mName] ){
		document.images[mName].src = mDir + mName + '_on.gif';
	}
	gHdImgAct = mName;
}

function hd_activesub(mName){
	var mDir = gHdImgPath;
	if( document.images[mName] ){
		document.images[mName].src = mDir + mName + '_on.gif';
	}
	gHdImgActSub = mName;
}

//---------------------------------------------
// hd_ssl()
//---------------------------------------------
function hd_ssl() {
	var currentURL = location.protocol+"//"+document.domain;
	if(location.protocol == "http:"){		
		if (document.URL == currentURL+"/#" ||
            document.URL == currentURL+"/" ||
            document.URL == currentURL+"/index.html" ||
			document.URL == currentURL+"/index.html#"
		){
			location.href = "https://"+document.domain+"/a/usermanage/index.html";
        }else{
			jumpPage(document.URL.replace("http://","https://"));
        }
	}else{
		if (document.URL == currentURL+"/#" ||
            document.URL == currentURL+"/" ||
            document.URL == currentURL+"/index.html" ||
			document.URL == currentURL+"/index.html#"
		){
			location.href = "http://"+document.domain+"/a/usermanage/index.html";
        }else{
           jumpPage(document.URL.replace("https://","http://"));			
        }
	}
}
*/
