
var OS = new OSObject();			//プラットフォーム情報を取得・保持
var BROWSER = new BrowserObject();	//ブラウザ情報を取得・保持
var cShow = (BROWSER.NN4)?"show":"visible";
var cHide = (BROWSER.NN4)?"hide":"hidden";

//**************************************************************************************
////////////////////////////////   ﾌﾟﾗｯﾄﾌｫｰﾑを調べる   /////////////////////////////////
//--------------------------------------------------------------------------------------
//
//**************************************************************************************
function OSObject(){
var WIN = false;
var MAC = false;
var OTHER = true;
var NAME = "";

	if(navigator.platform=="Win32"){ WIN = true; NAME = "Windows"; }
	if(navigator.platform.indexOf("Mac",0)!=-1){ MAC = true; NAME = "MacOS"; }

	if(WIN || MAC) OTHER = false;
	
	this.NAME = NAME;
	this.WIN = WIN;
	this.MAC = MAC;
	this.OTHER = OTHER;

}

//**************************************************************************************
///////////////////////////////   ブラウザ情報を保持する   /////////////////////////////
//--------------------------------------------------------------------------------------
//	
//**************************************************************************************
function BrowserObject(){
var str;
var IE = false;
var NN = false;
var IE5 = false;
var NN4 = false;
var NN6 = false;
var OTHER = true;
var NAME = "";

	str = navigator.appName.toUpperCase();
	if(str.indexOf("NETSCAPE") >= 0){ NN = true; }
	if(str.indexOf("EXPLORER") >= 0){ IE = true; }

	if(navigator.appName.indexOf("Microsoft Internet Explorer",0)!=-1){
		if(navigator.appVersion.charAt(0)=="4"){ IE5 = true; NAME = "IE5"; }
	}else{
		if(navigator.appName.indexOf("Netscape",0)!=-1){
			if(navigator.appVersion.charAt(0)=="4"){ NN4 = true; NAME = "NN4"; }
			if(navigator.appVersion.charAt(0)=="5"){ NN6 = true; NAME = "NN6"; }
		}
	}
	if(IE5 || NN4 || NN6) OTHER = false;

	this.IE = IE;
	this.NN = NN;
	this.NAME = NAME;
	this.IE5 = IE5;
	this.NN4 = NN4;
	this.NN6 = NN6;
	this.OTHER = OTHER;
}




//**************************************************************************************
///////////////////////////////    VBのiifと同様の動作   ///////////////////////////////
//--------------------------------------------------------------------------------------
//	Return:		variant
//**************************************************************************************
function gf_iif(exception,truepart,falsepart){
	return exception?truepart:falsepart;
}


//**************************************************************************************
////////////////////////////   文字列検索、置き換え   //////////////////////////////////
//**************************************************************************************

function strRep(msg, key, rep){
	var n = 0;

	while ((n = msg.indexOf(key, n)) != -1) {
		msg = msg.substring(0, n) + rep + msg.substring(n + key.length, msg.length);
		n = n + rep.length;
	}
	return msg;
}

//**************************************************************************************
////////////////////////////////    入力日付のチェック   ///////////////////////////////
//--------------------------------------------------------------------------------------
//	Arguments:	Input DateString(y/m/d)
//	Return:		boolean
//	備考：
//			yyyy/mm/ddからm/dの入力までを認識する
//**************************************************************************************
function gf_isDate(str){
var e,ymd;
var ret = "",cnt = 0;

	var sysDate = new Date();
	if(str==null) return false;

	var chkStr = new String("/0123456789／０１２３４５６７８９");
	for(var i=0;i<str.length;i++){
		e = chkStr.indexOf(str.charAt(i));
		if(e==-1) return false;
		if(e==0||e==11) cnt++;
		if(e>=11) e-=11;
		ret += chkStr.charAt(e);
	}
	if(cnt<1||cnt>2) return false;
	ymd = ret.split("/",3);
		if(ymd[0]=="") return false;
		if(ymd[1]=="") return false;
	switch(cnt){
	case 1:
		y = sysDate.getFullYear();m = ymd[0];d = ymd[1];
		break;
	case 2:
		if(ymd[2]=="") return false;
		y = ymd[0];m = ymd[1];d = ymd[2];
		break;
	}
	if(y.length>4) return false;
	if(m.length>2) return false;
	if(d.length>2) return false;
	
	var dd = new Date(y,m-1,d);
	if(isNaN(dd)) return false;
	
	return true;
}

