// JavaScript Document

var aDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); //
var aWeek = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sta");  //
var objParent;        //
var tCalendar;        //
var nYear = 0;        //
var nMonth = 0;      //

var aYear = new Array();    //
var bYear = new Array();    //

aYear["A.D.2002"] = new Array(0,0,0,0,0,0,0,0,0,0,0,9,16,24,30,31,-1);
aYear["A.D.2003"] = new Array(1,2,3,4,5,6,14,20,27,0,3,10,17,24,0,3,10,17,24,31,0,7,14,21,28,0,6,12,19,26,0,2,9,16,23,30,0,7,14,22,28,0,4,11,18,25,0,1,8,16,22,29,0,6,14,20,27,0,4,10,17,25,0,1,8,15,22,29,30,31,-1);
aYear["A.D.2004"] = new Array(1,2,3,5,13,19,26,0,2,9,16,23,0,1,8,15,22,29,0,5,12,19,26,0,10,17,24,31,0,7,14,21,28,0,5,12,20,26,0,2,9,16,23,30,0,6,13,21,27,0,4,12,18,25,0,1,8,15,22,29,0,6,13,20,27,29,30,31,-1);
aYear["A.D.2005"] = new Array(1,3,4,5,11,17,24,31,0,7,14,21,28,0,7,14,22,28,0,4,11,18,25,0,2,9,16,23,30,0,6,13,20,27,0,4,11,19,25,0,1,8,15,22,29,0,5,12,20,26,0,3,11,17,24,31,0,7,14,21,28,0,5,12,19,26,29,30,31,-1);
aYear["A.D.2006"] = new Array(2,3,4,5,10,16,23,30,0,6,13,20,27,0,6,13,20,27,0,3,10,17,24,0,1,8,15,22,29,0,5,12,19,26,0,3,10,18,24,31,0,7,14,21,28,0,4,11,19,25,0,2,10,16,23,30,0,6,13,20,27,0,4,11,18,25,29,30,-1);
aYear["A.D.2007"] = new Array(1,2,3,4,5,9,15,22,29,0,5,13,19,26,0,5,12,19,26,0,2,9,16,23,0,1,7,14,21,28,0,4,11,18,25,0,2,9,17,23,30,31,0,6,13,20,27,0,3,10,18,25,26,0,1,9,15,22,29,0,5,12,19,26,0,3,10,17,25,29,31,-1);
aYear["A.D.2008"] = new Array(1,2,3,4,7,15,21,28,0,4,12,18,25,0,3,10,17,24,31,0,7,14,21,28,0,7,12,19,26,0,2,9,16,23,30,0,7,14,22,28,29,0,4,11,18,25,0,1,8,16,22,29,30,0,6,14,20,27,0,4,10,17,25,0,1,8,15,22,29,30,31,-1);
aYear["A.D.2009"] = new Array(1,2,3,5,13,19,26,0,2,9,16,23,0,2,9,16,23,30,0,6,13,20,27,0,7,11,18,25,0,1,8,15,22,29,0,6,13,21,27,28,0,3,10,17,24,31,0,7,14,24,28,0,5,6,13,19,26,0,2,9,16,24,30,0,7,14,21,28,29,30,31,-1);
aYear["A.D.2010"] = new Array(1,2,3,4,5,6,10,12,17,18,24,25,31,0,1,7,8,14,15,21,22,28,0,1,7,8,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,0,5,12,19,26,0,6,10,17,24,31,0,7,14,21,28,0,5,12,20,26,27,28,29,0,2,9,16,23,30,0,6,13,21,27,0,4,12,18,25,0,1,8,15,22,29,0,6,13,20,27,28,29,30,31,-1);
aYear["A.D.2011"] = new Array(1,2,3,4,5,6,11,17,24,31,0,7,14,21,28,0,7,14,22,28,0,4,11,18,25,0,2,9,16,23,30,0,6,13,20,27,0,4,11,19,25,0,1,8,15,22,29,0,5,12,20,26,0,3,11,17,24,31,0,7,14,21,28,0,5,12,19,26,29,30,31,-1);
aYear["A.D.2012"] = new Array(1,2,3,4,9,17,23,30,0,7,14,21,28,0,7,14,22,28,0,4,11,18,25,0,2,9,16,23,30,0,6,13,20,27,0,4,11,19,25,0,1,8,15,22,29,0,5,12,20,26,0,3,11,17,24,31,0,7,14,21,28,0,5,12,19,26,29,30,31,-1);

