﻿
jQuery.noConflict();

function calendarClear() {
    //reset selected value of all calendars on page
    jQuery(".calendar input.day").attr("value", "0");
    jQuery(".calendar .calendarwrap td").removeClass("select");
    jQuery(".periodCalendar .calendarwrap").hide();
    jQuery(".periodCalendar input.selected").attr("value", "");
}

function calendarGetInput(cell, type) {
    var controlRef = jQuery(cell).parent().parent().parent().parent();
    if (type == "table") {
        return jQuery("table", controlRef);
    } else if (type == "control") {
        return controlRef;
    } else if (type == "textbox") {
        return jQuery("input.selected", controlRef);
    } else if (type == "month") {
        var tableRef = jQuery("table", controlRef);
        return jQuery("input[name=" + jQuery(tableRef).attr("rel") + "month]");
    } else if (type == "year") {
        var tableRef = jQuery("table", controlRef);
        return jQuery("input[name=" + jQuery(tableRef).attr("rel") + "year]");
    } else if (type == "day") {
        var tableRef = jQuery("table", controlRef);
        return jQuery("input[name=" + jQuery(tableRef).attr("rel") + "day]");
    }
    return null;
}

function calendarPopupClick(clicked) {
    var controlRef = jQuery(clicked).parent().parent();
    var calendarRef = jQuery(".calendarwrap", controlRef);
    if (jQuery(calendarRef).css("display") == "none") {
        jQuery(".periodCalendar .calendarwrap").hide();
        calendarRef.fadeIn();
    } else {
        calendarRef.fadeOut();
    }
}

function calendarDayClick(clicked) {
    if (jQuery(clicked).hasClass("dayother")) return;

    var selected = jQuery(clicked).hasClass("select");
    var hasPopup = (jQuery(calendarGetInput(clicked, "textbox")).attr("class") == "selected");

    jQuery(clicked).parent().parent().children().children("td").removeClass("select");
    jQuery(calendarGetInput(clicked, "day")).attr("value", "0");

    if (hasPopup) {
        jQuery(calendarGetInput(clicked, "textbox")).attr("value", "");
    }

    if (!selected) {
        jQuery(clicked).addClass("select");
        jQuery(calendarGetInput(clicked, "day")).attr("value", jQuery(clicked).html());

        if (hasPopup) {
            var month = parseInt(jQuery(calendarGetInput(clicked, "month")).attr("value"));
            var year = parseInt(jQuery(calendarGetInput(clicked, "year")).attr("value"));
            var text = jQuery(clicked).text() + "-" + month + "-" + year.toString();
            jQuery(calendarGetInput(clicked, "textbox")).attr("value", text);
            jQuery(calendarGetInput(clicked, "control")).children(".calendarwrap").eq(0).fadeOut();
        }
    }
}

function calendarSliderClick(clicked) {
    var refMonth = calendarGetInput(clicked, "month");
    var refYear = calendarGetInput(clicked, "year");
    var rel = jQuery(clicked).attr("rel");

    if (rel == "previous") {
        var m = parseInt(jQuery(refMonth).attr("value")) - 1;
        if (m <= 0) {
            m = 12;
            var y = parseInt(jQuery(refYear).attr("value"));
            jQuery(refYear).attr("value", y - 1);
        }
        jQuery(refMonth).attr("value", m);
    } else if (rel == "next") {
        var m = parseInt(jQuery(refMonth).attr("value")) + 1;
        if (m >= 13) {
            m = 1;
            var y = parseInt(jQuery(refYear).attr("value"));
            jQuery(refYear).attr("value", y + 1);
        }
        jQuery(refMonth).attr("value", m);
    } else if (rel == "first") {
        var y = parseInt(jQuery(refYear).attr("value"));
        jQuery(refYear).attr("value", y - 1);
    } else if (rel == "last") {
        var y = parseInt(jQuery(refYear).attr("value"));
        jQuery(refYear).attr("value", y + 1);
    }

    var mval = parseInt(jQuery(refMonth).attr("value"));
    var yval = parseInt(jQuery(refYear).attr("value"));
    var recalc = new Date(yval, mval - 1, 1);
    var month = "";

    switch (recalc.getMonth() + 1) {
        case 1: month = "jan"; break;
        case 2: month = "feb"; break;
        case 3: month = "mrt"; break;
        case 4: month = "apr"; break;
        case 5: month = "mei"; break;
        case 6: month = "jun"; break;
        case 7: month = "jul"; break;
        case 8: month = "aug"; break;
        case 9: month = "sep"; break;
        case 10: month = "okt"; break;
        case 11: month = "nov"; break;
        case 12: month = "dec"; break;
    }

    jQuery(clicked).siblings(".month").text(month + " " + recalc.getFullYear());
    jQuery(clicked).parent().parent().children().children("td").removeClass().addClass("dayother");

    var startIndex = 0 - recalc.getDay();
    var index = startIndex;

    for (r = 0; r <= 5; ++r) {
        for (c = 0; c <= 6; ++c) {
            var row = jQuery(clicked).parent().parent().children("tr").eq(r + 2);
            var col = jQuery(row).children("td").eq(c);
            var curday = new Date(yval, mval - 1, index + 1);
            jQuery(col).html(curday.getDate());
            if (curday.getMonth() == (mval - 1)) jQuery(col).removeClass().addClass("day");
            ++index;
        }
    }
}
