// エラーメッセージ
var CS_ERRMSG01 = "にスペースが入力されています。";
var CS_ERRMSG02 = "は半角英数字のみで入力して下さい。\nアルファベットと数字以外はできません。";
var CS_ERRMSG03 = "は必須入力です。";
var CS_ERRMSG04 = "タスクの追加に失敗しました。";
var CS_ERRMSG05 = "タスクの更新に失敗しました。";
var CS_ERRMSG06 = "タスクの取得に失敗しました。";
var CS_ERRMSG07 = "日付の入力が正しくありません。\n\n正しい入力例：2006/01/01";
var CS_ERRMSG08 = "時間の入力が正しくありません。\n\n正しい入力例：12:30";
var CS_ERRMSG09 = "タスクの内容を入力してください。";
var CS_ERRMSG10 = "タブを選択してください。";
var CS_ERRMSG11 = "期間を入力してください。";
var CS_ERRMSG12 = "読み込み処理に失敗しました。";

// お知らせメッセージ
var CS_INFMSG01 = "削除します。よろしいですか？";
var CS_INFMSG02 = "とど助では、定期的なレビューをお勧めしています。\n\nレビューをすると\n・タスクの忘れ、漏れが無くなる\n・夢、目標に近づくための行動を確認できる\n・やるべきことを再確認\n・何が良かったのか、悪かったのかを反省、今後に活かす\n\nレビュー機能を使って、頭をスッキリと翌週を迎えましょう。\n\n「OK」ボタンをクリックすると、レビュー画面へ移動します。\n次からこのメッセージを表示したくない場合は「キャンセル」ボタンをクリックしてください。"
//var CS_INFMSG02 = "タスクの登録ができたら、週に一度レビューをしてみましょう。\nタスクを見直すことによって、より効率がアップします。\n\n※このメッセージを表示したくない場合は「キャンセル」ボタンをクリックしてください。";

// 定数定義
var CS_DELIMITER_REC = "[$x1bRecord----------------------]";
var CS_DELIMITER_Fil = "[$x1bField-----------------------]";
var CS_DELIMITER_Tsk = "[$x1bTask------------------------]";

// 半角英数チェック
function funcAlphaNumericInputCheck(txtObj, lblTitle)
{
	var str = txtObj.value;
	if( str.indexOf(' ') != -1 )
	{
		alert(lblTitle + CS_ERRMSG01);
		return false;
	}
	if( str.indexOf('　') != -1 )
	{
		alert(lblTitle + CS_ERRMSG01);
		return false;
	}
	if( funcNonInputCheck(txtObj, lblTitle) == false )
	{
		return false;
	}
	if( str.match( /[^A-Za-z0-9\s]+/ ) )
	{
		alert(lblTitle + CS_ERRMSG02);
		return false;
	}
	return true;
}

// 未入力チェック
function funcNonInputCheck(txtObj, lblTitle)
{
	var str = txtObj.value;
	if( str.length < 1 )
	{
		alert(lblTitle + CS_ERRMSG03);
		return false;
	}
	return true;
}

// 時間フォーマット
// 0900⇒09:00
// 900 ⇒09:00
function funcFormatTime1(prmTime)
{

	var strRet;

	if(prmTime == "")
	{
		return prmTime;
	}

	if(prmTime.indexOf(':') != -1)
	{
		return prmTime;
	}

	if(prmTime.length == 1)
	{
		strRet = "00:0" + prmTime
	}

	if(prmTime.length == 2)
	{
		strRet = "00:" + prmTime
	}

	if(prmTime.length == 3)
	{
		strRet = "0" + prmTime.substring(0, 1) + ":" + prmTime.substring(1, 3);
	}
	else if(prmTime.length == 4)
	{
		strRet = prmTime.substring(0, 2) + ":" + prmTime.substring(2, 4);
	}

	return strRet;
}

// 時間フォーマット
// 09:00⇒ 0900
// 9:00 ⇒ 900
function funcFormatTime2(prmTime)
{

	var strRet;
	var strArray;

	if(prmTime == "")
	{
		return prmTime;
	}

	if(prmTime.indexOf(':') == -1)
	{
		return prmTime;
	}

	strArray = prmTime.split(":");
	strRet = strArray[0] + strArray[1];
	if(strRet.length == 3)
	{
		strRet = "0" + strRet;
	}

	return strRet;
}

