//Copyright (C) 2007-2008 poet All Rights Reserved.
//Blog    : ぽえっとの葉っぱたち : http://poetleaf.seesaa.net/
//Create  : 2007/06/11(Mon)
//Update  : 2008/05/03(Sat) マビノギイベントカレンダーメールフォームに変更
//Version : 1.0.2

//  サーバ定数

//  ****  表示種類  ****
KIND_MAX_SMALL = 0; //  0:極小型
KIND_SMALL     = 1; //  1:小型
KIND_MIDDLE    = 2; //  2:中型
KIND_BIG       = 3; //  3:大型
KIND_MAX_BIG   = 4; //  4:特大型

//  ****  最大表示数  ****
MAX_DISP_ALL   = 0; //  0:全て


// 表示種類リスト
kind_list_MBP = new Array(
"極小型", 
"小型", 
"中型",
"大型", 
"特大型"
);

//  表示数
inEventCount   = 0;


//  ****  URLパラメータ  ****
/**
 * パラメータを取得する。
 * 
 * @param key       パラメータのキー。
 * @return          キーに対応した値。キーが存在しない場合は "" が返る。
 */
function getURLParamValue(key) {
	if (urlParams == null) {
		return "";
	}
	l = key.length;
	for (m = 0; m < urlParams.length; m++) {
		s = urlParams[m];
		if (s.substring(0, l) == key) {
			return s.substring(l + 1);
		}
	}
	return "";
}


/**
 * 初期化処理。
 * 
 * @param flag     強制初期化フラグ true / false
 */
