//==============================================================================
// JavaScript 拡張関数群
//
// 作成者       ：2009/04/28 Y.Igarashi
// 変更履歴     ：
//==============================================================================
G_ErrColor = "pink";    // 入力エラー色
hankana = "ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁｽﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜｦﾝｧｨｩｪｫｬｭｮ､｡｢｣ﾞﾟ";

//===============================================================================
// 共通部リンク処理
//
// pgid : リンク先ID
//===============================================================================
function G_Link(pgid){
    document.forms[0].action = pgid;
    document.forms[0].submit();
}

//===============================================================================
// 日付 入力チェック・変換処理
//
// objnm    : チェック変換対象オブジェクト名
// objtitle : チェック変換対象項目名
// noinputflg : 未入力可否フラグ('1':未入力不可、'0'、未入力可)
//===============================================================================
function G_Chk_Date(objnm, objtitle, noinputflg){
    
    var ErrFlg = "0";
    var WkVal   = "";                          /* 処理対象値格納変数 */
    var WkLen   = 0;                           /* 処理対象値文字列長格納変数 */
    var Wk      = "";
    var Wk1     = "";                          /* 入力値格納変数1 */
    var Wk2     = "";                          /* 入力値格納変数2 */
    var Wk3     = "";                          /* 入力値格納変数3 */
    var WkYY    = new Date().getYear().toString();        /* 現在年 */
    var CgYY    = "";                          /* 変換後・年 */
    var CgMM    = "";                          /* 変換後・月 */
    var CgDD    = "";                          /* 変換後・日 */
    var i       = 0;                           /* 汎用ｶｳﾝﾀ */
    var suracnt = 0;                           /* ｽﾗｯｼｭｶｳﾝﾀ */

    // 入力チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnm].style.background = "white";

    // 処理対象ｵﾌﾞｼﾞｪｸﾄ値を取得
    WkVal = G_Del_Space(document.all[objnm].value);

    // 未入力不可時は未入力チェックを行う
    if(noinputflg == "1"){
        if(WkVal == ""){
            // エラー発生時処理
            G_Err_Occur(objnm, "【"+objtitle+"】を入力してください。");
            return false;
        }
    }

    /* 入力値有無ﾁｪｯｸ */
    if(WkVal != ""){
        /* 入力値有り */
        
        /* 処理対象値文字列長取得 */
        WkLen = WkVal.length;
        
        for(i = 1 ; i <= WkLen ; i++ ){
            /* 文字列長分ﾙｰﾌﾟ */
            
            /* 1文字抜き出す */
            Wk = WkVal.substring(i-1, i);
            
            if(Wk == "/"){
                /* 抜き出し文字列がｽﾗｯｼｭの時 */
                
                /* ｽﾗｯｼｭｶｳﾝﾀ加算 */
                suracnt = suracnt + 1;
                
                if(suracnt == 3){
                    /* ｽﾗｯｼｭが3つあった時はｴﾗｰ */
                    ErrFlg = "1";
                    
                }
                
            }
            else{
                if(suracnt == 0){
                    /* 一つ目のﾁｪｯｸ値取得 */
                    
                    Wk1 = Wk1 + Wk;
                }
                else if(suracnt == 1){
                    /* 二つ目のﾁｪｯｸ値取得 */
                    
                    Wk2 = Wk2 + Wk;
                }
                else if(suracnt == 2){
                    /* 三つ目のﾁｪｯｸ値取得 */
                    
                    Wk3 = Wk3 + Wk;
                }
                
            }
            
        }
        
        /* 一つ目、二つ目のﾁｪｯｸ値入力有無、ｽﾗｯｼｭが2個かつ三つ目のﾁｪｯｸ値入力有無ﾁｪｯｸ */
        if((Wk1 == "") || (Wk2 == "") || (suracnt == 2 && Wk3 == "")){
            /* 無い時はｴﾗｰ */
            ErrFlg = "1";
            
        }
        
        /* 日付入力整合性ﾁｪｯｸ */
        if(Wk3 != ""){
            /* 三つ目のﾁｪｯｸ値有り時( yy/mm/dd形式 ) */
            
            /* 入力年ﾁｪｯｸ・変換処理 */
            CgYY = G_Chk_Year(Wk1, WkYY);
            
            if(CgYY == false){
                /* 戻り値false時ｴﾗｰ */
                ErrFlg = "1";
                
            }
            
            /* 入力月ﾁｪｯｸ・変換処理 */
            CgMM = G_Chk_Month(Wk2);
            
            if(CgMM == false){
                /* 戻り値false時ｴﾗｰ */
                ErrFlg = "1";
                
            }
            
            /* 入力日ﾁｪｯｸ・変換処理 */
            CgDD = G_Chk_Day(Wk3, Wk2, Wk1)
            
            if(CgDD == false){
                /* 戻り値false時ｴﾗｰ */
                ErrFlg = "1";
                
            }            

        }
        else{
            /* 三つ目のﾁｪｯｸ値無し時( mm/dd形式) */
            
            /* 年を設定 */
            CgYY = WkYY;
            
            /* 入力月ﾁｪｯｸ・変換処理 */
            CgMM = G_Chk_Month(Wk1);
            
            if(CgMM == false){
                /* 戻り値false時ｴﾗｰ */
                ErrFlg = "1";
                
            }
            
            /* 入力日ﾁｪｯｸ・変換処理 */
            CgDD = G_Chk_Day(Wk2, Wk1, WkYY)
            
            if(CgDD == false){
                /* 戻り値false時ｴﾗｰ */
                ErrFlg = "1";
                
            }  
            
        }
       
        if(ErrFlg == "1"){
        
            // エラー発生時処理
            rtc = G_Err_Occur(objnm, "【" + objtitle + "】は YYYY/MM/DD 形式で入力してください。");
            
            return false;
            
        }
        else{
            
            // YYYY/MM/DD形式変換値を対象ｵﾌﾞｼﾞｪｸﾄに設定 */        
            document.all.item(objnm).value = CgYY + "/" + CgMM + "/" + CgDD;
        
        }
        
    }
    
}