//**************************************************************************************
/////////////////////////////   入力日付のチェック及び標準化   /////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	Input DateString
//	Return:		FormatDateString(yyyy/mm/dd)
//	備考：
//			yyyy/mm/ddからm/dの入力までを認識する
//**************************************************************************************
function gf_formatDate(str){
var y,m,d;
var e,ymd;
var ret="",cnt=0;

	if(!gf_isDate(str)) return "";

	var sysDate = new Date();
	var chkStr = new String("/0123456789／０１２３４５６７８９");
	for(var i=0;i<str.length;i++){
		e = chkStr.indexOf(str.charAt(i));
		if(e==0||e==11) cnt++;
		if(e>=11) e-=11;
		ret += chkStr.charAt(e);
	}
	ymd = ret.split("/",3);
	switch(cnt){
	case 1:
		y = sysDate.getFullYear();m = ymd[0];d = ymd[1];
		break;
	case 2:
		y = ymd[0];m = ymd[1];d = ymd[2];
		break;
	}
	if(y.length<=3){
		y = parseInt(y);
		y+=2000;
	}

	var dd = new Date(y,m-1,d);

	y = dd.getFullYear();
	m = gf_Right("0"+(dd.getMonth()+1),2);
	d = gf_Right("0"+dd.getDate(),2);

	ret =  y + "/" + m + "/" + d;
	return ret;
}

//**************************************************************************************
//////////////////////////   右から指定数の文字を抜き取る   ////////////////////////////
//--------------------------------------------------------------------------------------
//	Arguments:	String length
//	Return:		String
//**************************************************************************************
function gf_Right(str,len){
	if(str==null) return "";
	if(len==null) return "";
	if(isNaN(len)) return "";
	if(str.length<len) return "";
	
	str = str.substr(str.length-len,len);
	return str;
}

//**************************************************************************************
//////////////////////////////   左から指定数の文字を抜き取る   ////////////////////////
//--------------------------------------------------------------------------------------
//	Arguments:	String length
//	Return:		String
//**************************************************************************************
function gf_Left(str,len){
	if(str==null) return "";
	if(len==null) return "";
	if(isNaN(len)) return "";
	if(str.length<len) return "";
	
	str = str.substr(0,len);
	return str;
}

//**************************************************************************************
///////////////////////////////   文字列の文字数を返す   ///////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//	Return:		length
//**************************************************************************************
function gf_Len(str){
	if(str==null) return 0;
	return str.length;
}

//**************************************************************************************
///////////////////////////////   文字列のバイト数を返す   /////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//	Return:		length
//**************************************************************************************
function gf_LenB(str,flg){
var cnt =0;
var hex,cd;

	if(str==null) return 0;
	if(flg==null) flg=false;

	for(var i=0;i<str.length;i++){
		hex = escape(str.charAt(i));
		if(hex.length >=4 ){
			cd = parseInt(gf_Right(hex,4),16);
			if(cd>=parseInt("FF61",16)&&cd<=parseInt("FF9F",16)){
				cnt++;//半角ｶﾅ
				if(flg) cnt++;//半角ｶﾅを2バイトとする
			}else{
				cnt+=2;
			}
		}else{
			cnt++;
		}
	}
	return cnt;
}

//**************************************************************************************
/////////////////////////////////   数かどうかを返す  //////////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputValue
//	Return:		Numeric(true)  No Numeric(false)
//**************************************************************************************
function gf_isNumeric(str){
	if(isNaN(str)) return false;
	return true;
}

//**************************************************************************************
/////////////////////////////////   空かどうかを返す   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputValue
//	Return:		Null(true)  No Null(false)
//**************************************************************************************
function gf_isNull(str){
	if(str==null) return true;
	if(typeof(str)=="undefined") return true;
	if(typeof(str)=="string"){
		if(str.length==0) return true;
	}
	if(typeof(str)=="number"){
		if(isNaN(str)) return true;
	}
	return false;
}

//**************************************************************************************
////////////////////////   2バイト文字を1バイト文字にして返す   ////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//			:	Null,0 - 英数のみ対象
//				1      - ひらがな以外
//				2      - ALL
//	Return:		string
//	備考：
//			英数、ひらがな、カタカナに対応
//**************************************************************************************
function gf_LCase(str,mode){
var cd,cd2,hex;
var ret = "",e = "";

	if(str==null) return "";
	if(mode == null) mode = 0;

	for(var i=0;i<str.length;i++){
		e = str.charAt(i);
		hex = escape(e);
		if(hex.length>=4){
			cd = parseInt(gf_Right(hex,4),16);
			cd2 = cd;
			//！〜　（英数）
			if(cd2>=parseInt("FF01",16)&&cd2<=parseInt("FF5E",16)){
				cd -= parseInt("FF01",16);
				cd += parseInt("21",16);
				e = String.fromCharCode(cd);
			}
			if(mode>=1){
				//全角スペース→半角スペース
				if(cd2==parseInt("3000",16)){
					e = String.fromCharCode(parseInt("20",16));
				}
				//[ー]→[ｰ]
				if(cd2==parseInt("30FC",16)){
					e = String.fromCharCode(parseInt("FF70",16));
				}
				//ア〜ン→ｱ〜ﾝ
				if(cd2>=parseInt("30A1",16)&&cd2<=parseInt("30F4",16)){
					cd -= parseInt("30A1",16);
					e = gf_LCase_Library(cd);
				}
			}
			if(mode>=2){
				//あ〜ん→ｱ〜ﾝ
				if(cd2>=parseInt("3041",16)&&cd2<=parseInt("3094",16)){
					cd -= parseInt("3041",16);
					e = gf_LCase_Library(cd);
				}
			}
		}
		ret += e;
	}
	return ret;
}

