// === Copyright (C) 2001	Ryuji Oyama. All rights reserved. ===

var preMsg = '';
var debugMode = false;
//var System = java.lang.System;

// デバグモード
function setDebugMode(mode) { debugMode = mode; }
// メッセージの表示
function ShowMsg(msg) { alert(preMsg+msg); }
// デバグ情報の表示
function debug(msg)
{
// if ( debugMode ) java.lang.System.out.println(msg);
// if ( debugMode ) alert(msg);
}

// 先頭に付加するメッセージの管理
function clearMsg() { preMsg = ''; }
function addMsg(msg) { preMsg = msg; }

// 入力項目のデータチェック
function CheckData(form,dlist)
{
	var status = true;
	var focusFlg = true;

	// データ値の前後の空白を取り除く
	for (var i=0;i<form.elements.length;i++)
	{
		if (form.elements[i].type == 'text' || form.elements[i].type == 'password' || form.elements[i].type == 'textarea' )
		{
			if(form.elements[i].name != 'NAIRE_COMPANY'&&form.elements[i].name != 'NAIRE_POSITION'
			&&form.elements[i].name != 'NAIRE'&&form.elements[i].name != 'NAIRE2'
			&&form.elements[i].name != 'NAIRE3' )
			{
				RemoveSpace(form,form.elements[i].name)
			}
		}
	}

	for ( var i=0 ; i<dlist.length ; i++ ) {
		// 配列値の取得
		var pName= dlist[i][0];
		var item = dlist[i][1];
		var cMode= dlist[i][2];
		var arg = ( dlist[i].length == 4 ) ? dlist[i][3] : null;
// debug("pName : " + pName + " , item : " + item);
		// データ値の前後の空白を取り除く
		for ( var j=0 ; j<cMode.length ; j++ ) {
			 var ch=cMode.charAt(j);
// debug("Mode : " + ch );
			switch (ch) {
				//Char:V,W is avaible;
				case 'I' : // 必須入力チェック
						status = CheckInput(form,pName,item);
						break;
				//文字数制限を超えています。１０文字以内で再度入力してください.
				case 'X' :

						if ( arg == null ) {
							ShowMsg( '['+item+']に桁数の設定がありません。');
							return(false);
						}
						
						status = CheckLengthX(form,pName,item,arg);
						break;
				case 'L' : // 文字列長チェック
						if ( arg == null ) {
							ShowMsg( '['+item+']に桁数の設定がありません。');
							return(false);
						}
						
						status = CheckLength(form,pName,item,arg);
						break;
                case 'V' : // 文字列長<minチェック
						if ( arg == null ) {
							ShowMsg( '['+item+']に桁数の設定がありません。');
							return(false);
						}
						status = CheckLengthLimit(form,pName,item,arg);
						break;
				case '4' : // 文字列長<minチェック
						if ( arg == null ) {
							ShowMsg( '['+item+']に桁数の設定がありません。');
							return(false);
						}
						status = CheckLengthMaxMin(form,pName,item,arg);
						break;
				case 'N' : // 数値チェック
						if ( arg == null ) {
							ShowMsg( '['+item+']に数値範囲の設定がありません。');
							return(false);
						}
						var range	= arg.split(';');
						var rlen = range.length;
						if ( rlen<=1 || rlen>=4 ) {
							ShowMsg( '['+item+']の指定が不正です。');
							return(false);
						}
						var min=range[0];
						var max=range[1];
						var scale = ( rlen == 3 ) ? range[2] : 0;
						status = ( CheckNumString(form,pName,item)&&CheckScale(form,pName,item,scale) &&
									CheckRange(form,pName,item,min,max) ) ?
									true : false ;
						break;
				case '3' : // 数値チェック
						if ( arg == null ) {
							ShowMsg( '['+item+']に数値範囲の設定がありません。');
							return(false);
						}
						var range	= arg.split(';');
						var rlen = range.length;
						if ( rlen<=1 || rlen>=4 ) {
							ShowMsg( '['+item+']の指定が不正です。');
							return(false);
						}
						var min=range[0];
						var max=range[1];
						var scale = ( rlen == 3 ) ? range[2] : 0;
						status = ( CheckNumString1(form,pName,item)&&CheckScale1(form,pName,item,scale) &&
									CheckRange1(form,pName,item,min,max) ) ?
									true : false ;
						break;
				case 'A' : // 英字チェック
						status = CheckAlpha(form,pName,item);   break;
				case 'Q' : // 英数字チェック
						status = CheckAlNum(form,pName,item);   break;
				case '1' : // 半角チェック
						status = Check1Byte(form,pName,item);   break;
				case '2' : // 全角チェック
						status = Check2Byte(form,pName,item);   break;
                case 'W' : // ファイルチェック
					    status = CheckFile(form,pName,item,arg);    break;
				//===Add by liaoyl 2005-8-4===
                case 'K' : // 半角カナチェック
					    status = CheckKana(form,pName,item);    break;
                case 'U' : // 全角カナチェック
					    status = CheckDKana(form,pName,item);    break;
                case 'S' : // 全角かなチェック
					    status = CheckHKana(form,pName,item);    break;
			
				//===Add end;
				case 'T' : // TEL,FAXチェック
						var tmpTelFax;
						
						if(arg != null)
						{
							if((trim(form.elements[pName + '1'].value)=='')&&(trim(form.elements[pName + '2'].value)=='')&&(trim(form.elements[pName + '3'].value)==''))
							{
								
									ShowMsg( '['+item+']を入力してください。');
        								pName = pName + '1';
        								status = false;
        								break;
							}
						}
						tmpTelFax = trim(form.elements[pName + '1'].value);
						if(!isDigitString(tmpTelFax))
						{
							ShowMsg('['+item+']は半角数字でご入力ください');
							pName = pName + '1';
							status = false;
							break
						}
						/*if ((item.substring(0, 4) == '電話番号') && tmpTelFax.length>5)
						{
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '1';
							status = false;
							break;
						}*/
						if(tmpTelFax.length>5)
						{
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '1';
							status = false;
							break;
						}
						tmpTelFax = trim(form.elements[pName + '2'].value);
						if(!isDigitString(tmpTelFax))
						{
							ShowMsg('['+item+']は半角数字でご入力ください');
							pName = pName + '2';
							status = false;
							break
						}
						//update by liaoyl;
						//tel2 is 6 bit;
						if(tmpTelFax.length>4)
						{							
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '2';
							status = false;
							break;
						}
						tmpTelFax = trim(form.elements[pName + '3'].value);
						if(!isDigitString(tmpTelFax))
						{
							ShowMsg('['+item+']は半角数字でご入力ください');
							pName = pName + '3';
							status = false;
							break
						}
						if(tmpTelFax.length>4)
						{
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '3';
							status = false;
							break;
						}
						/*
						tmpTelFax = trim(form.elements[pName + '1'].value) + trim(form.elements[pName + '2'].value) + trim(form.elements[pName + '3'].value);
						if(tmpTelFax.length >10)
						{
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '1';
							status = false;
							break;
						}
						*/
						/* add 2003/07/07*/
						var strTelFax1 = "";
						var strTelFax2 = "";
						var strTelFax3 = "";
						strTelFax1 = trim(form.elements[pName + '1'].value);
						strTelFax2 = trim(form.elements[pName + '2'].value);
						strTelFax3 = trim(form.elements[pName + '3'].value);
						if((strTelFax1.length==0)&&(strTelFax2.length==0)&&(strTelFax3.length==0))					
						{
						}
						else if((strTelFax1.length==0)||(strTelFax2.length==0)|| (strTelFax3.length == 0))
						{
							if(strTelFax1.length==0)
							{
								if (item.substring(0, 4) == '電話番号')
								{
									ShowMsg('電話番号(市外局番)を入力してください。');
								}
								else if (item.substring(0, 2) == '日中')
								{
									ShowMsg('日中ご連絡先 電話番号(市外局番)を入力してください。');
								}
								else
								{
									ShowMsg('FAX番号(市外局番)を入力してください。');
								}
								pName = pName + '1';
								status = false;
								break;
							}
							else if(strTelFax2.length==0)
							{
								if (item.substring(0, 4) == '電話番号')
								{
									ShowMsg('電話番号(市内局番)を入力してください。');
								}
								else if (item.substring(0, 2) == '日中')
								{
									ShowMsg('日中ご連絡先 電話番号(市内局番)を入力してください。');
								}
								else
								{
									ShowMsg('FAX番号(市内局番)を入力してください。');
								}
								pName = pName + '2';
								status = false;
								break;
							}
							else if(strTelFax3.length==0)
							{
								if (item.substring(0, 4) == '電話番号')
								{
									ShowMsg('電話番号(下４桁)を入力してください。');
								}
								else if (item.substring(0, 2) == '日中')
								{
									ShowMsg('日中ご連絡先 電話番号(下４桁)を入力してください。');
								}
								else
								{
									ShowMsg('FAX番号(下４桁)を入力してください。');
								}
								pName = pName + '3';
								status = false;
								break;
							}
						}
						/*else if ((item.substring(0, 4) == '電話番号') && (strTelFax2.length == 0))
						{
							ShowMsg('['+item+']の２番目入力欄に値を入力してください。');
							pName = pName + '2';
							status = false;
							break;
						}*/
						else if ((strTelFax1.length !=0)&&(strTelFax2.length !=0)&&(strTelFax3.length !=0))
						{
							if ((strTelFax1.length + strTelFax2.length + strTelFax3.length) > 11)
							{
								ShowMsg('['+item+']の最大桁数を超えています。');
								
								pName = pName + '1';
								status = false;
								break;
							}
						}
						/* add end 2003/07/07*/
						/*

						tmpTelFax = trim(form.elements[pName + '1'].value);
						if(!isDigitString(tmpTelFax))
						{
							setTELFAX(form,pName);
							ShowMsg('['+item+']の指定が不正です。');
							pName = pName + '1';
							status = false;
							break
						}
						tmpTelFax = trim(form.elements[pName + '2'].value);
						if(!isDigitString(tmpTelFax))
						{
							setTELFAX(form,pName);
							ShowMsg('['+item+']の指定が不正です。');
							pName = pName + '2';
							status = false;
							break
						}
						tmpTelFax = trim(form.elements[pName + '3'].value);
						if(!isDigitString(tmpTelFax))
						{
							setTELFAX(form,pName);
							ShowMsg('['+item+']の指定が不正です。');
							pName = pName + '3';
							status = false;
							break
						}
						tmpTelFax = trim(form.elements[pName + '1'].value) + trim(form.elements[pName + '2'].value) + trim(form.elements[pName + '3'].value);
						if(tmpTelFax.length >10)
						{
							setTELFAX(form,pName);
							ShowMsg('['+item+']の文字列最大桁数を超えています。');
							pName = pName + '1';
							status = false;
							break;
						}

						tmpTelFax = trim(form.elements[pName + '1'].value);
						if(tmpTelFax.length != 0)
						{
							tmpTelFax = trim(form.elements[pName + '2'].value);
							if(tmpTelFax.length == 0)
							{
								setTELFAX(form,pName);
								ShowMsg('['+item+']の２番目入力欄に値を入力してください。');
								pName = pName + '2';
								status = false;
								break;
							}
						}
						else
						{

							tmpTelFax = trim(form.elements[pName + '2'].value);
							if(tmpTelFax.length != 0)
							{
								setTELFAX(form,pName);
								ShowMsg('['+item+']の１番目入力欄に値を入力してください。');
								pName = pName + '1';
								status = false;
								break;
							}
							tmpTelFax = trim(form.elements[pName + '3'].v2005/08/11alue);
							if(tmpTelFax.length != 0)
							{
								setTELFAX(form,pName);
								ShowMsg('['+item+']の１番目入力欄に値を入力してください。');
								pName = pName + '1';
								status = false;
								break;
							}
						}
						status = CheckTEL(form,pName,item);
						if(status)
						{
							tmpTelFax = trim(form.elements[pName + '1'].value) + trim(form.elements[pName + '2'].value) + trim(form.elements[pName + '3'].value);
							if(isAllChar('0',tmpTelFax))
							{
								setTELFAX(form,pName);
								ShowMsg('['+item+']の指定が不正です。');
								pName = pName+ '1';
								status = false;
								break;
							}
						}
						*/
						setTELFAX(form,pName);
						pName = pName + "1";
						break;
				case 'Z' : // 郵便番号チェック
						var tmpPNam;
						setZipCode(form,pName);
						if(arg != null)
						{
							if((trim(form.elements[pName + '1'].value)=='')&&(trim(form.elements[pName + '2'].value)==''))
							{
									setZipCode(form,pName);
									ShowMsg( '['+item+']を入力してください。');
        								pName = pName + '1';
        								status = false;
        								break;
							}
						}
						tmpPNam = trim(form.elements[pName + '1'].value);
						if(arg != null)
						{
							status = CheckZIP(form,pName,item);
						}
						else
						{
							tmpPNam = trim(form.elements[pName + '1'].value) + trim(form.elements[pName + '2'].value);
							if(tmpPNam.length != 0)
							{
								status = CheckZIP(form,pName,item);
							}
						}
						if(status)
						{
							tmpPNam = trim(form.elements[pName + '1'].value) + trim(form.elements[pName + '2'].value);
							if(isAllChar('0',tmpPNam))
							{
								setZipCode(form,pName);
								ShowMsg('['+item+']の指定が不正です。');
								pName = pName+ '1';
								status = false;
								break;
							}
						}
						pName = pName + "1";
						break;


				case 'E' : // E-Mailアドレスチェック
						status = CheckEMail(form,pName,item);   break;
				case 'M' : // E-Mailアドレスチェック
						if(!isEMailStr(form.elements[pName].value))
						{
							ShowMsg('['+item+']にE-Mail文字以外の文字が含まれています')
							status = false;
						}
						break;
				case 'F' : // ラジオボタン、選択リスト入力チェック
						status = CheckInputForm(form,pName,item,arg);
						if(form.elements[pName][0].type=='radio')
						{
							focusFlg = false;
						}
						break;
				case 'G' ://半角数字以外の文字が含まれています
					if (!isNumberInt(form.elements[pName].value))
						{
							ShowMsg('['+item+']に半角数字でご入力してください')
							status = false;
						}
						else
						{
							status = true;
						}
						break;
				case 'O' ://Add by sunjing
						status = CheckInputFormS(form,pName,item,arg);
						break;
				case 'D' : // 日付チェック
						status = CheckDate(form,pName,item,arg);
                       
						var pNameArray = pName.split(';');
						if ( pNameArray.length == 3 )
						{
							pName = pNameArray[0];
						}
						//if ( arg == null ) focusFlg = false;
						break;
				case '7' ://Add by wuxd
						if ( arg == null ) {
							ShowMsg( '['+item+']に数値範囲の設定がありません。');
							return(false);
						}
						var getStr = form.elements[pName].value;
						if(getStr.length != arg) {
							ShowMsg('['+item+']には'+arg+'桁の数値を指定してください。');
							return(false);
						}
						break;
				case 'P'://Add by Sunjing
						status = checkDateHM(form, pName, item, arg);
						break;
				case 'J' : // 時刻チェック
						status = CheckTime(form,pName,item,arg);  break;
				case 'Y' ://Sunjing add
						status = CheckTimeAdd(form, pName, item, arg); break;
				case '8' ://qiuxl add
						status = CheckOrderTime(form, pName, item, arg); 
						var pNameArray = pName.split(':');
						if ( pNameArray.length == 2 )
						{
							pName = pNameArray[0];
						}
						break;
				case '9'://qiuxl add
						status = CheckOrderTimeRange(form, pName, item, arg);
						var pNameArray = pName.split(';');
						if ( pNameArray.length == 10 )
						{
							pName = pNameArray[0];
							if(GetVal(form,pNameArray[0]) != "" && GetVal(form,pNameArray[5]) == "")
							{
								pName = pNameArray[5];
							}
							if(GetVal(form,pNameArray[0]) == "" && GetVal(form,pNameArray[3]) == "" && GetVal(form,pNameArray[5]) == "")
							{
								pName = pNameArray[5];
							}
						}
						break;
				case 'C' : //pasWord confirm 文字列比較
						var password;
						password = pName.substring(0,pName.length - 5);
                       
						status = CompareStr(form,password,pName);
						if(status != 0)
						{
							ShowMsg('[パスワード再入力]が[パスワード]と一致しません。');
							return(false);
						}
						else
						{
							status = true ;
						}
						break;
			    case 'R' : //encodepasWord confirm 文字列比較
						var password;
						password = pName.substring(0,pName.length - 5);
                       
						status = CompareStr(form,password,pName);
						if(status != 0)
						{
							ShowMsg('[キーワード（確認）]が[キーワード]と一致しません。');
							return(false);
						}
						else
						{
							status = true ;
						}
						break;

						
				case 'H':
						var email;
						email = pName.substring(0,pName.length-5);
						
						status = CompareStr(form, email, pName);
						if (status != 0)
						{
							ShowMsg('[email（確認）]が[email]と一致しません。');
							return false;
						}
						else
						{
							status = true;
						}
						break;
				case 'B' : // スペースチェック
						status = CheckNoSpace(form,pName,item);   break;
				default : // その他のモードのときはエラー！
						ShowMsg( '['+item+']に不正なチェックモードが指定されています。');
						return(false);
			 }
			 // フォーカス移動
			 if ( !status ) {
				 if ( focusFlg )
				 {
				 	form.elements[pName].focus();
				 }
				 return(false);
			 }
			 //追加（バグ修正） by 沈宇峰＠ＮＥＣＳＩ上海 2002/04/28 -->
			 focusFlg = true;
			 //追加（バグ修正） by 沈宇峰＠ＮＥＣＳＩ上海 2002/04/28 <--
		}
// debug("pName : " + pName + " : END");
	}
	return(true);
}