function initMBP(flag) {
//alert("initMBP(" + flag + ")");

	//  自動保存(autosave)
	//  条件を自動的に保存
	str = getURLParamValue("autosave");
	if (flag || str == "") {
		autoSave = AUTO_SAVE_OFF;
	} else {
		num = Number(str);
		if (num == AUTO_SAVE_OFF || num == AUTO_SAVE_ON) {
			autoSave = num;
		} else {
			autoSave = AUTO_SAVE_OFF;
		}
	}
/*
	//  年月日(date)
	//  ない場合はシステム年月日
	str = getURLParamValue("date");
	if (flag || str == "") {
		nowdate = new Date();
		if (nowdate.getYear() < 2000) { 
			selectY = String(nowdate.getYear() + 1900);
		} else {
			selectY = String(nowdate.getYear());
		}
		if (nowdate.getMonth() + 1 < 10) {
			selectM = "0" + (nowdate.getMonth() + 1);
		} else {
			selectM = String(nowdate.getMonth() + 1);
		}
		if (nowdate.getMonth() < 10) {
			selectD = "0" + nowdate.getDate();
		} else {
			selectD = String(nowdate.getDate());
		}
	} else {
		strs = str.split("/");
		selectY = strs[0];
		selectM = strs[1];
		selectD = strs[2];
	}
	//  表示年月(disp)
	//  ない場合は年月日の年月
	str = getURLParamValue("disp");
	if (flag || str == "") {
		dispY = selectY;
		dispM = selectM;
	} else {
		strs = str.split("/");
		dispY = strs[0];
		dispM = strs[1];
	}
*/
	//  表示期間(range)
	//  ない場合は7日
	str = getURLParamValue("range");
	if (flag || str == "") {
		dispRange = DISP_RANGE_DEF;
	} else {
		num = Number(str);
		if (num < 1) {
			dispRange = DISP_RANGE_DEF;
		} else if (DISP_RANGE_MAX < num) {
			dispRange = DISP_RANGE_MAX;
		} else {
			dispRange = num;
		}
	}

	//  イベント(event)
	//  ない場合は全て（EVENT_ALL）
	str = getURLParamValue("event");
	if (flag || str == "") {
		dispEvent = EVENT_ALL;
	} else {
		num = Number(str);
		if (num < 0 || event_name.length - 1 < num) {
			dispEvent = EVENT_ALL;
		} else {
			dispEvent = num;
		}
	}

	//  サーバ(server)
	//  ない場合は全て（SERVER_A_SEV）
	str = getURLParamValue("server");
	if (flag || str == "") {
		dispServer = SERVER_A_SEV;
	} else {
		num = Number(str);
		if (num < 0 || server_name.length - 1 < num) {
			dispServer = SERVER_A_SEV;
		} else {
			dispServer = num;
		}
	}

	//  表示種類(kind)
	//  ない場合は1:小型（KIND_SMALL）
	str = getURLParamValue("kind");
	if (flag || str == "") {
		dispKind = KIND_SMALL;
	} else {
		num = Number(str);
		//  KIND_MAX_SMALL = 0; //  0:極小型
		//  KIND_SMALL     = 1; //  1:小型
		//  KIND_MIDDLE    = 2; //  2:中型
		//  KIND_BIG       = 3; //  3:大型
		//  KIND_MAX_BIG   = 4; //  4:特大型
		if (num < KIND_MAX_SMALL || KIND_MAX_BIG < num) {
			dispKind = KIND_MAX_SMALL;
		} else {
			dispKind = num;
		}
	}

	//  表示最大数(max)
	//  ない場合は全て
	str = getURLParamValue("max");
	if (flag || str == "") {
		dispMax = MAX_ALL;
	} else {
		num = Number(str);
		if (num < 0) {
			dispMax = MAX_ALL;
		} else if (DISP_RANGE_MAX < num) {
			dispMax = DISP_RANGE_MAX;
		} else {
			dispMax = num;
		}
	}
/*
	//  ソート順(sort)
	//  ない場合は0:日時順　　（日時順→サーバ順→イベント順）（SORT_DATE）
	str = getURLParamValue("sort");
	if (flag || str == "") {
		dispSort = SORT_DATE;
	} else {
		num = Number(str);
		//  SORT_DATE   = 0;//  0:日時順（日時順→サーバ順→イベント順）
		//  SORT_SARVER = 1;//  1:サーバ順（サーバ順→日時順→イベント順）
		//  SORT_EVENT  = 2;//  2:イベント順（イベント順→日時順→サーバ順）
		//  SORT_UPDATE = 3;//  3:更新順（更新順→日時順→サーバ順→イベント順）
		if (num < 0 || sort_list.length - 1 < num) {
			dispSort = SORT_DATE;
		} else {
			dispSort = num;
		}
	}

	//  カスタム(custom)
	//  ない場合は0:標準（CUSTOM_OFF）
	str = getURLParamValue("custom");
	if (flag || str == "") {
		custom = CUSTOM_OFF;
	} else {
		num = Number(str);
		//  CUSTOM_OFF = 0; //  0:カスタムOFF
		//  CUSTOM_ON  = 1; //  1:カスタムON
		if (num == 0 || num == 1) {
			custom = num;
		} else {
			custom = CUSTOM_OFF;
		}
	}

	//  表示開始(start)
	//  ない場合は、-1
	//  適用条件：表示期間 - abs(表示開始) > 0
	str = getURLParamValue("start");
	if (str == "") {
		dispStart = 0;
	} else {
		num = Number(str);
		if (num < 0 && dispRange > Math.abs(num)) {
			dispStart = num;
		} else {
			dispStart = 0;
		}
	}

	//  曜日表示種類(wkind)
	//  ない場合は3:英語３字（"Sun", "Mon",...）（cal_week_kind）
	str = getURLParamValue("wkind");
	if (flag || str == "") {
		dispWKind = cal_week_kind;
	} else {
		num = Number(str);
		//  CAL_WEEK_TYPE_1 = 1;	//  1:漢字１字（"日", "月",...）
		//  CAL_WEEK_TYPE_2 = 2;	//  2:漢字３字（"日曜日", "月曜日",...）
		//  CAL_WEEK_TYPE_3 = 3;	//  3:英語３字（"Sun", "Mon",...）
		//  CAL_WEEK_TYPE_4 = 4;	//  4:英語（"Sunday", "Monday",...）
		if (num < 1 || week_kind_list.length < num) {
			dispWKind = cal_week_kind;
		} else {
			dispWKind = num;
		}
	}

	//  開始曜日(wbegin)
	//  ない場合は1:月曜日始まり（cal_week_begin=CAL_WEEK_BEGIN_MON）
	str = getURLParamValue("wbegin");
	if (flag || str == "") {
		dispWBegin = cal_week_begin;
	} else {
		num = Number(str);
		//  CAL_WEEK_BEGIN_SUN = 0;	//  0:日曜日始まり
		//  CAL_WEEK_BEGIN_MON = 1; //  1:月曜日始まり
		if (num < 0 || week_begin_list.length - 1 < num) {
			dispWBegin = cal_week_begin;
		} else {
			dispWBegin = num;
		}
	}
*/
}