bYear["B.D.2002"] = new Array(1,14,0,11,0,21,0,29,0,3,4,6,0,0,20,0,0,16,23,0,14,0,4,23,0,23,-1);
bYear["B.D.2003"] = new Array(1,13,0,11,0,21,0,29,0,3,5,0,0,21,0,0,15,23,0,13,0,3,24,0,23,-1);
bYear["B.D.2004"] = new Array(1,12,0,11,0,20,0,29,0,3,4,5,0,0,19,0,0,20,23,0,11,0,3,23,0,23,-1);
bYear["B.D.2005"] = new Array(1,10,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
bYear["B.D.2006"] = new Array(2,9,0,11,0,2,0,29,0,3,4,5,0,0,17,0,0,18,23,0,9,0,3,23,0,23,-1);
bYear["B.D.2007"] = new Array(1,8,0,12,0,21,0,30,0,3,4,5,0,0,16,0,0,17,24,0,8,0,3,23,0,24,-1);
bYear["B.D.2008"] = new Array(1,14,0,11,0,20,0,29,0,3,5,6,0,0,21,0,0,15,23,0,13,0,3,24,0,23,-1);
bYear["B.D.2009"] = new Array(1,12,0,11,0,20,0,29,0,4,5,6,0,0,20,0,0,21,22,23,0,12,0,3,23,0,23,-1);
bYear["B.D.2010"] = new Array(1,11,0,11,0,22,0,29,0,3,4,5,0,0,19,0,0,20,23,0,11,0,3,23,0,23-1);
bYear["B.D.2011"] = new Array(1,10,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
bYear["B.D.2012"] = new Array(1,16,0,11,0,21,0,29,0,3,4,5,0,0,18,0,0,19,23,0,10,0,3,23,0,23,-1);
//-----------------------------------------------------


function InitCalendar(parent_id) {
    if (document.getElementById) {
        objParent = document.getElementById(parent_id);
        SetThisMonth();
    }
}


function SetCalendar(year, month) {
    var nDate = new Date();
    var nToday = nDate.getDate();
    var nDays;
    var nFirstDay;  
    var bToday;
    var i, j;

    nYear = year;
    nMonth = month
    bToday = (nYear == nDate.getFullYear() && nMonth == nDate.getMonth() + 1)? true: false;


    nDays = aDays[nMonth-1];
    if (nMonth == 2) {
        if (nYear % 400 == 0) nDays =29;
        else if (nYear % 100 == 0) nDays = 28;
        else if (nYear % 4 == 0) nDays= 29;
    }


    tCalendar = document.createElement("table");
    with (tCalendar) {
        style.width = "280px";
        style.margin = "0";
        style.tableLayout = "fixed";
        style.border = "1px solid #777777";
        style.backgroundColor = "#ffffff";
        style.fontSize = "12px";
        style.lineHeight = "150%";

    }
    var tbCalendar = document.createElement("tbody");


    var trCaption = document.createElement("tr");
    var tdCaption = document.createElement("td");

    var strCaption = document.createTextNode( nMonth + " / " + nYear )
    with (tdCaption) {
        colSpan = "7";
        style.padding = "3";
        style.borderBottom = "1px solid #777777";
        style.textAlign = "center";
		style.fontWeight = "bold";
		style.fontSize= "14px";
    }	
    trCaption.appendChild(tdCaption);
    tdCaption.appendChild(strCaption);


    var aHref = new Array("SetPrevMonth()", "SetThisMonth()", "SetNextMonth()");
    var aTarget = new Array("<<", "this month", ">>");
    for (i = 0; i < 3; i++) {
        var lnk = document.createElement("a");
        lnk.style.marginLeft = "5px";
        lnk.style.fontSize= "10px";
        lnk.style.color = "gray";
        lnk.href = "javascript:" + aHref[i];
        lnk.appendChild(document.createTextNode(aTarget[i]));
        tdCaption.appendChild(lnk);
    }

    tbCalendar.appendChild(trCaption);  


    var trWeek = document.createElement("tr");
    for (i = 0; i < 7; i++) {
        var tdWeek = document.createElement("td");
        with (tdWeek) {
            style.padding = "3";
            style.textAlign = "center";
			style.fontWeight = "bold";
			style.backgroundColor = "#D6D6E4";
            appendChild(document.createTextNode(aWeek[i]));
			    if (i == 0)	style.color = "#CC0000";
                else if (i == 6) style.color = "#0000CC"; 
        }
        trWeek.appendChild(tdWeek);
    }
    tbCalendar.appendChild(trWeek);


    nDate.setFullYear(nYear);
    nDate.setDate(1);            
    nDate.setMonth(nMonth-1);
    nFirstDay = nDate.getDay();


    var row = document.createElement("tr");
    var cell = new Array(nDays);
    for (i = -nFirstDay, j = 0; i < nDays; i++) {
        cell[i] = document.createElement("td");
        with (cell[i]) {
            style.padding = "3";
            style.textAlign = "center";
			style.borderTop = "1px solid #999999";
			style.borderBottom = "1px solid #999999";
			style.borderLeft = "1px solid #999999";
			style.borderRight = "1px solid #999999";
            if (i < 0) {
                appendChild(document.createTextNode(" "));
            } else {
                appendChild(document.createTextNode(i+1)); 
                if (j == 0){
							if (nYear<2010){
            					style.backgroundColor = "#ffccff";
								}
					style.color = "#CC0000";
				}
                else if (j == 6) style.color = "#0000CC";
                else style.backgroundColor = "transparent"; 
            }
            row.appendChild(cell[i]);
        }
        if (++j == 7 && i != nDays-1) {
            tbCalendar.appendChild(row);
			//appendChild(document.createTextNode(" "));
            row = document.createElement("tr");
            j = 0;
        } 
    }


    var aRefHoliday = aYear["A.D."+nYear];
    if (aRefHoliday) {
        for (i=0, j=1; j+1<=nMonth; i++) {
            if (aRefHoliday[i] == -1) break;
            if (aRefHoliday[i] == 0) j++;
        }
        while (aRefHoliday[i] > 0) { 
            cell[aRefHoliday[i++]-1].style.backgroundColor = "#ffccff";
        }
    }

    var bRefHoliday = bYear["B.D."+nYear];
    if (bRefHoliday) {
        for (i=0, j=1; j+1<=nMonth; i++) { 
            if (bRefHoliday[i] == -1) break;
            if (bRefHoliday[i] == 0) j++;
        }
        while (bRefHoliday[i] > 0) { 
            cell[bRefHoliday[i++]-1].style.color = "#CC0000";
        }
    }


    if (bToday){
		cell[nToday-1].style.fontWeight = "bold";
		cell[nToday-1].style.textDecoration = "underline";		
	}
    tbCalendar.appendChild(row);

    tCalendar.appendChild(tbCalendar);
    objParent.appendChild(tCalendar);
}   

function SetPrevMonth() {
    if (nMonth == 1) {
        nMonth = 12;
        nYear--;
    } else {
		if (nYear!=2002){
			nMonth--;
		}
    }
    if (tCalendar) objParent.removeChild(tCalendar);
    SetCalendar(nYear, nMonth);
}


function SetNextMonth() {
    if (nMonth == 12) {  
        nMonth = 1;
        nYear++;
    } else {
		if (nYear<2012){
            nMonth++;
		}
    }
    if (tCalendar) objParent.removeChild(tCalendar);
    SetCalendar(nYear, nMonth);
}


function SetThisMonth() {
    if (tCalendar) objParent.removeChild(tCalendar);
    var nDate = new Date();    
    SetCalendar(nDate.getFullYear(), nDate.getMonth() + 1);
}