// 入力チェック
function CheckInput(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// フォームタイプが[text][textarea][password]以外を
	// 指定した場合はエラー
	var fType = parts.type;
	if ( !(fType == 'text' || fType == 'textarea' || fType == 'password' || fType == 'file') )
	{
		ShowMsg('['+item+']には、チェックモード[I]を指定できません。');
		return(false);
	}
	if(fType != 'password')
	{
		if ( trim(parts.value).length == 0)
		{
			ShowMsg('['+item+']を入力してください。');
			status = false;
		}
	}
	else
	{
		if ( (parts.value).length == 0)
		{
			ShowMsg('['+item+']を入力してください。');
			status = false;
		}
	}
	return(status);
}
// 文字列長チェック
//文字数制限を超えています。１０文字以内で再度入力してください.
function CheckLengthX(form,pName,item,len)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( getLength(parts.value) > parseInt(len,10) )
	{
		ShowMsg('['+item+']が文字数制限を超えています。１０文字以内で再度入力してください。');
		status = false;
	}
	return(status);
}

// 文字列長チェック
function CheckLength(form,pName,item,len)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( getLength(parts.value) > parseInt(len,10) )
	{
		ShowMsg('['+item+']が最大桁数を超えています。');
		status = false;
	}
	return(status);
}

// 文字列長<minチェック add by pujiemin
function CheckLengthLimit(form,pName,item,len)
{ 
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	var vLen = getLength(parts.value);
	if(vLen == 0)
		return true;
	if ( vLen < parseInt(len,10) )
	{
		ShowMsg('['+item+']が最小桁数を超えています。');
		status = false;
	}
	return(status);
}
// 文字列長<minチェック add by wangzheng
function CheckLengthMaxMin(form,pName,item,para)
{ 
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	var vLen = getLength(parts.value);
	if(vLen == 0)
		return true;
	var min = para.split(";")[0];
	var max = para.split(";")[1];
	if ( vLen < parseInt(min,10) || vLen > parseInt(max,10))
	{
		ShowMsg('['+item+']は'+min+'桁以上'+max+'桁以内でご入力ください。');
		status = false;
	}
	return(status);
}

