/*********************************
  共通定数定義
*********************************/

/********************************************************************************************
* 関数名  ：fncNextOpen()
* 機能    ：Post送信の次画面表示処理を行う
* 引数    ：strPath    : 次画面ﾌｧｲﾙ名
*           strLoadKbn : ﾛｰﾄﾞ区分
*           intIndex   : ｲﾝﾃﾞｯｸｽ
*           objForm    : ﾌｫｰﾑｵﾌﾞｼﾞｪｸﾄ
*           intMode    : 0 : ﾎﾞﾀﾝ
*                        1 : <A>ﾀｸﾞ
* 戻り値  ：なし
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
* 2000/08/24     MP Akiba 			修正
********************************************************************************************/
//function fncNextOpen(strPath,strLoadKbn,intIndex,objForm,intMode){

//    objForm.P_LoadKBN.value = strLoadKbn;   //ﾛｰﾄﾞ区分
//    objForm.method = "Post";                //METHODセット
//    objForm.action = strPath;               //遷移先ファイルセット
//    objForm.target = "_top";                //ターゲット指定セット

    //ﾎﾞﾀﾝ
//    if( intMode ==0 ){
//        objForm.submit();

//    }else{

//        document.links[intIndex].href="JavaScript:document.forms[0].submit();";
//    }
// *** 2000/08/24 MP Akiba 修正 ***
function fncNextOpen(strPath,strLoadKbn,objLink,objForm,intMode){

    objForm.P_LoadKBN.value = strLoadKbn;   //ﾛｰﾄﾞ区分
    objForm.method = "Post";                //METHODセット
    objForm.action = strPath;               //遷移先ファイルセット
    objForm.target = "_top";                //ターゲット指定セット

    //ﾎﾞﾀﾝ
    if( intMode ==0 ){
        objForm.submit();
    }else{
        objLink.href="JavaScript:document.forms[0].submit();";
    }

}

/********************************************************************************************
* 関数名  ：fncNext()
* 機能    ：Post送信の次画面表示処理を行う
* 引数    ：strPath    : 次画面ﾌｧｲﾙ名
*           strLoadKbn : ﾛｰﾄﾞ区分
*						objLink		 : クリックされたリンクオブジェクト自身。
*           objForm    : ﾌｫｰﾑｵﾌﾞｼﾞｪｸﾄ
*           intMode    : 0 : ﾎﾞﾀﾝ
*                        1 : <A>ﾀｸﾞ
* 戻り値  ：なし
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/08/06     MP AKIBA    新規作成
*
********************************************************************************************/
function fncNext(strPath,strLoadKbn,objLink,objForm,intMode){

    objForm.P_LoadKBN.value = strLoadKbn;   //ﾛｰﾄﾞ区分
    objForm.method = "Post";                //METHODセット
    objForm.action = strPath;               //遷移先ファイルセット
    objForm.target = "_top";                //ターゲット指定セット

    //ﾎﾞﾀﾝ
    if( intMode ==0 ){
        objForm.submit();
    }else{
        objLink.href="JavaScript:document.forms[0].submit();";
    }
}


/********************************************************************************************
* 関数名  ：fncEisuuCheck(strVal)
* 機能    ：半角英数字(半角英数字、ハイフン（-）以外はエラー)
* 引数    ：strVal    文字列
* 戻り値  ：true      正常
*           false     異常
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
*
*********************************************************************************************/
function fncEisuuCheck(StrVal){
    var nLen=StrVal.length;
    var StrCode="";
    var i,nCode;

    for( i=0; i<nLen; i++ ){
      StrCode = StrVal.charCodeAt(i);
      nCode = Number(StrCode);
      if ( ( ( nCode >= 48 )&&( nCode <= 57 ) )||
          ( ( nCode >= 65 )&&( nCode <= 90 ) )||
          ( ( nCode >= 97 )&&( nCode <= 122 ) )||
          (nCode == 45)){
          continue;
      }
      else{ return false; }
    }
    return true;
}

/********************************************************************************************
* 関数名  ：fncEMailCheck(strVal)
* 機能    ：E-Mailチェック　半角英数字(半角英数字,ﾊｲﾌﾝ(-),ｱﾝﾀﾞｰﾊﾞ(_),ドット(.),@以外はエラー)
* 引数    ：strVal    文字列
* 戻り値  ：true      正常
*           false     異常
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
* 2000/03/02     T.SHIMIZU      (.)を追加,他修正
*
*********************************************************************************************/
function fncEMailCheck(StrVal){
    var nLen=StrVal.length;
    var StrCode="";
    var i,nCode;

    for( i=0; i<nLen; i++ ){
      StrCode = StrVal.charCodeAt(i);
      nCode = Number(StrCode);
      if ( ( ( nCode >= 48 )&&( nCode <= 57 ) )||
          ( ( nCode >= 65 )&&( nCode <= 90 ) )||
          ( ( nCode >= 97 )&&( nCode <= 122 ) )||
          (nCode == 45)||
          (nCode == 46)||
          (nCode == 95)||
          (nCode == 64)){
          continue;
      }
      else{ return false; }
    }
    return true;
}

