//<script>

	function SetBirthdayObject() {
		document.write('<OBJECT ID="dbBirthday" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">');
		document.write('<PARAM NAME="CharSet" VALUE="Shift_JIS">');
		document.write('<PARAM NAME="DataURL" VALUE="fjy/data/birthday.txt">');
		document.write('<PARAM NAME="UseHeader" VALUE="true">');
		document.write('<PARAM NAME="FieldDelim" VALUE="&#9;">');
		document.write('</OBJECT>');
	}

	function ShowBirthday(ShowDataCounts) {
		// 配列の初期化（内部処理用にひとつ多く作る）
		var Dat = new Array(ShowDataCounts + 1);
		for (var i = 0; i < ShowDataCounts + 1; i++) {
			Dat[i] = new Array();
			Dat[i].Date = '9999.99.99';
			Dat[i].Name = '';
			Dat[i].Description = '';
			Dat[i].Address = '';
			Dat[i].Gender = '';
		}
		
		// 「今年」を求める
		var dteTempToday = new Date();
		var dteToday = new Date(dteTempToday.getYear(), dteTempToday.getMonth(), dteTempToday.getDate(), 0, 0, 0);
		var intThisYear = dteToday.getYear();
		if (intThisYear < 1900) {
			intThisYear = intThisYear + 1900;
		}
		
		// 今日を表す文字列 "mm.dd" を求める
		var strTodayStr = '';
		if (dteToday.getMonth() + 1 < 10) {
			strTodayStr = strTodayStr + '0';
		}
		strTodayStr = strTodayStr + (dteToday.getMonth() + 1) + '.';
		if (dteToday.getDate() < 10) {
			strTodayStr = strTodayStr + '0';
		}
		strTodayStr = strTodayStr + (dteToday.getDate());
		
		// 次の誕生日を求める
		var rs = dbBirthday.recordset;
		rs.moveFirst();
		while (rs.EOF == false) {
			// 次の誕生日を表す文字列 "mm.dd" を求める
			var strMyBirthdayStr = '';
			if (rs.Fields('Month').value < 10) {
				strMyBirthdayStr = strMyBirthdayStr + '0';
			}
			strMyBirthdayStr = strMyBirthdayStr + (rs.Fields('Month').value) + '.';
			if (rs.Fields('Day').value < 10) {
				strMyBirthdayStr = strMyBirthdayStr + '0';
			}
			strMyBirthdayStr = strMyBirthdayStr + (rs.Fields('Day').value);
			
			// 次の誕生日がある年を求める
			var intMyBirthdayYear = intThisYear;
			if (strMyBirthdayStr < strTodayStr) {
				intMyBirthdayYear = intMyBirthdayYear + 1;
			}
			
			// 配列の最後尾（実際にはランク外）にセット
			with (Dat[ShowDataCounts]) {
				// 期日（誕生日）
				Date = intMyBirthdayYear + '.' + strMyBirthdayStr;
				// 氏名
				Name = '<b>' + rs.Fields('Name').value + '</b>';
				// 敬称
				if (rs.Fields('Honorific').value != '') {
					Name = Name + ' <small>' + rs.Fields('Honorific').value + '</small>';
				}
				// リンク
				var strTempAddress = '' + rs.Fields('Address').value;
				if (strTempAddress.match(/http:/)) {
					Name = '<a href="' + strTempAddress + '" target="_blank">' + Name + '</a>';
				} else if (strTempAddress.match(/@/)) {
					Name = '<a href="mailto:' + rs.Fields('Name').value + '&lt;' + strTempAddress + '&gt;">' 
							+ Name + '</a>';
				}
				// 説明文（誕生日）
				Description = '';
				if (rs.Fields('Year').value > 0) {
					Description = Description + ' ' + (intMyBirthdayYear - rs.Fields('Year').value) + '歳の';
				}
				Description = Description + 'お誕生日';
				// 性別
				if (rs.Fields('Gender').value == '男') {
					Gender = '&nbsp;<font color="blue">&spades;</font>&nbsp;';
				} else if (rs.Fields('Gender').value == '女') {
					Gender = '&nbsp;<font color="red">&hearts;</font>&nbsp;';
				}
			}
			
			// 配列を並べ替える
			for (var i = ShowDataCounts; i > 0; i--) {
				if (Dat[i - 1].Date > Dat[i].Date) {
					var strTemp = Dat[i]
					Dat[i] = Dat[i - 1];
					Dat[i - 1] = strTemp;
				}
			}
			rs.moveNext();
		}
		
		// 生誕千日紀を求める（年齢を伏せる人は算出してあげない）
		rs.moveFirst();
		while (rs.EOF == false) {
			if (rs.Fields('Year').value > 0) {
				var dteBirthday = new Date(
						rs.Fields('Year').value, rs.Fields('Month').value - 1, rs.Fields('Day').value);
				
				// 誕生日に 1,000日ずつ足し、今日を追い越すときを求める
				var i = 1;
				while (i > 0) {
					var dteMillenniumDay = new Date;
					dteMillenniumDay.setTime(dteBirthday.getTime() + (i * 1000) * 24 * 60 * 60 * 1000);
					
					// 見つかれば、配列の最後尾（実際にはランク外）にセット
					if (dteMillenniumDay - dteToday >= 0) {
						with (Dat[ShowDataCounts]) {
							// 期日（生誕千日紀）
							Date = '' + dteMillenniumDay.getYear() + '.';
							if (dteMillenniumDay.getMonth() + 1 < 10) {
								Date = Date + '0';
							}
							Date = Date + (dteMillenniumDay.getMonth() + 1) + '.';
							if (dteMillenniumDay.getDate() < 10) {
								Date = Date + '0';
							}
							Date = Date + (dteMillenniumDay.getDate());
							// 氏名
							Name = '<b>' + rs.Fields('Name').value + '</b>';
							// 敬称
							if (rs.Fields('Honorific').value != '') {
								Name = Name + ' <small>' + rs.Fields('Honorific').value + '</small>';
							}
							// リンク
							var strTempAddress = '' + rs.Fields('Address').value;
							if (strTempAddress.match(/http:/)) {
								Name = '<a href="' + strTempAddress + '" target="_blank">' + Name + '</a>';
							} else if (strTempAddress.match(/@/)) {
								Name = '<a href="mailto:' + rs.Fields('Name').value + '&lt;' + strTempAddress + '&gt;">' + Name + '</a>';
							}
							// 説明文（生誕千日紀）
							Description = '生誕 ' + i + ',000日目の記念日';
							// 性別
							if (rs.Fields('Gender').value == '男') {
								Gender = '&nbsp;<font color="blue">&spades;</font>&nbsp;';
							} else if (rs.Fields('Gender').value == '女') {
								Gender = '&nbsp;<font color="red">&hearts;</font>&nbsp;';
							}
						}
						
						// ループを抜ける
						i = - 1;
					} else {
						// 今日を追い越さなかったら i を加算して再処理
						i = i + 1;
					}
				}
				
				// 配列を並べ替える
				for (var i = ShowDataCounts; i > 0; i--) {
					if (Dat[i - 1].Date > Dat[i].Date) {
						var strTemp = Dat[i]
						Dat[i] = Dat[i - 1];
						Dat[i - 1] = strTemp;
					}
				}
			}
			rs.moveNext();
		}
		
		// 結果を出力する
		var strResult = '<table border="0" cellspacing="0" cellpadding="0">';
		for (var  i = 0; i < ShowDataCounts; i++) {
			with (Dat[i]) {
				if (Date == '9999.99.99'){
					// Do Nothing;
				} else if (Date == '' + intThisYear + '.' + strTodayStr) {
					strResult = strResult + '<tr align="center"><td><font size="+3">' + Gender + '</font></td>';
					strResult = strResult + '<td nowrap><marquee width="480">きょうは ';
					strResult = strResult + '<font size="+3">' + Name + '</font>の';
					strResult = strResult + Description + 'です。 おめでとうございます。</marquee></td>';
					strResult = strResult + '<td><font size="+3">' + Gender + '</font></td></tr>';
				} else {
					strResult = strResult + '<tr align="center"><td>' + Gender + '</td>';
					strResult = strResult + '<td align="left" nowrap>' + Date + ' は ' + Name + 'の';
					strResult = strResult + Description + 'です。</td><td>' + Gender + '</td></tr>';
				}
			}
		}
		strResult = strResult + '</table>';
	/*
		strResult = strResult + '<TABLE DATASRC="#birthDay" BORDER="1">';
		strResult = strResult + '<THEAD><TR BGCOLOR="silver">';
		strResult = strResult + '<TD>年</TD><TD>月</TD><TD>日</TD><TD>名前</TD><TD>敬称</TD>';
		strResult = strResult + '</TR></THEAD>';
		strResult = strResult + '<TBODY><TR>';
		strResult = strResult + '<TD><SPAN DATAFLD="Year"></SPAN></TD>';
		strResult = strResult + '<TD><SPAN DATAFLD="Month"></SPAN></TD>';
		strResult = strResult + '<TD><SPAN DATAFLD="Day"></SPAN></TD>';
		strResult = strResult + '<TD><SPAN DATAFLD="Name"></SPAN></TD>';
		strResult = strResult + '<TD><SPAN DATAFLD="Honorific"></SPAN></TD>';
		strResult = strResult + '</TR></TBODY>';
		strResult = strResult + '</TABLE>';
	*/
		ShowBirthdayArea.innerHTML = strResult;
	}

//</script>