//== add by liaoyl 2005-8-4
//半角カナチェック
function CheckKana(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isKanaString(parts.value))
	{
		//ShowMsg(isKanaString(parts.value));
		ShowMsg('['+item+']に半角カナ以外の文字が指定されています。');
		status = false ;

	}
	return(status);
}
//=== add by liaoyl 2005-8-11==
//全角カナチェック
function CheckDKana(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isDKanaString(parts.value))
	{
		//ShowMsg(isKanaString(parts.value));
		ShowMsg('['+item+']は全角カタカナでご入力ください。');
		status = false ;

	}
	return(status);
}
//全角かなチェック
function CheckHKana(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isHKanaString(parts.value))
	{
		//ShowMsg(isKanaString(parts.value));
		ShowMsg('['+item+']は全角かなでご入力ください。');
		status = false ;

	}
	return(status);
}


// 英字チェック
function CheckAlpha(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isAlphaString(parts.value) )
	{
		ShowMsg('['+item+']に英字以外の文字が指定されています。');
		status = false;
	}
	return(status);
}

// 英数字チェック
function CheckAlNum(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	var str;
	if(parts.type == 'password')
		str = parts.value;
	else
		str = trim(parts.value);
	if ( !isAlNumString(str) )
	{
		if(parts.type == 'password' && item != 'キーワード')
		{
			ShowMsg('['+item+']に半角英数字4桁以上8桁以内でご入力ください。');
			return(false);
		}
		ShowMsg('['+item+']に半角英数字以外の文字が指定されています。');
		status = false;
	}
	return(status);
}
// 半角チェック
function Check1Byte(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isAscii(parts.value) )
	{
		ShowMsg('['+item+']に半角文字以外の文字が指定されています。');
		status = false;
	}
	return(status);
}