/********************************************************************************************
* 関数名  ：fncNumCheck(strVal)
* 機能    ：半角数字以外はエラー
* 引数    ：strVal    文字列
* 戻り値  ：true      正常
*           false     異常
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
*
*********************************************************************************************/
function fncNumCheck(StrVal){
    var nLen=StrVal.length;
    var StrCode="";
    var i,nCode;

    for( i=0; i<nLen; i++ ){
      StrCode = StrVal.charCodeAt(i);
      nCode = Number(StrCode);
      if ( ( nCode >= 48 )&&( nCode <= 57 ) ){
          continue;
      }
      else{ return false; }
    }
    return true;
}

/********************************************************************************************
* 関数名  ：fncStrLength()
* 機能    ：文字列長を求め値を返します。
* 引数    ：strVal      文字列
*           MaxSize     文字の制限数
*           StrType     1b  ...半角のみ
*                       all ...全半角
* 戻り値  ：指定に適する場合  ...true
*           指定に適さない    ...false
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
*
********************************************************************************************/
function fncStrLength(strVal,MaxSize,StrType){

  var nCnt = 0;               //.初期値
  var strRet = true;          //.初期値

  switch (StrType){
    //1バイト文字のみ
    case "1b":
          nCnt = strVal.length;
      //.サイズが指定バイト数を越えている場合
          if(nCnt > MaxSize){strRet=false;}
    break;
    case "all":
      //.1文字ずつ取り出して全角か半角か判断する。
      for(i=0; i<strVal.length; i++){
        if (escape(strVal.charAt(i)).length >= 4){
          nCnt+=2;
        }else{
          nCnt++;
        }

        //if(iszenkaku(strVal.charAt(i))){
        //    i++;
        //    nCnt+=4;
        //}else{
        //    nCnt++;
        //}
      }
      //.サイズが指定バイト数を越えている場合
      if(nCnt > MaxSize){
        strRet=false;
      }
    break;
  }

  return strRet;
}

/********************************************************************************************
* 関数名  ：fncStrLengthMin()
* 機能    ：最低文字列長を求め値を返します。
* 引数    ：strVal      文字列
*           MaxSize     文字の制限数
*           StrType     1b  ...半角のみ
*                      all  ...全半角
* 戻り値  ：指定に適する場合  ...true
*           指定に適さない    ...false
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/03/05    T.Shimizu    新規作成
*
********************************************************************************************/
function fncStrLengthMin(strVal,MinSize,StrType){

  var nCnt = 0;               //.初期値
  var strRet = true;          //.初期値

  switch (StrType){
    //1バイト文字のみ
    case "1b":
          nCnt = strVal.length;
      //.サイズが指定バイト数に満たない場合
          if(nCnt < MinSize){strRet=false;}
    break;
    case "all":
      //.1文字ずつ取り出して全角か半角か判断する。
      for(i=0; i<strVal.length; i++){
        //if (escape(strVal.charAt(i)).length >= 4){
        //  nCnt+=2;
        //}else{
        //  nCnt++;
        //}

        if(iszenkaku(strVal.charAt(i))){
            i++;
            nCnt+=2;
        }else{
            nCnt++;
        }
      }

      //.サイズが指定バイト数に満たない場合
      if(nCnt < MinSize){
        strRet=false;
      }
    break;
  }

  return strRet;
}

/************************************************************************
*   関数名  ：DateCheck(y,m,d)
*   機能    ：取得した日付が存在するかチェック
*   引数    ：年            y
*           ：月            m
*           ：日            d
*   戻り値  ：正常          true
*           ：エラー        false
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
*
********************************************************************************************/
function DateCheck(y,m,d)
{
  var strRet = true;          //.初期値

/*--- 通常の月末日を配列化 ---*/
        MonthDate = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
/*--- 閏年の月末日を配列化 ---*/
        MonthDate2 = new Array(31,29,31,30,31,30,31,31,30,31,30,31);

/*--- 閏年の場合の取得した月の月末日をチェック ---*/
        if( ( y % 4 ) == 0 ){
                if(d > MonthDate2[m-1]) strRet=false;
        }
        else{
/*--- 通常の場合の取得した月の月末日をチェック ---*/
                if(d > MonthDate[m-1]) strRet=false;
        }
        return strRet;
}