//  ****  Main  ****
/**
 * ブログパーツメイン処理。
 * 
 * 利用する場合は、getParam(key) にて使用する。
 */

function procMain() {
//alert("#procMain() : in");
/*
alert("#procMain() : dispRange = " + dispRange + ", \n" + 
"dispEvent = " + dispEvent + ", \n" + 
"dispServer = " + dispServer + ", \n" + 
"dispKind = " + dispKind + ", \n" + 
"dispMax = " + dispMax
);
*/
	str = createCalBP(dispRange, dispEvent, dispServer, dispKind, dispMax);
//alert(str);
	document.write(str);
}

//  ****  Blogパーツカレンダーの生成  ****
/*
KIND_MAX_SMALL = 0; //  0:極小型
KIND_SMALL     = 1; //  1:小型
KIND_MIDDLE    = 2; //  2:中型
KIND_BIG       = 3; //  3:大型
KIND_MAX_BIG   = 4; //  4:特大型

★0:極小型
2007/10/05(Fri)〜
　最大14日のイベント
　10/06(Sat)
21:00 タ3 マハ公演
演おとまび演奏会
23:00 モ4 マハ公演
演イメンマハ音楽祭

2007/10/05(Fri)〜
　最大9件のイベント
21:00 タ3 マハ公演
演おとまび演奏会
23:00 モ4 マハ公演
演イメンマハ音楽祭

★1:小型
2007/10/05(Fri)〜
　最大12件のイベント
　10/06(Sat)
21:00 タ3 演おとまび演奏会
23:00 モ4 演イメンマハ音楽祭

★2:中型
2007/10/05(Fri)〜最大12件のイベント
 10/06(Sat)
21:00 タ3マハ公演 演おとまび演奏会
23:00 モ4マハ公演 演イメンマハ音楽祭

★3:大型
2007/10/05(Fri)〜最大12件のイベント
日にち     時間  サーバch場所 記号イベント名
mm/dd(Ddd) hh:mm ＳXch場所　　 Ａタイトル
10/06(Sat) 21:00 タ3chマハ公演 演おとまび演奏会

★4:特大型
2007/10/05(Fri)〜最大12件のイベント
10/06(Sat)　21:00〜xx:xx　タルラーク　3ch　マハ公演
演奏会　おとまび演奏会
10/06(Sat)　23:00〜25:00　モリアン　4ch　マハ公演
演奏会　イメンマハ音楽祭


*/

/**
 * カレンダーを生成する。
 * 
 * @param pRange    表示範囲（日）
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pKind     表示形式
 * @param pMax      最大表示数順
 */
