﻿(function($) {

    $.widget("ui.dateEntry", {
        _init: function() {
            var o = this.options;
            var widget = this;
            var element = $(this.element);
            var insert = undefined == o.insertAfter ? this.element : o.insertAfter;
            var calendarDiv = $("<div></div>").hide().insertAfter(insert);
            if (o.calendarAbsolutePosition)
                calendarDiv.addClass("ui-date-entry-absolute");

            element.inputEntry({
                leftIconDisplayed: true,
                leftIconType: "check",
                rightIconType: "calendar",

                rightIconClick: function() {
                    calendarDiv.toggle();
                    widget._trigger("rightIconClick", null, {});
                }
            });

            element.find("input").attr("maxlength", 10);

            calendarDiv.datepicker({
                dateFormat: "yy-mm-dd",
                onSelect: function(aDateText) {
                    element.inputEntry("value", aDateText);
                    calendarDiv.hide();
                }
            });

            if (o.isValidating) {
                element.validation({
                    checkDate: true,
                    group: o.validationGroup,
                    onValid: function(aEvent, aNewValue) {
                        calendarDiv.datepicker("setDate", Date.parseInvariant(aNewValue, Resources_Global_CodeBehindDateFormat));
                    }
                });
            }

            this._CalendarDiv = calendarDiv;

            if (o.date)
                widget.date(o.date);
        },

        date: function(aNewDate) {
            if (undefined != aNewDate) {
                var dateString = aNewDate.format(Resources_Global_CodeBehindDateFormat);

                this._CalendarDiv.datepicker("setDate", aNewDate)
                this.element.inputEntry("value", dateString);
            }

            return this._CalendarDiv.datepicker("getDate");
        },

        hideCalendar: function() {
            this._CalendarDiv.hide();
        },

        destroy: function() {
        }
    });

    $.extend($.ui.dateEntry, {
        getter: "date",
        version: "0.1.0",
        defaults: {
            calendarAbsolutePosition: false,
            validationGroup: null,
            isValidating: true
        }
    });

})(jQuery);

