/**
 * カレンダー表示
 */
var xmlData;
$(function(){
	var nowDate = new Date();
	var sYr = nowDate.getFullYear();
	
	/**
	 * XMLデータを取得する関数
	 * @param {string} sPath	xmlまでのパス
	 * return xmlData	xmlデータ
	 */
	var getXmlData = function(sPath) {
		$.ajax({
			url: sPath,
			dataType: 'xml',
			async: false,
			success: function(xml){
				xmlData = xml;
			},
			error: function(){
				xmlData = null;
			}
		});
	}
	
	// 月リスト表示
	var setMonthList = function(yr, mt) {
		deffDateNow = new Date(yr, mt-1, 1);		// 表示月
		deffDateBefore = new Date(nowDate.getFullYear()-1, 0, 1);		// 1年前の1月1日
		deffDateAfter = new Date(nowDate.getFullYear()+1, 11, 1);		// 1年後の12月1日
		// HTML生成
		sHtml = '';
		if (deffDateNow.getTime() <= deffDateBefore.getTime()) {
			sHtml += '<li><img src="./images/common/ic_cal_prev.gif" alt="前月" /></li>';
		}
		else {
			sHtml += '<li class="prev"><a href="javascript:void(0);" rel="'+mt+'"><img src="./images/common/ic_cal_prev.gif" alt="前月" /></a></li>';
		}
		sHtml += '<li class="txt"><a href="./calendar/?yr='+yr+'&mt='+mt+'">'+yr+'年'+mt+'月</a></li>';
		if( deffDateNow.getTime() >= deffDateAfter.getTime() ) {
			sHtml += '<li><img src="./images/common/ic_cal_nex.gif" alt="次月" /></li>';
		}
		else {
			sHtml += '<li class="next"><a href="javascript:void(0);" rel="'+mt+'"><img src="./images/common/ic_cal_nex.gif" alt="次月" /></a></li>';
		}
		sYr = yr;
		
		// HTML表示
		$('div#calendar ul.tb_cal').html(sHtml);
		setCaledarHtml(yr, mt);
	}
	
	var setCaledarHtml = function(yr, mt){
		tmpMt = mt;
		if( mt < 10 ) {
			tmpMt = '0'+mt;
		}
		
		sPath = './data/event/event_calendar/all/'+yr+tmpMt+'.xml';
		getXmlData(sPath);
		
		sHtml = '';
		$(xmlData).find('days').each(function(idx){
			nWk = parseInt($(this).find('week').text());
			day = $(this).find('day').text();
			isEvent = ($(this).find('event').text() != "")? $(this).find('event').text(): 'false';
			sHtml += getTableHtml(yr, mt, day, nWk, idx, isEvent);
		});
		if( sHtml == '' ) {
			// 末日を取得
			tmpDate = new Date(yr, mt, 0);
			endDay = tmpDate.getDate();
			for( idx = 1; idx <= endDay; idx++ ) {
				// 曜日
				tmpDate = new Date(yr, mt-1, idx);
				nWk = tmpDate.getDay();
				sHtml += getTableHtml(yr, mt, idx, nWk, idx, 'false');
			}
		}
		
		$('div#calendar table tbody').html(sHtml);
	}
	
	var getTableHtml = function(yr, mt, day, nWk, idx, isEvent) {
		sTmpHtml = '';
		tmpMt = mt;
		deffToday = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate());
		deffDate01 = new Date(yr, mt-1, day);	// 当日
		deffDate02 = new Date(yr, mt, '0');			// 末日
		if( mt < 10 ) {
			tmpMt = '0'+mt;
		}
		if( day == 1 ) {
			sTmpHtml += '<tr>';
			// 最初の空欄td
			for(i = 0; i < nWk; i++) {
				sTmpHtml += '<td><p>&nbsp;</p></td>';
			}
		}
		else if( nWk == 0 ) {
			sTmpHtml += '<tr>';
		}
		
		sCls = '';
		sClsP = '';
		if( isEvent != 'false' ) {
			sCls = ' class="event"';
		}
		else if( nWk == 0 ) {
			sCls = ' class="sun"';
		}
		else if( nWk == 6 ) {
			sCls = ' class="sat"';
		}
		// 本日
		if( deffToday.getTime() == deffDate01.getTime() ) {
			sClsP += ' class="today"';
		}
		
		if( isEvent != 'false' ) {
			sTmpHtml += '<td'+sCls+'><p'+sClsP+'><a href="./calendar/?yr='+yr+'&mt='+mt+'&link=con_'+isEvent+'">'+day+'</a></p></td>';
		}
		else {
			sTmpHtml += '<td'+sCls+'><p'+sClsP+'>'+day+'</p></td>';
		}
		
		if( deffDate01.getTime() == deffDate02.getTime() ) {
			for( i = nWk; i < 6; i++ ) {
				sTmpHtml += '<td><p>&nbsp;</p></td>';
			}
			sTmpHtml += '</tr>';
		}
		else if( nWk == 6 ) {
			sTmpHtml += '</tr>';
		}
		
		return sTmpHtml;
	}
	
	$('div#calendar li.prev a').live('click', function(){
		mt = parseInt($(this).attr('rel'));
		mt = mt-1;
		yr = sYr;
		if( mt < 1 ) {
			mt = 12;
			yr--;
		}
		setMonthList(yr, mt);
	});
	
	$('div#calendar li.next a').live('click', function(){
		mt = parseInt($(this).attr('rel'));
		mt = mt+1;
		yr = sYr;
		if( mt > 12 ) {
			mt = 1;
			yr++;
		}
		setMonthList(yr, mt);
	});
	
	/**
	 * 初期表示
	 */
	$('document').ready(function(){
		setMonthList(nowDate.getFullYear(), nowDate.getMonth()+1);
	});
});