// 全角チェック
function Check2Byte(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isFullString(parts.value) )
	{
		ShowMsg('['+item+']に全角文字で入力してください。');
		status = false;
	}
	return(status);
}
// 数値の有効桁チェック
function CheckNumString(form,pName,item)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if(!isNumString(parts.value))
	{
		ShowMsg('['+item+']は半角数字でご入力ください。');
		return(false);
	}
	return(true);
}

// 小数の有効桁チェック
function CheckScale(form,pName,item,scale)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// 小数点を探す
	var ppos = parts.value.indexOf('.');
	// 小数点以降の文字列長を取得
	var slen = ( ppos == -1 ) ? 0 : (parts.value.length-1-ppos);
	if ( (slen > scale)||  (( ppos != -1 )&&(scale==0)))
	{
		ShowMsg('['+item+']に有効桁数範囲外の値が指定されています。');
		return(false);
	}
	return(true);
}

// 範囲チェック
function CheckRange(form,pName,item,min,max)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	var str = parts.value;
	if ( str.length == 0 ) return(true);
	// 数値文字列チェック
	if ( !isNumString(str) )
	{
		ShowMsg('['+item+']に文字が指定されています。');
		return(false);
	}
	// 範囲内どうかのチェック
	var min_stat = true;
	var max_stat = true;
	if ( min.length != 0 ) min_stat = isGTMin(str,parseFloat(min));
	if ( max.length != 0 ) max_stat = isLTMax(str,parseFloat(max));
	if ( !( min_stat && max_stat) )
	{
		ShowMsg('['+item+']に範囲外の値が指定されています。');
		status = false;
	}
	return(status);
}