//**************************************************************************************
///////////////////   gf_LCase()のｶﾅ変換に使用する文字マップ   /////////////////////////
//--------------------------------------------------------------------------------------
//	Arguments:	相対番号
//	Return:		string
//**************************************************************************************
function gf_LCase_Library(num){
var lib = new Array(
						"ｧ","ｱ","ｨ","ｲ","ｩ","ｳ","ｪ","ｴ","ｫ","ｵ"
					,	"ｶ","ｶﾞ","ｷ","ｷﾞ","ｸ","ｸﾞ","ｹ","ｹﾞ","ｺ","ｺﾞ"
					,	"ｻ","ｻﾞ","ｼ","ｼﾞ","ｽ","ｽﾞ","ｾ","ｾﾞ","ｿ","ｿﾞ"
					,	"ﾀ","ﾀﾞ","ﾁ","ﾁﾞ","ｯ","ﾂ","ﾂﾞ","ﾃ","ﾃﾞ","ﾄ","ﾄﾞ"
					,	"ﾅ","ﾆ","ﾇ","ﾈ","ﾉ"
					,	"ﾊ","ﾊﾞ","ﾊﾟ","ﾋ","ﾋﾞ","ﾋﾟ","ﾌ","ﾌﾞ","ﾌﾟ","ﾍ","ﾍﾞ","ﾍﾟ","ﾎ","ﾎﾞ","ﾎﾟ"
					,	"ﾏ","ﾐ","ﾑ","ﾒ","ﾓ"
					,	"ｬ","ﾔ","ｭ","ﾕ","ｮ","ﾖ"
					,	"ﾗ","ﾘ","ﾙ","ﾚ","ﾛ"
					,	"ﾜ","ﾜ","ｲ","ｴ","ｦ","ﾝ","ｳﾞ"
				);
	return lib[num];
}

//**************************************************************************************
////////////////////////   1バイト文字を2バイト文字にして返す   ////////////////////////
//--------------------------------------------------------------------------------------
//	Arguments:	InputString
//	Return:		string
//	備考：
//			英数のみ対応
//**************************************************************************************
function gf_UCase(str){
var cd,hex;
var ret = "",e = "";

	if(str==null) return "";
	for(var i=0;i<str.length;i++){
		e = str.charAt(i);
		cd = e.charCodeAt(0);
		if(cd>=parseInt("21",16)&&cd<=parseInt("7E",16)){
			cd -= parseInt("21",16);
			cd += parseInt("FF01",16);
			hex = "%u" + cd.toString(16);
			e = unescape(hex);
		}
		ret += e;
	}
	return ret;
}

//**************************************************************************************
/////////////////////////////////    数値小数部の桁数ﾁｪｯｸ   ////////////////////////////
//--------------------------------------------------------------------------------------
//  Arguments
//		pNum	= 数値
//		pLen	= 小数部の桁数
//		pIln	= 整数部の桁数(省略時は無効)
//	Return
//		OK:true  NG:false
//**************************************************************************************
function gf_checkDecimal(pNum,pLen,pIln){
var pInt,pDec,pPrd;

	pIln = (gf_isNull(pIln))?-1:eval(pIln);

	if(!gf_isNumeric(pNum)) return false;
	if(!gf_isNumeric(pLen)) return false;
	if(!gf_isNumeric(pIln)) return false;
	pNum = pNum.toString(10);
	pLen = eval(pLen);

	pPrd = pNum.indexOf(".",0);

	pDec = (pPrd>=0)?pNum.substring(pPrd+1,pNum.length):"";	//小数部0桁の対応
	if(pDec.length>pLen) return false;

	if(pIln>=0){
		pInt = (pPrd>=0)?pNum.substr(0,pPrd):pNum;
		pInt = Math.abs(parseInt(pInt));
		pInt = pInt.toString(10);
		if(pInt.length>pIln) return false;
	}

	return true;
}

