return true; return true; this.control.focus(); return this.getAttribute("incremental") == "true"; if (val) this.setAttribute("incremental", "true"); else this.removeAttribute("incremental"); return this.control.value; false return Components.interfaces.nsIAccessibleProvider.XFormsSliderRange; var value = this.control.value; return isNaN(value) ? "" : value; = this.start && value <= this.end; ]]> End is an error. if (!isNaN(aStart) && !isNaN(aEnd)) { if (aStart > aEnd) { this.delegate.reportError("rangeBeginEndError"); return false; } } if (isNaN(aStep)) { // Step is not specified and will depend on the values of start // and end (which also may not be specified). if (isNaN(aStart) && isNaN(aEnd)) { // None of the range attributes are specified! Show a default // slider with 20 steps. this.start = 0; this.end = 20; this.step = 1; } else if (!isNaN(aStart) && isNaN(aEnd)) { // Start is specified but End is not. Set end to start + 20 with // a default step of 1 to maintain our maximum range of 20 steps. this.start = aStart; this.end = this.start + 20; this.step = 1; } else if (isNaN(aStart) && !isNaN(aEnd)) { // End is specified but Start is not. Use a default step of 1 // and adjust start to maintain the maximum range of 20 steps. this.start = aEnd - 20; this.end = aEnd; this.step = 1; } else { // Both Start and End are specified. Calculate a step value // that will maintain our maximum range of 20 steps. this.start = aStart; this.end = aEnd; this.step = Math.round((aEnd - aStart) / 20); } } else { // Step is specified. Adjust start and end to maintain our // maximum range of 20 steps. if (isNaN(aStart) && isNaN(aEnd)) { // Neither Start nor End is specified. Calculate values for start // and end such that the slider has a maximum of 20 steps of size // aStep. this.start = 0; this.end = this.start + (aStep * 20); this.step = aStep; } else if (!isNaN(aStart) && isNaN(aEnd)) { // Begin is specified but End is not. Adjust end such that we // have 20 steps of size aStep between start and end. this.start = aStart; this.end = this.start + (aStep * 20); this.step = aStep; } else if (isNaN(aStart) && !isNaN(aEnd)) { // End is specified but Start is not. Adjust start such that we // have 20 steps of size aStep between start and end. this.start = aEnd - (aStep * 20); this.end = aEnd; this.step = aStep; } else { // Both Start and End are specified, but the specified Step // value may not be suitable for maintaining the maximum // range of 20 steps. if ((aEnd - aStart) / aStep > 20) { // Honor the specified start and end values, but adjust // the Step value. this.step = Math.round((aEnd - aStart) / 20); } else { this.step = aStep; } this.start = aStart; this.end = aEnd; } } return true; ]]>