//===============================================================================
//  入力年ﾁｪｯｸ変換処理
//
//  ChkVal : ﾁｪｯｸ対象値
//  NowYY  : 現在年
//
// 2007/03/08 ADD
//===============================================================================
function G_Chk_Year(ChkVal , NowYY){

    var ChgVal = "";                    /* 年変換後戻り値 */

    /* 年数値入力ﾁｪｯｸ */
    if(isNaN(ChkVal) == true){
        /* 入力年が数値ではない時はｴﾗｰ */
        return false;
                               
    }
    
    /* 年4桁以下ﾁｪｯｸ */
    if(ChkVal.length > 4){
        /* 4桁以上の時はｴﾗｰ */
        return false;
                
    }
    
    /* 入力年 YYYY変換 */
    if(ChkVal.length == 3){
        /* 入力年が3桁の時 */

        ChgVal = NowYY.substring(0, 1) + ChkVal;
                
    }
    else if(ChkVal.length == 2){
        /* 入力年が2桁の時 */
                
        ChgVal = NowYY.substring(0, 2) + ChkVal;
    
    }
    else if(ChkVal.length == 1){
        /* 入力年が1桁の時 */
                
        ChgVal = NowYY.substring(0, 3) + ChkVal;
    
    }
    else{
        /* 入力年が4桁の時 */
                
        ChgVal = ChkVal;
    
    }
    
    return ChgVal;

}