//**************************************************************************************
///////////////////////////////   小数部の桁数を調整   /////////////////////////////////
//--------------------------------------------------------------------------------------
//  Arguments
//		pNum	= 数値
//		pF		= 小数部の桁数(省略時は切りつめる)
//	Return
//		String(Numeric)
//**************************************************************************************
function gf_formatNumber(pNum,pF){
var pInt,pFlt,pPrd;
var pDmy="";

	if(gf_isNumeric(pNum)) pNum=pNum.toString(10);
	pF = (gf_isNull(pF))?-1:eval(pF);

	for(var i=0;i<pF;i++){pDmy+="0";}
	pPrd = pNum.indexOf(".",0);

	pInt = (pPrd>=0)?pNum.substr(0,pPrd):pNum;
	if(pF!=-1){
		pFlt = (pPrd>=0)?gf_Left(pNum.substring(pPrd+1,pNum.length)+pDmy,pF):pDmy;
	}else{
		pFlt = (pPrd>=0)?pNum.substring(pPrd+1,pNum.length):pDmy;
	}

	if(pF==-1){
		for(var i=pFlt.length;i>0;i--){
			if(pFlt.charAt(i-1)!="0") break;
			pFlt = pFlt.substr(0,pFlt.length-1);
		}
	}
	if(pFlt!="") pFlt="."+pFlt;

	return pInt+pFlt;
}

//**************************************************************************************
////////////////////////   整数を小数にする(桁落ち等の対応のため)   ////////////////////
//--------------------------------------------------------------------------------------
//  Arguments
//		pNum	= 数値
//		pSft	= 小数部の桁数
//	Return
//		String
//	ex)
//		gf_shiftNumber("123001",3) -> "123.001"
//
//	[Revision]
//		2001/04/06 ohsumi
//**************************************************************************************
function gf_shiftNumber(pNum,pSft){
var pInt,pFlt,pDmy,pFlg;
var exitFlag;
//	pNum=eval(pNum);
	pNum = pNum.toString(10);
	exitFlag = false;
	while(gf_Left(pNum,1)=="0" && !exitFlag ){
		if(gf_Len(pNum)>1){pNum = gf_Right(pNum,gf_Len(pNum)-1);}else{exitFlag=true;}
	}

	pFlg = (eval(pNum)<0)?true:false;
	pNum = Math.abs(eval(pNum));
	if(gf_isNumeric(pNum)) pNum=pNum.toString(10);
	pSft = eval(pSft);

	pDmy = "";
	for(var i=0;i<pSft;i++){pDmy+="0";}

	pInt = (gf_Len(pNum)>pSft)?gf_Left(pNum,gf_Len(pNum)-pSft):"0";
	if(pFlg) pInt="-"+pInt;
	if(gf_Len(pNum)>pSft){
		pFlt = gf_Right(pNum,pSft);
	}else{
		pFlt = gf_Right(pDmy + pNum,pSft);
	}

	return pInt+"."+pFlt;
}

//**************************************************************************************
/////////////////////   小数を整数にする(桁落ち等の対応のため)   ///////////////////////
//--------------------------------------------------------------------------------------
//  Arguments
//		pNum	= 数値
//		pSft	= 小数部の桁数
//	Return
//		String
//	ex)
//		gf_intNumber("123.00123",3) -> "123001"
//**************************************************************************************
function gf_intNumber(pNum,pSft){
var pInt,pFlt,pDmy,pPrd;

	if(gf_isNumeric(pNum)){pNum = pNum.toString(10);}
	if(!gf_isNumeric(pSft)){pSft = eval(pSft);}

	pDmy = "";
	for(var i=0;i<pSft;i++){pDmy+="0";}
	pPrd = pNum.indexOf(".",0);

	pInt = (pPrd>=0)?pNum.substr(0,pPrd):pNum;
	pFlt = (pPrd>=0)?gf_Left(pNum.substring(pPrd+1,pNum.length)+pDmy,pSft):pDmy;

	return pInt.toString(10)+pFlt;
}



//**************************************************************************************
///////////////////////   IPアドレスの形式かどうかのチェック   /////////////////////////
//**************************************************************************************
function gf_isIPAddress(pIP){
var pp;

	pp = pIP.split(".");
	if(pp.length!=4) return false;
	for(var i=0;i<pp.length;i++){
		if(gf_isNull(pp[i])) return false;
		if(!gf_isNumeric(pp[i])) return false;
		if(eval(pp[i])<0 || eval(pp[i])>255) return false;
	}
	return true;
}

