(function($) {
    $.fn.dateselect = function(options) {
        var settings = {
            'fieldnameDay': 'day',
            'fieldnameMonth': 'month',
            'fieldnameYear': 'year',
            'classDaySelect': 'et_day',
            'classMonthSelect': 'et_month',
            'classYearSelect': 'et_year',
            'countYears': 100,
            'futureDates': false,
            'defaultDay': '',
            'defaultMonth': '',
            'defaultYear': ''
        };
        
        return this.each(function() {
            var today = new Date();
            var actYear = today.getFullYear();

            if (options) {
                $.extend(settings, options);
            }

            // Auswahl des Tages
            var daySelect = $('<select />')
                .attr('name', settings.fieldnameDay)
                .attr('id', settings.fieldnameDay)
                .addClass(settings.classDaySelect)
                .append('<option />');

            for (var day = 1; day <= 31; day++)
            {
                var option = $('<option />').attr('value', day).text(day);

                if (day == settings.defaultDay) $(option).attr('selected', 'selected');

                $(daySelect).append($(option));
            }

            $(this).append($(daySelect));


            // Auswahl des Monats
            var monthSelect = $('<select />')
                .attr('name', settings.fieldnameMonth)
                .attr('id', settings.fieldnameMonth)
                .addClass(settings.classMonthSelect)
                .append('<option />');

            for (var month = 1; month <= 12; month++)
            {
                var option = $('<option />').attr('value', month).text(month);

                if (month == settings.defaultMonth) $(option).attr('selected', 'selected');

                $(monthSelect).append($(option));
            }

            $(this).append($(monthSelect));


            // Auswahl des Jahres
            var yearSelect = $('<select />')
                .attr('name', settings.fieldnameYear)
                .attr('id', settings.fieldnameYear)
                .addClass(settings.classYearSelect)
                .append('<option />');

            if (settings.futureDates)
            {
                for (var year = actYear; year <= (actYear + settings.countYears); year++)
                {
                    var option = $('<option />').val(year).text(year);

                    if (year == settings.defaultYear) $(option).attr('selected', 'selected');

                    $(yearSelect).append($(option));
                }
            }
            else
            {
                for (var year = actYear; year >= (actYear - settings.countYears); year--)
                {
                    var option = $('<option />').val(year).text(year);

                    if (year == settings.defaultYear) $(option).attr('selected', 'selected');

                    $(yearSelect).append($(option));
                }
            }

            $(this).append($(yearSelect));
        });
    };
})(jQuery);