function createCalBP(pRange, pEvent, pServer, pKind, pMax) {
	nowdate = new Date();
	getNowDate();

	pYear = nowY;
	pMonth = nowM;
	pDate = nowD;
	inEventCount = 0;

	strBuff = "";
	strBuff += "<table border='0' cellspacing='0' cellpadding='0'>\n";
	// ヘッダ（年月）
	strBuff += "  <tr valign='top'>\n";
	strBuff += "    <td>\n";

	//  ヘッダ
	if (pMax == MAX_DISP_ALL) {
		strMaxDisp = pRange + "日のイベント";
	} else {
		strMaxDisp = "最大" + pMax + "件のイベント";
	}

	if (pKind == KIND_MAX_SMALL || pKind == KIND_SMALL) {
		strBuff += "    <b>" + pYear + "/" + addZero(pMonth) + "/" + 
				addZero(pDate) + "(" + nowDay + ")" + "〜<br>\n";
		strBuff += "　" + strMaxDisp + "</b></td>\n";
	} else if (pKind == KIND_MIDDLE ||pKind == KIND_BIG || 
			pKind == KIND_MAX_BIG) {
		strBuff += "    <b>" + pYear + "/" + addZero(pMonth) + "/" + 
				addZero(pDate) + "(" + nowDay + ")" + "〜" + 
				strMaxDisp + "</b></td>\n";
	}

	strBuff += "  </tr>\n";

	strBuff += "  <tr valign='top'>\n";
	strBuff += "    <td>\n";

	for (k = 0; k < pRange; k++) {
//alert("#createCalBP() : k = " + k + "/" + pRange);
		nowdate.setDate(1);
		nowdate.setYear(pYear);
		nowdate.setMonth(pMonth - 1);
		nowdate.setDate(pDate);
		pWDay = nowdate.getDay();
		maxDay = getMaxDayOfMonth(pYear, pMonth);

		//alert(pWDay);
		if (pKind == KIND_MAX_SMALL) {
			createCalDateMaxSmale(pYear, pMonth, pDate, pWDay, 
					pEvent, pServer, pMax);
		} else if (pKind == KIND_SMALL) {
			createCalDateSmale(pYear, pMonth, pDate, pWDay, 
					pEvent, pServer, pMax);
		} else if (pKind == KIND_MIDDLE) {
			createCalDateMiddle(pYear, pMonth, pDate, pWDay, 
					pEvent, pServer, pMax);
		} else if (pKind == KIND_BIG) {
			createCalDateBig(pYear, pMonth, pDate, pWDay, 
					pEvent, pServer, pMax);
		} else if (pKind == KIND_MAX_BIG) {
			createCalDateMaxBig(pYear, pMonth, pDate, pWDay, 
					pEvent, pServer, pMax);
		}

		pDate++;
		if (pDate > maxDay) {
			pDate = 1;
			pMonth++;
			if (pMonth > 12) {
				pMonth = pMonth - 12;
				pYear++;
			}
		}
	}
	if (inEventCount == 0) {
		strBuff += "    現在、" + pRange + "日以内に<br>\n" + 
				"イベントはありません。\n";
	}

	strBuff += "    </td>\n";
	strBuff += "  </tr>\n";
	strBuff += "  <tr>\n";
	strBuff += "    <td align='center'><a href='http://ccn.aitai.ne.jp/~poet/MEC/MEC.html'><img src='http://ccn.aitai.ne.jp/~poet/MEC/MEC_banner_s.jpg' alt='マビノギイベントカレンダー' width='88' height='31' border='0'></a>\n";
	strBuff += "    </td>\n";
	strBuff += "  </tr>\n";
	strBuff += "</table>\n";

	return strBuff;
}

/**
 * 一日のカレンダー（縦１列）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pMax      最大表示数順
 */
function createCalDate(pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// 縦１列カレンダー

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		holNum = furi_flg;
		furi_flg = -1;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}

		//  日にち
		if (pYear == nowY && pMonth == nowM && pDate == nowD) {
			strDate = 
					"<span style='color: " + cBack + 
					"; background-color: " + cText + 
					"'>" + addZero(pMonth) + "/" + addZero(pDate) + 
					"(" + cal_week[tWDay][dispWKind] + ")</span>";
		} else {
			strDate = addZero(pMonth) + "/" + addZero(pDate) + 
					"(" + cal_week[tWDay][dispWKind] + ")";
		}


