//**************************************************************************
// Title:       JFE共通システム
// File:        com.js
// Explanation: JAVAスクリプト定義ファイル
// Auther:      R.MIYANISHI
// Date:        2006/10/18
// Update:      2007/01/31 S.UJIFUKU
// Update:      2007/12/05 Y.NAMIKI   各関数内の変数のスコープをlocalに変更
//                                    DOMオブジェクトの負荷処理低減化
// Update:      2008/01/17 R.MIYANISHI 標準化
// Update:      2008/02/26 S.UJIFUKU   修正
// Update:      2008/03/12 S.UJIFUKU   修正
// Update:      2008/03/21 R.MIYANISHI 修正
//**************************************************************************

//**************************************************************************
// 仮で追加 (2007/05/02 R.MIYANISHI)
//**************************************************************************
// キー入力を掴むイベントハンドラ
document.onkeydown = function (e) {
    // 押されたキーコードが0x08（BackSpace）の時かつ、
    // テキストフィールドにフォーカスが当たっていない場合
    var event  = window.event || e;
    var t      = event.srcElement||event.target;
    var t_type = t.type;

    if (event.keyCode == 0x08 && t_type != "text" && t_type != "textarea" && t_type != "password"){
        // BackSpaceキーの処理（前ページへ遷移）を無効とする
        return false;
    }
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_def()
//      Form:
//      In:     なし
//      Out:    なし
//      Return: true
//      MEMO:   Javascriptで参照される定数
//      Auther: R.MIYANISHI
//      Date:   2006/10/22
//      Update: 2007/01/16
//**************************************************************************
var COMDEF = new com_def;
COMDEF.set_default();

function com_def() {
    var field_style_nomal;
    var field_style_error;

    var achex_url;

    this.set_default = function()
    {
        this.field_style_nomal = {backgroundColor:'#FFFFFF', color:'#000000'};
        this.field_style_error = {backgroundColor:'#FFDDDD', color:'#FF0000'};
    }
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   JSONエンコーディング
//      Form:   com_toJSONstring(hash)
//      In:     hash    JSON形式
//      Out:    なし
//      Return: URLエンコードされたJSON文字列
//      MEMO:   json.js の代わり
//      Auther: S.UJIFUKU
//      Date:   2007/01/31
//      Update: 
//**************************************************************************
function com_toJSONString(hash)
{
    var str = com_makeJSON(hash);

    // URLエンコード
    str = encodeURIComponent(str);

    return str;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   JSONエンコーディング
//      Form:   com_makeJSON(hash)
//      In:     hash    JSON形式
//      Out:    なし
//      Return: エンコードされたJSON文字列
//      MEMO:   json.js の代わり
//      Auther: S.UJIFUKU
//      Date:   2007/01/31
//      Update: 2007/02/07 Y.NAMIKI objectの場合は再帰的にデコードさせる
//**************************************************************************
function com_makeJSON(hash) {
    var init = true;
    var str = '{';

    for(var i in hash) {
        if(!init) str += ',';
        str += '"' + i.replace('"', '\\"', 'g') + '":';
        switch(typeof hash[i]) {
          case 'object':
            str += com_makeJSON(hash[i]);
            break;
          case 'function':
            str += hash[i].toString();
            break;
          default:
            str += '"' + hash[i].toString().replace('"', '\\"', 'g') + '"';
        }
        init = false;
    }
    str += '}';
    return str;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:
//      Form:   com_change_fontsize()
//      In:     なし
//      Return: なし
//      MEMO:   フォントサイズ別スタイル変更
//      Auther: R.MIYANISHI
//      Date:   2007/05/03
//      Update:
//**************************************************************************
function com_change_fontsize(p_title) {
    var i, a, main;
    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
        if(a.getAttribute("rel").indexOf("style") != -1
                && a.getAttribute("title")) {
            a.disabled = true;
        if(a.getAttribute("title") == p_title) a.disabled = false;
        }
    }
}

//**************************************************************************
//  FUNCTION Section:
//      Name:
//      Form:   com_pager()
//      In:     なし
//      Return: なし
//      MEMO:   ページ移動用（リクエストされたmodule,actionは同じ）
//      Auther: R.MIYANISHI
//      Date:   2007/03/15
//      Update:
//**************************************************************************
function com_pager(p_rowno) {
    document.forms['pager'].u_rowno.value=p_rowno;
    document.forms['pager'].submit();
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   日付フォーマット
//      Form:
//      In:     p_date   8桁数字（yyyymmdd)
//              p_format デフォルトYYYY/MM/DD(JD)
//      Out:    なし
//      Return: p_formatに整形した文字列
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/01/23
//      Update:
//**************************************************************************
function com_date_format(p_date, p_format) {
    // 曜日配列
    var youbi   = new Array("日","月","火","水","木","金","土");
    var youbi_e = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

    // 年月日切り出し
    var yy = p_date.substr(0, 4);
    var mm = p_date.substr(4, 2);
    var dd = p_date.substr(6, 2);

    var dateobj = new Date(yy, mm-1, dd); 
    var dy = dateobj.getDay();

    var f_date;

    switch (p_format) {
    case "YY/MM/DD":
        f_date = yy + "/" + mm +"/" + dd;
        break;
    case "YY/MM":
        f_date = yy + "/" + mm;
        break;
    case "YY/MM/DD(ED)":
        f_date = yy + "/" + mm + "/" + dd + "(" + youbi_e[dy] + ")";
        break;
    case "MM/DD(JD)":
        f_date = mm + "/" + dd + "(" + youbi[dy] + ")";
        break;
    case "JD":
        f_date = youbi[dy];
        break;
    case "(JD)":
        f_date = "(" + youbi[dy] + ")";
        break;
    case "YY/MM/DD(JD)":
    default:
        f_date = yy + "/" + mm + "/" + dd + "(" + youbi[dy] + ")";
        break;
    }

    return f_date;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   日付チェック
//      Form:
//      In:     p_date  (8桁の数字orYYYY/MM/DD)
//      Out:    なし
//      Return: ret
//              ret = {
//                    res   : true or false,
//                    date  : 数値8桁に整形された日付
//              };
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/01/23
//      Update:
//**************************************************************************
function com_check_date(p_date)
{
    var ret = new Object();

    if(p_date == ""){
        ret = { res : false };
        return ret; 
    }

    var str = "";
    str = p_date;
    // 正規表現による書式チェック 
    if(str.match(/^[0-9]+$/)){
        if(str.length != 8){
            ret = { res : false };
            return ret; 
        }
        var vYear  = parseInt(str.substr(0,4),10);
        var vMonth = parseInt(str.substr(4,2),10)-1; // Javascriptは0-11で表現 
        var vDay   = parseInt(str.substr(6,2),10); 
    } else if( str.match( /[0-9]{4}\/[0-9]{1,2}\/[0-9]{1,2}/ )){
        var ary = str.split("/");
        var vYear = parseInt(ary[0],10);
        var vMonth = parseInt(ary[1],10) - 1; // Javascriptは、0-11で表現 
        var vDay = parseInt(ary[2],10); 
    } else {
        ret = { res : false };
        return ret; 
    }

    // 月,日の妥当性チェック 
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){ 
        var vDt = new Date(vYear, vMonth, vDay); 

        if(isNaN(vDt)){ 
            ret = { res : false };
            return ret; 
        } else if(parseInt(vDt.getFullYear()) == vYear && 
                  parseInt(vDt.getMonth())    == vMonth &&
                  parseInt(vDt.getDate())     == vDay){ 

            // 8桁の文字列生成
            var stryear = String(vYear);
            if(vMonth < 9){
                var strmonth = "0" + (vMonth+1);
            } else {
                var strmonth = String(vMonth+1);
            }
            if(vDay < 10){
                var strday = "0" + vDay;
            } else {
                var strday = String(vDay);
            }
            str8 = stryear + strmonth + strday;
            ret = { res : true, date : str8 };
            return ret; 
        }else{ 
            ret = { res : false };
            return ret; 
        } 
    }

    ret = { res : false };
    return ret; 
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   入力項目チェック
//      Form:   com_check_field(event, p_parm)
//      In:     event   イベント
//              p_parm  JSON形式のオブジェクト
//      Out:    なし
//      Return: true
//      MEMO:   各項目チェック（チェックなし（p_funcなし）の場合はFocus移動）
//              【p_parmの項目についての注意!!】
//                  関数の名称はfxxxx(頭文字に"f:エフ"をつける）
//                  関数以外は頭文字fをつけない（禁止！！）
//      Auther: R.MIYANISHI
//      Date:   2006/10/22
//      Update: 2007/04/12 R.MIYANISHI メッセージ表示
//      Update: 2007/04/30 Y.NAMIKI    ESC処理を追加
//      Update: 2007/12/05 Y.NAMIKI    keyCodeを変数化
//**************************************************************************
function com_check_field(event, p_parm) {

    var keycd = event.keyCode;

    if( keycd != Event.KEY_RETURN &&
        keycd != 33 && //PgUp
        keycd != 34 && //PgDn
        keycd != Event.KEY_UP   &&
        keycd != Event.KEY_DOWN &&
        keycd != Event.KEY_ESC )
    {
        return false;
    }

    var p_next   = p_parm.next;
    var p_up     = p_parm.up;
    var p_down   = p_parm.down;
    var p_pgup   = p_parm.pgup;
    var p_pgdn   = p_parm.pgdn;
    var p_fcheck = p_parm.fcheck;
    var p_esc    = p_parm.esc;

    if( keycd == Event.KEY_RETURN ){
        // リターンキー
        if(p_fcheck && p_fcheck != "" ){
            // メッセージを初期化
            com_dispMsg({'msgid' : '', 'message':'', 'id' : 'message'});

            Event.stop(event);
            var ret   = p_fcheck(p_parm);
            var fcs   = ret.focus;   // フォーカス操作（true:有効,false:無効)
            var fcsid = ret.focusid; // フォーカスID
            var id    = ret.id;      // エラーフィールドID(配列）

            if(ret.res == false ){
                // エラー
                // エラーフィールド処理
                var p = COMDEF.field_style_error; // エラーフィールド用スタイル
                var idln = id.length;
                for(i=0; i<idln; i++){
                    Element.setStyle( id[i] , $H(p) );
                }

                // エラーメッセージを表示する。
                if(ret.msg && ret.msg != "" ){
                    com_dispMsg({'msgid':ret.msgid, 'message':ret.msg, 'id':'message'});
                }
            }

            if(fcs){
                // フォーカス制御
                if(Element.visible(fcsid) && !$(fcsid).disabled && $(fcsid).type != 'hidden'){

                     Field.focus(fcsid);
                }
            }
            Event.stop(event);
            return false;
        }

        // 関数の指定が無い場合
        if(Element.visible(p_next) && !$(p_next).disabled &&  $(p_next).type != 'hidden'){
            Field.focus(p_next);
        }
        Event.stop(event);
        return false;
    }

    if(keycd == 33 && p_pgup != "" ){
        //--------------------
        // PageUp
        //--------------------
        if($(p_pgup) != null) Field.focus(p_pgup);
        Event.stop(event);
        return false;
    }

    if(keycd == 34 && p_pgdn != "" ){
        //--------------------
        // PageDn
        //--------------------
        if ($(p_pgdn) != null) Field.focus(p_pgdn);
        Event.stop(event);
        return false;
    }

    if(keycd == Event.KEY_UP && p_up != "" ){
        if ($(p_up) != null) Field.focus(p_up);
        Event.stop(event);
        return false;
    }

    if(keycd == Event.KEY_DOWN && p_down != "" ){
        if ( $(p_down) != null) Field.focus(p_down);
        Event.stop(event);
        return false;
    }

    if(keycd == Event.KEY_ESC && p_esc != "" ){
        //--------------------
        // エスケープ(ESC)
        //--------------------
        if (p_esc) p_esc(); // 設定関数実行
        Event.stop(event);
        return false;
    }

    Event.stop(event);
    return false;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   数値フォーマット
//      Form:   com_number_format()
//      In:     なし
//      Out:    なし
//      Return: 
//      MEMO:   
//      Auther: R.MIYANISHI
//      Date:   2007/03/01 
//      Update:
//**************************************************************************
function com_number_format(p_num){
    var ret = new Object();                 // Return用Object生成

    // 初期値セット
    ret = { 'res': false };

    if (isNaN(p_num)){
        // 数値以外はfalse;
        return false;
    }

    var spstr = p_num.toString().split(".")
    var num   = spstr[0];
    var numln = num.length;
    
    for(var i=0; i<numln/3; i++){
        num = num.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2");
    }
    if(spstr[1]){
        num = num + "." +spstr[1];
    }
    return num;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   ドラッグウィンドウ操作
//      Form:   com_hwdrag()
//      In:     なし
//      Out:    なし
//      Return: 
//      MEMO:   ドラッグしてホバーウィンドウを動かす
//      Auther: Y.NAMIKI
//      Date:   2007/03/01 
//      Update:
//**************************************************************************
hwdragObj = new Object();
hwdragObj.dragFlag = false; // ドラッグ中かどうかのフラグ変数
hwdragObj.id       = null   // ドラッグカーソルＩＤ
hwdragObj.ara      = null   // ドラッグエリア

hwdragObj.dragStart = function (event) // ドラッグ開始処理
{
    hwdragObj.dragFlag = true;
    hwdragObj.offsetX  = com_drag_mouseX - parseInt(Element.getStyle($(hwdragObj.ara), 'left'));
    hwdragObj.offsetY  = com_drag_mouseY - parseInt(Element.getStyle($(hwdragObj.ara), 'top'));
    return false;
}
hwdragObj.dragEnd = function() // ドラッグ終了処理
{
    hwdragObj.dragFlag = false;
}
hwdragObj.dragProc = function(event) // ドラッグ中の処理
{
    // com_drag_mouseX,Y のスコープはglobal
    com_drag_mouseX = Event.pointerX(event);
    com_drag_mouseY = Event.pointerY(event);

    if (!hwdragObj.dragFlag) return;
    Element.setStyle($(hwdragObj.ara), {
        'left': com_drag_mouseX - hwdragObj.offsetX + 'px',
        'top' : com_drag_mouseY - hwdragObj.offsetY + 'px'
    });
    return false;
}
com_hwdrag = function(p_id, p_ara)
{
    hwdragObj.id  = p_id;
    hwdragObj.ara = p_ara;
    Element.setStyle($(hwdragObj.id), {'cursor': 'move'});
    var eleName = p_id;
    $(eleName).onmousedown = hwdragObj.dragStart;
    $(eleName).onmouseup   = hwdragObj.dragEnd;
    Event.observe(window.document, "mousemove", hwdragObj.dragProc, false);
}


//**************************************************************************
//  FUNCTION Section:
//      Name:   入力項目チェック
//      Form:   com_key_opelation(event, p_json)
//      In:     event   イベント
//              p_parm  JSON形式のオブジェクト
//                  キーコード: オブジェクト,
//      Out:    なし
//      Return: true
//      MEMO: 
//              【p_jsonの項目についての注意!!】
//                  キーコード起動関数をセットする
//      Auther: R.MIYANISHI
//      Date:   2007/03/02
//      Update:
//**************************************************************************
function com_key_operation(event, p_parm) {
    var keycd = event.keyCode;

    if( !p_parm || !p_parm[keycd]){
        return false;
    }
    p_parm[keycd]();
    return false;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   文字サイズチェック
//      Form:   com_check_sitsize()
//      In:     p_str   イベント
//              p_max
//              p_min
//      Out:    なし
//      Return: true
//      MEMO:   singleStrの文字列は１とカウントし、それ以外は2とカウントする
//              セリ側のテーブル渡す項目はこのチェック機能を使用すること！！
//      Auther: R.MIYANISHI
//      Date:   2007/03/30
//      Update:
//**************************************************************************
function com_check_strsize(p_str, p_max, p_min){
    var singleStr = "!\"#$%&'()*+,-. /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ。！＃＄％＆（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［］＾＿ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜ヰヱヮ　";

    var ret = new Object();
    ret = {'res' : false, 'msg' : ''};

    if(p_str == "" || (p_max && p_max !="" && isNaN(p_max)) || (p_min && p_min !="" && isNaN(p_min)) ){
        return ret;
    }

    //-----------------------
    // サイズを計算
    //-----------------------
    var size = 0;
    var char_length=("あ".length);
    var charVal;
    for(var i=0; i<p_str.length; i=i+char_length) {
        charVal = p_str.charAt(i);
        if( singleStr.indexOf(charVal) != -1){
            size++;
        } else {
            size+=2;
        }
    }

    //-----------------------
    // サイズチェック
    //-----------------------
    if(p_min && p_min != "" && size < p_min){
        return ret;
    }
    if(p_max && p_max != "" && size > p_max){
        return ret;
    }

    ret = {'res': true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:  半角トリム
//      Form:   com_trim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   半角スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2006/10/22
//      Update:
//**************************************************************************
function com_trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:  半角Ltrin
//      Form:   com_ltrim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   半角スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2007/02/14
//      Update:
//**************************************************************************
function com_ltrim(str){
    return String(str).replace(/^\s*/g, "");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:  半角rtrin
//      Form:   com_rtrim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   半角スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2007/02/14
//      Update:
//**************************************************************************
function com_rtrim(str){
    return String(str).replace(/\s*$/g, "");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   全角トリム
//      Form:   com_mb_trim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   全角スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2006/10/22
//      Update:
//**************************************************************************
function com_mb_trim(str) {
    return str.replace(/^　+|　+$/g,"");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:  全角ltrin
//      Form:   com_mb_ltrim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   全角左スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2007/02/14
//      Update:
//**************************************************************************
function com_mb_ltrim(str){
    return String(str).replace(/^　*/g, "");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:  半角rtrin
//      Form:   com_mb_rtrim(str)
//      In:     str             文字列
//      Out:    なし
//      Return: なし
//      MEMO:   全角右スペースを除去する
//      Auther: R.MIYANISHI
//      Date:   2007/02/14
//      Update:
//**************************************************************************
function com_mb_rtrim(str){
    return String(str).replace(/　*$/g, "");
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   文字数チェック
//      Form:   com_check_strRange()
//      In:     p_str
//              p_minstr    最小文字数
//              p_maxstr    最大文字数
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:   
//      Auther: R.MIYANISHI
//      Date:   2007/04/05 R.MIYANISHI
//      Update: 
//**************************************************************************
function com_check_strRange(p_str, p_minstr, p_maxstr)
{
    var str = com_mb_trim(com_trim(p_str));
    var ret = new Object();                 // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '値が入力されていません。'};
        return ret;
    }

    //-----------------------
    // 文字数チェック
    //-----------------------
    if(p_minstr != "" && str.length < p_minstr){
        ret = {'res' : false, 'msg' : '文字数が足りません。'};
        return ret;
    }
    if(p_maxstr != "" && str.length > p_maxstr){
        ret = {'res' : false, 'msg' : '文字数が多すぎます。'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   数字チェック
//      Form:   com_check_numRange
//      In:     p_num
//              p_max   最大値
//              p_min   最小値
//              p_type  整数のみ(小数点の場合エラー）: int(デフォルト）
//                                            少数OK : dec
//      Out:    なし
//      Return: ret
//                      'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/03/05 R.MIYANISHI
//      Update: 2008/01/17 R.MIYANISHI(整数チェックに追加）
//      Update: 2008/02/26 S.UJIFUKU(整数チェックは、マイナスもOKとする)
//      Update: 2008/02/29 R.MIYANISHI(最小値、最大値パラメータの有無チェック変更）
//              0(ゼロ）が入力されていたときは入力されていないものして扱われるため
//**************************************************************************
function com_check_numRange(p_num, p_min, p_max, p_type )
{
    var ret = new Object();                 // Return用Object生成

    if(p_num == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if (isNaN(p_num)) {
        // 数値以外はfalse;
        ret = {'res' : false, 'msg' : '数値のみを入力してください。'};
        return ret;
    }

    var str = String(p_num);
    switch(p_type){
    case 'int':
    default:
        // 整数チェック
        if(String(parseInt(p_num, 10)) != String(Number(p_num)) || !str.match(/^[\-0-9]+$/)){
            ret = {'res' : false, 'msg' : '整数で入力してください。'};
            return ret;
        }
        var numval = parseInt(p_num, 10);
        break
    case 'dec':

        var numval = Number(p_num);
        break
    }

    var flg = "";
    if(String(p_min) != "" && String(p_max) != ""){
        var min = Number(p_min);
        var max = Number(p_max);
        // 最大小値チェック

        if (numval < min || numval > max) {
            flg = "false";
        }
    } else if( String(p_min) != "") {
        var min = Number(p_min);
        // 最小値チェックのみの場合
        if (numval < min ) {
            flg = "false";
        }
    } else if( String(p_max) != "") {
        var max = Number(p_max);
        // 最大値チェックのみの場合
        if (numval > max) {
            flg = "false";
        }
    }

    if(flg == 'false'){
        ret = {'res' : false, 'msg' : '範囲内の数値を入力してください。'};
        return ret;
    }

    ret = {'res': true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   半角英数チェック(記号含まない）
//      Form:   com_check_str()
//      In:     p_str           文字列
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/05
//      Update:
//**************************************************************************
function com_check_str(p_str, p_except) 
{
    var str = com_mb_trim(com_trim(p_str));
    var ret = new Object();                 // Return用Object生成

    if(!p_except || p_except=="") p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if (!str.match(/^[0-9a-zA-Z]+$/)) {
        ret = { 'res' : false,
                'msg' : "半角英数のみ入力してください。" };
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   半角英小文字数チェック(記号含まない）
//      Form:   com_check_numlstr
//      In:     p_str           文字
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/05
//      Update: 
//**************************************************************************
function com_check_numlstr(p_str)
{
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                 // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if (!str.match(/^[0-9a-z]+$/)) {
        ret = { 'res' : false,
                'msg' : '半角英小文字または数字のみ入力してください。' };
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   英大文字、数値チェック(記号含まない）
//      Form:   com_check_numustr
//      In:     formobj         フォームオブジェクト
//              name            エラー表示名称
//              required        必須項目（'Yes': 必須！！)
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2006/10/16
//      Update: 2007/02/07 R.MIYANISHI
//      Update: 2007/03/09 Y.NAMIKI  OUTPUTをオブジェクト化
//**************************************************************************
function com_check_numustr(p_str) 
{
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if (!str.match(/^[0-9A-Z]+$/)) {
        ret = { 'res' : false,
                'msg' : name+'は半角英大文字または数字のみ入力してください。'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_zenkakuStr()
//      Form:   全角文字チェック
//      In:     p_str           文字列
//              p_except        例外文字列（許可する文字）
//      Out:    ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      Return: なし
//      MEMO:   ｢!｣から「~」の間と｢｡｣から「ﾟ」の間が半角の文字コード。
//              ブラウザによって全角文字列数が異なる可能性があるため、
//              全角文字「あ」のサイズを取得する。
//      Auther: R.MIYANISHI
//      Date:   2007/04/10
//      Update: 
//**************************************************************************
function com_check_zenkakuStr(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(!p_except) p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var charVal, c;
    var char_length = ("あ".length);
    var str_length  = str.length

    for(var i=0; i<str_length; i=i+char_length) {
        charVal = str.charAt(i);

        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(charVal) >= 0){
                continue;
            }
        }

        // 1バイト文字はNG
        if(escape(charVal).length < 4){
            ret = { 'res' : false,
                    'msg' : '全角文字を入力してください。' };
            return ret;
        }

        if ((charVal >= "!" && charVal <= "~")
                        || (charVal >= "｡" && charVal <= "ﾟ")) {
            ret = { 'res' : false,
                    'msg' : '全角文字を入力してください。' };
            return ret;
        }   
    
        c = str.charCodeAt(i);
        //  半角カタカナは不許可(上の条件に漏れてる場合。。）一応。
        if (c >= 0xff61 && c <= 0xff9f) {
            ret = { 'res' : false,
                    'msg' : '全角文字を入力してください。' };
            return ret;
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   全角カナチェック (ー，－，全角ブランクOK)
//      Form:   com_check_zenkakuKana
//      In:     p_str           文字列
//              p_except        例外文字列（許可する文字）
//      Out:    ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      Return: なし
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/10
//      Update:
//**************************************************************************
function com_check_zenkakuKana(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成

    if(!p_except) p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var zen='アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョー－　ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ';

    var tmp1;
    var char_length = ("あ".length);
    var str_length  = str.length;

    for (var i=0; i<str_length; i=i+char_length) {
        /* 文字列を１文字ずつ調べる */
        tmp1 = str.substr(i,1);

        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(tmp1) >= 0){
                continue;
            }
        }

        if(zen.indexOf(tmp1) == -1){
            ret = {'res' : false, 'msg' : '全角カナ入力のみです。'};
            return ret;
        }
    }
    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_vendorStr()
//      Form:   機種依存文字チェック
//      In:     p_str         フォームオブジェクト
//              p_except       例外文字列（許可する文字）
//      Out:    ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      Return: なし
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/10
//      Update: 2008/03/12 S.UJIFUKU  '\'（バックスラッシュ）もチェク対象
//**************************************************************************
function com_check_vendorStr(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成
    
    if(!p_except) p_except = "";

    var err_str ='\\,\'①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤ≡∫∮∑√⊥∠∟⊿∵∩∪ⅥⅦⅧⅨⅩ㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡㍻№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼";㍻';

    var tmp1;
    var char_length = ("あ".length);
    var str_length  = str.length;

    for (var i=0; i<str_length; i=i+char_length) {
        /* 文字列を１文字ずつ調べる */
        tmp1 = str.substr(i,1);

        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(tmp1) >= 0){
                continue;
            }
        }

        if(err_str.indexOf(tmp1) != -1){
            ret = {'res' : false, 'msg' : ''};
            return ret;
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_url()
//      Form:   urlアドレスチェック
//      In:     p_str           文字列
//      Out:    ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      Return: なし
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2006/10/16
//      Update: 2007/03/09 Y.NAMIKI  OUTPUTをオブジェクト化
//**************************************************************************
function com_check_url(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if(!str.match(/^https{0,1}?:\/\/[\x23-\x2f\w!:;=?\@~]+/g)){
        ret = {'res' : false, 'msg' : '正しく入力してください'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_mail()
//      Form:   Mailアドレスチェック
//      In:     p_str        文字列
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2006/10/16
//      Update: 2007/03/09 Y.NAMIKI  OUTPUTをオブジェクト化
//**************************************************************************
function com_check_mail(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if(!str.match(/^[!#-9A-~]+@+[a-z0-9]+.+[^.]$/i)){
        ret = { 'res' : false,
                'msg' : 'Mailアドレスとを正しく入力してください。' };
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_zipno()
//      Form:   郵便NOチェック
//      In:     p_str           文字列（郵便番号）
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : メッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/12
//      Update: 
//      Update: 
//**************************************************************************
function com_check_zipno(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if(!com_check_strRange(str, 0, 8)){
        ret = { 'res' : false,
                'msg' : '文字数を正しく入力してください。'};
        return ret;
    }

    var str_length = str.length;

    for(var i=0; i<str_length; i++){

        if(i!=3){
            if(isNaN(str.charAt(i))){
                ret = { 'res' : false,
                        'msg' : '不正な文字が入力されています。'};
                return ret;
            }
        } else {
            if(str.charAt(i)!='-'){
                ret = { 'res' : false,
                        'msg' : '不正な文字が入力されています。'};
                return ret;
            }
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   電話NOチェック
//      Form:
//      In:     p_str           telno           
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2006/04/12
//      Update:
//**************************************************************************
function com_check_telno(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if (str.match(/^[0-9]+\-[0-9]+\-[0-9]+$/) == null) {
        ret = { 'res' : false,
                'msg' : '数値および「-」(ハイフン)を入力してください。'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_hankakukana()
//      Form:   半角カナチェック (半角ブランクOK)
//      In:     p_str           文字列
//              p_except        例外文字列（許可する文字）
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:半角長音記号「ｰ」NG
//      Auther: Y.Noritusne
//      Date:   2007/03/07
//      Update: 
//**************************************************************************
function com_check_hankakuKana(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str));
    var ret = new Object();                   // Return用Object生成

    if(!p_except) p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var zen='ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｯｬｭｮﾞﾟ ';

    var tmp1;
    var char_length = ("あ".length);
    var str_length  = str.length;

    for (var i=0; i<str_length;  i=i+char_length) {
        /* 文字列を１文字ずつ調べる */
        tmp1 = str.substr(i,1);
        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(tmp1) >= 0){
                continue;
            }
        }

        if(zen.indexOf(tmp1) == -1){
            ret = { 'res' : false,
                    'msg' : '半角カナ入力のみです。' };
            return ret;
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   半角英数字カナチェック (，半角ブランクOK)
//      Form:   com_check_hankakuStr()
//      In:     p_str           文字列
//              p_except        例外文字
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: Y.Noritusne
//      Date:   2007/03/07
//      Update: 
//**************************************************************************
function com_check_hankakuStr(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成

    if(!p_except) p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var tmp, tmp1, retkana;
    var char_length = ("あ".length);
    var str_length  = str.length;

    for (var i=0; i<str_length; i++) {
        /* 文字列を１文字ずつ調べる */
        tmp1 = str.substr(i,1);
        tmp  = tmp1.match(/[0-9a-zA-Z]+/g);

        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(tmp1) >= 0){
                continue;
            }
        }

        if (tmp != tmp1) {
            retkana = com_check_hankakuKana(tmp1);
            if(!retkana.res){
                ret = { 'res' : false,
                        'msg' : '半角英数カナ入力のみです。' };
                return ret;
            }
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   フロリス名称チェック
//      Form:   com_check_florisnm()
//      In:     p_str           文字列
//              p_except        例外文字
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:   全角（カナ、数字、英大文字、記号）
//      Auther: Y.Noritusne
//      Date:   2007/06/05
//      Update: 
//**************************************************************************
function com_check_florisnm(p_str, p_except) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成

    if(!p_except) p_except = "";

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var zen='アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョー－　ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ１２３４５６７８９０ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ（）＋／．！　';

    var tmp1;
    var char_length = ("あ".length);
    var str_length  = str.length;

    for (var i=0; i<str_length;  i=i+char_length) {
        /* 文字列を１文字ずつ調べる */
        tmp1 = str.substr(i,1);
        // 例外文字列の場合はOK
        if(p_except != ""){
            if(p_except.indexOf(tmp1) >= 0){
                continue;
            }
        }

        if(zen.indexOf(tmp1) == -1){
            ret = { 'res' : false, 'msg' : '。' };
            return ret;
        }
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_numstr()
//      Form:   数字チェック(半角）
//      In:     p_str           フォームオブジェクト
//              p_except        例外文字列（許可する文字）
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: Y.Noritusne
//      Date:   2007/03/08
//      Update:
//**************************************************************************
function com_check_numstr(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    if(!str.match(/^[0-9]+$/)){
        ret = { 'res' : false,
                'msg' : '半角数字のみ入力してください。'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_hankakuKanakoza()
//      Form:   口座名(半角カナ,"(",")"のみ可)チェック ("(",")"，半角ブランクOK)
//      In:     formobj         フォームオブジェクト
//              name            エラー表示名称
//              required        必須項目（'Yes': 必須！！)
//              except          例外文字列（許可する文字）
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:
//      Auther: Y.Noritusne
//      Date:   2007/03/07
//      Update: 2007/04/12 R.MIYANISHI
//              2007/06/13 Y.KAWANO
//                         半角ピリオド・半角数字・半角英大文字をＯＫとする
//**************************************************************************
function com_check_hankakuKanakoza(p_str) {
    var str = com_mb_rtrim(com_rtrim(p_str)); // 
    var ret = new Object();                   // Return用Object生成

    if(str == ""){
        ret = {'res' : false, 'msg' : '未入力です。'};
        return ret;
    }

    var except = '()-.0123456789ABCDEFGHIJKLNMOPQRSTUVWXYZ';
    
    var kanaret = com_check_hankakuKana(str, except);
    if(!kanaret.res){
        ret = {'res' : false, 'msg' : '不正な文字が入力されています。'};
        return ret;
    }

    ret = {'res' : true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_okiba()
//      Form:   置場チェック
//      In:     p_str   :   文字列
//      Out:
//      Return:
//      MEMO:
//      Auther: K.AMEMIYA
//      Date:   2007/04/17
//      Update:
//**************************************************************************
function com_check_okiba(p_str)
{
    var ret = new Object();

    // ハイフンを境に、左：３、右：２文字以内のチェック
    var spstr = p_str.split("-");

    // ハイフンが無い場合もしくは、ハイフンが２つ以上ある場合
    if (spstr[1] == null || spstr[2] != null){
        ret = { 'res' : false };
        return ret;
    }

    var ary = new Array(4,3);
    var instr;

    // 文字のチェック
    for (var i=0; i<2; i++) {
        lnstr = spstr[i].length;
        if(lnstr >= ary[i] || lnstr < 1){
            ret = { 'res' : false};
            return ret;
        }
        if (!spstr[i].match(/^[0-9a-zA-Z]+$/)) {
            ret = { 'res' : false};
            return ret;
        }
    }

    ret = { 'res' : true };
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_getMsg
//      Form:   メッセージ取得
//      In:     p_parm 
//                'msgid'  : メッセージID 
//                'msglist': ローカルメッセージリスト
//      Out:    
//      Return: メッセージ
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/12
//      Update:
//**************************************************************************
function com_getMsg (p_parm)
{
    var p_msgid   = p_parm['msgid'];
    var p_msglist = p_parm['msglist'];

    if(typeof(p_msglist[p_msgid]) != 'undefined'){
        return p_msglist[p_msgid];
    }

    if(typeof(comMsg[p_msgid]) != 'undefined' ){
        return comMsg[p_msgid];
    }

    return 'No Message : code[ '+p_msgid+' ]';
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_dispMsg
//      Form:   メッセージ取得
//      In:     p_parm 
//                'msgid'  : メッセージID 
//                'msg'    : メッセージ
//                'id'     : 表示id
//      Out:    
//      Return:
//      MEMO:
//      Auther: R.MIYANISHI
//      Date:   2007/04/12
//      Update:
//**************************************************************************
function com_dispMsg (p_parm)
{
    var p_msgid = p_parm['msgid'];
    var p_msg   = p_parm['message'];
    var p_id    = p_parm['id'];

    if($(p_id) && Element.visible(p_id) && !$(p_id).disabled){
        switch(p_msgid.substr(0,1)) {
        default: 
            var clsnm = 'com_menu-blue';
            break;
        case 'I':
            var clsnm = 'com_menu-yellow';
            break;
        case 'E':
            var clsnm = 'com_menu-pink';
            break;
        case 'W':
            var clsnm = 'com_menu-pink';
            break;
        }

        Element.removeClassName( p_id , Element.classNames(p_id) );
        Element.addClassName( p_id , clsnm );
        if(p_msg == ''){
            $(p_id).innerHTML = "";
            return;
        }
        $(p_id).innerHTML = p_msg + "("+ p_msgid +")";
    }
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_gazodsp
//      Form:   画像表示
//      In:     p_hincd     品目コード
//              p_hiscd     品種コード
//              p_kencd     県コード
//              p_sanc1     産地コード1
//              p_sanc2     産地コード2
//              p_sanc3     産地コード3
//      Out:    
//      Return:
//      MEMO:
//      Auther: Y.NORITSUNE
//      Date:   2007/06/28
//      Update:
//**************************************************************************
var gazo_winobj = Object();
function com_gazodsp (p_hincd, p_hiscd, p_kencd,p_sanc1,p_sanc2,p_sanc3)
{
    document.forms['com_gazo'].gazo_hincd.value = p_hincd; // 品目コード
    document.forms['com_gazo'].gazo_hiscd.value = p_hiscd; // 品種コード
    document.forms['com_gazo'].gazo_kencd.value = p_kencd; // 県コード
    document.forms['com_gazo'].gazo_sanc1.value = p_sanc1; // 産地コード1
    document.forms['com_gazo'].gazo_sanc2.value = p_sanc2; // 産地コード2
    document.forms['com_gazo'].gazo_sanc3.value = p_sanc3; // 産地コード3

    // サブウィンドウオープン
    gazo_winobj = window.open('','gazo_winobj',"scrollbars=yes,status=no,location=no,directories=no,width=1024,height=768");
    
    // サブウィンドウサブミット
    var tName = document.forms['com_gazo'].target;                 // ターゲット退避
    document.forms['com_gazo'].target       = "gazo_winobj";       // サブウィンドウにターゲット
    document.forms['com_gazo'].module.value = COMDEF.GAZODSP_MOD;  // モジュールセット
    document.forms['com_gazo'].action.value = COMDEF.GAZODSP_ACT1; // アクションセット
    document.forms['com_gazo'].submit();
    
    // ターゲットを親ウィンドウに戻す。
    document.forms['com_gazo'].target = tName;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_gazodsp2
//      Form:   画像表示
//      In:     p_gzono     画像No
//              p_size      画像サイズ
//      Out:    
//      Return:
//      MEMO:
//      Auther: Y.NORITSUNE
//      Date:   2007/06/28
//      Update:
//**************************************************************************
var gazo2_winobj = Object();
function com_gazodsp2 (p_gzono, p_size)
{
    document.forms['com_gazo'].gazo_gzono.value = p_gzono;      //品目コード
    document.forms['com_gazo'].gazo_size.value  = p_size;       //品種コード

    // サブウィンドウオープン
    gazo2_winobj = window.open('','gazo2_winobj',"scrollbars=yes,status=no,location=no,directories=no,width=800,height=600");
    
    // サブウィンドウサブミット
    var tName = document.forms['com_gazo'].target;                 // ターゲット退避
    document.forms['com_gazo'].target = "gazo2_winobj";            // サブウィンドウにターゲット
    document.forms['com_gazo'].module.value = COMDEF.GAZODSP_MOD;  // モジュールセット
    document.forms['com_gazo'].action.value = COMDEF.GAZODSP_ACT2; // アクションセット
    document.forms['com_gazo'].submit();
    
    // ターゲットを親ウィンドウに戻す。
    document.forms['com_gazo'].target = tName;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_gazoeditdsp
//      Form:   画像編集
//      In:     p_hincd     品目コード
//              p_hiscd     品種コード
//              p_kencd     県コード
//              p_sanc1     産地コード1
//              p_sanc2     産地コード2
//              p_sanc3     産地コード3
//      Out:    
//      Return:
//      MEMO:
//      Auther: K.Matsunaga
//      Date:   2007/06/29
//      Update:
//**************************************************************************
var gazoe_winobj = Object();
function com_gazoeditdsp (p_hincd, p_hiscd, p_kencd,p_sanc1,p_sanc2,p_sanc3)
{
    document.forms['com_gazo'].gazo_hincd.value = p_hincd;      //品目コード
    document.forms['com_gazo'].gazo_hiscd.value = p_hiscd;      //品種コード
    document.forms['com_gazo'].gazo_kencd.value = p_kencd;      //県コード
    document.forms['com_gazo'].gazo_sanc1.value = p_sanc1;      //産地コード1
    document.forms['com_gazo'].gazo_sanc2.value = p_sanc2;      //産地コード2
    document.forms['com_gazo'].gazo_sanc3.value = p_sanc3;      //産地コード3

    // サブウィンドウオープン
    gazoe_winobj = window.open('','gazoe_winobj',"scrollbars=yes,status=no,location=no,directories=no,width=1024,height=768");
    
    // サブウィンドウサブミット
    var tName = document.forms['com_gazo'].target;                 // ターゲット退避
    document.forms['com_gazo'].target = "gazoe_winobj";            // サブウィンドウにターゲット
    document.forms['com_gazo'].module.value = COMDEF.GAZOEDIT_MOD; // モジュールセット
    document.forms['com_gazo'].action.value = COMDEF.GAZOEDIT_ACT; // アクションセット
    document.forms['com_gazo'].submit();
    
    // ターゲットを親ウィンドウに戻す。
    document.forms['com_gazo'].target = tName;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_time
//      Form:   時分チェック
//      In:     p_hhmm (数字4桁 HHMM)
//      Out:    なし
//      Return: ret
//              ret = {
//                    res   : true or false
//              };
//      MEMO:   
//      Auther: K.Matsunaga
//      Date:   2007/06/21
//**************************************************************************
function com_check_time(p_hhmm)
{
    var ret    = new Object(); // Return用Object生成
    var n_hhmm = parseInt(p_hhmm,10);
    
    if(p_hhmm.match(/^[0-9]{4}$/)){
        if(n_hhmm < 2360){
            // 0000～2359がOK
            var n_hh = parseInt(p_hhmm.substr(0,2),10);
            var n_mm = parseInt(p_hhmm.substr(2,2),10);
            if(n_hh < 24 && n_mm <= 60){
                ret = {'res' : true, 'msg' : ''};
                return ret;
            }else{
                ret = {'res' : false, 'msg' : ''};
                return ret;
            }
        }else{
            ret = {'res' : false, 'msg' : ''};
            return ret;
        }
    }else{
        ret = {'res' : false, 'msg' : ''};
        return ret;
    }
}


//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_kokyaku()
//      Form:   顧客コードチェック
//      In:     p_str   :   文字列
//      Out:
//      Return:
//      MEMO:
//      Auther: K.AMEMIYA
//      Date:   2007/04/17
//      Update:
//**************************************************************************
function com_check_kokyaku(p_str)
{ 
    var ret = new Object();

    // ハイフンを境に、左：３、右：２文字以内のチェック
    var spstr = p_str.split("-");

    // ハイフンが無い場合もしくは、ハイフンが２つ以上ある場合
    if (spstr[1] == null || spstr[2] != null){
        ret = { 'res' : false };
        return ret;
    }

    var lnstr;
    var ary = new Array(4,3);

    // 文字のチェック
    for (var i=0; i<2; i++) {
        lnstr = spstr[i].length;
        if(lnstr != ary[i]){
            ret = { 'res' : false };
            return ret;
        }
        if (!spstr[i].match(/^[0-9a-zA-Z]+$/)) {
            ret = { 'res' : false };
            return ret;
        }
    }

    ret = { 'res' : true };
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_pswd_jsencode
//      Form:
//      In:     value   // 変換前パスワード
//      Out:    
//      Return: 変換後パスワード
//      MEMO:   パスワード暗号化
//      Auther: Y.NORITSUNE
//      Date:   2007/07/03
//**************************************************************************
function com_pswd_jsencode(p_pass)
{
    var plength  = p_pass.length;
    var deff     = 8 - Number(plength);
    var t_pass   = '' + p_pass;
    var pass_arr = new Array(8);               // 置換後
    var r_arr    = new Array(4,0,3,1,6,2,7,5); // 置換用
    var ret_pass = '';                         // 戻り値
    var index, pass_hash;
    
    // 文字埋
    for (var i=0; i<deff; i++) {
        t_pass = t_pass + '@';
    }
    
    // 位置変換
    for (var j=0; j<8; j++)  {
        index = r_arr[j];
        pass_arr[index] = t_pass.substr(j,1);
    }
    
    // ハッシュ値取得
    pass_hash = MD5_hexhash(p_pass).substr(0,10);
    for (var k=0; k<10; k++) {
        ret_pass += pass_hash.substr(k,1);
        if (pass_arr[k]) {
            ret_pass += pass_arr[k];
        }
    }

    return ret_pass;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_check_bytesize
//      Form:
//      In:     p_str      :チェック文字列
//              p_max      :最大値
//              p_min      :最小値
//      Out:    なし
//      Return: ret     'res' : true/false
//                      'msg' : エラーメッセージ
//      MEMO:   文字列のバイト数をチェック
//              あいうえお→%u3042%u3044%u3046%u3048%u304Aへ変換してチェックを行う
//              ※半角英数字は変換しないが記号は%XXの形式となる
//      Auther: S.MATSUMOTO
//      Date:   2007/11/08
//      UpDate: 2007/03/21 R.MIYANISHI 	SJISでのバイト数チェック
//              MEMOの方法では半角カナも2バイト扱いになるためサイズ計算方法変更
//
//**************************************************************************
function com_check_bytesize(p_str,  p_max, p_min) {
   
    var ret = new Object();
    ret = {'res' : false, 'msg' : ''};


    if(p_str == "" || (p_max && String(p_max) !="" && isNaN(p_max)) || (p_min && String(p_min) !="" && isNaN(p_min)) ){
        return ret;
    }
   
    //文字数のカウント
    var size = 0;
//    var str = escape(p_str);  // 全角文字は%uXXXXの形式へ変換
//    for (var i = 0; i < str.length; i++, size++) {
//       if (str.charAt(i) == "%") {
//          if (str.charAt(++i) == "u") {
//             i += 3;
//             size++;
//          }
//          i++;
//       }
//    }

    for (var i = 0; i < p_str.length; i++) {
        var c = p_str.charCodeAt(i);
        // Shift_JIS: 0x0 ～ 0x80, 0xa0 , 0xa1 ～ 0xdf , 0xfd ～ 0xff
        // Unicode : 0x0 ～ 0x80, 0xf8f0, 0xff61 ～ 0xff9f, 0xf8f1 ～ 0xf8f3
        if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
            size += 1;
        } else {
            size += 2;
        }
    }
   
    //-----------------------
    // サイズチェック
    //-----------------------
    if(p_min && String(p_min) != "" && size < p_min){
        return ret;
    }

    if(p_max && String(p_max) != "" && size > p_max){
        return ret;
    }

    ret = {'res': true, 'msg' : ''};
    return ret;
}

//**************************************************************************
//  FUNCTION Section:
//      Name:   com_submit
//      Form:
//      In:     p_form   // フォーム名
//              p_mod    // モジュール
//              p_act    // アクション
//      Out:
//      Return:
//      MEMO:   指定フォームをPOSTする
//      Auther: R.MIYANISHI
//      Date:   2008/01/09
//**************************************************************************
function com_submit(p_form, p_mod, p_act)
{
    document.forms[p_form].module.value=p_mod;
    document.forms[p_form].action.value=p_act;
    document.forms[p_form].submit();
}