//**************************************************************************************
/////////////////////   E-Mailアドレスの形式かどうかのチェック   ///////////////////////
//**************************************************************************************
function gf_isEmail(pEmail){
var pp;

	if(pEmail.indexOf("@",1)<0) return false;
	pp = pEmail.split("@");
	if(pp.length>2) return false;
	
	return true;
}

//**************************************************************************************
///////////////////////////////    VBのTrimと同様の動作   ///////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		string
//**************************************************************************************
function gf_Trim(pStr){
var nTop,nTail,bTopFlag,bTailFlag,bNullFlag;
var wStr,wLong,cntTop,cntTail;

	var obj = new Array();
	for(var i=0;i<pStr.length;i++){ obj[i] = pStr.charAt(i);}
	wStr = "";
	bTopFlag = false; bTailFlag = false; cntTop = 0; cntTail = obj.length;
	bNullFlag = false;
	
	do{
		if(!bTopFlag){ if(obj[cntTop]!=" " && obj[cntTop]!="　"){ bTopFlag = true;}else{ cntTop++;}}
		if(!bTailFlag){ cntTail--; if(obj[cntTail]!=" " && obj[cntTail]!="　"){ bTailFlag = true; cntTail++;}}
		if(bTopFlag && bTailFlag){ bNullFlag = true; break;}
	}while(cntTop < pStr.length);
	
	if(bNullFlag) wStr = pStr.substring(cntTop,cntTail);
	
	return wStr;
}

//**************************************************************************************
////////////////    JavaScriptのリテラルによる不具合を消去する   /////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		string
//**************************************************************************************
function gf_convertString(pStr){
var wStr;
	wStr = pStr;
	wStr = wStr.replace(/\\/g,"\\");
	
	return wStr;
}


//**************************************************************************************
///////////////////////////////    使用文字のチェック   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		T/F
//**************************************************************************************
function gf_checkStr(pStr){
var wString = "abcdefghijklmnopqrstuvwxyz0123456789";
var chkStr;
	
	for(var j=0;j<pStr.length;j++){
		chkStr = pStr.charAt(j);
		if(wString.indexOf(chkStr,0)==-1) return false;
	}
	
	return true;
}

//**************************************************************************************
///////////////////////////////    使用文字のチェック(数字のみ)  ///////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		T/F
//**************************************************************************************
function gf_checkNum(pStr){
var wString = "0123456789";
var chkStr;
	
	for(var j=0;j<pStr.length;j++){
		chkStr = pStr.charAt(j);
		if(wString.indexOf(chkStr,0)==-1) return false;
	}
	
	return true;
}

//**************************************************************************************
///////////////////////////////    使用文字のチェック(数字のみ)  ///////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		T/F
//**************************************************************************************
function gf_checkNumeric(pStr){
var wString = "0123456789.,-";
var chkStr;

	if((pStr==".") || (pStr==",") || (pStr=="-")){ return false; }

	for(var j=0;j<pStr.length;j++){
		chkStr = pStr.charAt(j);
		if(wString.indexOf(chkStr,0)==-1) return false;
	}
	
	return true;
}

//**************************************************************************************
///////////////////////////////    使用文字のチェック   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		T/F
//**************************************************************************************
function gf_checkTelephone(pStr){
var wString = "0123456789-()";
var chkStr;
	
	for(var j=0;j<pStr.length;j++){
		chkStr = pStr.charAt(j);
		if(wString.indexOf(chkStr,0)==-1) return false;
	}
	
	return true;
}

//**************************************************************************************
///////////////////////////////    使用文字のチェック   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	Argument:	InputString
//
//	Return:		T/F
//**************************************************************************************
function gf_check16Color(pStr){
var wString = "#0123456789abcdefABCDEF";
var chkStr;
	
	for(var j=0;j<pStr.length;j++){
		chkStr = pStr.charAt(j);
		if(wString.indexOf(chkStr,0)==-1) return false;
	}
	
	return true;
}

//**************************************************************************************
////////////////////////   RMS共通番号の形式かどうかのチェック   /////////////////////////
//**************************************************************************************
function gf_isCommonNo(pNo){
var dmy;

	if(gf_isNull(pNo)) return false;
	dmy = pNo.replace(/-/g , "");
	if(isNaN(dmy)) return false;
	if(dmy.length!=12) return false;
	if(gf_LenB(dmy)!=gf_Len(dmy)) return false;
	
	return true;
}