//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME_S];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "      <span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名略称取得
		strSvNS = server_name[svNum][SERVER_COL_NAME_S];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

		//  文字列生成
		//  日にち     時間  サーバch場所 記号イベント名
		//  mm/dd(Ddd) hh:mm Ｓc場所 Ａタイトル
		strBuff = strBuff + 
			"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
			"target='MEC'>" + 
			strDate + "<br>\n" + 
			tEvent[SCH_COL_BEGIN_TIME] + "&nbsp;" + 
			" <span style='color: " + cSvText + "; " + 
			"background-color: " + cSv + "'>" + 
			strSvNS + "</span>" + 
			tEvent[SCH_COL_CH] + " " + 
			tEvent[SCH_COL_PLACE_S] + "<br>\n" + 
			strEv + tEvent[SCH_COL_TITLE_S] + "</a><br>\n";
//alert("strBuff = " + strBuff);
	}
}

/**
 * 一日のカレンダー（ブログパーツ極小型）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pSort     ソート順
 */
function createCalDateMaxSmale(
		pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		holNum = furi_flg;
		furi_flg = -1;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	if (tEvList.length == 0) {
		return;
	}

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}
		if (i == 0) {
			//  日にち
			strDate = "&nbsp;" + addZero(pMonth) + "/" + addZero(pDate) + 
					"(" + cal_week[tWDay][dispWKind] + ")";
			strBuff = strBuff + 
					"    <b><font color='" + cText + "'>" + 
					strDate + "</font></b><br>\n";
		}

//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME_S];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "      <span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名略称取得
		strSvNS = server_name[svNum][SERVER_COL_NAME_S];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

/*
★0:極小型
2007/10/05(Fri)〜
　14日のイベント
　10/06(Sat)
21:00 タ3 マハ公演
演おとまび演奏会
23:00 モ4 マハ公演
演イメンマハ音楽祭
*/
		strBuff = strBuff + 
				"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
				"target='MEC' title='" + createToolTip(tEvent, strHol) + "'>" + 				tEvent[SCH_COL_BEGIN_TIME] + "&nbsp;" + 
				"<span style='color: " + cSvText + "; " + 
				"background-color: " + cSv + "'>" + 
				strSvNS + "</span>" + 
				tEvent[SCH_COL_CH] + " " + 
				tEvent[SCH_COL_PLACE_S] + "<br>\n" + 
				strEv + tEvent[SCH_COL_TITLE_S] + "</a><br>\n";
//alert("strBuff = " + strBuff);
	}
}

/**
 * 一日のカレンダー（ブログパーツ小型）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pSort     ソート順
 */
function createCalDateSmale(
		pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		strHol = "振替休日";
		holNum = furi_flg;
		furi_flg = -1;
	}
	if (strHol != "") {
		strHol = "&nbsp;" + strHol;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	if (tEvList.length == 0) {
		return;
	}

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}
		if (i == 0) {
			//  日にち
			strDate = "&nbsp;" + addZero(pMonth) + "/" + addZero(pDate) + 
					"(" + cal_week[tWDay][dispWKind] + ")";
			strBuff = strBuff + 
					"      <font color='" + cText + "'><b>" + 
					strDate + "</b>&nbsp;" + strHol + "</font><br>\n";
		}

//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME_S];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "<span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名略称取得
		strSvNS = server_name[svNum][SERVER_COL_NAME_S];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

/*
★1:小型
2007/10/05(Fri)〜
　14日のイベント
　10/06(Sat)
21:00 タ3 演おとまび演奏会
23:00 モ4 演イメンマハ音楽祭
*/
		strBuff = strBuff + 
				"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
				"target='MEC' title='" + createToolTip(tEvent, strHol) + "'>" + 
				tEvent[SCH_COL_BEGIN_TIME] + "&nbsp;" + 
				"<span style='color: " + cSvText + "; " + 
				"background-color: " + cSv + "'>" + 
				strSvNS + "</span>" + 
				tEvent[SCH_COL_CH] + "&nbsp;" + 
				strEv + tEvent[SCH_COL_TITLE_S] + "</a><br>\n";
//alert("strBuff = " + strBuff);
	}
}

/**
 * 一日のカレンダー（ブログパーツ中型）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pMax      最大表示数順
 */
