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

/*----------------------------------------------------------*/
/* fIsZeroString(InputStr)                                  */
/*                                                          */
/* 未入力チェックを行う                                     */
/*   InputStr : 対象文字列                                  */
/*   return   : true - 入力なし                             */
/*              false - 入力あり                            */
/*----------------------------------------------------------*/
function fIsZeroString(InputStr)
{
    if(InputStr!=null && InputStr.length > 0 ){
        return false;
    }
    return true;
}


/*----------------------------------------------------------*/
/* fIsApointStr(InputStr,ChkStr)                            */
/*                                                          */
/* 文字列が指定文字列の文字のみかをチェックする             */
/*   InputStr  : チェック対象文字列                         */
/*   ChkStr    : 指定文字列                                 */
/*   return    : true  - 指定文字列のみ                     */
/*               false - 指定文字列以外あり                 */
/*----------------------------------------------------------*/
function fIsApointStr(InputStr,ChkStr)
{
    for (i=0; i<InputStr.length; i++)
    {
        if (ChkStr.indexOf(InputStr.charAt(i)) < 0) {
                    return false;
        }
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsZenkaku(str)                                          */
/*                                                          */
/* 全角チェックを行う                                       */
/*   str      : 対象文字列                                  */
/*   return   : true - 全て全角                             */
/*              false - 全角以外あり                        */
/*----------------------------------------------------------*/
function fIsZenkaku(str)
{
    var ret = true;
    var numstring = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｶﾞｷﾞｸﾞｹﾞｺﾞｻﾞｼﾞｽﾞｾﾞｿﾞﾀﾞﾁﾞﾂﾞﾃﾞﾄﾞﾊﾞﾋﾞﾌﾞﾍﾞﾎﾞﾊﾟﾋﾟﾌﾟﾍﾟﾎﾟｧｨｩｪｫｯｬｭｮ｡｢｣､･ﾟﾞ!#$%&' ()*+,-ｰ./:;<=>?@ []~_{|}\^`" + '"'+ '\\';
    len = str.length;

    for(i = 0; i < len; i++){
        if(numstring.indexOf(str.charAt(i)) != -1){
            ret = false;
            break;
        }
    }
    return (ret);
}


/*----------------------------------------------------------*/
/* fIsZenkaku2(str,chkStr)                                  */
/*                                                          */
/* 全角＋指定文字列のみかチェックを行う                     */
/*   str      : 対象文字列                                  */
/*   chkStr   : 指定文字列                                  */
/*   return   : true - 全て全角＋指定文字列                 */
/*              false - 全角＋指定文字列以外あり            */
/*----------------------------------------------------------*/
function fIsZenkaku2(str,chkStr)
{
    var numstring = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｶﾞｷﾞｸﾞｹﾞｺﾞｻﾞｼﾞｽﾞｾﾞｿﾞﾀﾞﾁﾞﾂﾞﾃﾞﾄﾞﾊﾞﾋﾞﾌﾞﾍﾞﾎﾞﾊﾟﾋﾟﾌﾟﾍﾟﾎﾟｧｨｩｪｫｯｬｭｮ｡｢｣､･ﾟﾞ!#$%&' ()*+,-ｰ./:;<=>?@ []~_{|}\^`" + '"'+ '\\';
    len = str.length;

    for(i = 0; i < len; i++){
        if(numstring.indexOf(str.charAt(i)) != -1){
            //指定文字列かのチェック
            if(fIsApointStr(str.charAt(i),chkStr)) break;
            return false;
        }
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsHankaku(str)                                          */
/*                                                          */
/* 半角チェックを行う                                       */
/*   str      : 対象文字列                                  */
/*   return   : true - 全て半角                             */
/*              false - 半角以外あり                        */
/*----------------------------------------------------------*/
function fIsHankaku(str)
{
    var ret = true;
    var numstring = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｶﾞｷﾞｸﾞｹﾞｺﾞｻﾞｼﾞｽﾞｾﾞｿﾞﾀﾞﾁﾞﾂﾞﾃﾞﾄﾞﾊﾞﾋﾞﾌﾞﾍﾞﾎﾞﾊﾟﾋﾟﾌﾟﾍﾟﾎﾟｧｨｩｪｫｯｬｭｮ｡｢｣､･ﾟﾞ!#$%&' ()*+,-ｰ./:;<=>?@ []~_{|}\^`" + '"'+ '\\';
    len = str.length;

    for(i = 0; i < len; i++){
        if(numstring.indexOf(str.charAt(i)) == -1){
            ret = false;
            break;
        }
    }
    return(ret);
}

/*----------------------------------------------------------*/
/* fIsHankaku2(str,chkStr)                                  */
/*                                                          */
/* 半角＋指定文字列のみかチェックを行う                     */
/*   str      : 対象文字列                                  */
/*   chkStr   : 指定文字列                                  */
/*   return   : true - 全て半角＋指定文字列                 */
/*              false - 半角＋指定文字列以外あり            */
/*----------------------------------------------------------*/
function fIsHankaku2(str,chkStr)
{
    var numstring = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｶﾞｷﾞｸﾞｹﾞｺﾞｻﾞｼﾞｽﾞｾﾞｿﾞﾀﾞﾁﾞﾂﾞﾃﾞﾄﾞﾊﾞﾋﾞﾌﾞﾍﾞﾎﾞﾊﾟﾋﾟﾌﾟﾍﾟﾎﾟｧｨｩｪｫｯｬｭｮ｡｢｣､･ﾟﾞ!#$%&' ()*+,-ｰ./:;<=>?@ []~_{|}\^`" + '"'+ '\\';
    len = str.length;

    for(i = 0; i < len; i++){
        if(numstring.indexOf(str.charAt(i)) == -1){
            //指定文字列かのチェック
            if(fIsApointStr(str.charAt(i),chkStr)) break;
            return false;
        }
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsAlpha(str)                                            */
/*                                                          */
/* 半角英字チェックを行う                                   */
/*   str      : 対象文字列                                  */
/*   return   : true - 全て半角英字                         */
/*              false - 半角英字以外あり                    */
/*----------------------------------------------------------*/
function fIsAlpha(str)
{
    var val = str.toUpperCase()+"";

    if(val.length == 0){
        return true;
    }
    for( var i = 0 ; i < val.length ; i++ ){
        if("A" <= val.charAt(i) && "Z" >= val.charAt(i)) continue;
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsAlpha2(str,chkStr)                                    */
/*                                                          */
/* 半角英字＋指定文字列かのチェックを行う                   */
/*   str      : 対象文字列                                  */
/*   chkStr   : 指定文字列                                  */
/*   return   : true - 全て半角英字＋指定文字列             */
/*              false - 半角英字＋指定文字列以外あり        */
/*----------------------------------------------------------*/
function fIsAlpha2(str,chkStr)
{
    var val = str.toUpperCase()+"";

    if(val.length == 0){
        return true;
    }
    for( var i = 0 ; i < val.length ; i++ ){
        if("A" <= val.charAt(i) && "Z" >= val.charAt(i)) continue;
        //指定文字列かのチェック
        if(fIsApointStr(str.charAt(i),chkStr)) continue;
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsNumeric(num)                                          */
/*                                                          */
/* 半角数字チェックを行う                                   */
/*   num      : 対象文字列                                  */
/*   return   : true - 全て半角数値                         */
/*              false - 半角数値以外あり                    */
/*----------------------------------------------------------*/
function fIsNumeric(num)
{
    data = num.match(/[^0-9]/g);
    if (data){
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsNumeric2(num,chkStr)                                  */
/*                                                          */
/* 半角数字＋指定文字列のみかチェックを行う                 */
/*   num      : 対象文字列                                  */
/*   chkStr   : 指定文字列                                  */
/*   return   : true - 全て半角数値＋指定文字列             */
/*              false - 半角数値＋指定文字列以外あり        */
/*----------------------------------------------------------*/
function fIsNumeric2(num,chkStr)
{
    chkStr += "0123456789";
    for (i=0; i<num.length; i++)
    {
        if (chkStr.indexOf(num.charAt(i)) < 0)
        {
            return false;
        }
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsAlphaNumeric(str)                                     */
/*                                                          */
/* 半角英数字チェックを行う                                 */
/*   str      : 対象文字列                                  */
/*   return   : true - 全て半角英数字                       */
/*              false - 半角英数字以外あり                  */
/*----------------------------------------------------------*/
function fIsAlphaNumeric(str)
{
    var val = str.toUpperCase()+"";

    if(val.length == 0){
        return true;
    }
    for( var i = 0 ; i < val.length ; i++ ){
        if("A" <= val.charAt(i) && "Z" >= val.charAt(i)) continue;
        if("0" <= val.charAt(i) && "9" >= val.charAt(i)) continue;
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsAlphaNumeric2(str,chkStr)                             */
/*                                                          */
/* 半角英数字＋指定文字列のみかチェックを行う               */
/*   str      : チェック対象文字列                          */
/*   chkStr   : 指定文字列                                  */
/*   return   : true - 全て半角英数字＋指定文字列           */
/*              false - 半角英数字＋指定文字列以外あり      */
/*----------------------------------------------------------*/
function fIsAlphaNumeric2(str,chkStr)
{
    var val = str.toUpperCase()+"";

    if(val.length == 0){
        return true;
    }
    for( var i = 0 ; i < val.length ; i++ ){
        if("A" <= val.charAt(i) && "Z" >= val.charAt(i)) continue;
        if("0" <= val.charAt(i) && "9" >= val.charAt(i)) continue;
        //指定文字列かのチェック
        if(fIsApointStr(str.charAt(i),chkStr)) continue;
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsExistKana(kana1)                                      */
/*                                                          */
/* 文字列に半角カナが存在するかチェックする                 */
/*   kana1     : チェック対象文字列                         */
/*   return    : true  - 半角カナが存在する                 */
/*               false - 半角カナが存在しない               */
/*----------------------------------------------------------*/
function fIsExistKana(kana1)
{
    txt = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮｯｰ､｡｢｣ﾞﾟ";
    for (i=0; i<kana1.length; i++)
    {
        if (txt.indexOf(kana1.charAt(i),0) >= 0) { 
                    return true;
        }
    }
    return false;
}

/*----------------------------------------------------------*/
/* fIsDate(InputDate)                                       */
/*                                                          */
/* 文字列が日付として妥当であるかをチェックする             */
/* YYYYMMDD形式が正しい日付形式とする                       */
/*   InputDate : チェック対象文字列                         */
/*   return    : true  - 存在する日付形式                   */
/*               false - 存在しない日付形式                 */
/*----------------------------------------------------------*/
function fIsDate(InputDate){
    var iCount=0;
    st_val = InputDate;

    if (st_val == ""){
        return false;
    }

    data = st_val.match(/^\d{8}$/);
    if (!data) {
        // yyyymmdd指定ではない
        return false;
    }

    st_Year = eval(st_val.substring(0,4));
    st_Month = eval(st_val.substring(4,6));
    st_Day =  eval(st_val.substring(6,8));

    if ("01" <= st_Month && st_Month <= "12"){
        if(st_Day<=0 || 
            st_Day>30+((st_Month==4||st_Month==6||st_Month==9||st_Month==11)?0:1) || 
            (st_Month==2&&st_Day>28+(((st_Year%4==0&&st_Year%100!=0)||st_Year%400==0)?1:0)) ){
        }else{
            // 存在する日付
            return true;
        }
    }
    // 存在しない日付
    return false;
}

/*----------------------------------------------------------*/
/* fIsValidNumeric(num1,num2,num3)                          */
/*                                                          */
/* 指定値が指定範囲以内かのチェックを行う                   */
/*   num1    : チェック対象数値                             */
/*   num2    : 数値範囲(最小値)                             */
/*   num3    : 数値範囲(最大値)                             */
/*   return    : true  - 指定範囲内の数値                   */
/*               false - 指定範囲外の数値                   */
/*----------------------------------------------------------*/
function fIsValidNumeric(num1,num2,num3)
{
    if(fIsNumeric(num1)==false ||
       fIsNumeric(num2)==false ||
       fIsNumeric(num3)==false) {
        // 数値でない
        return false;
    }
    // 08,09の時エラーとされてしまうのを修正
    //if(parseInt(num1) > parseInt(num3) || parseInt(num1) < parseInt(num2)) {
    if( num1 < parseInt(num2) || num1 > parseInt(num3) ) {
        //範囲オーバー
        return false;
    }
    return true;
}

/*----------------------------------------------------------*/
/* fIsSingleByteChar(ch)                                    */
/*                                                          */
/* 文字が１バイト文字かの判定する                           */
/*   ch     : チェック対象文字                              */
/*   return : true  - １バイト文字                          */
/*            false - １バイト文字でない                    */
/*----------------------------------------------------------*/
function fIsSingleByteChar(ch) {
  var code = escape(ch);
  if (code == ch) {
    return true;
  } else if (code.length == 3) {
    hex = code.charAt(1) + code.charAt(2);
    if (parseInt(hex, 16) > 0 && parseInt(hex, 16) < 127) {
      return true;
    }
  }
  return false;
}


/*----------------------------------------------------------*/
/* fIsByteUnder(InputStr,InputLen)                          */
/*                                                          */
/* 文字列が指定バイト数以下かのチェックを行う               */
/*   InputStr : チェック対象文字列                          */
/*   InputLen : 指定バイト数                                */
/*   return   : true  - 指定バイト数以下                    */
/*              false - 指定バイト数を超える                */
/*----------------------------------------------------------*/
function fIsByteUnder(InputStr,InputLen) {
    var escval = escape(InputStr);
    var len = escval.length;

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

/*----------------------------------------------------------*/
/* fIsByteEquals(InputStr,InputLen)                         */
/*                                                          */
/* 文字列が指定バイト数かのチェックを行う                   */
/*   InputStr : チェック対象文字列                          */
/*   InputLen : 指定バイト数                                */
/*   return   : true  - 指定バイト数と等しい                */
/*              false - 指定バイト数と等しくない            */
/*----------------------------------------------------------*/
function fIsByteEquals(InputStr,InputLen) {
    var escval = escape(InputStr);
    var len = escval.length;

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