//===============================================================================
//  入力月ﾁｪｯｸ変換処理
//
//  ChkVal : ﾁｪｯｸ対象値
//
// 2007/03/08 ADD
//===============================================================================
function G_Chk_Month(ChkVal){

    var ChgVal = "";                    /* 年変換後戻り値 */
    
    /* 月数値入力ﾁｪｯｸ */
    if(isNaN(ChkVal) == true){
        /* 入力月が数値ではない時はｴﾗｰ */
        return false;
                
    }
    
    /* 月3桁以下ﾁｪｯｸ */
    if(ChkVal.length > 2){
        /* 2桁以上の時はｴﾗｰ */
        return false;
                
    }
            
    /* 1月〜12月ﾁｪｯｸ */
    if(eval(ChkVal) < 1 || eval(ChkVal) > 12){
        /* 1月〜12月では無い時はｴﾗｰ */
        return false;
                
    }
            
    /* 入力月 MM変換 */
    if(ChkVal.length == 1){
        /* 入力月が1桁の時 */
                
        ChgVal = "0" + ChkVal;
                
    }
    else{
        /* 入力月が2桁の時 */
                
        ChgVal = ChkVal;
                
    }
    
    return ChgVal;
    
}

//===============================================================================
//  入力日ﾁｪｯｸ変換処理
//
//  ChkVal : ﾁｪｯｸ対象値
//  InpMM  : 入力月
//  InpYY  : 入力年
//
// 2007/03/08 ADD
//===============================================================================
function G_Chk_Day(ChkVal, InpMM, InpYY){

    var ChgVal = "";                    /* 年変換後戻り値 */
    
    /* 日数値入力ﾁｪｯｸ */
    if(isNaN(ChkVal) == true){
        /* 入力日が数値ではない時はｴﾗｰ */
        return false;
                
    }
    
    /* 月値入力ﾁｪｯｸ */
    if(isNaN(InpMM) == true){
        /* 入力月が数値ではない時はｴﾗｰ */
        return false;
    }
    
    /* 日3桁以下ﾁｪｯｸ */
    if(ChkVal.length > 2){
        /* 2桁以上の時はｴﾗｰ */
        return false;
                
    }
    
    /* 月毎日ﾁｪｯｸ */
    if(eval(InpMM) == 1 || eval(InpMM) == 3 || eval(InpMM) == 5 || eval(InpMM) == 7 ||
        eval(InpMM) == 8 || eval(InpMM) == 10 || eval(InpMM) == 12){
                
        /* 1日〜31日ﾁｪｯｸ */
        if(eval(ChkVal) < 1 || eval(ChkVal) > 31){
            /* 1日〜31日では無い時はｴﾗｰ */
            return false;
                    
        }
                
    }
    else if(eval(InpMM) == 2){
        if(eval(InpYY) % 4 == 0){
            /* 1日〜29日ﾁｪｯｸ */
            if(eval(ChkVal) < 1 || eval(ChkVal) > 29){
                /* 1日〜29日では無い時はｴﾗｰ */
                return false;
                    
            }
        }
        else{
            /* 1日〜28日ﾁｪｯｸ */
            if(eval(ChkVal) < 1 || eval(ChkVal) > 28){
                /* 1日〜29日では無い時はｴﾗｰ */
                return false;
                    
            }
        }
    }
    else{
        /* 1日〜30日ﾁｪｯｸ */
        if(eval(ChkVal) < 1 || eval(ChkVal) > 30){
            /* 1日〜30日では無い時はｴﾗｰ */
            return false;
                    
        }
    }
    
    if(ChkVal.length == 1){
        /* 入力日が1桁の時 */
                
        ChgVal = "0" + ChkVal;
    }
    else{
        /* 入力日が2桁の時 */
                
        ChgVal = ChkVal;
                
    }
            
    return ChgVal;
    
}

//===============================================================================
//  エラー発生時処理
//
//  Errobjnm : チェック変換対象オブジェクト名
//  Errmes   : エラーメッセージ
//===============================================================================
function G_Err_Occur(Errobjnm, Errmes){

    alert(Errmes);

    document.all[Errobjnm].focus();
    document.all[Errobjnm].style.background = G_ErrColor;

}