/********************************************************************************************
* 関数名  ：fncNullCheck(Kind,FormObj)
* 機能    ：テキスト、コンボ、ラジオボタン、チェックボックスのNULLチェック
* 引数    ：Kind      オブジェクトの種類 1：テキスト  2：コンボリスト 3：ラジオボタン 4：チェックボックス
*           ElemObj   エレメント名
* 戻り値  ：true      正常
*           false     NULL
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/17     Y.Shirahata    新規作成
*
********************************************************************************************/
function fncNullCheck(Kind,ElemObj){
  var  strName,nCnt,i;
  var  BooFlg=true;

  switch (Kind) 
 {
    case 1 :  //テキストの場合
            if(ElemObj.value==""){ return false; }
            //return true;
    break;

    case 2 :  //コンボリストの場合
            if(ElemObj.options.selectedIndex==-1){ return false; }
            //return true;
    break;

    case 3 :  //ラジオボタンの場合
            nCnt = ElemObj.length;
            for( i = 0; i < nCnt; i++){
              if ( ElemObj[i].checked == true ){return true;}
            }
            BooFlg=false;
    break;

    case 4 :  //チェックボックスの場合（エレメント名が同一の場合）
            nCnt = ElemObj.length;
            for( i = 0; i < nCnt; i++){
              if ( ElemObj[i].checked == true ){return true;}
            }
            BooFlg=false;
    break;

//    case 4 :  チェックボックスの場合（エレメント名が個々の場合）
//              if ( ElemObj.checked == true ){return true;}
            BooFlg=false;
//    break;

    default:
    break;

  }
  return BooFlg
}


/********************************************************************************************
* 関数名：	fncDoubleByteCharCheck(strVal)
* 機能：	全角文字だけかどうかをチェック
* 引数：	strVal		文字列
* 戻り値：	true	正常
*           false	半角あり
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/25     A.Yoshida     新規作成
* 2000/03/20     Y.Shirahata   全角のみのチェックに修正
*
********************************************************************************************/
function fncDoubleByteCharCheck(strVal) {

  for(i=0; i<strVal.length; i++){
//alert(i);
//alert(strVal.length);

      if(!iszenkaku(strVal.charAt(i))){
          return(false);
      }else{
          i++;
      }
  }

  return(true);

//var iLoop;
//var targetChar;
//
//for(iLoop=0 ; iLoop < strVal.length ; iLoop++) {
//	targetChar = strVal.charAt(iLoop);
//	if(fncIsKanji(targetChar) == false && fncIsCrLfTab(targetChar) == false) {
//		return(false);
//	}
//}
//return(true);
}

/********************************************************************************************
* 関数名：	iszenkaku
* 機能：	全角の判定
* 引数：	strVal		文字列
* 戻り値：	true	正常
*           false	半角あり
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/25     A.Yoshida  新規作成
* 2000/03/25     T.Shimizu  英数字の全角チェックを追加
*
********************************************************************************************/
function iszenkaku(c) {
    var str = escape(c);
    var strB = navigator.appName;


    if( strB == "Netscape" ){
//alert(str.charAt(0));
//alert(str.charAt(1));

      if(str.charAt(0) != "%")
          return false;
      if(str.charAt(1) == "8")
          return true;
      else if(str.charAt(1) == "9")
          return true;
      else if(str.charAt(1) == "E")
          return true;
      else if(str.charAt(1) == "F")
          return true;
      else
          return false;

    }else{
//alert(str.charAt(0));
//alert(str.charAt(1));
//alert(str.charAt(2));
//alert(str.charAt(3));
//alert(str.charAt(4));

      if (str.charAt(1) == "u"){ 
        if(str.charAt(2) == "F"){
          if(str.charAt(3) == "F"){
            if(str.charAt(4) == "1" || str.charAt(4) == "2" || str.charAt(4) == "4"){
              return true;
            }else{
              return false;
            }
          }
        }else{
          return true;
        }
      }else{
        return false;
      }
    }
    return true;
}

/********************************************************************************************
* 関数名：	fncIsKanji(strVal)
* 機能：	漢字の判定
* 引数：	strVal		文字列
* 戻り値：	true	正常
*            false	NULL
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/25     A.Yoshida     新規作成
*
********************************************************************************************/
function fncIsKanji(strVal)  {
	strValCode = strVal.charCodeAt(0)
	if(((strValCode & 0xFF00) == 0) || (strValCode == 0x203E) || ((strValCode >= 0xFF61) && (strValCode <= 0xFF9F)))  {
		return(false);
	}
	else  {
		return(true);
	}
}

/********************************************************************************************
* 関数名：	fncIsCrLfTab(strVal)
* 機能：	改行、タブの判定
* 引数：	strVal		文字列
* 戻り値：	true	正常
*             false	NULL
*
* --Rev Date--  ----User--- ----------Discription----------------------------------------
* 2000/02/25     A.Yoshida     新規作成
*
********************************************************************************************/
function fncIsCrLfTab(strVal)  {
	strValCode = strVal.charCodeAt(0)
	if(strValCode == 0x0009 || strValCode == 0x000A || strValCode == 0x000D)  {
		return(true);
	}
	else  {
		return(false);
	}
}