//**************************************************************************************
//////////////////////////////   データを金額形式にする   ///////////////////////////////
//--------------------------------------------------------------------------------------
//	ex)
//		gf_convertPrice("1000000000") -> "1,000,000,000"
//**************************************************************************************
function gf_convertPrice(vl){
	var ret , cnt , dmy , chk;
	
	if(typeof(vl)!="string") vl = vl.toString();
	
	vl = gf_unconvertPrice(vl);
	if(isNaN(vl)) return vl;
	
	ret = "";
	cnt=0;
	if(typeof(vl)!="string") vl = vl.toString();
	chk = vl.length;
	if(typeof(chk)=="undefined") return ret;
	vl = vl.replace( / /g , "" );
	
	for(var i=(vl.length-1);i>=0;i--){
		dmy = vl.substr(i,1);
		if(dmy!="-" && cnt==3) ret = "," + ret;
		ret = dmy + ret;
		if(cnt==3){cnt=1;}else{cnt++;}
	}
	
	return ret;
}

//**************************************************************************************
//////////////////////////////   データの "," をとる   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	ex)
//		gf_unconvertPrice("1,000,000,000") -> "1000000000"
//**************************************************************************************
function gf_unconvertPrice(pData){
	var str , i , vl , cnt;

	vl = pData;

	if(typeof(vl)!="string") vl = vl.toString();

	cnt = gf_Len(vl);
	if(cnt==0){ vl=0; return vl;}
	
	i=0;
	do{
		vl = vl.replace( "," , "" );
		if(str==vl) break;
		str = vl;
		i++;
	}while(i<cnt);
	
	return vl;
}

//**************************************************************************************
//////////////////////////////   データの "-" をとる   /////////////////////////////////
//--------------------------------------------------------------------------------------
//	ex)
//		gf_UnformatNo("01-01-00001") -> "010100001"
//**************************************************************************************
function gf_UnformatNo(pData){
	var str , i , vl , cnt;

	vl = pData;
	cnt = gf_Len(vl);
	if(cnt==0){ vl=0; return vl;}
	
	i=0;
	do{
		vl = vl.replace( "-" , "" );
		if(str==vl) break;
		str = vl;
		i++;
	}while(i<cnt);
	
	return vl;
}

//**************************************************************************************
//////////////////   0533などの文字列を正常に数値化するための関数   ///////////////////////
//--------------------------------------------------------------------------------------
//	ex)
//		gf_convertNumber("0521") -> 521
//**************************************************************************************
function gf_convertNumber(vl){
	var ret = vl;
	var exitFlag = false;
	while(gf_Left(ret,1)=="0" && !exitFlag ){
		if(gf_Len(ret)>1){ret = gf_Right(ret,gf_Len(ret)-1);}else{exitFlag=true;}
	}
	return parseInt(ret);
}

//**************************************************************************************
//////////////////   0533などの文字列を正常に数値化するための関数   ///////////////////////
//--------------------------------------------------------------------------------------
//	口座名義名のｶﾅ文字への対応
//	（思い違いだったら必要ない。ただEBCDICの関係もあるので。）
//	Argument:	string
//	Return:		string
//**************************************************************************************
function gf_convertFBString(str){
var cd,hex;
var ret = "",e = "";
//var lib = new Array("ｦ","ｧ","ｨ","ｩ","ｪ","ｫ","ｬ","ｭ","ｮ","ｯ","-");
var lib = new Array("ｦ","ｱ","ｲ","ｳ","ｴ","ｵ","ﾔ","ﾕ","ﾖ","ﾂ","-");

	if(str==null) return "";
	for(var i=0;i<str.length;i++){
		e = str.charAt(i);
		hex = escape(e);
		if(hex.length>=4){
			cd = parseInt(gf_Right(hex,4),16);
			if(cd>=parseInt("FF66",16) && cd<=parseInt("FF70",16)){
				cd -= parseInt("FF66",16);
				e = lib[cd];
			}
		}
		ret += e;
	}
	return ret;
}

//**************************************************************************************
///////////////////////////////////   必須入力チェック   ////////////////////////////////
//**************************************************************************************
//-------------------------------------------半角英数必須
function gf_checkMustAN(ob,ln,min,mode){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(typeof(mode)!="undefined"){
		vl = gf_LCase(vl);
	}else{
		vl = gf_LCase(vl,mode);
	}
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); ob.focus(); return false; }
	if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
	if(typeof(min)!="undefined"){
		if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------半角数必須
function gf_checkMustN(ob,ln,min,low,up){

	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(!gf_checkNum(vl)){ alert(cErr003); ob.focus(); return false; }
	if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); ob.focus(); return false; }
	if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
	if(typeof(min)!="undefined"){
		if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
	}
	if(typeof(low)!="undefined"){
		if(gf_convertNumber(vl)<low){ alert(cErr028); ob.focus(); return false; }
	}
	if(typeof(up)!="undefined"){
		if(gf_convertNumber(vl)>up){ alert(cErr028); ob.focus(); return false; }
	}
	ob.value = vl;

	return true;
}

