// **************************************** //
// ***** JavaScript プロジェクト共通  ***** //
// **************************************** //
// ==================== //
//  会社別 設定          //
// ==================== //
var C_CPNY_ZEI 	= 2;				// 消費税端数処理　　1:四捨五入　2:切り捨て　3:切り上げ

// ==================== //
//  変数設定            //
// ==================== //
// ------------ //
// ルートパス    //
// ------------ //
var URL_ROOT	 = getUrlRoot();

// ------------ //
// IMEモード    //
// ------------ //
var IME_AUTO     = "auto";			// 規定値：自動
var IME_ACTIVE   = "active";		// フォーカス移動時にオン
var IME_INACTIVE = "inactive";		// フォーカス移動時にオフ
var IME_DISABLED = "disabled";		// IME使用を禁止

// ------------ //
// ﾀﾞｲｱﾛｸﾞ 戻り値    //
// ------------ //
var C_DLG_OK  = 1;      // ＯＫの場合
var C_DLG_RET = 2;		// 真ん中ボタン
var C_DLG_CAN = 0;		// キャンセルボタン

// ----------------------//
// 一覧画面用 戻り値変数
// ----------------------//
var ary_text = new Array();

// -------------------------//
// ｺｰﾄﾞ検索用 入力変更ﾁｪｯｸ用
// -------------------------//
var INP_CODE = '';

// **************************************** //
//			サブウィンドウ表示
// **************************************** //
function SubWindowOpen( url , para , arg ) {
	if ( url == '' ) {
		return;
	}
	while( url.indexOf( '/' ) > -1 ) {
		url = url.replace( '/' , ',' );
	}
	var pUrl = URL_ROOT + "/iframe/index/URL=" + url;

	if ( para == undefined ) {
		para = para + 'status:false;edge:raised;scroll:no;resizable:yes;';
	}
	para = 'dialogWidth:240px;dialogHeight:150px;' + para;

	var ret = null;
//	ret = window.open( pUrl );
	ret = window.showModalDialog( pUrl , arg , para );

	return ret;
}

// **************************************** //
//			確認ウィンドウ表示
// 			回答３選択編
// **************************************** //
function alert3( msg , msg_kbn ) {
    var para = '';

    if ( msg == undefined ) {
        msg = '';
    }
    if ( msg_kbn == undefined ) {
        msg_kbn = '';
    }
    var arg = new Array( msg , msg_kbn );

	para = para + 'dialogWidth:240px;dialogHeight:150px;';
	para = para + 'status:false;edge:raised;scroll:no;resizable:no;';
	var ret = window.showModalDialog( 'alert3' , arg , para );
//	var ret = window.open( 'alert3' );

    return ret;
}

// **************************************** //
//  			プレビュー表示
// **************************************** //
function Preview( url ){
	if ( url == '' ) {
		return;
	}
//	while( url.indexOf( '/' ) > -1 ) {
//		url = url.replace( '/' , ',' );
//	}

//	para = "width=900px; height=680px; location=0; menubar=0; resizable=1; toolbar=0;";
//	win = window.open( url , "Preview" );
	win = window.open( url );
	if ( win ) {
		win.focus();
	}

}

// ======================================== //
//  取消終了（ｳｨﾝﾄﾞｳを閉じる）
// ======================================== //
function WindowCancelClose() {
	// 親ウィンドウに返す
	ary_text = null;
	WindowClose();
}

// ======================================== //
//  ウィンドウを閉じる				        //
// ======================================== //
function WindowClose( ret ) {
	var ary_text = null;
	if ( ret != null ) {
		ary_text = ret;
	}

	window.returnValue = ary_text;
	if( document.all ) {
		window.opener = true;
	}
	window.close();
}

// ======================================== //
//  onLoad時他：Windowを画面中央へ           //
// ======================================== //
function WindowCenter( X , Y ) {
	window.dialogWidth  = X + 'px';
	window.dialogHeight = Y + 'px';
	window.dialogTop  = ( window.screen.height - Y ) / 2;
	window.dialogLeft = ( window.screen.width - X ) / 2;
}

