$ektron(function() {

    init_calendars();
    
    try {
        var rqstManager = Sys.WebForms.PageRequestManager.getInstance();
        if (rqstManager != undefined) {
            $ektron('div.calendar').each(function() {
            rqstManager.add_endRequest(init_calendars);
            });
        }
    }
    catch (err) {}
});

function init_calendars(sender, args) {
    $ektron('div.calendar').each(function() {
        var calendar = $ektron(this);
        // Check if it's not already initialized
        if (calendar.children().length == 0) {
            var container = calendar.parent();
            var hidDate = container.find('input.selected_date');
            var hidEventsDates = container.find('input.events_dates');
            var btnUpdateDay = container.find('input.day');
            var btnUpdateMonth = container.find('input.month');
            var hdnCalendarIds = container.find('input.calendar_ids');
            var hidTaxonomyIds = container.find('input.taxonomy_ids');

            btnUpdateMonth.hideCalendar = function() {
                var el = $ektron(".ui-datepicker-inline");
                var headerHtml = $ektron(".ui-datepicker-header").html();
                var workingHtml = '<div class="calendarBusy" style="width: 100%;"><img src="/widgets/cfgCalendarevents/images/ajax-loader.gif" style="margin-top: 32px; margin-left: 64px; margin-bottom: 32px" /></div>';
                calendar.html('<div class="ui-datepicker-inline ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">' + headerHtml + workingHtml + '</div></div>');
            };

            calendar.datepicker({
                changeMonth: true,
                changeYear: true,
                defaultDate: new Date(hidDate.val()),
                onSelect: function(date) {
                    hidDate.val(date);
                    btnUpdateDay.click();
                },
                onChangeMonthYear: function(newYear, newMonth, inst) {
                    if (newYear != undefined && newMonth != undefined) {
                        var date = new Date(hidDate.val());
                        var year = date.getFullYear();
                        var month = date.getMonth() + 1;
                        if (!isNaN(year) && !isNaN(month)) {
                            if (newYear != year || newMonth != month) {
                                var dateStr = newMonth + '/' + date.getDate() + '/' + newYear;
                                hidDate.val(dateStr);
                                btnUpdateMonth.hideCalendar();
                                btnUpdateMonth.click();
                            }
                        }
                    }
                }
            });

            var headerSpan = $('.ui-datepicker-month');
            if (headerSpan.length != 0) {
                var atagText = headerSpan.find('a').attr('href');
                var atagTextPlus;
                var taxids = hidTaxonomyIds.val();
                if (taxids) {
                    atagTextPlus = atagText + "&Calendar ID=" + hdnCalendarIds.val() + "&TaxID=" + hidTaxonomyIds.val();
                }
                else {
                    atagTextPlus = atagText + "&Calendar ID=" + hdnCalendarIds.val();
                }

                headerSpan.find('a').attr('href', atagTextPlus);

            }
            var days = new String(hidEventsDates.val());
            var daysArr = days.split(',');
            for (i = 0; i < daysArr.length; i++) {
                var day = daysArr[i];
                if (day.length > 0) {
                    var dayLink = container.find("tr > td > a:econtains(" + day + ")");
                    dayLink.css('color', 'Black');
                    dayLink.css('font-weight', 'bold');
                        dayLink.css('font-size', '110%');
                }
            }
        }
    });
}

$.expr[":"].econtains = function(obj, index, meta, stack){
return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
}

