return { set readonly() { // XXX: bug 343523 }, get start() { return this.slider.min; }, set start(aValue) { this.slider.min = aValue; }, get step() { return this.slider.step; }, set step(aValue) { this.slider.step = aValue; }, get end() { return this.slider.max; }, set end(aValue) { this.slider.max = aValue; }, set: function set(aMin, aMax, aStep, aValue) { this.slider.set(aMin, aMax, aStep, aValue); }, slider: this.ownerDocument. getAnonymousElementByAttribute(this, "anonid", "slider"), }; // Call widgetAttached() after timeout to let slider widget to be // loaded. this.ownerDocument.defaultView.setTimeout( function(aDelegate) { aDelegate.widgetAttached(); }, 0, this.delegate); // The change event is generated by the slider widget defined in // "widgets-xhtml.xml". var changeHandler = { range: this, handleEvent: function(aEvent) { this.range.updateInstanceData(true); } }; this.control.addEventListener("ValueChange", changeHandler, false); this.updateInstanceData(false);