// ======================================== //
//  onLoad時他：ﾌｫｰｶｽｾｯﾄ                    //
// ======================================== //
function FcsSet( obj_name ) {
	var obj = document.all( obj_name );
	if ( obj ) {
		if ( obj.readOnly == false ) {
			obj.focus();
		}
	}
}

// ======================================== //
//  onKeyDown時：次項目へ移動               //
// ======================================== //
document.onkeydown = function() {
	if (event.keyCode == 13) {
		obj = document.activeElement;
		switch ( obj.type ) {
			case 'text':
//			case 'button':
			case 'select-one':
			case 'radio':
				event.keyCode = 9;
				break;
			default:
		}
	}
}


// ======================================== //
//  onFocus制御				                //
// ======================================== //
function ImeCtl( obj , ime , sel ) {
	if (!obj) {
		return;
	}
	switch ( obj.type ) {
		case 'textarea':
		case 'text':
			if ( obj.readOnly == false ) {
				obj.style.imeMode = ime;
				if ( sel == undefined ) {
					obj.select();
				}
			}
			break;

		case 'select-one':
			break;
	}
//alert(obj.type);
}

// ======================================== //
//  検索ボタンを検索中状態にする            //
// ======================================== //
function kensakutyu( obj ) {
	document.body.focus();
	obj.value='　検索中　';
	obj.style.color = 'blue';
}

// ======================================== //
//  ルートディレクトリの取得　              //
// ======================================== //
function getUrlRoot() {
	var url = document.URL;
	var dom = document.domain + '/';

	url = url.replace( 'http://'+dom , '' );
	url = url.replace( 'https://'+dom , '' );

	var fld = url.split('/');

	return '/' + fld[0];
}


// ======================================== //
//  明細行 onMouseOver/Out 時、色変更       //
// ======================================== //
function MEISAI_CUR_COL( obj , bln , col ) {
	if ( bln ) {
	    if ( col == undefined ) {
            obj.backgroundColor='#DDFFDD';
	    } else {
            obj.backgroundColor='#FFEEEE';
	    }
	} else {
		obj.backgroundColor='';
	}
}
function MEISAI_CHOICE( obj , bln , col ) {
	if ( bln ) {
	    if ( col == undefined ) {
            obj.backgroundColor='#EEFFEE';
	    } else {
            obj.backgroundColor='#EEFFEE';
	    }
	} else {
		obj.backgroundColor='';
	}
}


// ======================================== //
//  条件クリア
// ======================================== //
function jkn_clear( frm ) {
	obj = frm.elements;
	for ( i=0; i < obj.length ; i++ ) {
		itm = obj[i];
		switch ( obj[i].type ) {
			case 'hidden':
				itm.value = '';
				break;
			case 'text':
				itm.value = '';
				break;
			case 'checkbox':
				itm.checked = false;
				break;
			case 'radio':
				itm.checked = false;
				break;
			case 'select-one':
				itm.selectedIndex = 0;
				break;
		}
	}
}

// ======================================== //
//  cookie 設定							    //
// ======================================== //
function setCookie(key, val, frm) {
	document.cookie = "NAME=COOKIE_GAPLUS_CC;";
    key_name = frm + "_" + key;
	document.cookie = key_name + "=" + escape(val) + ";";
}
// ======================================== //
//  cookie 取得							    //
// ======================================== //
function getCookie( key , frm ) {
    key_name = frm + "_" + key;
	tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key_name) {
            return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        }
        xx1 = xx2 + 1;
    }
    return("");
}
// ======================================== //
//  cookie クリア						    //
// ======================================== //
function clearCookie(key) {
    document.cookie = key + "=" + "xx; expires=Tue, 1-Jan-1980 00:00:00;";
}

