/*
  SYSTEM PATOLIS-4
  COPYRIGHT (C) 2004 PATOLIS CORPORATION. ALL RIGHTS RESERVED.
*/
/*
  $Id: CWUString.js,v 1.1.1.1 2004/04/21 06:08:25 knweb Exp $
*/

/*----------------------------------------------------------*/
/* fGetTrim(InputStr,chkStr)                                */
/*                                                          */
/* 左右の不要文字を取り除く関数                             */
/*   InputStr,chkStr : 対象文字列 取り除く文字              */
/*   return          : 取り除き後の文字列                   */
/*----------------------------------------------------------*/
function fGetTrim(InputStr,chkStr)
{
    var temp;
    temp = "" + InputStr;
    temp = "" + fGetLTrim(temp,chkStr);
    temp = "" + fGetRTrim(temp,chkStr);

    return temp;
}

/*----------------------------------------------------------*/
/* fGetLTrim(InputStr,chkStr)                               */
/*                                                          */
/* 左側を不要文字を取り除く関数                             */
/*   InputStr,chkStr : 対象文字列 取り除く文字列            */
/*   return          : 取り除き後の文字列                   */
/*----------------------------------------------------------*/
function fGetLTrim(InputStr,chkStr)
{
    var temp;
    var chk;
    var i;

    if(chkStr==""){return InputStr}

    temp = "" + InputStr
    chk = 0;
    while(chk == 0){
        if(temp.charAt(0) == chkStr){
            temp = "" + temp.substring(1,temp.length);
        }
        else
        {
            chk = 1;
        }
    }
    return temp;
}

/*----------------------------------------------------------*/
/* fGetRTrim(InputStr,chkStr)                               */
/*                                                          */
/* 右側を不要文字を取り除く関数                             */
/*   InputStr,chkStr : 対象文字列 取り除く文字列            */
/*   return          : 取り除き後の文字列                   */
/*----------------------------------------------------------*/
function fGetRTrim(InputStr,chkStr)
{
    var temp;
    var chk;

    if(chkStr==""){return InputStr}

    temp = '' + InputStr;
    chk = 0;
    while(chk == 0)
    {
        if(temp.charAt(temp.length-1) == chkStr){
            temp = '' + temp.substring(0,temp.length-1);
        }
        else
        {
            chk = 1;
        }
    }
    return temp;
}

/*----------------------------------------------------------*/
/* fGetReplaceVariable(str, oldStr, newArray)               */
/*                                                          */
/* 置換対象文字列から以前の文字列全てを置換する             */
/* 置換の仕方は左から順に新しい文字列(配列)の順に置換する   */
/*   str  : 置換対象文字列                                  */
/*   oldStr  : 以前の文字列                                 */
/*   newArray   : 新しい文字列(配列)                        */
/*   return   : 置換後文字列                                */
/*----------------------------------------------------------*/
function fGetReplaceVariable(str, oldStr, newArray) {
    var vResult = "";
    var vSplit = str.split(oldStr);

    for(iCnt=0; iCnt<vSplit.length; iCnt++) {
        vResult = vResult.concat(vSplit[iCnt]);
        if(iCnt!=vSplit.length-1) {
            vResult = vResult.concat(newArray[iCnt]);
        }
    }
    return vResult;
}

/*----------------------------------------------------------*/
/* fGetReplaceStr(str,oldStr,newStr)                        */
/*                                                          */
/* 文字列の置換を行う                                       */
/*   str     : 置換対象文字列                               */
/*   oldStr  : 以前の文字列                                 */
/*   newStr  : 新しい文字列                                 */
/*   return  : 以前の文字列を新しい文字列で置換した文字列   */
/*----------------------------------------------------------*/
function fGetReplaceStr(str, oldStr, newStr) {
  var tmp = new Array();
  tmp = str.split(oldStr);
  str = tmp.join(newStr);
  return str;
}

/*----------------------------------------------------------*/
/* fCutCRLF(str)                                            */
/*                                                          */
/* 文字列から改行を削除する                                 */
/*   str    : 改行を削除する文字列                          */
/*   return : 改行を削除した文字列                          */
/*----------------------------------------------------------*/
function fCutCRLF(str) {
  str = str.replace(/[\n\r]/g, "");
  return str;
}

/*----------------------------------------------------------*/
/* fCutSPACE(str)                                           */
/*                                                          */
/* 文字列からスペースを削除する                             */
/*   str    : スペースを削除する文字列                      */
/*   return : スペースを削除した文字列                      */
/*----------------------------------------------------------*/
function fCutSPACE(str) {
  var ch;
  var result = "";
  for (i = 0; i < str.length; i++) {
    ch = str.charAt(i);
    if (ch != " " && ch != "　") {
      result += ch;
    }
  }
  return result;
}

