var viewDate;
var nowDate;
j$(function() {
	nowDate = new Date();
	viewDate = nowDate;
	makeCalendar(getYear(viewDate),getMonth(viewDate),getDay(viewDate));

});

function getDay(dateObj){
	return dateObj.getDate();
}
function getMonth(dateObj){
	return dateObj.getMonth()+1;
}

function getYear(dateObj){
	var year = dateObj.getYear();
	if(year < 1000){
		year += 1900;
	}
	return year;
}

function makeCalendar(year,month,day){
	j$("#calendar_month").empty().append(year+"年"+month+"月");
	j$("#year").val(year);
	j$("#month").val(month);
	j$("#day").val(day);

	var i = 1;

	var startDate = new Date(year,month - 1,i);

	while(getWeek(year,month,i)){
		i--;
		startDate = new Date(year,month - 1,i);
	}
	var endDate = new Date(year,month,0);
	
	i = getDay(endDate);
	while(getWeek(year,month,i) != 6){
		i++;
		endDate = new Date(year,month - 1,i);
	}
	var time = startDate.getTime();
	var timeEnd = endDate.getTime();

	var timeY = getYear(startDate);
	var timeM = getMonth(startDate) - 1;

	var html = "";
	html += '<tr>';
	html += '<th class="holiday_text">日</th>';
	html += '<th class="noholiday_text">月</th>';
	html += '<th class="noholiday_text">火</th>';
	html += '<th class="noholiday_text">水</th>';
	html += '<th class="noholiday_text">木</th>';
	html += '<th class="noholiday_text">金</th>';
	html += '<th class="noholiday_text">土</th>';
	html += '</tr>';

	var i = getDay(startDate);
	while(time < timeEnd){
		var targetDate = new Date(timeY,timeM,i);
		if(!targetDate.getDay()){
			html += "<tr>";
		}
		html += "<td"+getHolidayClass(targetDate)+">"+getDay(targetDate)+"</td>";
		if(targetDate.getDay() == 6){
			html += "</tr>";
		}
		time = targetDate.getTime();
		i++;
	}
	j$("#calendar").empty().append(html);

	var lastMonthDate = getLastMonth(year, month);
	j$("#last_year").val(getYear(lastMonthDate));
	j$("#last_month").val(getMonth(lastMonthDate));

	var nextMonthDate = getNextMonth(year, month);

	j$("#next_year").val(getYear(nextMonthDate));
	j$("#next_month").val(getMonth(nextMonthDate));

}
function goLast(){
	viewDate = new Date(j$("#last_year").val(),j$("#last_month").val() -1 ,1);
	makeCalendar(getYear(viewDate),getMonth(viewDate),getDay(viewDate));
}
function goNext(){
	viewDate = new Date(j$("#next_year").val(),j$("#next_month").val() -1 ,1);
	makeCalendar(getYear(viewDate),getMonth(viewDate),getDay(viewDate));
}


function getWeek(year,month,day){
	var dt = new Date(year,month -1,day);
	return dt.getDay();
}

function getLastMonth(year, month) {
	return new Date(year, month-1, 0);
}
function getNextMonth(year, month) {
	return new Date(year, month+1, 0);
}
function getHolidayClass(dateObj){
	if(!dateObj.getDay()){
		return ' class="holiday_text2" ';
	}
	return ' class="holiday_text3" ';
}
