r3500 committed - extracting widget factory into jquery.ui.widget.js

r3500 committed - extracting widget factory into jquery.ui.widget.js

Revision: 3500
Author: joern.zaefferer
Date: Wed Dec 16 14:20:18 2009
Log: extracting widget factory into jquery.ui.widget.js
http://code.google.com/p/jquery-ui/source/detail?r=3500
Added:
/trunk/ui/jquery.ui.widget.js
Modified:
/trunk/demos/accordion/collapsible.html
/trunk/demos/accordion/custom-icons.html
/trunk/demos/accordion/default.html
/trunk/demos/accordion/fillspace.html
/trunk/demos/accordion/mouseover.html
/trunk/demos/accordion/no-auto-height.html
/trunk/demos/accordion/sortable.html
/trunk/demos/datepicker/alt-field.html
/trunk/demos/datepicker/animation.html
/trunk/demos/datepicker/buttonbar.html
/trunk/demos/datepicker/date-formats.html
/trunk/demos/datepicker/default.html
/trunk/demos/datepicker/dropdown-month-year.html
/trunk/demos/datepicker/event-search.html
/trunk/demos/datepicker/icon-trigger.html
/trunk/demos/datepicker/inline.html
/trunk/demos/datepicker/localization.html
/trunk/demos/datepicker/min-max.html
/trunk/demos/datepicker/multiple-calendars.html
/trunk/demos/datepicker/other-months.html
/trunk/demos/datepicker/show-week.html
/trunk/demos/dialog/animated.html
/trunk/demos/dialog/default.html
/trunk/demos/dialog/modal-confirmation.html
/trunk/demos/dialog/modal-form.html
/trunk/demos/dialog/modal-message.html
/trunk/demos/dialog/modal.html
/trunk/demos/draggable/constrain-movement.html
/trunk/demos/draggable/cursor-style.html
/trunk/demos/draggable/default.html
/trunk/demos/draggable/delay-start.html
/trunk/demos/draggable/events.html
/trunk/demos/draggable/handle.html
/trunk/demos/draggable/revert.html
/trunk/demos/draggable/scroll.html
/trunk/demos/draggable/snap-to.html
/trunk/demos/draggable/sortable.html
/trunk/demos/draggable/visual-feedback.html
/trunk/demos/droppable/accepted-elements.html
/trunk/demos/droppable/default.html
/trunk/demos/droppable/photo-manager.html
/trunk/demos/droppable/propagation.html
/trunk/demos/droppable/revert.html
/trunk/demos/droppable/visual-feedback.html
/trunk/demos/index.html
/trunk/demos/position/cycler.html
/trunk/demos/position/default.html
/trunk/demos/progressbar/animated.html
/trunk/demos/progressbar/default.html
/trunk/demos/progressbar/resize.html
/trunk/demos/resizable/animate.html
/trunk/demos/resizable/aspect-ratio.html
/trunk/demos/resizable/constrain-area.html
/trunk/demos/resizable/default.html
/trunk/demos/resizable/delay-start.html
/trunk/demos/resizable/helper.html
/trunk/demos/resizable/max-min.html
/trunk/demos/resizable/snap-to-grid.html
/trunk/demos/resizable/synchronous-resize.html
/trunk/demos/resizable/textarea.html
/trunk/demos/resizable/visual-feedback.html
/trunk/demos/selectable/default.html
/trunk/demos/selectable/display-grid.html
/trunk/demos/selectable/serialize.html
/trunk/demos/slider/colorpicker.html
/trunk/demos/slider/default.html
/trunk/demos/slider/hotelrooms.html
/trunk/demos/slider/multiple-vertical.html
/trunk/demos/slider/range-vertical.html
/trunk/demos/slider/range.html
/trunk/demos/slider/rangemax.html
/trunk/demos/slider/rangemin.html
/trunk/demos/slider/side-scroll.html
/trunk/demos/slider/slider-vertical.html
/trunk/demos/slider/steps.html
/trunk/demos/slider/tabs.html
/trunk/demos/sortable/connect-lists-through-tabs.html
/trunk/demos/sortable/connect-lists.html
/trunk/demos/sortable/default.html
/trunk/demos/sortable/delay-start.html
/trunk/demos/sortable/display-grid.html
/trunk/demos/sortable/empty-lists.html
/trunk/demos/sortable/items.html
/trunk/demos/sortable/placeholder.html
/trunk/demos/sortable/portlets.html
/trunk/demos/tabs/ajax.html
/trunk/demos/tabs/bottom.html
/trunk/demos/tabs/collapsible.html
/trunk/demos/tabs/default.html
/trunk/demos/tabs/manipulation.html
/trunk/demos/tabs/mouseover.html
/trunk/demos/tabs/sortable.html
/trunk/demos/tabs/vertical.html
/trunk/tests/unit/accordion/accordion.html
/trunk/tests/unit/all.html
/trunk/tests/unit/all_2.html
/trunk/tests/unit/core/core.html
/trunk/tests/unit/datepicker/datepicker.html
/trunk/tests/unit/defaults.html
/trunk/tests/unit/dialog/dialog.html
/trunk/tests/unit/draggable/draggable.html
/trunk/tests/unit/droppable/droppable.html
/trunk/tests/unit/index.html
/trunk/tests/unit/progressbar/progressbar.html
/trunk/tests/unit/resizable/resizable.html
/trunk/tests/unit/selectable/selectable.html
/trunk/tests/unit/slider/slider.html
/trunk/tests/unit/sortable/sortable.html
/trunk/tests/unit/tabs/tabs.html
/trunk/tests/visual/accordion/accordion.html
/trunk/tests/visual/accordion/accordion_dl.html
/trunk/tests/visual/accordion/accordion_method_destroy.html
/trunk/tests/visual/accordion/accordion_method_disable.html
/trunk/tests/visual/accordion/accordion_option_animated_bounceslide.html
/trunk/tests/visual/accordion/accordion_option_animated_easeslide.html
/trunk/tests/visual/accordion/accordion_option_animated_false.html
/trunk/tests/visual/accordion/accordion_option_animated_slide.html
/trunk/tests/visual/accordion/accordion_option_animated_true.html
/trunk/tests/visual/accordion/accordion_option_autoHeight_false.html
/trunk/tests/visual/accordion/accordion_option_autoHeight_true.html
/trunk/tests/visual/accordion/accordion_option_fillSpace_true.html
/trunk/tests/visual/accordion/accordion_option_navigation_true.html
/trunk/tests/visual/accordion/accordion_ticket_4322.html
/trunk/tests/visual/accordion/accordion_ticket_4331.html
/trunk/tests/visual/accordion/accordion_ticket_4444.html
/trunk/tests/visual/accordion/accordion_ul.html
/trunk/tests/visual/accordion/default.html
/trunk/tests/visual/all.html
/trunk/tests/visual/compound/accordion_tabs.html
/trunk/tests/visual/compound/datepicker_dialog.html
/trunk/tests/visual/compound/draggable_accordion.html
/trunk/tests/visual/compound/tabs_tabs.html
/trunk/tests/visual/datepicker/datepicker.html
/trunk/tests/visual/datepicker/datepicker_ticket_4240.html
/trunk/tests/visual/datepicker/default.html
/trunk/tests/visual/datepicker/multimonth.html
/trunk/tests/visual/datepicker/viewport.html
/trunk/tests/visual/dialog/default.html
/trunk/tests/visual/dialog/dialog.html
/trunk/tests/visual/dialog/dialog_on_page_with_large_dom.html
/trunk/tests/visual/dialog/dialog_on_page_with_scrollbars.html
/trunk/tests/visual/dialog/dialog_option_buttons_OK_Cancel.html
/trunk/tests/visual/dialog/dialog_option_closeOnEscape_false.html
/trunk/tests/visual/dialog/dialog_option_closeOnEscape_true.html
/trunk/tests/visual/dialog/dialog_option_modal_false.html
/trunk/tests/visual/dialog/dialog_option_modal_true.html
/trunk/tests/visual/dialog/dialog_ticket_4826.html
/trunk/tests/visual/draggable/default.html
/trunk/tests/visual/draggable/draggable.html
/trunk/tests/visual/draggable/draggable.scroll.html
/trunk/tests/visual/draggable/draggable_option_containment_array.html
/trunk/tests/visual/draggable/draggable_option_cursorAt_object.html
/trunk/tests/visual/draggable/draggable_option_handle_selector.html
/trunk/tests/visual/draggable/draggable_option_iframeFix_false.html
/trunk/tests/visual/draggable/draggable_option_iframeFix_selector.html
/trunk/tests/visual/draggable/draggable_option_iframeFix_true.html
/trunk/tests/visual/droppable/default.html
/trunk/tests/visual/droppable/droppable.html
/trunk/tests/visual/droppable/droppable_option_accept_default.html
/trunk/tests/visual/droppable/droppable_option_accept_function.html
/trunk/tests/visual/droppable/droppable_option_accept_selector.html
/trunk/tests/visual/droppable/droppable_ticket_4087.html
/trunk/tests/visual/droppable/droppable_ticket_4088.html
/trunk/tests/visual/progressbar/default.html
/trunk/tests/visual/progressbar/progressbar.html
/trunk/tests/visual/resizable/default.html
/trunk/tests/visual/resizable/resizable.html
/trunk/tests/visual/resizable/resizable_option_aspectRatio_0.5.html
/trunk/tests/visual/resizable/resizable_option_aspectRatio_1.0.html
/trunk/tests/visual/resizable/resizable_option_aspectRatio_1.5.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_maxHeight_150.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_maxWidth_150.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_minHeight_50.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_minWidth_50.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_w100xh100.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_w100xh50.html