/*----------------------------------------------------------*/
/* fGetByteLen(str)                                         */
/*                                                          */
/* 項目長の取得(半角)を行う                                 */
/*   str      : 対象文字列                                  */
/*   return   : 対象文字列バイト数                          */
/*----------------------------------------------------------*/
function fGetByteLen(val)
{
    var len;
    var i = 0;
    var escval;

    escval = escape(val);
    len = escval.length;

    for( ; ( i = escval.indexOf('%', i)) > -1 ; i++ ) {
        // '%uXXXX'を2バイト、 '%XX'を1バイトとして数える
        len -= escval.charAt(i+1) == 'u' ? 4 : 2;
    }
    return(len);
}

/*----------------------------------------------------------*/
/* fGetWWordLen(str)                                        */
/*                                                          */
/* 項目長の取得(全角)を行う                                 */
/*   str      : 対象文字列                                  */
/*   return   : 対象文字列文字数                            */
/*----------------------------------------------------------*/
function fGetWWordLen(val)
{
    var len = fGetByteLen(val);
    len = len / 2;
    return(len);
}

/*----------------------------------------------------------*/
/* fRSpeceTrim(InputStr)                                    */
/*                                                          */
/* 右側の半角スペース・全角スペースを取り除く関数           */
/*   InputStr        : 対象文字列                           */
/*   return          : 取り除き後の文字列                   */
/*----------------------------------------------------------*/
function fRSpeceTrim(InputStr)
{
    var temp;
    var chk;

    if(InputStr==""){return InputStr}

    temp = '' + InputStr;
    chk = 0;
    while(chk == 0)
    {
        if((temp.charAt(temp.length-1) == " ") ||
           (temp.charAt(temp.length-1) == "　"))
        {
            temp = '' + temp.substring(0,temp.length-1);
        }
        else
        {
            chk = 1;
        }
    }
    return temp;
}

/*----------------------------------------------------------*/
/* fIsModelDepCharTarget(formObj)                            */
/*                                                          */
/* 機種依存文字が含まれているかフォームの要素全てをチェックする関数  */
/*   formObj    : チェック対象フォーム                         */
/*   return     : 含まれていない → true                       */
/*                含まれている 　→ false                      */
/*----------------------------------------------------------*/
function fIsModelDepCharTarget(formObj) {
    var ret = true;
    count = formObj.elements.length;
    for(j=0; j<count; j++) {
        type = formObj.elements[j].type;
        if (type == "text" || type == "textarea" || type == "hidden") {
            ret = fIsModelDepChar(formObj.elements[j].value);
            if (!ret) {
                return false;
            }
        }
    }
    return true;
}


/*----------------------------------------------------------*/
/* fIsModelDepChar(str)                                    */
/*                                                          */
/* 機種依存文字が含まれているかチェックする関数                   */
/*   str        : チェック対象文字列                           */
/*   return     : 含まれていない → true                       */
/*                含まれている 　→ false                      */
/*----------------------------------------------------------*/
function fIsModelDepChar(str) {
    if (str == "") return true;
    var code;
    var result = true;
    for (i=0; i<str.length; i++) {
        code = str.charCodeAt(i);
        // 丸囲み数字
        if (code >= 0x2460 && code <= 0x2473) {
            return false;
            // ローマ数字（大文字）
        } else if (code >= 0x2160 && code <= 0x2169) {
            return false;
            // ローマ数字（小文字）
        } else if (code >= 0x2170 && code <= 0x2179) {
            return false;
            // 変な元号
        } else if (code >= 0x337B && code <= 0x337E) {
            return false;
            // 丸囲み文字
        } else if (code >= 0x32A4 && code <= 0x32A8) {
            return false;
            // 距離
        } else if (code >= 0x339C && code <= 0x339E) {
            return false;
        }

        switch (code) {
            case 0x2116: // No.
                return false;
            case 0x2121: // Tel
                return false;
            case 0x33CD: // K.K.
                return false;
            case 0x3231: // 株
                return false;
            case 0x3232: // 有
                return false;
            case 0x3239: // 代
                return false;
            case 0x338E: // mg
                return false;
            case 0x338F: // kg
                return false;
            case 0x33C4: // cc
                return false;
            case 0x3349: // ミリ
                return false;
            case 0x3314: // キロ
                return false;
            case 0x3322: // センチメートル
                return false;
            case 0x334D: // メートル
                return false;
            case 0x3318: // グラム
                return false;
            case 0x3327: // トン
                return false;
            case 0x3303: // アール
                return false;
            case 0x3336: // ヘクタール
                return false;
            case 0x3351: // リットル
                return false;
            case 0x3357: // ワット
                return false;
            case 0x330D: // カロリー
                return false;
            case 0x3326: // ドル
                return false;
            case 0x3323: // セント
                return false;
            case 0x332B: // パーセント
                return false;
            case 0x334A: // ミリバール
                return false;
            case 0x333B: // ページ
                return false;
            default:
        }
    }
    return true;
}