function createCalDateMiddle(
		pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		strHol = "振替休日";
		holNum = furi_flg;
		furi_flg = -1;
	}
	if (strHol != "") {
		strHol = "&nbsp;" + strHol;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	if (tEvList.length == 0) {
		return;
	}

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}
		if (i == 0) {
			//  日にち
			strDate = "&nbsp;" + addZero(pMonth) + "/" + addZero(pDate) + 
					"(" + cal_week[tWDay][dispWKind] + ")";
			strBuff = strBuff + 
					"      <font color='" + cText + "'><b>" + 
					strDate + "</b>&nbsp;" + strHol + "</font><br>\n";
		}

//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME_S];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "<span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名略称取得
		strSvNS = server_name[svNum][SERVER_COL_NAME_S];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

/*
★2:中型
2007/10/05(Fri)〜
　14日のイベント
 10/06(Sat)
21:00 タ3マハ公演 演おとまび演奏会
23:00 モ4マハ公演 演イメンマハ音楽祭
*/
		strBuff = strBuff + 
				"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
				"target='MEC' title='" + createToolTip(tEvent, strHol) + "'>" + 
				tEvent[SCH_COL_BEGIN_TIME] + "&nbsp;" + 
				"<span style='color: " + cSvText + "; " + 
				"background-color: " + cSv + "'>" + 
				strSvNS + "</span>" + 
				tEvent[SCH_COL_CH] + 
				tEvent[SCH_COL_PLACE_S] + "&nbsp;" + 
				strEv + tEvent[SCH_COL_TITLE_S] + "</a><br>\n";
//alert("strBuff = " + strBuff);
	}
}

/**
 * 一日のカレンダー（ブログパーツ大型）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pMax      最大表示数順
 */
function createCalDateBig(
		pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		holNum = furi_flg;
		furi_flg = -1;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	if (tEvList.length == 0) {
		return;
	}

	//  日にち
	strDate = addZero(pMonth) + "/" + addZero(pDate) + 
			"(" + cal_week[tWDay][dispWKind] + ")";

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}

//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME_S];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "      <span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名略称取得
		strSvNS = server_name[svNum][SERVER_COL_NAME_S];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

/*
★3:大型
2007/10/05(Fri)〜14日のイベント
日にち     時間  サーバch場所 記号イベント名
mm/dd(Ddd) hh:mm ＳXch場所　　 Ａタイトル
10/06(Sat) 21:00 タ3chマハ公演 演おとまび演奏会
*/
		strBuff = strBuff + 
				"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
				"target='MEC' title='" + createToolTip(tEvent, strHol) + "'>" + 				"<b><span style='color: " + cText + "'>" + 
				strDate + "</span></b>&nbsp;" + 
				tEvent[SCH_COL_BEGIN_TIME] + "&nbsp;" + 
				" <span style='color: " + cSvText + "; " + 
				"background-color: " + cSv + "'>" + 
				strSvNS + "</span>" + 
				tEvent[SCH_COL_CH] + "ch" + 
				tEvent[SCH_COL_PLACE_S] + "&nbsp;" + 
				strEv + tEvent[SCH_COL_TITLE_S] + "</a><br>\n";
	//alert("strBuff = " + strBuff);
	}
}

/**
 * 一日のカレンダー（ブログパーツ特大型）を生成する。
 * 
 * @parma pYear     年
 * @param pMonth    月
 * @param pDate     日
 * @param pWDay     指定年月の最初の曜日
 * @param pEvent    表示イベント
 * @param pServer   表示サーバ
 * @param pMax      最大表示数順
 */