// ======================================== //
//  数値編集                  			    //
// ======================================== //
// ｶﾝﾏ削除
function number_val( val , ini ) {
    if ( val == '' ) {
    	if ( ini == undefined ) {
			return val;
    	} else {
    		return ini;
    	}
	}
	// ｶﾝﾏ削除
	var num = (val + '').replace(/,/g,"");

	// 数値判定
	if ( isNaN(num) ) {
		return val;
	}
	// ｶﾝﾏ無し数値を返す
	return num - 0;
}

// ｶﾝﾏ編集
function number_comma( val ) {
	// 初期化
	var ii , jj;
	val = val + '';
	var test = new String("");
	var testA= new Array();
	var commaFlg = 0;

	// ﾊﾟﾗﾒﾀﾁｪｯｸ
	if ( val == '' ) {
		return val;
	}
	var num = (val + '').replace(/,/g,"");
	if ( isNaN(num) ) {
		return val;
	}
	// ﾏｲﾅｽﾌﾗｸﾞ
	var mns_flg = ( ( num - 0 ) < 0 );
	val = '' + Math.abs(num);

	// 配列に一文字ずつ格納する。
	for( ii=0 ; ii < val.length ; ii++){
		testA[ii] = val.charAt(ii);
	}

	// ３で割った余りに応じてフラグの数値を変更する
	switch((val.length)%3){
		case 0: commaFlg = 2; break;
		case 1: commaFlg = 0; break;
		case 2: commaFlg = 1; break;
		default:break;
	}

	// カンマの追加
	if( val.length > 3){
		for(jj=commaFlg ; jj<val.length-1 ; jj+=3){
			testA[jj] += ",";
		}
	}

	// 配列の要素を結合し、表示用のフォームにセットする
	// ﾏｲﾅｽ確認
	if ( mns_flg ) {
		return '-' + testA.join("");
	} else {
		return testA.join("");
	}

}

// ****************************
//  消費税計算
//  ROUND=1 , FLOOR=2 , CEIL=3
//  内税=1 , 外税=2 , 非課税
// ****************************
function CalcSyohiZei( a_Kingaku , a_Date , a_Marume , a_zei_kbn) {
	// 消費税設定(追加は日付の降順で！)
	var calc = 0;
	var zei = new Array(1);
	zei[0] = Array( 19970401 , 0.05 );
	zei[1] = Array( 19890401 , 0.03 );
	if ( a_Date == 0 ) {
		return 0;
	}
	// 消費税算出
	a_zei_kbn = a_zei_kbn - 0;
	for( i=0 ; i < zei.length ; i++ ) {
		if ( zei[i][0] <= a_Date ) {
			switch ( a_zei_kbn ) {
				case 1:		// 内税
					calc = a_Kingaku - ( a_Kingaku / ( 1 + zei[i][1] ) );
					break;
				case 2:		// 外税
					calc = a_Kingaku * zei[i][1];
					break;
				case 3:		// 非課税
					calc = 0;
					break;
			}

			switch ( a_Marume ) {
				case 1:
					return Math.round( calc );
					break;
				case 2:
					return Math.floor( calc );
					break;
				case 3:
					return Math.ceil( calc );
					break;
				default:
					return 0;
					break;
			}
		}
	}

	return 0;
}

// ****************************
//  消費税計算
//  ROUND=1 , FLOOR=2 , CEIL=3
//  内税=1 , 外税=2 , 非課税
// ****************************
function CalcSyohiZeiUti( a_Kingaku , a_Date , a_Marume , a_zei_kbn ) {
    var calc = 0;
    switch ( a_zei_kbn ) {
		case 1:		// 内税
		case 2:		// 外税
			calc = CalcSyohiZei( a_Kingaku , a_Date , a_Marume , 1 );
			break;
		case 3:		// 非課税
		    calc = 0;
			break;
	}

	return calc;
}

