//define the javascript constant variable at first.
//define the datetime format
var DATETIME_FORMAT = "%Y/%m/%d";

var sFeather="dialogWidth:790px;dialogHeight:500px;Status:0;help:0;resizable=1";

var GRID_LINK_COL_BGCOLOR="#CCCCFF";

/**
*     var str = "  hello ";
*     str = str.trim();
*/
String.prototype.trim = function()
{
    return this.replace(/(^[\s]*)|([\s]*$)/g, "");
}
String.prototype.lTrim = function()
{
    return this.replace(/(^[\s]*)/g, "");
}
String.prototype.rTrim = function()
{
    return this.replace(/([\s]*$)/g, "");
}
String.prototype.replaceAll = function(search, replace){
	var regex = new RegExp(search, "g");
	return this.replace(regex, replace);
}


Array.prototype.indexOf = function(sElement) {
	var iIndex=-1;
	for (var i=0; i<this.length; i++) {
		if (this[i] == sElement) {
			iIndex = i;
			break;
		}
	}
	return iIndex;
}

function ClearIndexof(sArray) {
	sArray.indexOf = null;
}
//new end
function getOs()
{
   if(navigator.userAgent.indexOf("MSIE")>0)return 1;
   if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)return 2;
   if(isSafari=navigator.userAgent.indexOf("Safari")>0)return 3;   
   if(isCamino=navigator.userAgent.indexOf("Camino")>0)return 4;
   if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0)return 5;
   return 0;
}


var http_request = false;
var http_return  = true;
function send_request(sUrl,argValue,func) {
	send_request1(sUrl,argValue,func,false);
}

function send_request1(sUrl,argValue,func,isSync) {
	var now = new Date();
	
	http_request = false;
	sUrl = sUrl+"?"+encodeURI(argValue)+"&strNow="+now.toString();

	if (window.XMLHttpRequest) { 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) { 
			http_request.overrideMimeType("text/xml");
		}
	}
	else if (window.ActiveXObject) { 
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		
		return false;
	}
	if (getOs() == 2) { 
		http_request.onload = func;
	} 
	else
	{
		http_request.onreadystatechange = func;
	}
	http_request.open("GET", sUrl, isSync);
	http_request.send(null);
}

function setSelected(slt,sValue) {
	var str="";
	
	for (var i=0; i < slt.length; i++) {
		str = slt.options[i].value;
		if (str == sValue) {
			slt.options[i].selected = true;
			break;
		}
	}
}

function getLeftTop(iWidth,iHeight) {
	var sWidth = window.screen.width;
	var sHeight= window.screen.height;
	var sLeft  = (sWidth - iWidth)/2;
	var sTop   = (sHeight - iHeight)/2;
	
	return ",left="+sLeft+",top="+sTop;
}

function tranSpecialChar(str) {
	if (str=="") return "";

	str = str.replaceAll("&amp;" ,"&");
	str = str.replaceAll("&#039;","'");
	str = str.replaceAll("&quot;","\"");
	str = str.replaceAll("&lt;"  ,"<");
	str = str.replaceAll("&gt;"  ,">");
	str = str.replaceAll("&#92;" ,"\\");
	str = str.replaceAll("&#64;" ,"@");
	str = str.replaceAll("&#42;" ,"*");

	return str;
}


function calcUTFByte(str)
{
	var len=0;

	for (var i=0;i<str.length;i++)
	{
		if (str.charCodeAt(i)>255) 
			len+=3; //unicode is 3 bytes, chinese and japanese are 2 bytes;
		else 
			len++;
	}
	return len;
}


function checkIsInteger(str)
{
    if(str == "")
        return true;
    if(/^(\-?)(\d+)$/.test(str))
        return true;
    else
        return false;
}


function checkIsDouble(str)
{
    if(str == "")
        return true;
    if(str.indexOf(".") == -1)
    {
        if(checkIsInteger(str) == true)
            return true;
        else
            return false;
    }
    else
    {
        if(/^(\-?)(\d+)(.{1})(\d+)$/g.test(str))
            return true;
        else
            return false;
    }
}

