/******************************************************************************/
/*     Input Value Check javascript   Last Modified 2004/09/03 */
/*     対象ブラウザ： Internet Exproler 5.01+                                 */
/*                    NetScape Navigator 7.0X+                                */
/*     notice      :  WindowsOS Only!!                                        */
/******************************************************************************/
/*----------------------------------------------------------------------------*/
/*   機　能：確認メッセージの表示                                             */
/*   引　数：更新情報名、アクション                                           */
/*   返り値：confirmの返り値(true or false)                                   */
/*   備　考：                                                                 */
/*----------------------------------------------------------------------------*/
function showConfirm(infName,action){
  return window.confirm("W501\n\n"+infName+"を"+action+"します。\nよろしいですか？");
}
/*----------------------------------------------------------------------------*/
/*   機　能：文字列の前後の空白（半角、全角、制御文字）を削除する             */
/*   引　数：加工前文字列                                                     */
/*   返り値：加工後文字列                                                     */
/*   備　考：NN4.Xでは右の空白が除去されない為、rTrim関数をcallしている       */
/*----------------------------------------------------------------------------*/
function trim(str){
var wStr;
  wStr = str.replace(/^\s+|\s+$/g,'');
  wStr = wStr.replace(/^ +| +$/g,'');
  wStr = wStr.replace(/^　+|　+$/g,'');
  return  rTrim(wStr);
}
/*----------------------------------------------------------------------------*/
/*   機　能：文字列の後ろの空白（半角、全角、制御文字）を削除する             */
/*   引　数：加工前文字列                                                     */
/*   返り値：加工後文字列                                                     */
/*----------------------------------------------------------------------------*/
function rTrim(str){
  while (str.match(/\s+$|　+$/g)) {
     str = str.replace( /\s+$|　+$/g , '' );
  }
  return str;
}
/*----------------------------------------------------------------------------*/
/*   機　能：未入力チェック                                                   */
/*   引　数：未入力検査項目、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=未入力、True=入力あり                                      */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isEmpty(theValue,msgOut,itemName) {
  theValue = rTrim(theValue);
  if ((theValue==null) || (theValue.length==0)){
    if (msgOut==true){
      window.alert("E504\n\n"+itemName+"が入力されていません。\n"+itemName+"は必須入力です。");
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：入力長チェック                                                   */
/*   引　数：入力長検査項目、                                                 */
/*           最小長、                                                         */
/*           最大長、                                                         */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function lenCheck(theValue,minLen,maxLen,msgOut,itemName){
  theValue = rTrim(theValue);
  if ((theValue==null) || (theValue.length<minLen || theValue.length>maxLen)){
    if (msgOut==true){
      if ((minLen != 0)&&(maxLen != 0)){
        if (minLen == maxLen){
          window.alert("E520\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+minLen+"文字で入力して下さい。");
        }else{
          window.alert("E521\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+minLen+"文字以上、"+maxLen+"文字以下で入力して下さい。");
        }
        return false;
      }
      if (minLen==0){
        window.alert("E522\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+maxLen+"文字以下で入力して下さい。");
        return false;
      }
      if (maxLen==0){
        window.alert("E523\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+minLen+"文字以上で入力して下さい。");
        return false;
      }
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：バイト数チェック                                                 */
/*   引　数：バイト数検査項目                                                 */
/*           最小バイト、                                                     */
/*           最大バイト、                                                     */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function byteCheck(theValue,minByte,maxByte,msgOut,itemName){
var chkChar;
var totalByte = 0;
var caption = "（全角は２文字、半角は１文字として数えます。）";
  theValue = rTrim(theValue);
  for (var i = 0; i < theValue.length; i++) {
    chkChar = theValue.charCodeAt(i);
    // Shift_JIS: 0x0 ～ 0x80, 0xa0  , 0xa1   ～ 0xdf  , 0xfd   ～ 0xff
    // Unicode  : 0x0 ～ 0x80, 0xf8f0, 0xff61 ～ 0xff9f, 0xf8f1 ～ 0xf8f3
    if ( (chkChar >= 0x0 && chkChar < 0x81) || (chkChar == 0xf8f0) || (chkChar >= 0xff61 && chkChar < 0xffa0) || (chkChar >= 0xf8f1 && chkChar < 0xf8f4)) {
        totalByte += 1;
    } else {
        totalByte += 2;
    }
  }
  if (totalByte < minByte || totalByte > maxByte){
    if (msgOut==true){
      if ((minByte != 0)&&(maxByte != 0)){
        window.alert("E521\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+minByte+"文字以上、"+maxByte+"文字以下で入力して下さい。\n"+caption);
        return false;
      }
      if (minByte==0){
        window.alert("E522\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+maxByte+"文字以下で入力して下さい。\n"+caption);
        return false;
      }
      if (maxByte==0){
        window.alert("E523\n\n"+itemName+"の入力文字数に誤りがあります。\n"+itemName+"は"+minByte+"文字以上で入力して下さい。\n"+caption);
        return false;
      }
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：半角チェック（半角文字以外はエラー%は許可）                      */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isHalf(theValue,msgOut,itemName) {
  theValue = rTrim(theValue);
  if ((theValue.length > 0) && (theValue.match(/^[ -~｡-ﾟ]+$/) == null)){
    if (msgOut==true){
      window.alert("E508\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"には全角文字は入力出来ません。");
    }
    return false;
  }
  if ( isInValidChar ( theValue , msgOut,itemName) == false ) {
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：使用禁止文字チェック                                             */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isInValidChar(theValue,msgOut,itemName) {
  theValue = rTrim(theValue);
  // & ; は使用禁止
  var a1 = theValue.match(/.*&.*;.*/) ;
  if ( a1 ) {
    if ( msgOut ){
      window.alert("E511\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"に使用出来ない文字が含まれています。");
    }
    return false;
  }
  // < > は使用禁止
  var a2 = theValue.match(/.*<.*>.*/) ;
  if ( a2 ) {
    if ( msgOut ){
      window.alert("E511\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"に使用出来ない文字が含まれています。");
    }
    return false;
  }
  // " は使用禁止
  var a3 = theValue.match(/.*\".*/) ;
  if ( a3 ) {
    if ( msgOut ){
      window.alert("E511\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"に使用出来ない文字が含まれています。");
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：全角チェック（全角以外はエラー）                                 */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*           改行を許可するか否か(true:許可する、false:許可しない）           */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isCharaC(theValue,msgOut,itemName,allowCr) {
var i;
  theValue = rTrim(theValue);
  if (theValue.match(/[ -~｡-ﾟ]/) != null) {
    if  (msgOut == true){
      window.alert("E507\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"は全角のみ入力可能です。");
    }
    return false;
  }
  if (allowCr == false){
    for(i = 0; i < theValue.length; i++){
      if ((theValue.charCodeAt(i) == 10)||(theValue.charCodeAt(i) == 13)){
        if (msgOut == true){
          window.alert("E532\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"には改行は入力出来ません。");
        }
        return false;
      }
    }
  }
  return true;
 }
/*----------------------------------------------------------------------------*/
/*   機　能：全角チェック（全角以外はエラー%の使用を条件付許可）              */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*           改行を許可するか否か(true:許可する、false:許可しない）           */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isCharaC2(theValue,msgOut,itemName,allowCr) {
var i;
  theValue = rTrim(theValue);
  if ( theValue.length == 0 ) {
    return true;
  }
  var inValue =  theValue.match(/[ -~｡-ﾟ]/g) ;
  if ( inValue != null ) {
    // 半角文字が含まれている
      if  (msgOut == true){
        window.alert("E507\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"は全角のみ入力可能です。");
      }
      return false;
  }

  if (allowCr == false){
    for(i = 0; i < theValue.length; i++){
      if ((theValue.charCodeAt(i) == 10)||(theValue.charCodeAt(i) == 13)){
        if (msgOut == true){
          window.alert("E532\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"には改行は入力出来ません。");
        }
        return false;
      }
    }
  }
  return true;
 }
/*----------------------------------------------------------------------------*/
/*   機　能：電話番号チェック(数値,-)のみ入力を許可します。                   */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isValidTelephone(theValue,msgOut,itemName) {
  theValue = rTrim(theValue);
  if ( theValue.length == 0 ) {
    return true;
  }
  if ( theValue.match (/[^0-9,^-]/g ) ) {
    if  (msgOut == true){
      window.alert("E511\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"に使用出来ない文字が含まれています。");
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：ダブルクォートチェック(ダブルクォート以外は任意)                 */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*   返り値：False=エラー、True=正常                                          */
/*   変更履歴：2004/09/03 rTrim(theValue)を実施後に評価するように変更         */
/*----------------------------------------------------------------------------*/
function isValidDoubleQuat(theValue,msgOut,itemName) {
  theValue = rTrim(theValue);
  if ( theValue.length == 0 ) {
    return true;
  }
  // " は使用禁止
  var as = theValue.match(/.*\".*/) ;
  if ( as ) {
    if ( msgOut==true){
      window.alert("E511\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"に使用出来ない文字が含まれています。");
    }
    return false;
  }
  return true;
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値チェック（半角数字のみ許可）                                 */
/*   引　数：チェック文字列                                                   */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*   返り値：False=エラー、True=正常                                          */
/*----------------------------------------------------------------------------*/
function chkNum(num,msgOut,itemName){
var chkStr ;
var i;
  for( i = 0; i < num.length; i++ ){
    chkStr = num.substring( i, i + 1 ) ;
    if( chkStr < "0" || chkStr > "9" ){
      if (msgOut==true){
        window.alert("E506\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"は数字のみ入力可能です。");
      }
      return false ;
    }
  }
  return true ;
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値チェック（0～9,マイナス符号、小数点）                        */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*           小数点を認めるか否か(true:認める、false:認めない）               */
/*   返り値：-3（小数点不正）                                                 */
/*         ：-2（マイナス符号不正）                                           */
/*         ：-1（上記以外のエラー）                                           */
/*         ：0 （正常）                                                       */
/*----------------------------------------------------------------------------*/
function chkNum2(num,msgOut,itemName,allowPeriod){
var cntMinus = 0;
var cntPeriod = 0;
var chkStr ;
var periodPos ;
var i;
//  "." 位置取得
  periodPos = num.indexOf( ".", 0 ) ;
  if ( periodPos < 0 ){
    periodPos = num.length ;
  }
//  数値ハイフンピリオドチェック
  for( i = 0; i < num.length; i++ ){
    chkStr = num.substring( i, i + 1 ) ;
    if( chkStr < "0" || chkStr > "9" ){
      switch (chkStr){
        case "-":                           //  <<  "-" チェック    >>
          cntMinus ++ ;
          if( i != 0 ||                     //      先頭以外
            num.length == 1 ){              //      "-" のみ
            if (msgOut==true){
              window.alert("E525\n\n"+itemName+"の入力内容に誤りがあります。\nマイナス符号は先頭に付けて下さい。");
            }
            return -2 ;
          }
          break;
        case ".":                           //  <<  "." チェック    >>
          if (allowPeriod == false){
            if (msgOut==true){
              window.alert("E529\n\n"+itemName+"には小数点の入力は出来ません。\n整数のみ入力可能です。");
            }
            return -3 ;
          }
          cntPeriod ++ ;
          if( i == 0 ||                     //      先頭
            ( cntMinus > 0 && i == 1 )  ||  //      "-" ありで２文字目"."
            i == ( num.length - 1 )     ||  //      最後
            cntPeriod > 1 ){                //      "." 複数
            if (msgOut==true){
              window.alert("E526\n\n"+itemName+"の入力内容に誤りがあります。\n小数点の数または位置が不正です。");
            }
            return -3 ;
          }
          break;
        default:
          if (msgOut==true){
            window.alert("E527\n\n"+itemName+"の入力内容に誤りがあります。\n数字、マイナス符号、ピリオド（小数点）以外の文字は入力出来ません。");
          }
          return -1 ;
          break;
      }
    }
  }
  return 0 ;
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値桁数チェック                                                 */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*           整数部桁数                                                       */
/*           小数部桁数                                                       */
/*   返り値：-1（エラー）                                                     */
/*         ：0 （正常）                                                       */
/*----------------------------------------------------------------------------*/
function chkBeams(num,msgOut,itemName,intBeams,decBeams){
var intStr = "0";
var decStr = "0";
var periodPos;
  if (decBeams > 0){
    if (chkNum2(num,msgOut,itemName,true) < 0){
      return -1;
    }
  }else{
    if (chkNum2(num,msgOut,itemName,false) < 0){
      return -1;
    }
  }
//  "." 位置取得～整数部、小数部の取り出し
  periodPos = num.indexOf( ".", 0 ) ;
  if ( periodPos < 0 ){
    periodPos = num.length ;
  }
  intStr = num.substring( 0, periodPos ) ;
  decStr = num.substring( periodPos + 1,num.length ) ;
//  チェック
  for (i=0 ; i<intStr.length ; i++){
    if (intStr.substring(i-1,1) == "0"){
      intStr = intStr.substring(i,intStr.length+1);
    }else{
      break;
    }
  }
  if (intStr.length > intBeams){
    if (msgOut==true){
      window.alert("E528\n\n"+itemName+"入力内容に誤りがあります。\n整数部または小数部の桁数がオーバーしています。");
    }
    return -1;
  }
  for (i=decStr.length ; i>0 ; i--){
    if (decStr.substring(i-1,i) == "0"){
      decStr = decStr.substring(0,i-1);
    }else{
      break;
    }
  }
  if (decStr.length > decBeams){
    if (msgOut==true){
      window.alert("E528\n\n"+itemName+"入力内容に誤りがあります。\n整数部または小数部の桁数がオーバーしています。");
    }
    return -1;
  }
  return 0;
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値桁数チェック(0,マイナスはエラーとする)                       */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*           整数部桁数                                                       */
/*           小数部桁数                                                       */
/*   返り値：-1（エラー）                                                     */
/*         ：0 （正常）                                                       */
/*----------------------------------------------------------------------------*/
function chkBeams2(num,msgOut,itemName,intBeams,decBeams){
    chkStr = num.substring( 0, 1 ) ;
    if ( chkStr == '-') {
        if ( msgOut==true ) {
            window.alert("E530\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"はゼロまたはマイナス値の入力は出来ません。");
            return -1;
        }
    } else if ( parseFloat(num) == 0 ) {
        if ( msgOut==true ) {
            window.alert("E530\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"はゼロまたはマイナス値の入力は出来ません。");
            return -1;
        }
    } else {
      return chkBeams(num,msgOut,itemName,intBeams,decBeams);
    }
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値桁数チェック(０以下はエラーとする)                           */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*           整数部桁数                                                       */
/*           小数部桁数                                                       */
/*   返り値：-1（エラー）                                                     */
/*         ：0 （正常）                                                       */
/*----------------------------------------------------------------------------*/
function chkBeams_minus(num,msgOut,itemName,intBeams,decBeams){
    chkStr = num.substring( 0, 1 ) ;
    if ( chkStr == '-') {
        if ( msgOut==true ) {
            window.alert("E530\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"はゼロまたはマイナス値の入力は出来ません。");
        }
        return -1;
    } else if ( parseFloat(num) == 0 ) {
        if ( msgOut==true ) {
            window.alert("E530\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"はゼロまたはマイナス値の入力は出来ません。");
        }
        return -1;
    } else {
      return chkBeams(num,msgOut,itemName,intBeams,decBeams);
    }
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値桁数チェック(マイナスはエラーとする)                       */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名                                 */
/*           整数部桁数                                                       */
/*           小数部桁数                                                       */
/*   返り値：-1（エラー）                                                     */
/*         ：0 （正常）                                                       */
/*----------------------------------------------------------------------------*/
function chkBeams_minus2(num,msgOut,itemName,intBeams,decBeams){
    chkStr = num.substring( 0, 1 ) ;
    if ( chkStr == '-') {
        if ( msgOut==true ) {
            window.alert("E524\n\n"+itemName+"にマイナス数値は入力出来ません。");
        }
        return -1;
    } else {
      return chkBeams(num,msgOut,itemName,intBeams,decBeams);
    }
}
/*----------------------------------------------------------------------------*/
/*   機　能：数値の四捨五入・切上げ・切捨てを行う                             */
/*   引　数：四捨五入・切上げ・切捨てを行う数値、                             */
/*           四捨五入、切上げ、切捨てを行う小数点位置(最小値は1）、           */
/*           （ex.3＝小数点第3位を四捨五入・切上げ・切捨て）、                */
/*           演算区分（"R":四捨五入、"C":切上げ、"F":切捨て）                 */
/*   返り値：演算結果数値（小数点以下桁数は引数の小数点位置－１）             */
/*   備　考：第一引数、第二引数が数値として認識できない場合、または           */
/*           演算区分が"R","F","C"以外の場合は、返り値に第一引数を返す        */
/*           小数点位置が1より小さい場合は1とみなし演算する                   */
/*----------------------------------------------------------------------------*/
function roundCmp(numValue,comPos,mode){
var retValue;
var weight = 1;
var signInd = "";
  if ((isNaN(numValue))||(isNaN(comPos))){
    return numValue;
  }
  if ((mode != "R") && (mode != "F") && (mode != "C")){
    return numValue;
  }
  if (numValue < 0){
     signInd = "-";
     numValue = numValue * -1;
  }else{
     signInd = "+";
  }
  if (comPos < 1 ){
    comPos = 0;
  }else{
    comPos = comPos - 1;
  }
  for( i=0 ; i < comPos ; i++){
    weight = weight * 10;
  }
  switch (mode){
    case "R":
      returnValue = Math.floor(Math.round(numValue * weight));
      break;
    case "F":
      returnValue = Math.floor(Math.floor(numValue * weight));
      break;
    case "C":
      returnValue = Math.floor(Math.ceil(numValue * weight));
      break;
  }
  returnValue /= weight;

  if (signInd == "-"){
     returnValue = returnValue * -1;
  }

  // 指定桁数に満たない場合は"0"で補完する(ex:0.2→0.200)
  var returnValueStr = new String(returnValue);
  var _digit = [get(returnValue)];
  var _pointValue = _digit[0][0];
  if(_pointValue != comPos){
    if(returnValueStr.indexOf(".") == -1){
      returnValueStr = returnValueStr + ".";
    }
    zeroPlus = comPos - _pointValue;
    for(i = 0; i < zeroPlus; i++){
      returnValueStr = returnValueStr + "0";
    }
  }

  return returnValueStr;
}
/*----------------------------------------------------------------------------*/
/*   機　能：文字列置換処理                                                   */
/*   引　数：FROMオブジェクト                                                 */
/*   返り値：なし                                                             */
/*----------------------------------------------------------------------------*/
function escapeChar(obj) {

  var len = obj.elements.length;
  for ( i = 0 ; i < len; i++ ) {
    if ( obj.elements[i].type == 'text') {
      obj.elements[i].value = obj.elements[i].value.replace (/㈱/g,'（株）');
      obj.elements[i].value = obj.elements[i].value.replace (/㈲/g,'（有）');
    }
  }
}
/*----------------------------------------------------------------------------*/
/*   機　能：四則演算を行う                                                   */
/*   引　数：_numberA：数値1、                                                */
/*           _numberB：数値2、                                                */
/*           _type：演算種別（"+", "-", "*", "/"）                            */
/*   返り値：演算結果数値                                                     */
/*   備　考：JavaScriptでの小数演算をするためのモジュール                     */
/*           普通に演算を行うと誤差が生じるため                               */
/*----------------------------------------------------------------------------*/
function demicalFloat(_numberA,_numberB,_type){
  var _h=(_type=="*")? "+":"-";
  var _c=[get(_numberA),get(_numberB)];
  var _A=_c[0][1];
  var _B=_c[1][1];
  var _pointA=_c[0][0];
  var _pointB=_c[1][0];

  if (_type=="*" || _type=="/"){
    var _k1=eval("_numberA"+_type+"_numberB");
    var _k2=eval("(_A"+_type+"_B)");
    if(get(_k1)[1]==_k2){
      return _k1;
    }
    else{
      return (_pointA+_pointB==0? _k1:eval(_k2+"/Math.pow(10,_pointA"+_h+"_pointB)"));
    }
  }
  else if (_type=="+" || _type=="-"){
    var _pointL=_pointA;
    if (_pointA < _pointB){
      _pointL=_pointB;
    }
    _numberA=demicalFloat(_numberA,Math.pow(10,_pointL),"*");
    _numberB=demicalFloat(_numberB,Math.pow(10,_pointL),"*");
    return eval("_numberA"+_type+"_numberB")/Math.pow(10,_pointL);
  }
  else{
    return "NaN"
  }
}
/*----------------------------------------------------------------------------*/
/*   機　能：demicalFloat関数用ユーティリティ関数                             */
/*   引　数：_number：数値                                                    */
/*   返り値：[小数部桁数][整数]                                               */
/*   備　考：                                                                 */
/*----------------------------------------------------------------------------*/
function get(_number){
  _number=""+_number;
  if (_number.indexOf(".")==-1){
    return [0,parseInt(_number)];
  }
  var _po=_number.split(".")[1].length;
  var _st=_number.split(".").join("");
  for (var _i=0;_i<_st.length;_i++){
    if (_st.charAt(0)=="0"){
      _st=_st.substr(1,_st.length);
    }
  }
  return [_po,parseInt(_st)];
}
/*----------------------------------------------------------------------------*/
/*   機　能：_val_a ÷ _val_bが割り切れるかをチェック                         */
/*   引　数：_val_a：数値1、                                                  */
/*           _val_b：数値2、                                                  */
/*   返り値：整数倍：true、割り切れない：false                                */
/*   備　考：                                                                 */
/*----------------------------------------------------------------------------*/
function chkDivide(_val_a , _val_b){
  var _ans = 0;
  var _buf = 0;
  var _val_a_ = parseFloat(_val_a);
  var _val_b_ = parseFloat(_val_b);
  _ans = roundCmp(calcDivide(_val_a_, _val_b_), 0, "F");
  _buf = demicalFloat(_val_b_, _ans, "*");
  return _val_a_ == _buf;
}
/*----------------------------------------------------------------------------*/
/*   機　能：chkDivide関数専用除算モジュール                                  */
/*   引　数：_number1：数値                                                   */
/*           _number2：数値                                                   */
/*   返り値：除算結果                                                         */
/*   備　考：除算結果が小数となる場合は計算結果が不正になる場合あり           */
/*----------------------------------------------------------------------------*/
function calcDivide(_number1, _number2){
  var _n1 = [get(_number1)];
  var _n2 = [get(_number2)];
  var digit = 0;
  var adjCnt = 1;
  var dAns = 0;
  if(_n2[0][0] - _n1[0][0] >= 0){
    digit = _n2[0][0] - _n1[0][0];
    for(_cnt = 0; _cnt < digit; _cnt++){
      adjCnt *= 10;
    }
    dAns = (_n1[0][1] * adjCnt) / _n2[0][1];
  }
  else{
    digit = _n1[0][0] - _n2[0][0];
    for(_cnt = 0; _cnt < digit; _cnt++){
      adjCnt *= 10;
    }
    dAns = _n1[0][1] / (_n2[0][1] * adjCnt);
  }
  return dAns;
}
/*----------------------------------------------------------------------------*/
/*   機  能：数値の表示を調整する(0の付加、削除)                              */
/*   引  数：数値,メッセージ表示、アイテム名,整数部桁数、小数部桁数           */
/*   返り値：編集済み数値項目                                                 */
/*   備  考：数値項目のonblurイベント等で使用                                 */
/*----------------------------------------------------------------------------*/
function numAdjust(num,msgOut,itemName,intBeams,decBeams){
var intStr = "0";
var decStr = "0";
var periodPos;
var nonEditNum;
  nonEditNum = numDelC(num);
  if (decBeams > 0){
    if (chkNum2(nonEditNum,msgOut,itemName,true) < 0){
      return num;
    }
  }else{
    if (chkNum2(nonEditNum,msgOut,itemName,false) < 0){
      return num;
    }
  }
  nonEditNum = delZero(nonEditNum);
  nonEditNum = delZeroRe(nonEditNum);
  nonEditNum = addZero(nonEditNum,decBeams);
  if(chkBeams(nonEditNum,msgOut,itemName,intBeams,decBeams)== -1){
    return num;
  }
  nonEditNum = editConmma(nonEditNum);
  return nonEditNum;
}
/*----------------------------------------------------------------------------*/
/*   機  能：入力時の表示を調整する                                           */
/*   引  数：数値項目                                                         */
/*   返り値：数値                                                             */
/*----------------------------------------------------------------------------*/
function numOnFocus(numItem){
  var num = numItem.value;
  num = numDelC(num);
  if (chkNum2(num,false,numItem.name,true) < 0){
  numItem.select();
    return -1;
  }
  num = delZero(num);
  num = delZeroRe(num);
  numItem.value = num;
  numItem.select();
}
/*----------------------------------------------------------------------------*/
/*   機  能：カンマの除去                                                     */
/*   引  数：数値文字列                                                       */
/*   返り値：数値文字列                                                       */
/*----------------------------------------------------------------------------*/
function numDelC(num){
var i;
var nonEditNum ="";
  for ( i = 0; i < num.length; i++ ) {
    if ( num.charAt(i) != "," ){
      nonEditNum = nonEditNum + num.charAt(i);
    }
  }
  return nonEditNum;
}
/*----------------------------------------------------------------------------*/
/*   機  能：数値項目に規定桁数に達するまで0を付ける                          */
/*   引  数：数値項目、規定桁数                                               */
/*   返り値：数値                                                             */
/*   備  考：小数点の表示に使用                                               */
/*----------------------------------------------------------------------------*/
function addZero(num,place){
var i;
var nonEditNum =num;
var j;
  if(place<=0){
    return num;
  }
  var p =num.indexOf( ".", 0 );
  if(p=="-1"){
    p= nonEditNum.length;
    nonEditNum +=".";
  }
  j = (place -(nonEditNum.length - (p+1)));
  for ( i = 0; i < j; i++ ) {
    nonEditNum += "0";
  }
  return nonEditNum;
}
/*----------------------------------------------------------------------------*/
/*   機  能：数値項目から先頭の0を取る                                        */
/*   引  数：数値項目                                                         */
/*   返り値：数値                                                             */
/*   備  考：数値の入力に使用                                               */
/*----------------------------------------------------------------------------*/
function delZero(num){
var i = 0;
var nonEditNum ="";
  if(num.charAt(0) == "-"){
    i = 1;
    nonEditNum ="-";
  }
  // 最後のゼロはとらない為に -1
  for ( ; i < num.length - 1; i++ ) {
    if( num.charAt(i) != "0"){
      break;
    }
  }
  if(num.charAt(i)=="."){
    i--;
  }
  nonEditNum += num.substring(i,num.length)
  return nonEditNum;
}
/*----------------------------------------------------------------------------*/
/*   機  能：数値項目から後方の0を取る                                        */
/*   引  数：数値項目                                                         */
/*   返り値：数値項目                                                         */
/*   備  考：小数点の入力に使用                                               */
/*----------------------------------------------------------------------------*/
function delZeroRe(num){
var i;
  if(num.indexOf(".",0)=="-1"){
    return num;
  }
  for ( i = num.length - 1 ; i >= 0; i-- ) {
    if( num.charAt(i) != "0"){
      break;
    }
  }
  if(num.charAt(i) == "."){
    i--;
  }
  return num.substring(0,i+1);
}
/*----------------------------------------------------------------------------*/
/*   機  能：数値項目に","を付ける                                            */
/*   引  数：数値項目                                                         */
/*   返り値：,編集済み数値                                                    */
/*----------------------------------------------------------------------------*/
function editConmma(num){
var i,j;
var strnum = "";
strnum = num + "";
// 整数部分、カンマ編集用文字列
var nonEditNum ="";
// 小数部分取り置き用文字列
var decNum = "";
var k = 0;
var p =strnum.indexOf( ".", 0 );
  if(p=="-1"){
    p=strnum.length;
  }else{
    // "."以下の文字は"."を含めてとって置く
    decNum = strnum.substring( p,strnum.length )
  }
  for ( i = p - 1,j=0; i >= 0; i--,j++) {
    if(j==3 && strnum.charAt(i) != "-"){
      nonEditNum = "," + nonEditNum;
      j=0;
    }
    nonEditNum = strnum.charAt(i) + nonEditNum;
  }
  return nonEditNum + decNum;
}
/*----------------------------------------------------------------------------*/
/*   機　能：ひらがなチェック（ひらがな以外はエラー）                         */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*           改行を許可するか否か(true:許可する、false:許可しない）           */
/*   返り値：False=エラー、True=正常                                          */
/*----------------------------------------------------------------------------*/
function isHiragana(theValue,msgOut,itemName,allowCr) {
var i;
  theValue = rTrim(theValue);
  if (theValue.match(/^[ぁ-んー　]*$/) == null) {
    if  (msgOut == true){
      window.alert("E533\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"はひらがなのみ入力可能です。");
    }
    return false;
  }
  if (allowCr == false){
    for(i = 0; i < theValue.length; i++){
      if ((theValue.charCodeAt(i) == 10)||(theValue.charCodeAt(i) == 13)){
        if (msgOut == true){
          window.alert("E532\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"には改行は入力出来ません。");
        }
        return false;
      }
    }
  }
  return true;
 }
/*----------------------------------------------------------------------------*/
/*   機　能：行数＋一行辺りの文字数チェック（改行コードWINのみ対応）          */
/*   引　数：チェック文字列、                                                 */
/*           エラーメッセージを出力するか否か(true:する、false:しない)、      */
/*           エラーメッセージに出力する項目名、                               */
/*           入力可能行数                                                     */
/*           一行辺りの入力可能文字数                                         */
/*   返り値：False=エラー、True=正常                                          */
/*   備　考：rTrim後のチェックを推奨                                          */
/*----------------------------------------------------------------------------*/
function isTextAreaCheck (theValue,msgOut,itemName,rows,cols){
var hist = theValue;
var j=0;
var k=0;
  for(var i = 0;i<rows-1;i++){
  k = hist.indexOf("\r\n",j);
    if(k!=-1){
      if(k-j>cols){
        break;
      }
    }else{
      break;
    }
    j=k+1;
  }
  if((i == rows-1 && hist.indexOf("\r\n",j) != -1) || hist.length - j >cols){
      if(msgOut == true){
        window.alert("E534\n\n"+itemName+"の入力内容に誤りがあります。\n"+itemName+"は１行" + cols + "文字、" + rows + "行以内で入力してください。");
      }
      return false;
  }
  return true;
}

/*----------------------------------------------------------------------------*/
/*   機　能：email check											          */
/*   引　数：チェック文字列、                                                 */
/*																			  */
/*   返り値：False=エラー、True=正常                                          */
/*   備　考：rTrim後のチェックを推奨                                          */
/*----------------------------------------------------------------------------*/
function checkEmailAddress(field) {
// the following expression! must be all on one line...
var check =/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
var goodEmail = field.value.match(check);
	if (goodEmail) {
		return true;
	}
	else {
		window.alert('不正なメールアドレスです。'); 
		return false;
	}
}

/*----------------------------------------------------------------------------*/
/*   機　能：URL check											          */
/*   引　数：チェック文字列、                                                 */
/*																			  */
/*   返り値：False=エラー、True=正常                                          */
/*   備　考：rTrim後のチェックを推奨                                          */
/*----------------------------------------------------------------------------*/
function isValidUrl(urls) {
	var chkExp = /http:\/\/([\w\-]+\.)+/g;
	if (chkExp.test(urls)) {
		alert ("不正なURLです。");
		return false;
	} else {
		return true;
	}

}