// ============================================ //
//  検索ウィンドウ表示
//  引数：URL 、ID用ID名、CD用ID名、NAME用ID名
//  戻り値：
// ============================================ //
function SrcWindowICN( url , id_ID , cd_ID , name_ID ) {

	var chk = SubWindowOpen( url );

	if (chk == null) {
		return;
	}
	if( id_ID != '' ) {
		document.getElementById( id_ID ).value   = chk[0];
	}
	if( cd_ID != '' ) {
		document.getElementById( cd_ID ).value   = chk[1];
	}
	if( name_ID != '' ) {
		document.getElementById( name_ID ).value = chk[2];
	}
}

// ================================================= //
//  コード入力名前検索
//  仕様：PHPからの戻り値を tag_id 項目へ表示する
//  引数：URL 、ID用ID名、CD用ID名、NAME用ID名 , 条件1 , 条件2 , 条件3
//  戻り値：テーブル検索結果の配列（使うなら使って）
// ================================================= //
function getCdName( url , id_TAG_ID , cd_TAG_ID , name_TAG_ID , jkno , jknt , jknh ) {
	var cd , req;
	var ret = new Array();
	ret['id'] = '';
	ret['cd'] = '';
	ret['name'] = '';

	if( cd_TAG_ID != '' ) {
		cd = document.getElementById( cd_TAG_ID ).value.replace( ' ' , '' );
		if( cd == INP_CODE ) {
			return;
		}
		ret['cd'] = cd;
		// 条件設定
		if( jkno == undefined ) {
			 jkno = '';
		} else {
			jkno = jkno + "/";
		}
		if( jknt == undefined ) {
			 jknt = '';
		} else {
			jknt = jknt + "/";
		}
		if( jknh == undefined ) {
			 jknh = '';
		} else {
			jknh = jknh + "/";
		}
		// urlの末尾の / 調整
		if( url.substr( -1 , 1 ) == '/' ) {
			cdpara = cd;
		} else {
			cdpara = '/' + cd;
		}
		if ( cd != INP_CODE ) {
			if( cd != '' ) {
				// PHP 呼び出し。戻り値を eval して 配列 ret に格納。
				req = sendReq( url + cdpara + "/" + jkno + jknt + jknh );
				eval( req );
			}
		}
		retset( id_TAG_ID 	, ret['id'] );
		retset( cd_TAG_ID 	, ret['cd'] );
		retset( name_TAG_ID	, ret['name'] );
	}
	return ret;
}
// 戻り値セット タグチェック
function retset( tag_id , retval ) {
	if ( tag_id == '' ) {
		return;
   	}
	if ( retval == undefined ) {
		retval = '';
	}
	document.getElementById( tag_id ).value = retval;
}

// ================================================= //
//  手作り Ａｊａｘ
//  仕様：getCdName から呼ばれる。
//  戻り値：テーブル検索結果の配列の文字列。
//		例) "ret['id']=''; ret['cd']=''; ret['name']='';"
//			この文字列を getCdName で eval する。
// ================================================= //
function sendReq( url ){
	var res = null;
	//XMLHttpRequestオブジェクト生成
	var oj = createHttpRequest();
	if ( oj != null ) {
		//着信コールバックメソッド
		oj.onreadystatechange =function () {
			if(oj.readyState==4){
				//レスポンスを取得
				res  = oj.responseText;
			}
		}
		//open,send メソッド
		oj.open( 'POST' , url , false );
		oj.send( '' );
	}
	return ( res );
}
// XMLHttpRequestオブジェクト生成関数
function createHttpRequest() {
	if(window.XMLHttpRequest){
		//Win Mac Linux m1,f1,o8 Mac s1 Linux k3 & Win e7用
		return new XMLHttpRequest() ;
	} else if(window.ActiveXObject) {
			//Win e4,e5,e6用
			try {
				return new ActiveXObject("Msxml2.XMLHTTP") ;
			} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP") ;
			} catch (e2) {
				return null; 
			}
		}
	} 
}