function CheckNumString1(form,pName,item)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if(!isNumString(parts.value))
	{
		ShowMsg('['+item+']は半角数字で入力してください。');
		return(false);
	}
	return(true);
}
// 小数の有効桁チェック
function CheckScale1(form,pName,item,scale)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// 小数点を探す
	var ppos = parts.value.indexOf('.');
	// 小数点以降の文字列長を取得
	var slen = ( ppos == -1 ) ? 0 : (parts.value.length-1-ppos);
	if ( (slen > scale)||  (( ppos != -1 )&&(scale==0)))
	{
		ShowMsg('['+item+']は半角数字で入力してください。');
		return(false);
	}
	return(true);
}

// 範囲チェック
function CheckRange1(form,pName,item,min,max)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	var str = parts.value;
	if ( str.length == 0 ) return(true);
	// 数値文字列チェック
	if ( !isNumString(str) )
	{
		ShowMsg('['+item+']は半角数字で入力してください。');
		return(false);
	}
	// 範囲内どうかのチェック
	var min_stat = true;
	var max_stat = true;
	if ( min.length != 0 ) min_stat = isGTMin(str,parseFloat(min));
	if ( max.length != 0 ) max_stat = isLTMax(str,parseFloat(max));
	if ( !( min_stat && max_stat) )
	{
		ShowMsg('['+item+']に範囲外の値が指定されています。');
		status = false;
	}
	return(status);
}
// TELチェック
/*
function CheckTEL(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isTELString(parts.value) )
	{
		setTELFAX(form,pName);
		ShowMsg('['+item+']の指定が不正です。');
		status = false;
	}
	return(status);
}
*/

// 郵便番号チェック
function CheckZIP(form,pName,item)
{
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isZIPString(parts.value) )
	{
		setZipCode(form,pName);
		ShowMsg('['+item+']の指定が不正です。');
		status = false;
	}
	return(status);
}

// E-Mailチェック
function CheckEMail(form,pName,item)
{ 
	var status = true;
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	if ( !isEMailString(parts.value) )
	{
		ShowMsg('['+item+']の指定が不正です。');
		status = false;
	}
	return(status);
}

// 日付チェック
function CheckDate(form,pName,item,delim)
{
	var year,month,day;
	var pNameArr = pName.split(';');
	if ( pNameArr.length == 1 ) { // 入力欄が１つ
		if ( delim == null ) {
			ShowMsg('['+pName+']に日付の区切り文字の指定がありません。');
			return(false);
		}
		var dateStr = GetVal(form,pNameArr[0]);
		if ( dateStr.length == 0 ) return(true);
		var dateArr = dateStr.split(delim);
		if ( dateArr.length != 3 ) {
			ShowMsg('['+item+']の指定形式が不正です。');
			return(false);
		}
		year = dateArr[0];
		month= dateArr[1];
		day  = dateArr[2];
	}
	else
	if ( pNameArr.length == 3 ) { // 入力欄が３つ
		year = GetVal(form,pNameArr[0]);
		month= GetVal(form,pNameArr[1]);
		day  = GetVal(form,pNameArr[2]);
	} else {
		ShowMsg( '['+pName+']の日付の指定方法に対応できません。');
		return(false);
	}
	return checkNumDate(year,month,day,item);
}

//add ay Sunjing
function checkDateHM(form, pName, item, delim)
{
	var sYear;
	var sMonth;
	var sDay;
	var sHour;
	var sMin;
	var eYear;
	var eMonth;
	var eDay;
	var eHour;
	var eMin;
	
	datelist = pName.split(';');

	if (datelist.length != 10)
	{
		ShowMsg( '['+item+']の日付の指定方法に対応できません。');
	}
	else
	{
		sYear = GetVal(form,datelist[0]);
		sMonth = GetVal(form,datelist[1]);
		sDay = GetVal(form,datelist[2]);
		sHour = GetVal(form,datelist[3]);
		sMin = GetVal(form,datelist[4]);
		eYear = GetVal(form,datelist[5]);
		eMonth = GetVal(form,datelist[6]);
		eDay = GetVal(form,datelist[7]);
		eHour = GetVal(form,datelist[8]);
		eMin = GetVal(form,datelist[9]);
		var sDate;
		var eDate;
		
		sDate = new Date(sYear, sMonth - 1, sDay, sHour, sMin, 0);
		eDate = new Date(eYear, eMonth - 1, eDay, eHour, eMin, 0);

		var ret;
		ret = cmpDate(sDate, eDate);
	
		if (ret < 0)
		{
			return true;
		}
		else
		{
			ShowMsg( '['+item+']の日付範囲の指定が不正です。');
			return false;
		}
	}
	return true;
}