// 日付時間フォーマット
// 2006年10月20日　9時00分
// 20061114 2006/10/20　9:00 のフォーマットに変更　A.YAMASAKI
function funcFormatDateTime(prmDate, prmTime)
{

	var strDateRet;
	var strTimeRet;
	var strTimeWork;
	var strDateArray;
	var strTimeArray;

	strDateRet = "";
	strTimeRet = "";

	if(prmDate != "")
	{
		strDateArray = prmDate.split("/");

// 20061114 A.YAMASAKI UPD STR
//		strDateRet = strDateArray[0] + "年" + strDateArray[1] + "月" + strDateArray[2] + "日";
		strDateRet = strDateArray[0] + "/" + strDateArray[1] + "/" + strDateArray[2];
// 20061114 A.YAMASAKI UPD END
	}
	
	if(prmTime != "")
	{
		prmTime = funcFormatTime1(prmTime);
		strTimeArray = prmTime.split(":");
		if(strTimeArray[0].substring(0, 1) == "0")
		{
			strTimeWork = strTimeArray[0].substring(1, 2);
		}
		else
		{
			strTimeWork = strTimeArray[0];
		}
// 20061114 A.YAMASAKI UPD STR
//		strTimeRet = strTimeWork + "時" + strTimeArray[1] + "分";
		strTimeRet = strTimeWork + ":" + strTimeArray[1];
// 20061114 A.YAMASAKI UPD END
	}

	return strDateRet + "　" + strTimeRet;
}

/**************************************************************** 
* 機　能： 入力された値が日付でYYYY/MM/DD形式になっているか調べる 
* 引　数： datestr　入力された値 
* 戻り値： 正：true　不正：false 
****************************************************************/ 
function funcIsDate(datestr) { 
    // 正規表現による書式チェック 
    if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){ 
        return false; 
    } 
    var vYear = datestr.substr(0, 4) - 0; 
    var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現 
    var vDay = datestr.substr(8, 2) - 0; 
    // 月,日の妥当性チェック 
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){ 
        var vDt = new Date(vYear, vMonth, vDay); 
        if(isNaN(vDt)){ 
            return false; 
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){ 
            return true; 
        }else{ 
            return false; 
        } 
    }else{ 
        return false; 
    } 
} 

