// Create: Shin Motomiya (http://www.gadgety.net/shin/)
// Date: 2003-11-10

var CK_NUM = /^\-?\d+$/;

function Start()
{
	var objStart = document.forms['referrer'].elements['calendar1'];
	var objEnd   = document.forms['referrer'].elements['calendar2'];

	if (objStart.value.match(/\d{8}/)) {
        tmpYear  = objStart.value.substr(0,4);
        tmpMonth = objStart.value.substr(4,2);
        tmpDay   = objStart.value.substr(6,2);
        objStart .value = tmpYear + "年" + tmpMonth + "月" + tmpDay + "日";
    } else {
        objStart .value = "";
    }
    if (objEnd.value.match(/\d{8}/)) {
        tmpYear  = objEnd.value.substr(0,4);
        tmpMonth = objEnd.value.substr(4,2);
        tmpDay   = objEnd.value.substr(6,2);
        objEnd .value = tmpYear + "年" + tmpMonth + "月" + tmpDay + "日";
    } else {
        objEnd .value = "";
    }

    if( (objStart.value == "") && (objEnd.value == ""))
    {
        // 今日
        var today = new Date;
        var yesterday    = today.getTime() - (24*60*60*1000);
        var before1month = today.getTime() - (30*24*60*60*1000);

        // 1日前
        today.setTime(yesterday);
        // デフォルトの終了日に設定
        objEnd.value = today.getFullYear() + "年" +
            (today.getMonth() + 1) + "月" + today.getDate() + "日";

        // 1月前
        today.setTime(before1month);
        // デフォルトの開始日に設定
        objStart.value = today.getFullYear() + "年" +
            (today.getMonth() + 1) + "月" + today.getDate() + "日";
    }
}

function checkSubmit(cur_form, arg_start, arg_end)
{
	var date_flag = 0;
	var date_start = 0, date_end = 0;

	if (arg_start.value.length) {
		date_start = check_date(arg_start.value);
		if (date_start == 0) {
			return false;
		}
		date_flag = 1;
	}
	if (arg_end.value.length) {
		date_end = check_date(arg_end.value);
		if (date_end == 0) {
			return false;
		}
		date_flag = 1;
	}
	if (date_flag == 0) {
		alert ("日付を入力してください");
		return false;
	}
	if ((date_end > 0) && (date_start > date_end)) {
		alert ("期間の範囲指定が間違っています。");
		return false;
	}
	if (date_start > 0) {
		arg_start.value = date_start;
	}
	if (date_end > 0) {
		arg_end.value = date_end;
	}
	cur_form.submit();
}


function check_date(str_date)
{
	var arr_date = str_date.match(/\d+/g);
	if (arr_date == null) {
		alert ("日付のフォーマット：\n  YYYY年MM月DD日\n  YYYY-MM-DD\n  YYYY/MM/DD");
		return 0;
	}
	if (arr_date.length != 3) {
		alert ("日付のフォーマット：\n  YYYY年MM月DD日\n  YYYY-MM-DD\n  YYYY/MM/DD");
		return 0;
	}
	if (!CK_NUM.exec(arr_date[0])) {
		alert ("日付のフォーマット：\n  YYYY年MM月DD日\n  YYYY-MM-DD\n  YYYY/MM/DD");
		return 0;
	}
	if (!CK_NUM.exec(arr_date[1])) {
		alert ("日付のフォーマット：\n  YYYY年MM月DD日\n  YYYY-MM-DD\n  YYYY/MM/DD");
		return 0;
	}
	if (!CK_NUM.exec(arr_date[2])) {
		alert ("日付のフォーマット：\n  YYYY年MM月DD日\n  YYYY-MM-DD\n  YYYY/MM/DD");
		return 0;
	}

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) {
		alert ("月は 01-12 の範囲です。");
		return 0;
	}
	dt_date.setMonth(arr_date[1]-1);

	if (arr_date[0] < 100)
		arr_date[0] = Number(arr_date[0]) + (arr_date[0] < NUM_CENTYEAR ? 2000 :
 1900);
	dt_date.setFullYear(arr_date[0]);

	var dt_numdays = new Date(arr_date[0], arr_date[1], 0);
	dt_date.setDate(arr_date[2]);
	if (dt_date.getMonth() != (arr_date[1]-1)) {
		alert (arr_date[1] + "月は 01-"+dt_numdays.getDate()+" の範囲です。");
		return 0;
	}

	var ret_date = arr_date[0] + zero_pad(arr_date[1], 2) + zero_pad(arr_date[2], 2)
	return (ret_date);
}

function zero_pad( sValue, iWidth )
{
	var pad_len;
	var s;

	s = String( sValue );

	if ( iWidth != '' ) {
		pad_len = Number(iWidth) - s.length;
		if ( pad_len > 0 ) {
			s = repeatString(0, pad_len) + s;
		}
	}

	return s;
}

function repeatString( sSrc, iRepeat )
{
	var arr = new Array();

	for ( var i = iRepeat; i > 0; --i ) {
		arr[ arr.length ] = sSrc;
	}

	return arr.join('');
}