// 日付チェック(共通関数)
function checkNumDate(y,m,d,item)
{
	var status = false;
	switch (isDateFormat(y,m,d))
	{
		case 0:
		case 1:
			status = true;
			break;
		case -1:
			ShowMsg('['+item+']には年・月・日の全てを指定してください。');
			break;
		case -2:
			ShowMsg('['+item+'](年)には数値を指定してください。');
			break;
		case -3:
			ShowMsg('['+item+'](年)には４桁の数値を指定してください。');
			break;
		case -4:
			ShowMsg('['+item+'](月)には数値を指定してください。');
			break;
		case -5:
			ShowMsg('['+item+'](月)には1〜12を指定してください。');
			break;
		case -6:
			ShowMsg('['+item+'](日)には数値を指定してください。');
			break;
		case -7:
			var maxDay = getMaxDay(y,m);
			ShowMsg('['+item+'](日)には1〜'
				+maxDay+'を指定してください。');
			break;
	}
	return(status);
}

// 時刻チェック
function CheckTime(form,pName,item)
{
	var tArr = GetVal(form,pName).split(':');
	if ( tArr.length != 2 ) {
		ShowMsg('['+item+']の形式が不正です。');
		return(false);
	}
	if ( !isRange(tArr[0],0,23) ) {
		ShowMsg('['+item+']の時間には0〜23の値を指定してください。');
		return(false);
	}
	if ( !isRange(tArr[1],0,59) ) {
		ShowMsg('['+item+']の分には0〜59の値を指定してください。');
		return(false);
	}
	return(true);
}

// 時刻チェック Sun Jing Add
function CheckTimeAdd(form,pName,item)
{
	var tArrTime = pName.split(':');
	
	hour = GetVal(form,tArrTime[0]);
	min = GetVal(form,tArrTime[1]);
	
	if ( !isRange(hour,0,23) ) {
		ShowMsg('['+item+']の時間には0〜23の値を指定してください。');
		return(false);
	}
	if ( !isRange(min,0,59) ) {
		ShowMsg('['+item+']の分には0〜59の値を指定してください。');
		return(false);
	}
	return(true);
}

// ラジオボタン、選択リストの必須入力チェック
function CheckInputForm(form,pName,item,defVal)
{   
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// 部品のタイプを取得
	var rbFormType = parts[0].type;
	var slFormType = parts.type;
	if ( rbFormType == 'radio' ) { // ラジオボタン
		for ( var i=0 ; i<parts.length ; i++ ) {
			if ( parts[i].checked ) return(true);
		}
	}
	else
	if ( slFormType == 'select-one' ) { // 選択リスト
		if ( defVal == null ) {
			ShowMsg('['+pName+']にデフォルト値の指定がありません。');
			return(false);
		}
		if (parts.selectedIndex == -1)
		{
			ShowMsg('['+item+']が選択されていません。');
			return(false);
		}
		var selVal = parts.options[parts.selectedIndex].value;
		if ( selVal != defVal ) return(true);
	}
	else
	if ( slFormType == 'select-multiple' ) { // リストボックス
		if ( parts.selectedIndex != -1 ) return(true);
	}
	ShowMsg('['+item+']が選択されていません。');
	return(false);
}

//Add by Sunjing
function CheckInputFormS(form,pName,item,defVal)
{  
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// 部品のタイプを取得
	var rbFormType = parts[0].type;
	var slFormType = parts.type;
	
	if ( slFormType == 'select-one' ) { // 選択リスト
		if ( defVal == null ) {
			ShowMsg('['+pName+']にデフォルト値の指定がありません。');
			return(false);
		}
		var selVal = parts.selectedIndex;

		if ( selVal != defVal ) return(true);
	}
	
	ShowMsg('['+item+']が選択されていません。');
	return(false);
}

// 数値比較
function CompareNum(form,pName1,pName2)
{
	var num1 = GetVal(form,pName1);
	var num2 = GetVal(form,pName2);
	if ( num1.length == 0 ) num1 = 0;
	if ( num2.length == 0 ) num2 = 0;
	return (num1-num2);
}

// 文字列比較
function CompareStr(form,pName1,pName2)
{
	var str1 = GetVal(form,pName1);
	var str2 = GetVal(form,pName2);
	return(strcmp(str1,str2));
}

// 日付比較
function CompareDate(form, pName1, pName2, delim)
{
	var d1str = GetVal(form,pName1);
	var d2str = GetVal(form,pName2);
	if ( d1str.length == 0 ) d1str = '0'+delim+'0'+delim+'0';
	if ( d2str.length == 0 ) d2str = '0'+delim+'0'+delim+'0';
	var d1arr = d1str.split(delim);
	var d2arr = d2str.split(delim);
	var d1 = parseInt(d1arr[0],10)*10000 +
					 parseInt(d1arr[1],10)*100 + parseInt(d1arr[2],10);
	var d2 = parseInt(d2arr[0],10)*10000 +
					 parseInt(d2arr[1],10)*100 + parseInt(d2arr[2],10);
	return (d1-d2);
}