//-------------------------------------------2バイト文字必須
function gf_checkMustWord(ob,ln,min,mode){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }

	if(typeof(mode)!="undefined"){ vl = gf_LCase(vl,mode); }
	if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
	if(typeof(min)!="undefined"){
		if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------電話FAX番号
function gf_checkMustTelFax(ob,ln,min){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(!gf_isNull(vl)){
		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(!gf_checkTelephone(vl)){ alert(cErr009); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------メールアドレス必須
function gf_checkMustEmail(ob,ln,min){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
	if(!gf_isEmail(vl)){ alert(cErr008); ob.focus(); return false; }
	if(typeof(min)!="undefined"){
		if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------日付必須
function gf_checkMustDate(ob){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(!gf_isDate(vl)){ alert(cErr007); ob.focus(); return false; }
	ob.value = gf_formatDate(vl);

	return true;
}
//-------------------------------------------金額必須
function gf_checkMustPrice(ob,ln,low,up,mode){

	if(!gf_checkMustPriceSub(ob,ln,low,up,mode)){
		if(ob.type=="text") ob.focus();
		return false;
	}

	return true;
}

function gf_checkMustPriceSub(ob,ln,low,up,mode){

	var vl = ob.value;
	vl = gf_Trim(vl);
	if(gf_isNull(vl)){ alert(cErr001); return false; }

	vl = gf_LCase(vl);
	vl = gf_unconvertPrice(ob.value);
	vl = gf_convertString(vl);

	if(!gf_isNumeric(vl)){ alert(cErr003); return false; }
	if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); return false; }
	if(gf_LenB(vl)>ln){ alert(cErr006); return false; }
	if(typeof(low)!="undefined"){
		if(parseInt(vl)>=0 && parseInt(vl)<low){ alert(cErr023); return false; }
	}
	if(typeof(up)!="undefined"){
		if(parseInt(vl)>up){ alert(cErr023); return false; }
	}

	//1円以上必須にする(デフォルト)
	if(typeof(mode)=="undefined") mode = true;
	if(mode){
		if(parseInt(vl)<=0){ alert(cErr023); return false; }
	}
	ob.value = gf_convertPrice(vl);

	return true;
}

//-------------------------------------------16進色設定必須
function gf_checkMustColor(ob){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); ob.focus(); return false; }
	if(gf_LenB(vl)>7){ alert(cErr006); ob.focus(); return false; }
	if(!gf_check16Color(vl)){ alert(cErr027); ob.focus(); return false; }
	ob.value = vl;

	return true;
}

//-------------------------------------------FB用口座名義必須
function gf_checkMustAccount(ob,ln){
	var vl = ob.value;

	vl = gf_LCase(vl,2);
	vl = gf_convertFBString(vl);

	if(gf_isNull(vl)){ alert(cErr001); ob.focus(); return false; }
	if(gf_Len(vl)!=gf_LenB(vl,false)){ alert(cErr004); ob.focus(); return false; }
	if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
	ob.value = vl;

	return true;
}

//-------------------------------------------ラジオボタン必須
function gf_checkMustRadio(ob,ln){
	var w_chk = 0;
	
	for(var i=0;i<=ln-1;i++){
		if (ob[i].checked == true){w_chk = 1;}
	}
	if(w_chk!=1){alert(cErr001); return false;}

	return true;
}


//**************************************************************************************
/////////////////////////////////////   入力チェック   //////////////////////////////////
//**************************************************************************************
//-------------------------------------------半角英数
function gf_checkAN(ob,ln,min,mode){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(typeof(mode)!="undefined"){
		vl = gf_LCase(vl);
	}else{
		vl = gf_LCase(vl,mode);
	}
	if(!gf_isNull(vl)){
		if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); ob.focus(); return false; }
		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------半角数
function gf_checkN(ob,ln,min,low,up){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(!gf_isNull(vl)){
		if(!gf_checkNum(vl)){ alert(cErr003); ob.focus(); return false; }
		if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); ob.focus(); return false; }
		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
		if(typeof(low)!="undefined"){
			if(gf_convertNumber(vl)<low){ alert(cErr028); ob.focus(); return false; }
		}
		if(typeof(up)!="undefined"){
			if(gf_convertNumber(vl)>up){ alert(cErr028); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------電話FAX番号
function gf_checkTelFax(ob,ln,min){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(!gf_isNull(vl)){
		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(!gf_checkTelephone(vl)){ alert(cErr009); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------2バイト文字
function gf_checkWord(ob,ln,min,mode){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(!gf_isNull(vl)){
		if(typeof(mode)!="undefined"){ vl = gf_LCase(vl,mode); }

		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------メールアドレス
function gf_checkEmail(ob,ln,min){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	vl = gf_LCase(vl);
	if(!gf_isNull(vl)){
		if(gf_LenB(vl)>ln){ alert(cErr006); ob.focus(); return false; }
		if(!gf_isEmail(vl)){ alert(cErr008); ob.focus(); return false; }
		if(typeof(min)!="undefined"){
			if(gf_LenB(vl)<min){ alert(cErr006); ob.focus(); return false; }
		}
	}
	ob.value = vl;

	return true;
}
//-------------------------------------------日付
function gf_checkDate(ob){
	var vl = ob.value;

	vl = gf_convertString(vl);
	vl = gf_Trim(vl);
	if(!gf_isNull(vl)){
		if(!gf_isDate(vl)){ alert(cErr007); ob.focus(); return false; }
	}
	ob.value = gf_formatDate(vl);

	return true;
}
//-------------------------------------------金額
function gf_checkPrice(ob,ln,low,up,mode){

	if(!gf_checkPriceSub(ob,ln,low,up,mode)){
		if(ob.type=="text") ob.focus();
		return false;
	}

	return true;
}

function gf_checkPriceSub(ob,ln,low,up,mode){

	var vl = ob.value;
	vl = gf_Trim(vl);

	if(!gf_isNull(vl)){
		vl = gf_LCase(vl);
		vl = gf_unconvertPrice(ob.value);
		vl = gf_convertString(vl);

		if(!gf_isNumeric(vl)){ alert(cErr003); return false; }
		if(gf_Len(vl)!=gf_LenB(vl,true)){ alert(cErr004); return false; }
		if(gf_LenB(vl)>ln){ alert(cErr006); return false; }
		if(typeof(low)!="undefined"){
			if(parseInt(vl)>=0 && parseInt(vl)<low){ alert(cErr023); return false; }
		}
		if(typeof(up)!="undefined"){
			if(parseInt(vl)>up){ alert(cErr023); return false; }
		}
		//1円以上必須にする(デフォルト)
		if(typeof(mode)=="undefined") mode = true;
		if(mode){
			if(parseInt(vl)<=0){ alert(cErr023); return false; }
		}
		ob.value = gf_convertPrice(vl);
	}
	
	return true;
}





//**************************************************************************************
////////////////////   指定サイズでウィンドウを開き、センターに表示   /////////////////////
//--------------------------------------------------------------------------------------
//	    gf_OpenNewWindow(URL,NAME,SIZE)
//		SIZEは、"width=800:height=600"のように入力してください
//**************************************************************************************
function gf_OpenNewWindow(pURL,pName,pSize){
var wWidth,wHeight;
var wSize,wFeatures;
var wLeft,wTop,PositionX,PositionY;

	wWidth = window.screen.availWidth/2;
	wHeight = window.screen.availHeight/2;
	wSize = pSize.split(":");
	wLeft = wSize[0].split("=");
	wTop = wSize[1].split("=");
	PositionX = wWidth-wLeft[1]/2;
	PositionY = wHeight-wTop[1]/2;
	
	wFeatures = wSize+",left="+PositionX+",top="+PositionY;
	wWindow = window.open(pURL,pName,wFeatures+",scrollbars=yes");

	wWindow.focus();

}


//**************************************************************************************
////////////////////          日付妥当性チェック                   /////////////////////
//**************************************************************************************
function gf_DateChk(str){
	var ymd, y, m, d;
	var objDate;

	ymd = str.split("/");
	y = parseInt(ymd[0],10);
	m = parseInt(ymd[1],10) - 1;
	d = parseInt(ymd[2],10);
	objDate = new Date(y,m,d);

	if(y!=objDate.getFullYear()) return false;
	if(m!=objDate.getMonth()) return false;
	if(d!=objDate.getDate()) return false;

	return true;
}

//***********************************
//        ブラウザチェック
//***********************************
function gf_bcheck(){
	if (document.all){
		Check1="document.all['";
		Check2="'].style";
		Check3="document.body.client";
	}else if (document.layers){
		Check1="document.layers['";
		Check2="']";
		Check3="inner";
	}else if (document.getElementById){
		Check1="document.getElementById('";
		Check2="').style";
		Check3="inner";
	}
}

//***********************************
//          レイヤー表示
//***********************************
function gf_showL(layerName){
	gf_bcheck();
	eval(Check1+layerName+Check2+'.visibility="visible"');
}

//***********************************
//          レイヤー隠匿
//***********************************
function gf_hideL(layerName){
	gf_bcheck();
	eval(Check1+layerName+Check2+'.visibility="hidden"');
}


