// Copyright (c) 2004-2009 koikikukan All Rights Reserved.
// http://www.koikikukan.com/
// License is granted if and only if this entire
// copyright notice is included. By Yujiro ARAKI.

// Ver1.00 2006.03.15 initial version.
// Ver1.01 2006.04.11 fix bug.
// Ver1.02 2006.04.15 fix bug.
// Ver1.03 2006.04.16 fix bug.
// Ver1.04 2006.08.03 fix bug.
// Ver1.05 2007.04.21 fix bug.
// Ver1.06 2007.11.05 fix bug.
// Ver1.07 2009.04.19 for change low.

var currentYear;
var currentMonth;
var currentDay;
var weekHoliday;
var irregurarHolidayNum;
var irregurarHoliday;

function setCurrentDate() {
    var currentYear = new Date().getYear();
    var currentYear = (currentYear < 2000) ? currentYear + 1900 : currentYear;
    var currentMonth = new Date().getMonth() + 1;
    var currentDay = new Date().getDate();
}
function setWeekHoliday(week) {
	weekHoliday = week;
}
function setIrregularHoliday(Num,week) {
	irregurarHolidayNum = Num;
	irregurarHoliday    = week;
}
function isToday(year, month, day) {
    if (year == currentYear && parseInt(month,10) == currentMonth && day == currentDay) {
        return true;
    }
    return false;
}

function isSaturday(year, month, day) {
    var week = new Date(year, month - 1, day).getDay();
    if (week == 6) {
        //return true;
    }
    return false;
}

function isHoliday(year, month, day) {
    var week = new Date(year, month - 1, day).getDay();
    var checkdate = new Date(year, month - 1, day);
    if (week == 0) {
        //return true;
    }
    if (week == weekHoliday) {
    	if(month == 12){
    		if(day != 29){
	    		return true;
	    	}
	    } else {
	    	return true;
	    }
    }
    var weeksNum = Math.floor((checkdate.getDate() - checkdate.getDay() + 10 ) / 7); //第何週目かどうか
    if (weeksNum == irregurarHolidayNum-1 && week == irregurarHoliday) {
    	//return true;
    }
    return false;
    switch(parseInt(month,10)) {
    case 1:
        if (day == 1) {
            return true;
        }
        if (day == 2 && isSunday(year, month, 1)) {
            return true;
        }
        if (day == (getFirstMonday(year, month) + 7)) {
            return true;
        }
        break;
    case 2:
        if (day == 11) {
            return true;
        }
        if (day == 12 && isSunday(year, month, 11)) {
            return true;
        }
        break;
    case 3:
        if(year > 1979 && year < 2100) {
            if (day == parseInt(20.8431 + 0.242194 * (year - 1980) - parseInt((year - 1980) / 4))) {
                return true;
            }
            if (day == (parseInt(20.8431 + 0.242194 * (year - 1980) - parseInt((year - 1980) / 4)) + 1) && isSunday(year, month, day - 1)) {
                return true;
            }
        }
        break;
    case 4:
        if (day == 29) {
            return true;
        }
        if (day == 30 && isSunday(year, month, 29)) {
            return true;
        }
        break;
    case 5:
        if (day == 3 || day == 4 || day == 5) {
            return true;
        }
        if (day == 6 && (isSunday(year, month, 3) ||
                         isSunday(year, month, 4) ||
                         isSunday(year, month, 5))) {
            return true;
        }
        break;
    case 7:
        if (day == (getFirstMonday(year, month) + 14)) {
            return true;
        }
        break;
    case 9:
        if (day == (getFirstMonday(year, month) + 14)) {
            return true;
        }
        if(year > 1979 && year < 2100) {
            if (day == parseInt(23.2488 + 0.242194 * (year - 1980) - parseInt((year - 1980) / 4))) {
                return true;
            }
            if (day == (parseInt(23.2488 + 0.242194 * (year - 1980) - parseInt((year - 1980) / 4)) + 1) && isSunday(year, month, day - 1)) {
                return true;
            }
        }
        var day2 = parseInt(day, 10);
        if(day2 - 1 == (getFirstMonday(year, month) + 14))  {
            if(year > 2008 && year < 2100) {
                if (day2 + 1 == parseInt(23.2488 + 0.242194 * (year - 1980) - parseInt((year - 1980)  / 4))) {
                    return true;
                }
                if (day2 + 1 == (parseInt(23.2488 + 0.242194 * (year - 1980) - parseInt((year - 1980) / 4)) + 1) && isSunday(year, month, day - 1)) {
                    return true;
                }
            }
        }
        break;
    case 10:
        if (day == (getFirstMonday(year, month) + 7)) {
            return true;
        }
        break;
    case 11:
        if (day == 3 || day == 23) {
            return true;
        }
        if (day == 4 && isSunday(year, month, 3)) {
            return true;
        }
        if (day == 24 && isSunday(year, month, 23)) {
            return true;
        }
        break;
    case 12:
        if (day == 23) {
            return true;
        }
        if (day == 24 && isSunday(year, month, 23)) {
            return true;
        }
        break;
    }
    return false;
}

function isSunday(year, month, day) {
    var week = new Date(year, month - 1, day).getDay();
    if (week == 0) {
        return true;
    }
    return false;
}

function getFirstMonday(year, month) {
    var monday;
    for(monday = 1; monday < 8; monday++) {
        if(new Date(year, month - 1, monday).getDay() == 1) {
            break;
        }
    }
    return monday;
}

function setWeekendAndHoliday(y,m) {
    var element = document.getElementById("wp-calendar");
    if(element){
    var caption = document.getElementsByTagName("caption");
    var date = caption[0].innerHTML;
    var number = date.match(/\d{1,}/g);
    var year = number[0];
    var month = number[1];

    var tbody = element.getElementsByTagName("tbody");
    var td = tbody[0].getElementsByTagName("td");
    var day;
    for (i = 0; i < td.length; i++) {
        if(td[i].innerHTML.indexOf("href") != -1){
            day = td[i].getElementsByTagName("a")[0].innerHTML;
        } else {
            day = td[i].innerHTML;
        }
        if (isHoliday(year, month, day)) {
            if (isToday(year, month, day)) {
                td[i].setAttribute('class', 'tholiday');
                td[i].setAttribute('className', 'tholiday');
            } else {
                td[i].setAttribute('class', 'holiday');
                td[i].setAttribute('className', 'holiday');
            }
        } else if(isSaturday(year, month, day)) {
            if (isToday(year, month, day)) {
                td[i].setAttribute('class', 'tsaturday');
                td[i].setAttribute('className', 'tsaturday');
            } else {
                td[i].setAttribute('class', 'saturday');
                td[i].setAttribute('className', 'saturday');
            }
        } else {
            if (isToday(year, month, day)) {
                td[i].setAttribute('class', 'today');
                td[i].setAttribute('className', 'today');
            }
        }
    }
    
    }
}