// 前後の空白除去
function RemoveSpace(form,pName)
{
	if ( !isExist(form,pName) ) return(false);
	var str = form.elements[pName].value;
	if(form.elements[pName].type != 'password')
		form.elements[pName].value = trim(str);
}

// パーツの存在チェック
function isExist(form,pName)
{
	if ( (typeof(form.elements[pName]) == 'undefined') ) {
	  debug('[ '+pName+' ]は存在しません。');
	  return(false);
	}
	return(true);
}

function GetVal(form,pName)
{
	var p = form.elements[pName];
	// 部品のタイプを取得
	var pt = p.type;

	if ( pt == 'text' || pt == 'password' ||
		 pt == 'hidden' || pt == 'textarea' ) {
		return(p.value);
	}
	else
	if ( pt == 'select-one' ) {
		return(p.options[p.selectedIndex].value);
	}
	else
	if ( pt == 'checkbox' ) {
		return(p.checked);
	}
	else
	{
		var rpt = p[0].type;
		if ( rpt == 'radio' ) {
			for ( var i=0 ; i<p.length ; i++ ) {
			if ( p[i].checked ) return(p[i].value);
			}
			return(null);
		}
		else
		{
			debug('['+pName+']のtypeが不正です。');
			return('ERR');
		}
	}
}

function CopyPartsValue(parts,toName,defVal)
{
	parts.form.elements[toName].value = (parts.value!=defVal) ? parts.value : '';
}

function checkDateRange(sYear,sMonth,sDay,eYear,eMonth,eDay)
{
	var sDate;
	var eDate;
	var ret;

	sDate = new Date(sYear, sMonth - 1, sDay);
	eDate = new Date(eYear, eMonth - 1, eDay);

	ret = cmpDate(sDate, eDate);

	if (ret <= 0)
	{
		return (true);
	}
	else
	{
		return (false);
	}
}

function isFuture(sYear,sMonth,sDay)
{
	var sDate;
	var eDate;
	var currentDate;
	var ret;

	sDate = new Date(sYear, sMonth - 1, sDay);

	currentDate = new Date();
	eDate = new Date(currentDate.getYear(), currentDate.getMonth(), currentDate.getDate());

	ret = cmpDate(sDate, eDate);

	if (ret >= 0)
	{
		return (true);
	}
	else
	{
		return (false);
	}
}

//スペースチェック
function CheckNoSpace(form,pName,item)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);
	// スペースを探す
	var ppos = parts.value.indexOf(' ');

	if (ppos != -1)
	{
		ShowMsg('['+item+']にはスペースは使用できません。');
		return(false);
	}
	return(true);
}
function setTELFAX(form,pName)
{   
	if(trim(form.elements[pName + '1'].value + form.elements[pName + '2'].value + form.elements[pName + '3'].value).length ==0)
	{
		form.elements[pName].value = "";
	}
	else
	{
	     form.elements[pName].value = trim(form.elements[pName + '1'].value) + "-" + trim(form.elements[pName + '2'].value) + "-" + trim(form.elements[pName + '3'].value);
     }
	return(true);
}
function setZipCode(form,pName)
{
	if(trim(form.elements[pName + '1'].value + form.elements[pName + '2'].value).length ==0)
	{
		form.elements[pName].value = "";
	}
	else
	if(trim(form.elements[pName + '2'].value).length !=0 )
	{
         form.elements[pName].value = trim(form.elements[pName + '1'].value) + "-" + trim(form.elements[pName + '2'].value);
     }
     else
     {
         form.elements[pName].value = trim(form.elements[pName + '1'].value);
     }
	return(true);
}

function CheckHalfNum(strIn)
{
    var strNum = "0123456789";
    for(var i=0; i < strIn.length; i++)
    {
        if(strNum.indexOf(strIn.charAt(i)) == -1)
        {
            return false;
        }
    }
    return true;
}

function CheckFile(form,pName,item,len)
{
	var parts = form.elements[pName];
	// パーツが存在しない
	if ( !isExist(form,pName) ) return(false);

	var strFileAndPath = parts.value;
    var strPath = parts.value.lastIndexOf('\\');
    var strFile = strFileAndPath.substring(strPath+1);

	if (ishalf(strFile,0) == false){
		ShowMsg('['+item+']には半角文字のみで入力してください。');
        return(false);
	}
	if ((strFileAndPath).indexOf(" ") >= 0){
		ShowMsg('['+item+']には空白文字は使用できません。半角文字のみで入力してください。');
		return(false);
	}
    if(len!=null)
    {
        if ( getLength(strFile) > parseInt(len,10) )
        {
            ShowMsg('['+item+']が最大桁数を超えています。');
            return(false);
        }
    }
    return(true);
}

function ishalf(object,isnull){
	if ( trim(object) == "" ){
		if ( isnull == 0 ){ return true ; }
		else{ return false ; }
	}

	for (i=0; i < object.length; i++) {
		var chaz09 = object.substring(i, i + 1);
		if (!(chaz09 >= ' ' && chaz09 <= '~')){ return false ; }
	}
	return true;
}

//	半角数字チェック
function isNumberInt(inputString)
{
    var i;
    var len = inputString.length;
    var chkStr = "1234567890";
	for(i=0;i<len;i++){
		if(chkStr.indexOf(inputString.charAt(i))<0){
			return false;
		}
	}
    return true;
}