//===============================================================================
// スペース除去処理
//
// objval : 対象値
// 戻り値 : スペース除去値
//===============================================================================
function G_Del_Space(objval){
    var val = objval;

    while( val.indexOf(" ",0) != -1 ) {
        // 半角スペースが取り除かれるまでループする

        // 半角スペースを取り除く
        val = val.replace(" ","");
    }

    while( val.indexOf("　",0) != -1 ) {
        // 全角スペースが取り除かれるまでループする

        // 全角スペースを取り除く
        val = val.replace("　","");
    }

    return val;
}

//===============================================================================
// 文字数(バイト数)算出処理
//
// idt    : 対象値
// 戻り値 : 文字列数
//===============================================================================
function G_GetStrLen(idt){
    if(idt == "")  return (0);

    var len2 = 0;
    var len1 = idt.length;
    var aa = "";
    var bb = 0;

    for (i = 0; i < len1; i++) {
        aa = escape(idt.substr(i,1));
        bb = aa.length;
        
        if (bb == 1) {
            len2 = len2 + 1 ;
        }
        else {
                len2 = len2 + 2 ;
        }
    }
    return (len2) ;
}

//===============================================================================
// 頭0埋処理
//
// objnm     : 対象オブジェクト名
// maxlength : 入力最大文字数
//===============================================================================
function G_Lpad(objnm, maxlength){

    // スペース除去後値を取得
    var val = G_Del_Space(document.all[objnm].value);
    var len = 0;
    var i = 1;

    // 数値ではない場合処理終了
    if(isNaN(val))  return;

    // 0付加数取得
    len = (maxlength-0) - val.length;

    // 入力値がない場合処理終了
    if(len == maxlength)  return;

    for(i = 1; i <= len; i++){
        val = "0" + val;    // 0を付加

        // 無限ループ対策
        if(i == 20) break;
    }

    document.all[objnm].value = val;

}