//----------------------------------------------------------------------------------------------------
//関数名：funcChkDate
//内　容：日付のチェックを行う。
//引　数：prmDateValue
//戻り値：正常終了⇒編集後の日付 異常終了⇒-1
//作成日：MP)Nakano
//更新日：
//----------------------------------------------------------------------------------------------------
function funcChkDate(prmDateValue)
{
	try
	{
		var strSysDate;
		var strYear;
		var strDate;
		var strArray;

		if(prmDateValue == "")
		{
			return "";
		}

		strSysDate = new Date();
		strYear = strSysDate.getYear();
		strYear = strYear.toString();

		// 文字列の長さ毎にチェック
		switch(prmDateValue.length)
		{
			case 10:
				// YYYY/MM/DD
				strDate = prmDateValue;
				if(funcIsDate(prmDateValue) == false)
				{
					return "-1";
				}
				break;
			case 9:
				// YYYY/M/DD
				// YYYY/MM/D
				strArray = prmDateValue.split("/");
				strDate = strArray[0];
				if(strArray[1].length == 1)
				{
					strArray[1] = "0" + strArray[1];
				}
				strDate = strDate + "/" + strArray[1];
				if(strArray[2].length == 1)
				{
					strArray[2] = "0" + strArray[2];
				}
				strDate = strDate + "/" + strArray[2];
				if(funcIsDate(strDate) == false)
				{
					return "-1";
				}
				break;
			case 8:
				// YYYYMMDD
				// YY/MM/DD
				strArray = prmDateValue.split("/");
				if(strArray.length == 1)
				{
					strDate = prmDateValue.substring(0, 4);
					strDate = strDate + "/" + prmDateValue.substring(4, 6);
					strDate = strDate + "/" + prmDateValue.substring(6, 8);
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				else
				{
					strDate = strYear.substring(0, 2) + strArray[0];
					strDate = strDate + "/" + strArray[1];
					strDate = strDate + "/" + strArray[2];
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				break;
			case 7:
				// YY/M/DD
				// YY/MM/D
				strArray = prmDateValue.split("/");
				strDate = strYear.substring(0, 2) + strArray[0];
				if(strArray[1].length == 1)
				{
					strArray[1] = "0" + strArray[1];
				}
				strDate = strDate + "/" + strArray[1];
				if(strArray[2].length == 1)
				{
					strArray[2] = "0" + strArray[2];
				}
				strDate = strDate + "/" + strArray[2];
				if(funcIsDate(strDate) == false)
				{
					return "-1";
				}
				break;
			case 6:
				// YYMMDD
				// YY/M/D
				strArray = prmDateValue.split("/");
				if(strArray.length == 1)
				{
					strDate = strYear.substring(0, 2) + prmDateValue.substring(0, 2);
					strDate = strDate + "/" + prmDateValue.substring(2, 4);
					strDate = strDate + "/" + prmDateValue.substring(4, 6);
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				else
				{
					strDate = strYear.substring(0, 2) + strArray[0];
					if(strArray[1].length == 1)
					{
						strArray[1] = "0" + strArray[1];
					}
					strDate = strDate + "/" + strArray[1];
					if(strArray[2].length == 1)
					{
						strArray[2] = "0" + strArray[2];
					}
					strDate = strDate + "/" + strArray[2];
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				break;
			case 5:
				// MM/DD
				strDate = strYear + "/" + prmDateValue;
				if(funcIsDate(strDate) == false)
				{
					return "-1";
				}
				break;
			case 4:
				// MMDD
				// M/DD
				// MM/D
				strArray = prmDateValue.split("/");
				if(strArray.length == 1)
				{
					strDate = strYear;
					strDate = strDate + "/" + prmDateValue.substring(0, 2);
					strDate = strDate + "/" + prmDateValue.substring(2, 4);
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				else
				{
					strDate = strYear;
					if(strArray[0].length == 1)
					{
						strArray[0] = "0" + strArray[0];
					}
					strDate = strDate + "/" + strArray[0];
					if(strArray[1].length == 1)
					{
						strArray[1] = "0" + strArray[1];
					}
					strDate = strDate + "/" + strArray[1];
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				break;
			case 3:
				// MDD
				// M/D
				strArray = prmDateValue.split("/");
				if(strArray.length == 1)
				{
					strDate = strYear;
					strDate = strDate + "/0" + prmDateValue.substring(0, 1);
					strDate = strDate + "/" + prmDateValue.substring(1, 3);
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				else
				{
					strDate = strYear;
					if(strArray[0].length == 1)
					{
						strArray[0] = "0" + strArray[0];
					}
					strDate = strDate + "/" + strArray[0];
					if(strArray[1].length == 1)
					{
						strArray[1] = "0" + strArray[1];
					}
					strDate = strDate + "/" + strArray[1];
					if(funcIsDate(strDate) == false)
					{
						return "-1";
					}
				}
				break;
			default:
				return "-1";
				break;
		}

		return strDate;
	}
	catch(e)
	{
		// 異常終了
		return "-1";
	}
}

//----------------------------------------------------------------------------------------------------
//関数名：funcChkTime
//内　容：時間のチェックを行う。
//引　数：prmTimeValue
//戻り値：正常終了⇒編集後の時間 異常終了⇒-1
//作成日：MP)Nakano
//更新日：
//----------------------------------------------------------------------------------------------------
function funcChkTime(prmTimeValue)
{
	try
	{
		var intH;
		var intM;
		var strArray;

		if(prmTimeValue == "")
		{
			return "";
		}

		// 文字列の長さ毎にチェック
		switch(prmTimeValue.length)
		{
			case 5:
				//HH:MM
				strArray = prmTimeValue.split(":");
				intH = strArray[0];
				intM = strArray[1];
				break;
			case 4:
				//H:MM
				//HHMM
				strArray = prmTimeValue.split(":");
				if(strArray.length == 1)
				{
					intH = prmTimeValue.substring(0, 2);
					intM = prmTimeValue.substring(2, 4);
				}
				else
				{
					intH = strArray[0];
					intM = strArray[1];
				}
				break;
			case 3:
				//H:M
				//HMM
				strArray = prmTimeValue.split(":");
				if(strArray.length == 1)
				{
					intH = prmTimeValue.substring(0, 1);
					intM = prmTimeValue.substring(1, 3);
				}
				else
				{
					intH = strArray[0];
					intM = strArray[1];
				}
				break;
			default:
				return "-1";
				break;
		}

		if(intH < 0 || intH > 23)
		{
			return "-1";
		}
		if(intM < 0 || intM > 59)
		{
			return "-1";
		}

		if(intH.length == 1)
		{
			intH = "0" + intH;
		}
		if(intM.length == 1)
		{
			intM = "0" + intM;
		}

		return intH + ":" + intM;
	}
	catch(e)
	{
		// 異常終了
		return "-1";
	}
}