/*********** 商品カタログチェック **********/
function check_Catalog(obj) {
	if(trim(obj.options[obj.selectedIndex].value) == "") {
		alert("商品カタログを選択してください。");
		obj.focus();
		return false;
	}
	return true;
}

/*********** 商品コードチェック **********/
function check_Giftcode(obj) {
	if(trim(obj.value) == "") {
		alert("商品コードを入力してください。");
		obj.focus();
		return false;
	} else if(getLength(obj.value) > parseInt(7,10)) {
		alert("商品コードが最大桁数を超えています。");
		obj.focus();
		return false;
	} else if(!isNumberInt(obj.value)) {
		alert("商品コードに半角数字でご入力してください。");
		obj.focus();
		return false;
	}
	return true;
}

/*********** 商品数量チェック **********/
function check_Goodscount(obj) {
	if(trim(obj.options[obj.selectedIndex].value) == "") {
		alert("商品数量を選択してください。");
		obj.focus();
		return false;
	}
	return true;
}

/*********** 同種商品チェック **********/
function check_SameGoods(obj1,obj_1,obj2,obj_2) {
	if((trim(obj1.options[obj1.selectedIndex].value) == trim(obj_1.options[obj_1.selectedIndex].value)) 
		&& (trim(obj2.value) == trim(obj_2.value))) {
		alert("該当商品は既に注文されています。");
		obj_1.focus();
		return false;
	}
	return true;
}

// 受注時間チェック qiuxl Add
function CheckOrderTime(form,pName,item)
{
	var tArrTime = pName.split(':');
	
	hour = GetVal(form,tArrTime[0]);
	min = GetVal(form,tArrTime[1]);
	
	if ( !isRange(hour,0,23) && isRange(min,0,59) ) {
		ShowMsg('['+item+']には時・分の全てを指定してください。');
		return(false);
	}
	if (isRange(hour,0,23) && !isRange(min,0,59) ) {
		ShowMsg('['+item+']には時・分の全てを指定してください。');
		return(false);
	}
	return(true);
}

//受注時間RANGEチェックqiuxl add
function CheckOrderTimeRange(form, pName, item, delim)
{
	var sYear;
	var sMonth;
	var sDay;
	var sHour;
	var sMin;
	var eYear;
	var eMonth;
	var eDay;
	var eHour;
	var eMin;
	var orderStartDate = false;
	var orderStartTime = false;
	var orderEndDate = false;
	var orderEndTime = false;
	
	datelist = pName.split(';');

	if (datelist.length != 10)
	{
		ShowMsg( '['+item+']の日付の指定方法に対応できません。');
	}
	else
	{
		sYear = GetVal(form,datelist[0]);
		sMonth = GetVal(form,datelist[1]);
		sDay = GetVal(form,datelist[2]);
		sHour = GetVal(form,datelist[3]);
		sMin = GetVal(form,datelist[4]);
		eYear = GetVal(form,datelist[5]);
		eMonth = GetVal(form,datelist[6]);
		eDay = GetVal(form,datelist[7]);
		eHour = GetVal(form,datelist[8]);
		eMin = GetVal(form,datelist[9]);
		
		if(sYear != "" && sMonth != "" && sDay != "")
		{
			orderStartDate = true;
		}
		if(sHour != "" && sMin != "")
		{
			orderStartTime = true;
		}
		if(eYear != "" && eMonth != "" && eDay != "")
		{
			orderEndDate = true;
		}
		if(eHour != "" && eMin != "")
		{
			orderEndTime = true;
		}
		//NO 17111111
		if(!orderStartDate)
		{
			if(!orderEndDate)
			{
				if(!orderStartTime)
				{
					if(!orderEndTime)
					{//17
						return true;
					}
					else
					{//16
						ShowMsg( '受注終了時間を指定する場合、受注終了日を指定してください。');
						return false;
					}
				}
				else
				{//14 15
					ShowMsg( '受注開始時間を指定する場合、受注開始日を指定してください。');
					return false;
				}
			}
			else
			{
				if(!orderStartTime)
				{//8 9
					return true;
				}
				else
				{// 6 7
					ShowMsg( '受注開始時間を指定する場合、受注開始日を指定してください。');
					return false;
				}
			}
		}
		else
		{
			if(!orderEndDate)
			{
				if(!orderStartTime)
				{
					if(!orderEndTime)
					{//13
						return true;
					}
					else
					{//12
						ShowMsg( '受注終了時間を指定する場合、受注終了日を指定してください。');
						return false;
					}
				}
				else
				{
					if(!orderEndTime)
					{//11
						return true;
					}
					else
					{//10
						ShowMsg( '受注終了時間を指定する場合、受注終了日を指定してください。');
						return false;
					}
				}
			}
			else
			{
				if(!checkDateRange(sYear,sMonth,sDay,eYear,eMonth,eDay))
				{//3,4,5
					ShowMsg( '受注開始日は受注終了日の前に設定してください。');
					return false;
				}
				else
				{
					if(orderStartTime && orderEndTime)
					{
						var sDate;
						var eDate;
						
						sDate = new Date(sYear, sMonth - 1, sDay, sHour, sMin, 0);
						eDate = new Date(eYear, eMonth - 1, eDay, eHour, eMin, 0);
				
						var ret;
						ret = cmpDate(sDate, eDate);
					
						if (ret <= 0)
						{//2
							return true;
						}
						else
						{//1
							ShowMsg( '受注開始日時は受注終了日時より前に設定して下さい。');
							return false;
						}
					}
				}
			}
		}
		
	}
	return true;
}