function checkEmail(str)
{
    if(str == "")
        return true;
    if (str.charAt(0) == "." || str.charAt(0) == "@" || str.indexOf('@', 0) == -1
        || str.indexOf('.', 0) == -1 || str.lastIndexOf("@") == str.length-1 || str.lastIndexOf(".") == str.length-1)
        return false;
    else
        return true;
}



function checkDateFormat(obj,isShow,alertMesg) {
	var sYear="",sMonth="",sDay="";
	var iYear=0, iMonth=0, iDay=0;
	var sDate,newDate;

	if (obj==null || obj.value=="") {
		return true;
	} else
		sDate = obj.value;

	//split the "YYYYMMDD" and "YYMMDD" date to year,month,day.
	if ((sDate.length==8 || sDate.length==6) && sDate.indexOf("/") < 0) {
		sDay   = sDate.substr(sDate.length-2,2);
		sMonth = sDate.substr(sDate.length-4,2);
		sYear  = sDate.substring(0,sDate.length-4);
	} else if (sDate.length==10 && sDate.indexOf("/") > 0) {
		sYear  = sDate.substring(0,sDate.indexOf("/"));
		sMonth = sDate.substr(sDate.indexOf("/")+1,2);
		sDay   = sDate.substr(sDate.lastIndexOf("/")+1,2);
	} else {
		if (isShow) {


			alertNew(alertMesg,"1");
//bug 178 end
			obj.focus();
		}
		return false;
	}

	if ( (sYear=="" || sMonth=="" || sDay=="") || !(checkIsInteger(sYear) && checkIsInteger(sMonth) && checkIsInteger(sDay)) ) {
		if (isShow) {
////bug 178  Wangergai Aug 31 2006

			alertNew(alertMesg,"1");
//bug 178 end
			obj.focus();
		}
		return false;  //don't a valid date
	}
	if (sYear.length==2) {
		sYear = (parseInt(sYear,10)<50 ? "20"+sYear : "19"+sYear);  //the year > 2000 or year < 2000
	}
	iYear = parseInt(sYear,10);
	if (sMonth.indexOf("0")==0)	//the first char is "0"
		iMonth= parseInt(sMonth.substr(1,1),10) - 1;
	else 
		iMonth= parseInt(sMonth,10) - 1;
	if (sDay.indexOf("0")==0)
		iDay  = parseInt(sDay.substr(1,1),10);
	else
		iDay  = parseInt(sDay,10);	

	newDate = new Date(iYear,iMonth,iDay);
	if (newDate.getFullYear()==iYear && newDate.getMonth()==iMonth && newDate.getDate()==iDay) {
		obj.value = (sYear+"/"+sMonth+"/"+sDay);
		return true;
	} else {
		if (isShow) {
////bug 178  Wangergai Aug 31 2006

			alertNew(alertMesg,"1");
//bug 178 end
			obj.focus();
		}
		return false;	//don't a valid date
	}
}

/**特定のフォームのテキストフィールドの入力モードを切り替えるにはスタイルシートのimeModeプロパティに文字を代入します。
 * 以下の４つが設定できます。 切り替え後、日本語入力への切り替え不可。
 * @param  obj:输入框Text对象，比如frm.strUsername;
 * @param mode=0~3; 0:auto 自動; 1:active 日本語; 2:inactive 英語; 3:disabled 半角英数モードに
 */
function setIME(obj,mode) {
	var sType = ["auto","active","inactive","disabled"];
	//ex. document.myFORM.adrs.style.imeMode = sType[n];
	obj.style.imeMode = sType[mode];
}