function createCalDateMaxBig(
		pYear, pMonth, pDate, pWDay, pEvent, pServer, pMax) {

	// メイン
	tWDay = pWDay;
	furi_flg = -1;

	// 当日表示用
	nowdate = new Date();
	if (nowdate.getYear() < 2000) { 
		nowY = nowdate.getYear() + 1900;
	} else {
		nowY = nowdate.getYear();
	}
	nowM = nowdate.getMonth() + 1;
	nowD = nowdate.getDate();

	//  当日のイベントを取得
	tEvList = getSchedule(pYear, pMonth, pDate, pEvent, pServer, "");
	sortSchedule(tEvList, SORT_DATE);
//alert("EvList = " + tEvList);
	//  祝日区分
	//  祝日の場合その番号を取得、-1は平日
	holNum = isHoliday(pYear, pMonth, pDate);
	strHol = "";
	if (holNum != -1) {
		strHol = getHolidayName(holNum);
		if (tWDay == 0) {
			furi_flg = holNum;
		}
	} else if (furi_flg != -1) {
		holNum = furi_flg;
		furi_flg = -1;
	}

	//  色の取得
	cText = "";
	cBack = "";
	c = cal_week[tWDay][CAL_WEEK_COLOR];
	if ((holNum != -1) || (furi_flg != -1)) {
		cText = cal_color[CAL_HOL][CAL_TEXT];
		cBack = cal_color[CAL_HOL][CAL_BACK];
	} else {
		cText = cal_color[c][CAL_TEXT];
		cBack = cal_color[c][CAL_BACK];
	}

	if (tEvList.length == 0) {
		return;
	}

	//  日にち
	strDate = addZero(pMonth) + "/" + addZero(pDate) + 
			"(" + cal_week[tWDay][dispWKind] + ")";

	for (i = 0; i < tEvList.length; i++) {
		tEvent = tEvList[i];
		inEventCount++;
		if (pMax != 0 && inEventCount > pMax) {
			break;
		}

//alert("pDate = " + pDate + ", tEvList = " + tEvList);
		//  色、イベント、サーバの取得
		strEvCode = tEvent[SCH_COL_EVENT_CODE];
		evNum = getEventNum(strEvCode, EVENT_COL_CODE)
		strEvName = event_name[evNum][EVENT_COL_NAME];
		cEvText = event_text;
		cEv = event_color[evNum];
		strEv = "      <span style='color: " + cEvText + "; " + 
				"background-color: " + cEv + "'>" + 
				strEvName + "</span>";

		svNum = getServerNum(tEvent[SCH_COL_SERVER], SERVER_COL_NAME);
		//  サーバ名称取得
		strSvN = server_name[svNum][SERVER_COL_NAME];
		cSvText = server_text;
		cSv = server_color[svNum];
		url = "http://ccn.aitai.ne.jp/~poet/MEC/MEC.html";

/*
★4:特大型
2007/10/05(Fri)〜14日のイベント
10/06(Sat)　21:00〜xx:xx　タルラーク　3ch　マハ公演
演奏会　おとまび演奏会
10/06(Sat)　23:00〜25:00　モリアン　4ch　マハ公演
演奏会　イメンマハ音楽祭
*/
		strBuff = strBuff + 
				"      <a href='" + url + "#" + getMarker(tEvent) + "' " + 
				"target='MEC' title='" + createToolTip(tEvent, strHol) + "'>" + 				"<b><span style='color: " + cText + "'>" + 
				strDate + "</span></b>　" + 
				tEvent[SCH_COL_BEGIN_TIME] + "〜" + 
				tEvent[SCH_COL_END_TIME] + "　" + 
				" <span style='color: " + cSvText + "; " + 
				"background-color: " + cSv + "'>" + 
				strSvN + "</span>　" + 
				tEvent[SCH_COL_CH] + "ch　" + 
				tEvent[SCH_COL_PLACE_S] + "<br>\n" + 
				"      " + strEv + tEvent[SCH_COL_TITLE] + "</a><br>\n";
//alert("strBuff = " + strBuff);
	}
}


//  ****  汎用メソッド  ****
/**
 * 現在の日時を取得する。
 * 値は、now, nowY, nowM, nowD, nowHou, nowMin, nowSecに設定される。
 */
function getNowDate() {
	now = new Date();
	nowY = now.getYear();
	if (nowY < 2000) {
		nowY = 1900 + nowY;
	}
	nowM = now.getMonth() + 1;
	nowD = now.getDate();
	nowDay = now.getDay();
	nowDay = cal_week[nowDay][dispWKind];
	nowHou = now.getHours();
	nowMin = now.getMinutes();
	nowSec = now.getSeconds();
}
