/*!----------------------------------------------------------------------------\
|                                Range Class                                  |
|-----------------------------------------------------------------------------|
|                         Created by Erik Arvidsson                           |
|                  (http://webfx.eae.net/contact.html#erik)                   |
|                      For WebFX (http://webfx.eae.net/)                      |
|-----------------------------------------------------------------------------|
| Used to  model the data  used  when working  with  sliders,  scrollbars and |
| progress bars.  Based  on  the  ideas of  the javax.swing.BoundedRangeModel |
| interface  defined  by  Sun  for  Java;   http://java.sun.com/products/jfc/ |
| swingdoc-api-1.0.3/com/sun/java/swing/BoundedRangeModel.html                |
|-----------------------------------------------------------------------------|
|                Copyright (c) 2002, 2005, 2006 Erik Arvidsson                |
|-----------------------------------------------------------------------------|
| Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| use this file except in compliance with the License.  You may obtain a copy |
| of the License at http://www.apache.org/licenses/LICENSE-2.0                |
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| Unless  required  by  applicable law or  agreed  to  in  writing,  software |
| distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |
| WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |
| License  for the  specific language  governing permissions  and limitations |
| under the License.                                                          |
|-----------------------------------------------------------------------------|
| 2002-10-14 | Original version released                                      |
| 2005-10-27 | Use Math.round instead of Math.floor                           |
| 2006-05-28 | Changed license to Apache Software License 2.0.                |
|-----------------------------------------------------------------------------|
| Created 2002-10-14 | All changes are in the log above. | Updated 2006-05-28 |
\----------------------------------------------------------------------------*/
;function Range(){this._value=0;this._minimum=0;this._maximum=100;this._extent=0;this._isChanging=false}Range.prototype.setValue=function(value){value=Math.round(parseFloat(value));if(isNaN(value)){return}if(this._value!=value){if(value+this._extent>this._maximum){this._value=this._maximum-this._extent}else{if(value<this._minimum){this._value=this._minimum}else{this._value=value}}if(!this._isChanging&&typeof this.onchange=="function"){this.onchange()}}};Range.prototype.getValue=function(){return this._value};Range.prototype.setExtent=function(extent){if(this._extent!=extent){if(extent<0){this._extent=0}else{if(this._value+extent>this._maximum){this._extent=this._maximum-this._value}else{this._extent=extent}}if(!this._isChanging&&typeof this.onchange=="function"){this.onchange()}}};Range.prototype.getExtent=function(){return this._extent};Range.prototype.setMinimum=function(minimum){if(this._minimum!=minimum){var oldIsChanging=this._isChanging;this._isChanging=true;this._minimum=minimum;if(minimum>this._value){this.setValue(minimum)}if(minimum>this._maximum){this._extent=0;this.setMaximum(minimum);this.setValue(minimum)}if(minimum+this._extent>this._maximum){this._extent=this._maximum-this._minimum}this._isChanging=oldIsChanging;if(!this._isChanging&&typeof this.onchange=="function"){this.onchange()}}};Range.prototype.getMinimum=function(){return this._minimum};Range.prototype.setMaximum=function(maximum){if(this._maximum!=maximum){var oldIsChanging=this._isChanging;this._isChanging=true;this._maximum=maximum;if(maximum<this._value){this.setValue(maximum-this._extent)}if(maximum<this._minimum){this._extent=0;this.setMinimum(maximum);this.setValue(this._maximum)}if(maximum<this._minimum+this._extent){this._extent=this._maximum-this._minimum}if(maximum<this._value+this._extent){this._extent=this._maximum-this._value}this._isChanging=oldIsChanging;if(!this._isChanging&&typeof this.onchange=="function"){this.onchange()}}};Range.prototype.getMaximum=function(){return this._maximum};