function checkCharacter(mode,obj,isShow,alertMesg) {
	if (obj==null || obj.value=="") return true;
	var str = obj.value.trim();
	var sReg,sAlert;

	switch (mode) {
		case 0: {sReg = /[^ぁ-んァ-ン\s]+/; break;}
		case 1: {sReg = /[^ぁ-ん\s]+/;      break;}
		case 2: {sReg = /[^ァ-ンー　\s]+/;  break;}
		case 3: {sReg = /[^A-Za-z0-9]+/;    break;}
		case 4: {sReg = /[^A-Za-z ]+/;      break;}
		case 5: {sReg = /[^0-9]+/;          break;}
		case 6: {sReg = /[^\040-\176]+/;    break;}
		//case 6: {sReg = /[^\040-\176]+/;   break;}
		case 7: {sReg = /[^｡-ﾟー \s]+/;     break;}
		case 8: {sReg = /[\'|\"|\\]+/;   break;}
		default: return false;
	}
	if (str.match(sReg)) {
		if (isShow) {
////bug 178  Wangergai Aug 31 2006

			alertNew(alertMesg,"1");
//bug 178 end
			obj.focus();
		}
		return false;
	} else {
		return true;
	}
}

function getCurrencyFormat(sMark,iCurrency,iDec) {
	if (iCurrency=="" || iCurrency==0 || !checkIsDouble(iCurrency+"")) {
		return (sMark+"0");
	}

	var sCur = "";
	var sTmp = "";
	var sFloat = "";
	iDec = (iDec==""||isNaN(parseInt(iDec,10)) ? 0 : parseInt(iDec,10));

	iCurrency = Math.round(parseFloat(iCurrency)*Math.pow(10,iDec))/Math.pow(10,iDec) + "";
	if (iCurrency.substr(0,1)=="-") {
		sMark = sMark+"-"; 
		iCurrency = iCurrency.replace("-","");
	}
	if (iCurrency.indexOf(".") >=0) { 
		sTmp   = iCurrency+"00000000";
		sFloat = sTmp.substring(sTmp.indexOf("."),sTmp.indexOf(".")+iDec+1);
		iCurrency = iCurrency.substring(0,iCurrency.indexOf("."));
	} else {
		sTmp   = ".00000000";
		sFloat = sTmp.substring(0,iDec+1);
	}
	sTmp = "";
	while (iCurrency.length > 3) {
		sTmp = iCurrency.substring(iCurrency.length - 3, iCurrency.length);
		iCurrency = iCurrency.substring(0,iCurrency.length - 3);
		if (sCur == "")
			sCur = sTmp;
		else
			sCur = sTmp + "," + sCur;
	}
	if (iCurrency != "") {
		if (sCur == "")
			sCur = iCurrency;
		else
			sCur = iCurrency + "," + sCur;
	}

	return (sMark+sCur)+(iDec<=0?"":sFloat);
}


function checkMixEngNum(obj)
{
	var sText = obj.value;
	var aNum  = new Array('0','1','2','3','4','5','6','7','8','9');
	var aEng  = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T',
	                      'U','V','W','X','Y','Z');
	
	var engFlag = false;
	var numFlag = false;
	
	var len = sText.length;
	
	for (var i=0;i< len;i++)
	{
		var flag = false;
		
		for (var j=0;j< aNum.length;j++)
		{
			if (sText.charAt(i) == aNum[j])
			{
				flag = true;
				break;
			}
		}		
		
		if (flag)
		{
			numFlag = true;
			break;
		}
	}
	
	for (var i=0;i< len;i++)
	{
		var flag = false;
		
		for (var j=0;j< aEng.length;j++)
		{
			if (sText.charAt(i).toUpperCase() == aEng[j])
			{
				flag = true;
				break;
			}
		}
		
		if (flag)
		{
			engFlag = true;
			break;
		}
	}

	if (numFlag && engFlag)
		return true;
	else
		return false;
}


function setCurrencyFormat(sCurrency) {
	var sTemp = sCurrency;
	var sCur="",ss="";

	sTemp = sTemp.replace(",","");
	for (var i=0; i<sTemp.length; i++) {
		ss = sTemp.substr(i,1);
		if (ss>="0" && ss<="9" || ss=="." || ss=="-") sCur += ss;
	}

	return sCur;
}


function setComboxSelected(obj,sIndex) {
	if (sIndex > obj.ListCount-1) 
		obj.ListIndex = obj.ListCount - 1;
	else if (sIndex < 0) 
		obj.ListIndex = 0;
	else
		obj.ListIndex = sIndex;
}

function checkComboxTextValid(obj,aCombo) {
	var txt = obj.Text;
	var flag=false;

	if (txt.indexOf(" ") > 0) {
		txt = txt.substring(0,txt.indexOf(" "));
	}
	for (var i=0; i<aCombo.length; i++) {
		if (txt == aCombo[i][0]) flag = true;
	}
	return flag;
}

function toggle_expand(anchor,id)
{
	var info;
	if (document.all)
		info = document.all.item(id);
	else if (document.getElementById)
		info = document.getElementById(id);
	else
		return false;

	if (info.style.display == "block") {
		info.style.display = "none";
		anchor.innerText = anchor.innerText.replace("▲","▼");
	} else if (info.style.display == "none") {
		info.style.display = "block";
		anchor.innerText = anchor.innerText.replace("▼","▲");
	}
}
function toggle_expand_close(anchor,id)
{
	var info;
	if (document.all)
		info = document.all.item(id);
	else if (document.getElementById)
		info = document.getElementById(id);
	else
		return false;
	info.style.display = "none";
	anchor.innerText = anchor.innerText.replace("▲","▼");
}
function toggle_expand_open(anchor,id)
{
	var info;
	if (document.all)
		info = document.all.item(id);
	else if (document.getElementById)
		info = document.getElementById(id);
	else
		return false;
	info.style.display = "block";
	anchor.innerText = anchor.innerText.replace("▲","▼");
}


//BackSpaceキー押下防止 
window.document.onkeydown=onKeyDown; 
//BackSpaceキー押下防止 
function onKeyDown(e) { 
    if (navigator.appName == "Microsoft Internet Explorer") { 
        //ALT＋←ダメ 
        if( event.keyCode == 0x25 && event.altKey == true ) { 
            //alert("ALT＋←はダメ！"); 
            return false ; 
        } 
        //テキストボックス、パスワードボックスは許す 
        for (i = 0; i < document.all.tags("INPUT").length; i++) { 
            if (document.all.tags("INPUT")(i).name == window.event.srcElement.name && 
                (document.all.tags("INPUT")(i).type == "text" || document.all.tags("INPUT")(i).type == "password") && 
                 document.all.tags("INPUT")(i).readOnly == false){ 
                return true; 
            } 
        } 
        //テキストエリアは許す 
        for (i = 0; i < document.all.tags("TEXTAREA").length; i++) { 
            if (document.all.tags("TEXTAREA")(i).name == window.event.srcElement.name && 
                document.all.tags("TEXTAREA")(i).readOnly == false){ 
                return true; 
            } 
        } 
        //BackSpaceダメ 
        if( event.keyCode == 8 ) { 
            //alert("BackSpaseはダメ！"); 
            return false ; 
        } 
　    } else 
　        if (navigator.appName == "Netscape") { 
　            if (e.which == 8) { 
　　            return false; 
　　        } 
    } 
} 

///////////////// from skyware check.js file///////////////////////////
/**数字項目に数字が入力されているか
 * @param obj:検査したいオブジェクト
 * @param posotion:エラーメッセージ（の前半）

 * @param mode1: 1:頭の０を認めない   0:頭の０を認める   -1:小数は認める
 * @param mode2: 1:ヌルを認めない     0:ヌルを認める
 * @param mode3: 1:alertを出す        0:alertを出さない（ねすけ対策）
 */
function CheckNaN(obj,mode1,mode2,mode3,position) {

	mode1=eval(mode1);
	mode2=eval(mode2);

	chknum = obj.value;

	//ヌルかどうか
	if (chknum=='' && mode2==1) {
		if (mode3==1) {
			alert(position+'を入力してください');
		}
		return false;
	}

	//数字かどうか
	if (chknum.match(/E/i)){
		if (mode3==1) {
			alert(position+'は半角数字を入力してください。');
		}
		return false;
	}
	if (isFinite(chknum)!= true) {
		if (mode3==1) {
			alert(position+'は半角数字を入力してください。');
		}
		return false;
	}

	//スペースがまじってるかどうか
	chksp = obj.value;
	vlength = chksp.length;
	for (i = 0;i < vlength ; i++){
		if(chksp.charAt(i) == " " || chksp.charAt(i) == "　"){
			if (mode3==1) {
				alert(position+'にスペースは入力できません。');
			}
			return false;
		}

	}

	//先頭にゼロが入っているかどうか
	chksp = obj.value;
	if ( chksp.length > 1 && chksp.substr(0,1) == "0"  && mode1==1 ){
		if (mode3==1) {
			alert(position+'の数字の先頭にゼロは指定できません。');
		}
		return false;
	}
	
	//小数かどうか
	chksp = obj.value;
	if ( chksp.length > 1 && chksp.substr(0,1) == "0" && mode1==-1){
		if (chksp.substr(1,1) != "."){
			if (mode3==1) {
				alert('先頭が0の場合は、小数のみ入力可能です。');
			}
			return false;
		}
	}

	return true;
}

/** 数字項目に数字が入力されているか（その２）
 *違い：値を希望する値に戻せる、メッセージの種類を選べる。
 *注意：空に返したいときは、rvalに"non"を持たせる。
 * @param obj:検査したいオブジェクト（フォーム自体でもってくる）
 * @param rval:戻る値
 * @param posotion:エラーメッセージ（の前半）

 * @param mode1: 1:頭の０を認めない   0:頭の０を認める                2:メッセージも出す
                -1:頭の０を認めないが０．は認める                    -2:メッセージも出す
 * @param mode2: 1:ヌルを認めない     0:ヌルを認める                  2:メッセージも出す
 * @param mode4: 1:負の値を認めない   0:負の値を認める                2:メッセージも出す
 */
function CheckNaN2(obj,rval,mode1,mode2,mode4,position){
	
	var mode3;
	var chksp;
	chksp=obj.value;
	
	//数値がイリーガル
	if(mode4 >= 1){
		//if (obj.value < 0){
		if ( chksp.length > 1 && chksp.substr(0,1) == "-"){
			if(mode4 == 2){ alert(position + 'は正の値を入力してください。'); }
				if(rval == 'non'){
					obj.value="";
				} else {
					obj.value=rval;
				}
				return false;
		} else {
			if(!CheckNaN(obj,0,0,1,position)){
				if(rval == 'non'){
					obj.value="";
				} else {
					obj.value=rval;
				}
				return false;
			}
		}
	}
	
	if (mode1 >=1){
		if(mode1 == 2){ mode3=1; } else { mode3=0; }
		if (!CheckNaN(obj,1,0,mode3,position)) {
			if(rval == 'non'){
				obj.value="";
			} else {
				obj.value=rval;
			}
			return false;
		}
	}
	
	if (mode1 <0){
		if(mode1 ==-2){ mode3=1; } else {mode3=0; }
		if (!CheckNaN(obj,-1,0,mode3,position)) {
			if(rval == 'non'){
				obj.value="";
			} else {
				obj.value=rval;
			}
			return false;
		}
	}
	
	if (mode2 >=1){
		if(mode2 == 2){ mode3=1; } else { mode3=0; }
		if (!CheckNaN(obj,0,1,mode3,position)) {
			if(rval == 'non'){
				obj.value="";
			} else {
				obj.value=rval;
			}
			return false;
		}
	}

	return true;
}
/**日付の入力が正しいかどうかチェック
 * @param year  :年
 * @param month :月
 * @param day   :日
 * @param position:エラーメッセージの前半
 * @return true  日付がただしい, false 日付が正しくない
 */
function CheckDate(year,mon,day,position) {


	//オールヌルのみ許可
	if (year=="" && mon=="" && day==""){
		return true;
	}

	if     (isNaN(year)  == true ||
		isNaN(mon)   == true ||
		isNaN(day)   == true) {
		 	alert(position+'は半角数字を入力してください。');
		 	return false;
	}

	if (year=="") {
		year=0;
	}

	if (mon=="") {
		mon=0;
	}

	if (day=="") {
		day=0;
	}

	year = eval(year);
	mon  = eval(mon);
	day  = eval(day);


	if((mon < 1) || (mon > 12)){
		alert(position+'の入力に誤りがあります');
		return false;
	}

	A_mon = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	if (isUruu(year)) {
		A_mon[2] = 29;
	}

	n = eval(mon);
	max=eval(A_mon[n]);


	if (day < 1 || day > A_mon[n]){
		alert(position+'の入力に誤りがあります。');
		return false;
	}

	return true;
}

//
// 注意
//    OnBlueイベントでこの関数を呼ぶとNetscapeで無限ループに
//    なる場合があるので、OnClick等で呼ばねばならない。
/** 指定年が閏年か？
 * @param year:調べたい年
 * @return true  閏年, false 閏年ではない
 */
function isUruu(year) {

	//閏年ではない
	uruu_flg=0;

	//４で割れる年は閏年
	if (year%4==0) {
		uruu_flg=1;
	}

	//１００で割れる年は閏年ではない
	if (year%100==0) {
		uruu_flg=0;
	}

	//４００で割れる年は閏年ではない年ではない
	if (year%400==0) {
		uruu_flg=1;
	}

	if (uruu_flg==1) {
		return true;
	}

	return false;

}
/**
 * 有効な整数値データ(Intデータ)かチェック
 * @param in: dat(文字列)	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckIntNum(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	
	//整数値データかチェック
	
	//strPattern = "^(([+]?|[-]?)[0-9]+)?$"
	strPattern = "^(([+]?|[-]?)[0-9]+)?$"
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}

}

/**有効な数値データ(floatデータ)かチェック
 * @param in: dat(文字列)	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckFloatNum(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	
	//整数値データかチェック
	
	strPattern = "^(([+]?|[-]?)[0-9]+([.][0-9]+)?)?$"
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}

/**小数値のフォーマットチェック
 *@param in: dat(文字列)	判定する文字列
 *      digInt(整数)	整数部桁数(1～)	
 *      digDec(整数)小数部桁数(1～)
 * @return true 有効 or false 無効
 */
function CheckFloatNumFormat(dat, digInt, digDec){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	
	//整数値データかチェック
	
	strPattern = "^(([+]?|[-]?)[0-9]{1," + digInt + "}([.][0-9]{1," + digDec + "})?)?$"
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}

/**
 * 半角文字列データ(Ascii文字)かチェック
 * @param in: dat(文字列)	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckAsciiStr(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	
	//半角文字列データかチェック
	
	//strPattern = "^([+]?|[-]?)[0-9]+$"
	strPattern = "^[\\040-\\176]*$"		//0x21から0x7e(" " ～ "~")
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}
/**有効な郵便番号データかチェック
 * @param in: dat	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckZipCode(dat){
	var strText;
	var strPattern;
	var aryResult;
	if(dat=="")
		return true;
	strText = new String(dat);
	//strPattern = "^[0-9]{3}[-]?([0-9]{4})?$"
	strPattern = "^[0-9]{3}"+"[-]?"+"([0-9]{4})$";
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}
/**数値データの範囲内チェック
 * @param in: num(数値)	判定する数値データ
 *      from(数値)	範囲開始値(ifrom引数のみ省略時は-∞)
 *      till(数値) 範囲終了値(itill引数のみ省略可は+∞)
 * @return true 有効 or false 無効
 */
function CheckNumRange(num, from, till){
	//範囲チェック
	
	if(num === void(0) || (from === void(0) && till === void(0)))
		return false;
	
	if(from === void(0) || from == "")
		from = Number.NEGATIVE_INFINITY;
	else
		from = parseInt(from,10);
			
	if(till === void(0) || till == "")
		till = Number.POSITIVE_INFINITY;	
	else
		till = parseInt(till,10);
	
		
	if(isNaN(from) || isNaN(till))
		return false;
	else{
		num = num - 0;
		if(from <= num && num <= till)
			return true;
		else
			return false;	
	}
	return true;
}

/** 有効な電話・FAX番号かチェック
 * @param in: dat	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckTelNo(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	strPattern = "^[0-9]{2}"+"[-]{1}"+"[0-9]{4}"+"[-]{1}"+"([0-9]{4})$";
		// 
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}

function CheckTelNumber(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	strPattern = "^[0-9]{4}"+"[-]{1}"+"[0-9]{2}"+"[-]{1}"+"([0-9]{4})$";
		// 
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}

/**yuwei 
有効な携帯電話番号かチェック
 * @param in: dat	判定する文字列
 * @return true 有効 or false 無効
 */
function CheckCellphoneNo(dat){
	var strText;
	var strPattern;
	var aryResult;
	
	strText = new String(dat);
	strPattern = "^[0-9]{3}"+"[-]{1}"+"[0-9]{4}"+"[-]{1}"+"([0-9]{4})$";
		// 
	aryResult = strText.match(strPattern);
	if(aryResult == null)
		return false;
	else{
		return true;
	}
}


/** 文字列長チェック
 * @param in: form	フォームオブジェクト
 * @param max maxlengthで指定された文字数上限
 * @param ie  ブラウザフラグ :IEなら1、それ以外0(null?)
 * @param title	アラート表示用（「title」は何文字以内…と表示）
 * @return true 有効 or false 無効
 */
function CheckLength(form,max,ie,title){

	var leng;
	var moji;
	
	moji = form.value;
	leng = moji.length;
	
	if(ie!=1){
		max = max / 2;
	}

	if(leng > max){
		moji = moji.slice(0,max);
		alert(title+'は全角、半角にかかわらず\n'+max+'文字以内で入力してください。');
		form.value=moji;
		false;
		
	} else {
		return true;
	}
}

/** 桁数チェック(CheckNaNとの併用推奨)
 * @param obj         : フォームオブジェクト
 * @param int_fig_max : 整数部分桁数制限
 * @param dec_fig_max : 小数部分桁数制限
 * @param position    : コメント用
 * @param mode        : 処理、1:コメントを出して、値を初期化 0:何もしない（true,falseを返すだけ）。
 */
function CheckFig(obj,rval,int_fig,dec_fig,position,mode){
	
	var chksp;
	var int_part;
	var dec_part;

	chksp = obj.value;
	chksp = chksp.split(".");
	
	if (chksp.length > 0){
		
		//負のとき
		eval(chksp[0]);
		if(chksp[0]<0){
			int_fig++;
		}
		
		int_part = chksp[0].length;
		if(int_part && int_part > int_fig){
			if(mode == 1){
				alert(position+'は、整数'+int_fig+'桁、'+'小数'+dec_fig+'桁までで入力してください。');
				if(rval == 'non'){
					obj.value = "";
				} else {
					obj.value = rval;
				}
			}
			return false;
		}
		
		if(chksp[1]){
			dec_part = chksp[1].length;

			if(dec_part && dec_part >dec_fig){
				if(mode == 1){
					alert(position+'は、整数'+int_fig+'桁、'+'小数'+dec_fig+'桁までで入力してください。');
					if(rval == 'non'){
						obj.value = "";
					} else {
						obj.value = rval;
					}
				}
				return false;
			} 
		}
		
	} else {
		//checkNaN(2含む)と併用すれば、ここにはこない。
		return false;
	}
	return true;
}

////bug 44  wugw Jun. 13 2006
/*sCur  currency value
 *sInt  integer length
 *sDec  decimal length
 */
function checkCurrency(sCur,sInt,sDec){
	if (sCur=="") return "0";
	if (sDec==""||isNaN(parseInt(sDec,10))) sDec="4";
	var sOrder = "^(([-]?)[0-9]{1,"+sInt+"}([.][0-9]{0,"+sDec+"})?)?$";
	var iDec = parseInt(sDec,10);
	var iCur = Math.round(parseFloat(sCur)*Math.pow(10,iDec))/Math.pow(10,iDec) + "";
	if (iCur.match(sOrder)) {
		return iCur;
	} else {
		return false;
	}
}

/*
param str    
param mode   1，alert  2，confirm
*/
function alertNew(str,mode){
 	
	str = str.replaceAll("&amp;" ,"&");
	str = str.replaceAll("&#039;","\'");
	str = str.replaceAll("&quot;","\"");
	str = str.replaceAll("&lt;"  ,"<");
	str = str.replaceAll("&gt;"  ,">");
	str = str.replaceAll("&#92;" ,"\\");
	str = str.replaceAll("&#64;" ,"@");
	str = str.replaceAll("&#42;" ,"*");
	str = str.replaceAll("<br/>" ,"\n");
	if (mode == "1")	
		return alert(str);
	else if (mode == "2")
		return confirm(str);
}


//new end
////bug 197   Xueyy SEP 26

function 	fn_getSysTime(){
		var d,s = "";
		d = new Date();		
		s += format_str(d.getYear(),4);
		s += format_str((d.getMonth()+1),2);
		s += format_str(d.getDate(),2);
		s += format_str(d.getHours(),2);
		s += format_str(d.getMinutes(),2);
		s += format_str(d.getSeconds(),2);
		s += format_str(d.getMilliseconds(),2);	
		s += Math.random().toString().substr(2,3);
		return(s);
}

function format_str(str,del){
	var P_tmp ="";
	for (var i=0;i<del;i++){
		P_tmp += "0";
	}
	var s_tmp = P_tmp+str;
	str = s_tmp.substr(str.toString().length,del);
	return(str);
}

function fn_AddReportURL(rad,fix){
	var str="";
	if(rad == false && fix == "")
		return(str);
	str="?";
	if (rad == true)
		str += "strNow="+fn_getSysTime();
	str += fix;
	return(str);
}
//bug 197 end

function mailmaskEdit(str)
{
    var sTemp = str;
	var sMask= 0;
	var url = location.href.toLowerCase();
	var flg = url.indexOf("maintenance"); 
	if(flg == -1)
	{
		for (var i=0; i<sTemp.length; i++) {
			ss = sTemp.substr(i,1);
		    if  ( ss=="'"
		       || ss=="," 
			   || ss=="<" 
			   || ss==">" 
			   || ss=="\"" 
			   || ss=="\\" 
			   || ss=="*" 
			   || ss=="%" 
			   || ss=="&"  
			   || ss=="|"
			   ) 
			   sMask++;
		}
	}
    if(sMask <= 0)
    {
    
        return true;
    }
    else
    {
         return false;
	}
}


function mailrepalceMask(obj)
{
	var sTemp = obj.value;
	var sMask="",ss="";
	var url = location.href.toLowerCase();
	var flg = url.indexOf("maintenance"); 
	if(flg == -1)
	{
		for (var i=0; i<sTemp.length; i++) {
			ss = sTemp.substr(i,1);
		    if  ( ss!="'"
		       && ss!="," 
			   && ss!="<" 
			   && ss!=">" 
			   && ss!="\"" 
			   && ss!="\\" 
			   && ss!="*" 
			   && ss!="%" 
			   && ss!="&"  
			   && ss!="|"
			   ) 
			   sMask += ss;
		}
	}
	else
	{
		sMask = sTemp;
	}
	obj.value = sMask;
}


function maskEdit(str)
{
    var sTemp = str;
	var sMask= 0;
	var url = location.href.toLowerCase();
	var flg = url.indexOf("maintenance"); 
	if(flg == -1)
	{
		for (var i=0; i<sTemp.length; i++) {
			ss = sTemp.substr(i,1);
		    if  ( ss=="'"
		       || ss=="," 
			   || ss=="<" 
			   || ss==">" 
			   || ss=="\"" 
			   || ss=="\\" 
			   || ss=="*" 
			   || ss=="." 
			   || ss=="%" 
			   || ss=="&"  
			   || ss=="@"
			   || ss=="|"
			   ) 
			   sMask++;
		}
	}
     //pattern=/^(?:[\u4e00-\u9fa5]*\w*\s*)+$/;

    //if(pattern.test(str))
    if(sMask <= 0)
    {
    
        return true;
    }
    else
    {
         return false;
    }

//     event.returnValue = pattern.test(num);

}

function repalceMask(obj)
{
	var sTemp = obj.value;
	var sMask="",ss="";
	var url = location.href.toLowerCase();
	var flg = url.indexOf("maintenance"); 
	if(flg == -1)
	{
		for (var i=0; i<sTemp.length; i++) {
			ss = sTemp.substr(i,1);
		    if  ( ss!="'"
		       && ss!="," 
			   && ss!="<" 
			   && ss!=">" 
			   && ss!="\"" 
			   && ss!="\\" 
			   && ss!="*" 
			   && ss!="." 
			   && ss!="%" 
			   && ss!="&"  
			   && ss!="@"
			   && ss!="|"
			   ) 
			   sMask += ss;
		}
	}
	else
	{
			sMask = sTemp;
	}
	obj.value = sMask;
}


function GetFocus(ControlID)
{
	var Control=document.getElementById(ControlID);
	Control.focus();
}

/*
 *submit onclick get gocus 
 *e window.event
 *btnID button name
*/
function KeyDown(e,btnID)
{
   var ev = window.event|| e;
   if(ev.keyCode==13)
   {
      document.getElementById(btnID).click();
   }
}