/trunk/tests/visual/resizable/resizable_option_aspectRatio_preserve_w50xh100.html
/trunk/tests/visual/resizable/resizable_ticket_3053.html
/trunk/tests/visual/resizable/resizable_ticket_4199.html
/trunk/tests/visual/resizable/resizable_ticket_4217.html
/trunk/tests/visual/selectable/default.html
/trunk/tests/visual/selectable/selectable.html
/trunk/tests/visual/selectable/selectable_ticket_4341.html
/trunk/tests/visual/slider/default.html
/trunk/tests/visual/slider/default_vertical.html
/trunk/tests/visual/slider/slider.html
/trunk/tests/visual/slider/slider_horizontal.html
/trunk/tests/visual/slider/slider_horizontal_range.html
/trunk/tests/visual/slider/slider_horizontal_range_max.html
/trunk/tests/visual/slider/slider_horizontal_range_min.html
/trunk/tests/visual/slider/slider_in_container_with_scrollbars.html
/trunk/tests/visual/slider/slider_method_destroy.html
/trunk/tests/visual/slider/slider_method_disable.html
/trunk/tests/visual/slider/slider_option_animate_false.html
/trunk/tests/visual/slider/slider_option_animate_true.html
/trunk/tests/visual/slider/slider_option_max_3.html
/trunk/tests/visual/slider/slider_option_max_30.html
/trunk/tests/visual/slider/slider_option_max_300.html
/trunk/tests/visual/slider/slider_option_min_-3.html
/trunk/tests/visual/slider/slider_option_min_-30.html
/trunk/tests/visual/slider/slider_option_min_-300.html
/trunk/tests/visual/slider/slider_option_orientation_horizontal.html
/trunk/tests/visual/slider/slider_option_orientation_vertical.html
/trunk/tests/visual/slider/slider_option_range_false.html
/trunk/tests/visual/slider/slider_option_range_max.html
/trunk/tests/visual/slider/slider_option_range_min.html
/trunk/tests/visual/slider/slider_option_range_true.html
/trunk/tests/visual/slider/slider_option_step_25.html
/trunk/tests/visual/slider/slider_option_step_5.html
/trunk/tests/visual/slider/slider_option_value_3.html
/trunk/tests/visual/slider/slider_option_value_30.html
/trunk/tests/visual/slider/slider_option_values_25_50_75.html
/trunk/tests/visual/slider/slider_option_values_25_75.html
/trunk/tests/visual/slider/slider_option_values_50.html
/trunk/tests/visual/slider/slider_ticket_3736.html
/trunk/tests/visual/slider/slider_ticket_3762.html
/trunk/tests/visual/slider/slider_ticket_4385.html
/trunk/tests/visual/slider/slider_ticket_4467.html
/trunk/tests/visual/slider/slider_vertical.html
/trunk/tests/visual/slider/slider_vertical_range.html
/trunk/tests/visual/slider/slider_vertical_range_max.html
/trunk/tests/visual/slider/slider_vertical_range_min.html
/trunk/tests/visual/sortable/default.html
/trunk/tests/visual/sortable/sortable.html
/trunk/tests/visual/sortable/sortable_massive_scale.html
/trunk/tests/visual/sortable/sortable_option_revert_false.html
/trunk/tests/visual/sortable/sortable_option_revert_true.html
/trunk/tests/visual/sortable/sortable_ticket_4551.html
/trunk/tests/visual/tabs/default.html
/trunk/tests/visual/tabs/tabs.html
/trunk/ui/jquery.ui.core.js
=======================================
--- /dev/null
+++ /trunk/ui/jquery.ui.widget.js    Wed Dec 16 14:20:18 2009
@@ -0,0 +1,189 @@
+/*!
+ * jQuery UI @VERSION
+ *
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * http://docs.jquery.com/UI
+ */
+(function($) {
+
+var _remove = $.fn.remove;
+
+$.fn.remove = function() {
+    // Safari has a native remove event which actually removes DOM elements,
+    // so we have to use triggerHandler instead of trigger (#3037).
+    $("*", this).add(this).each(function() {
+        $(this).triggerHandler("remove");
+    });
+    return _remove.apply(this, arguments );
+};
+
+    // $.widget is a factory to create jQuery plugins
+// taking some boilerplate code out of the plugin code
+$.widget = function(name, prototype) {
+    var namespace = name.split(".")[0],
+        fullName;
+    name = name.split(".")[1];
+    fullName = namespace + '-' + name;
+
+    // create selector for plugin
+    $.expr[':'][fullName] = function(elem) {
+        return !!$.data(elem, name);
+    };
+
+    // create plugin method
+    $.fn[name] = function(options) {
+        var isMethodCall = (typeof options == 'string'),
+            args = Array.prototype.slice.call(arguments, 1),
+            returnValue = this;
+
+        // allow multiple hashes to be passed on init
+        options = !isMethodCall && args.length
+            ? $.extend.apply(null, [true, options].concat(args))
+            : options;
+
+        // prevent calls to internal methods
+        if (isMethodCall && options.substring(0, 1) == '_') {
+            return returnValue;
+        }
+
+        (isMethodCall
+            ? this.each(function() {
+                var instance = $.data(this, name),
+                    methodValue = (instance && $.isFunction(instance[options])
+                        ? instance[options].apply(instance, args)
+                        : instance);
+                if (methodValue !== instance && methodValue !== undefined) {
+                    returnValue = methodValue;
+                    return false;
+                }
+            })
+            : this.each(function() {
+                ($.data(this, name) ||
+                    $.data(this, name, new $[namespace][name](this, options))._init());
+            }));
+
+        return returnValue;
+    };
+
+    // create widget constructor
+    $[namespace] = $[namespace] || {};
+    $[namespace][name] = function(element, options) {
+        var self = this;
+
+        this.namespace = namespace;
+        this.widgetName = name;
+        this.widgetEventPrefix = $[namespace][name].eventPrefix || name;
+        this.widgetBaseClass = fullName;
+
+        this.options = $.extend(true, {},
+            $.widget.defaults,
+            $[namespace][name].defaults,
+            $.metadata && $.metadata.get(element)[name],
+            options);
+
+        this.element = $(element)
+            .bind('setData.' + name, function(event, key, value) {
+                if (event.target == element) {
+                    return self._setData(key, value);
+                }
+            })
+            .bind('getData.' + name, function(event, key) {
+                if (event.target == element) {
+                    return self._getData(key);
+                }
+            })
+            .bind('remove.' + name, function() {
+                return self.destroy();
+            });
+    };
+
+    // add widget prototype
+    $[namespace][name].prototype = $.extend({}, $.widget.prototype,
prototype);
+};
+
+$.widget.prototype = {
+    _init: function() {},
+    destroy: function() {
+        this.element.removeData(this.widgetName)
+            .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace
+ '-state-disabled')
+            .removeAttr('aria-disabled');
+
+        return this;
+    },
+
+    option: function(key, value) {
+        var options = key,
+            self = this;
+
+        if (typeof key == "string") {
+            if (value === undefined) {
+                return this._getData(key);
+            }
+            options = {};
+            options[key] = value;
+        }
+
+        $.each(options, function(key, value) {
+            self._setData(key, value);
+        });
+
+        return self;
+    },
+    _getData: function(key) {
+        return this.options[key];
+    },
+    _setData: function(key, value) {
+        this.options[key] = value;
+
+        if (key == 'disabled') {
+            this.element
+                [value ? 'addClass' : 'removeClass'](
+                    this.widgetBaseClass + '-disabled' + ' ' +
+                    this.namespace + '-state-disabled')
+                .attr("aria-disabled", value);
+        }
+    },
+
+    enable: function() {
+        this._setData('disabled', false);
+        return this;
+    },
+    disable: function() {
+        this._setData('disabled', true);
+        return this;
+    },
+
+    _trigger: function(type, event, data) {
+        var callback = this.options[type];
+
+        event = $.Event(event);
+        event.type = (type == this.widgetEventPrefix
+                ? type : this.widgetEventPrefix + type).toLowerCase();
+        data = data || {};
+
+        // copy original event properties over to the new event
+        // this would happen if we could call $.event.fix instead of $.Event
+        // but we don't have a way to force an event to be fixed multiple times
+        if (event.originalEvent) {
+            for (var i = $.event.props.length, prop; i;) {
+                prop = $.event.props[--i];
+                event[prop] = event.originalEvent[prop];
+            }
+        }
+
+        this.element.trigger(event, data);
+
+        return !($.isFunction(callback) && callback.call(this.element[0], event,
data) === false
+            || event.isDefaultPrevented());
+    }
+};
+
+$.widget.defaults = {
+    disabled: false
+};
+
+
+})(jQuery);
=======================================
--- /trunk/demos/accordion/collapsible.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/collapsible.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/accordion/custom-icons.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/custom-icons.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/accordion/default.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/default.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/accordion/fillspace.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/fillspace.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.resizable.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
=======================================
--- /trunk/demos/accordion/mouseover.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/mouseover.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/accordion/no-auto-height.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/no-auto-height.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/accordion/sortable.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/accordion/sortable.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.sortable.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.accordion.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
=======================================
--- /trunk/demos/datepicker/alt-field.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/datepicker/alt-field.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.datepicker.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/datepicker/animation.html    Mon Dec 7 16:08:44 2009
+++ /trunk/demos/datepicker/animation.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.effects.core.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.effects.blind.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.effects.bounce.js"></script>
=======================================
--- /trunk/demos/datepicker/buttonbar.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/datepicker/buttonbar.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.datepicker.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/datepicker/date-formats.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/datepicker/date-formats.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.datepicker.js"></script>
    <link type="text/css" href="../demos.css" rel="stylesheet" />
    <script type="text/javascript">
=======================================
--- /trunk/demos/datepicker/default.html    Thu Sep 17 03:39:12 2009
+++ /trunk/demos/datepicker/default.html    Wed Dec 16 14:20:18 2009
@@ -5,6 +5,7 @@
    <link type="text/css" href="../../themes/base/ui.all.css"
rel="stylesheet" />
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+    <script type="text/javascript"
src="../../ui/jquery.ui.widget.js"></script>
    <script type="text/javascript"
src="../../ui/jquery.ui.datepicker.js"></script>
    <li