$(document).ready(function() {
    $(".month_changer span.go_back a").click(function() { changeMonth("-"); return false; });
    $(".month_changer span.go_next a").click(function() { changeMonth("+"); return false; });
    $("#view").click(function() { directInput(); return false; });
    createCalendar(null, null);
});

function changeMonth(mark) {
    var ym = $("div.month_changer p.view_month").text().split(".");
    var d = new Date();
    d.setYear(ym[0]);

    var num = 0;
    if (ym[1].charAt(0) == "0") {
        num = ym[1].charAt(1);
    } else {
        num = ym[1];
    }
    num = parseInt(num);
    if (mark == "-") {
        d.setMonth(num - 2);
    } else if (mark == "+") {
        d.setMonth(num);
    }
    var y = d.getYear();
    y = (y < 2000) ? (1900 + y) : (y);

    createCalendar(y, d.getMonth());
}

function createCalendar(y, m) {
    var year = y;
    var month = m;

    var myMonthTbl = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var myDate = (year != null && month != null) ? new Date(year, month, 1) : new Date();
    var myYear = year;
    if (myYear == null) {
        myYear = myDate.getYear();
        myYear = (myYear < 2000) ? (1900 + myYear) : (myYear);
    }
    if (((myYear % 4) == 0 && (myYear % 100) != 0) || (myYear % 400) == 0) myMonthTbl[1] = 29;
    var myMonth = (myMonth != null) ? month : myDate.getMonth();
    myToday = myDate.getDate();
    myDate.setDate(1);
    var myWeek = myDate.getDay();
    var myTblLine = Math.ceil((myWeek + myMonthTbl[myMonth]) / 7);
    var myTable = new Array(7*myTblLine);

    for(i = 0; i < 7 * myTblLine; i++) myTable[i] = "　";
    for(i = 0; i < myMonthTbl[myMonth]; i++) {
        num = i + 1;
        myTable[i + myWeek] = (num > 9) ? num : "0" + num;
    }

    $("#year").val(myYear);
    $("#month").val(myMonth + 1);
    $("#date").val(1);

    var thisMonth = (myMonth > 8) ? myMonth + 1 : "0" + (myMonth + 1);
    $("div.month_changer p.view_month").text(myYear + "." + thisMonth);
    $("div.edit_contents h3 strong").text(thisMonth);

    var url = "../cms/web.php?menu=info&year=" + myYear + "&month=" + thisMonth;
    $.getJSON(url, function(data) { setMonthData(data, myTable, myTblLine, myYear, thisMonth); });
}

function setMonthData(data, myTable, myTblLine, year, month) {
    setCalendarData(data, myTable, myTblLine, year, month);
    setListData(data);
}

function setCalendarData(data, myTable, myTblLine, year, month) {
    var tbobj = $(".calender table#calender_body").empty();
    for (i = 0; i < myTblLine; i++) {
        var trobj = $("<tr />");
        for (j = 0; j < 7; j++) {
            myDat = myTable[j + (i * 7)];
            var tdobj = $("<td />");
            var flg = 0;
            if (data != null) {
                $.each(data, function(i, item) {
                    var d = item.INPUT_DATE.split("/");
                    if (myDat == d[2]) {
                        flg = 1;
                        return false;
                    }
                });
            }
            if (flg) {
                aobj = $("<a />");
                aobj.attr("href", "#");
                //aobj.click(function() { alert("date"); return false; });
                aobj.append(myDat);
                aobj.click(function() { changeDate(year, month, $(this).text()); return false; });
                tdobj.append(aobj);
            } else {
                tdobj.append(myDat);
            }
            trobj.append(tdobj);
        }
        tbobj.append(trobj);
    }
}

function setListData(data) {
    if (data != null) {
        var tableobj = $(".edit_contents table").empty();
        $.each(data, function(i, item) {
            var thobj = $("<th />");
            thobj.attr("abbr", "掲載日");
            var dateStr = item.INPUT_DATE;
            thobj.append(dateStr);

            var content = item.CONTENT;
            if (content != undefined && content.length > 0) {
                content = content.replace(/\r\n/g, "<br />");
                content = content.replace(/(\n|\r)/g, "<br />");
                content += "<br />";
            }

            var text = item.LINK_NAME;
            var aobj  = $("<a />");
            aobj.attr("href", "../cms/" + item.FILENAME);
            aobj.attr("target", "_blank");
            aobj.append(text);

            var tdobj = $("<td />");
            tdobj.append(content);
            tdobj.append(aobj);

            var trobj = $("<tr />");
            trobj.append(thobj);
            trobj.append(tdobj);
            tableobj.append(trobj);
        });
    }
}

function directInput() {
    var year = $("#year").val();
    var month = $("#month").val();

    if (year.match(/\d\d\d\d/) && month.match(/\d|\d\d/)) {
        month--;
        createCalendar(year, month);
    } else {
        alert("日付の入力が間違っています");
    }
}

function changeDate(y, m, d) {
    var url = "../cms/web.php?menu=info&year=" + y + "&month=" + m + "&date=" + d;
    $.getJSON(url, function(data) { setListData(data); });
}