//===============================================================================
// 文字列入力チェック処理
//
// objnm      : チェック変換対象オブジェクト名
// objtitle   : チェック対象変換項目名
// maxlength  : 入力文字数
// noinputflg : 未入力可否フラグ('1':未入力不可、'0'、未入力可)
//===============================================================================
function G_Chk_Str(objnm, objtitle, maxlength, noinputflg){

    // チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnm].style.background = "white";

    var val = document.all[objnm].value;
    var displength = maxlength / 2;

    // 未入力不可時は未入力チェックを行う
    if(noinputflg == "1"){
        if(val == ""){
            // エラー発生時処理
            G_Err_Occur(objnm, "【"+objtitle+"】を入力してください。");
            return false;
        }
    }

    // 禁止文字列入力チェック
    if(val.match(/'/) != null){
        // エラー発生時処理
        G_Err_Occur(objnm, "【"+objtitle+"】に半角 ' は入力しないでください。");
        return false;
    }

    if(val.match(/\\/) != null){
        // エラー発生時処理
        G_Err_Occur(objnm, "【"+objtitle+"】に半角 \\ は入力しないでください。");
        return false;
    }

    // 最大文字数入力チェック
    if(G_GetStrLen(val) > maxlength){
        // エラー発生時処理
        G_Err_Occur(objnm, "【"+objtitle+"】は全角"+displength+"文字以内で入力してください。");
        return false;
    }

}

//===============================================================================
// 数値入力チェック処理
// 
// objnm      : チェック変換対象オブジェクト名
// objtitle   : チェック対象変換項目名
// noinputflg : 未入力可否フラグ('1':未入力不可、'0'、未入力可)
//===============================================================================
function G_Chk_Num(objnm, objtitle, noinputflg){

    // 数値チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnm].style.background = "white";

    // スペース除去後値を取得
    var val = G_Del_Space(document.all[objnm].value);

    // 未入力不可時は未入力チェックを行う
    if(noinputflg == "1"){
        if(val == ""){
            // エラー発生時処理
            G_Err_Occur(objnm, "【"+objtitle+"】を入力してください。");
            return false;
        }
    }

    // 数値ではない場合処理終了
    if(isNaN(val)){
        // エラー発生時処理
        G_Err_Occur(objnm, "【"+objtitle+"】は数値で入力してください。");
        return false;
    }

    if(val.indexOf(".", 0) != -1){
        // エラー発生時処理
        G_Err_Occur(objnm, "【"+objtitle+"】は少数点以外の数値で入力してください。");
        return false;
    }

    // スペース除去値を指定フィールドへ格納
    document.all[objnm].value = val;

}
//===============================================================================
// 日付入力上下チェック処理
// 
// objnmst      : チェック対象開始日オブジェクト名
// objnmed      : チェック対象終了日オブジェクト名
//===============================================================================
function G_Chk_Date_TB(objnmst, objnmed){

    // 数値チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnmst].style.background = "white";
    document.all[objnmed].style.background = "white";

    // スペース除去後値を取得
    var valst = G_Del_Space(document.all[objnmst].value);
    var valed = G_Del_Space(document.all[objnmed].value);

    if(valst.replace(/\//g,'') > valed.replace(/\//g,'')){
        document.all[objnmed].style.background = G_ErrColor;
        G_Err_Occur('txtkokai_st', '公開終了日より前の日付けを入力して下さい。');
        return false;
    }

}
//===============================================================================
// TEXTAREA文字列入力チェック処理
//
// objnm      : チェック変換対象オブジェクト名
// objtitle   : チェック対象変換項目名
// maxlength  : 入力文字数
//===============================================================================
function A_Chk_Str(objnm, objtitle, maxlength){
	var		work = "";

    // チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnm].style.background = "white";
    var val = document.all[objnm].value;
    var displength = maxlength / 2;
    var nowlength = G_GetStrLen(val) / 2;
    var overlength = '0';
    // 最大文字数入力チェック
    if(G_GetStrLen(val) > maxlength){
        overlength = nowlength - displength ;
		work = JStrCut( val , maxlength );
		mes = "最大文字数を全角"+overlength+"文字分超えている為、自動整形します。";
        // エラー発生時処理
		if( confirm(mes) == true ) {
			document.all[objnm].value = work;
            document.all[objnm].style.background = "white";
		} else {
            document.all[objnm].style.background = "pink";
		}
    }

}
function JStrCut(idt,col) {
	var		i,ri;
	var		work = "";
    var aa = "";
    var bb = 0;

	if( idt == "" || col == 0 )
		return "";

	for( i = 0 , ri = 0 ; ri < col && i < idt.length ; i++ , ri++ ) {		/*>	*/
        aa = escape(idt.substr(i,1));
        bb = aa.length;
        
        if (bb != 1) {
                ri++ ;
        }
	}
	if( ri > col )
		--i;
	return idt.substr(0,i);
}

//===============================================================================
// 適用日付入力上下チェック処理
// 
// objnmst      : チェック対象開始日オブジェクト名
// objnmed      : チェック対象終了日オブジェクト名
// 作成　tounichi 2010/06/08
//===============================================================================
function G_Chk_AppDate_TB(objnmst, objnmed){

    // 数値チェック変換対象オブジェクト背景色を普通色にする
    document.all[objnmst].style.background = "white";
    document.all[objnmed].style.background = "white";

    // スペース除去後値を取得
    var valst = G_Del_Space(document.all[objnmst].value);
    var valed = G_Del_Space(document.all[objnmed].value);

    if(valst.replace(/\//g,'') > valed.replace(/\//g,'')){
        document.all[objnmed].style.background = G_ErrColor;
        G_Err_Occur(objnmst, '適用終了日より前の日付けを入力して下さい。');
        return false;
    }

}