Slider.isSupported=typeof document.createElement!="undefined"&&typeof document.documentElement!="undefined"&&typeof document.documentElement.offsetWidth=="number";
function Slider(_1,_2,_3){
if(!_1){
return;
}
this._orientation=_3||"horizontal";
this._range=new Range();
this._range.setExtent(0);
this._blockIncrement=10;
this._unitIncrement=1;
this._timer=new Timer(100);
if(Slider.isSupported&&_1){
this.document=_1.ownerDocument||_1.document;
this.element=_1;
this.element.slider=this;
this.element.unselectable="on";
this.element.className=this._orientation+" "+this.classNameTag+" "+this.element.className;
this.line=this.document.createElement("DIV");
this.line.className="line";
this.line.unselectable="on";
this.line.appendChild(this.document.createElement("DIV"));
this.element.appendChild(this.line);
this.handle=this.document.createElement("DIV");
this.handle.className="handle";
this.handle.unselectable="on";
this.handle.appendChild(this.document.createElement("DIV"));
this.handle.firstChild.appendChild(this.document.createTextNode(String.fromCharCode(160)));
this.element.appendChild(this.handle);
}
this.input=_2;
var _4=this;
this._range.onchange=function(){
_4.recalculate();
if(typeof _4.onchange=="function"){
_4.onchange();
}
};
if(Slider.isSupported&&_1){
this.element.onfocus=Slider.eventHandlers.onfocus;
this.element.onblur=Slider.eventHandlers.onblur;
this.element.onmousedown=Slider.eventHandlers.onmousedown;
this.element.onmouseover=Slider.eventHandlers.onmouseover;
this.element.onmouseout=Slider.eventHandlers.onmouseout;
this.element.onkeydown=Slider.eventHandlers.onkeydown;
this.element.onkeypress=Slider.eventHandlers.onkeypress;
this.element.onmousewheel=Slider.eventHandlers.onmousewheel;
this.handle.onselectstart=this.element.onselectstart=function(){
return false;
};
this._timer.ontimer=function(){
_4.ontimer();
};
window.setTimeout(function(){
_4.recalculate();
},1);
}else{
this.input.onchange=function(e){
_4.setValue(_4.input.value);
};
}
}
Slider.eventHandlers={getEvent:function(e,el){
if(!e){
if(el){
e=el.document.parentWindow.event;
}else{
e=window.event;
}
}
if(!e.srcElement){
var el=e.target;
while(el!=null&&el.nodeType!=1){
el=el.parentNode;
}
e.srcElement=el;
}
if(typeof e.offsetX=="undefined"){
e.offsetX=e.layerX;
e.offsetY=e.layerY;
}
return e;
},getDocument:function(e){
if(e.target){
return e.target.ownerDocument;
}
return e.srcElement.document;
},getSlider:function(e){
var el=e.target||e.srcElement;
while(el!=null&&el.slider==null){
el=el.parentNode;
}
if(el){
return el.slider;
}
return null;
},getLine:function(e){
var el=e.target||e.srcElement;
while(el!=null&&el.className!="line"){
el=el.parentNode;
}
return el;
},getHandle:function(e){
var el=e.target||e.srcElement;
var re=/handle/;
while(el!=null&&!re.test(el.className)){
el=el.parentNode;
}
return el;
},onfocus:function(e){
var s=this.slider;
s._focused=true;
s.handle.className="handle hover";
},onblur:function(e){
var s=this.slider;
s._focused=false;
s.handle.className="handle";
},onmouseover:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=this.slider;
if(e.srcElement==s.handle){
s.handle.className="handle hover";
}
},onmouseout:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=this.slider;
if(e.srcElement==s.handle&&!s._focused){
s.handle.className="handle";
}
},onmousedown:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=this.slider;
if(s.element.focus){
s.element.focus();
}
Slider._currentInstance=s;
var doc=s.document;
if(doc.addEventListener){
doc.addEventListener("mousemove",Slider.eventHandlers.onmousemove,true);
doc.addEventListener("mouseup",Slider.eventHandlers.onmouseup,true);
}else{
if(doc.attachEvent){
doc.attachEvent("onmousemove",Slider.eventHandlers.onmousemove);
doc.attachEvent("onmouseup",Slider.eventHandlers.onmouseup);
doc.attachEvent("onlosecapture",Slider.eventHandlers.onmouseup);
s.element.setCapture();
}
}
if(Slider.eventHandlers.getHandle(e)){
Slider._sliderDragData={screenX:e.screenX,screenY:e.screenY,dx:e.screenX-s.handle.offsetLeft,dy:e.screenY-s.handle.offsetTop,startValue:s.getValue(),slider:s};
}else{
var _1b=Slider.eventHandlers.getLine(e);
s._mouseX=e.offsetX+(_1b?s.line.offsetLeft:0);
s._mouseY=e.offsetY+(_1b?s.line.offsetTop:0);
s._increasing=null;
s.ontimer();
}
},onmousemove:function(e){
e=Slider.eventHandlers.getEvent(e,this);
if(Slider._sliderDragData){
var s=Slider._sliderDragData.slider;
var _1e=s.getMaximum()-s.getMinimum();
var _1f,pos,_21;
if(s._orientation=="horizontal"){
_1f=s.element.offsetWidth-s.handle.offsetWidth;
pos=e.screenX-Slider._sliderDragData.dx;
_21=Math.abs(e.screenY-Slider._sliderDragData.screenY)>100;
}else{
_1f=s.element.offsetHeight-s.handle.offsetHeight;
pos=s.element.offsetHeight-s.handle.offsetHeight-(e.screenY-Slider._sliderDragData.dy);
_21=Math.abs(e.screenX-Slider._sliderDragData.screenX)>100;
}
s.setValue(_21?Slider._sliderDragData.startValue:s.getMinimum()+_1e*pos/_1f);
return false;
}else{
var s=Slider._currentInstance;
if(s!=null){
var _22=Slider.eventHandlers.getLine(e);
s._mouseX=e.offsetX+(_22?s.line.offsetLeft:0);
s._mouseY=e.offsetY+(_22?s.line.offsetTop:0);
}
}
},onmouseup:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=Slider._currentInstance;
var doc=s.document;
if(doc.removeEventListener){
doc.removeEventListener("mousemove",Slider.eventHandlers.onmousemove,true);
doc.removeEventListener("mouseup",Slider.eventHandlers.onmouseup,true);
}else{
if(doc.detachEvent){
doc.detachEvent("onmousemove",Slider.eventHandlers.onmousemove);
doc.detachEvent("onmouseup",Slider.eventHandlers.onmouseup);
doc.detachEvent("onlosecapture",Slider.eventHandlers.onmouseup);
s.element.releaseCapture();
}
}
if(Slider._sliderDragData){
Slider._sliderDragData=null;
}else{
s._timer.stop();
s._increasing=null;
}
if(typeof s.onDragEnd=="function"){
s.onDragEnd();
}
Slider._currentInstance=null;
},onkeydown:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=this.slider;
var kc=e.keyCode;
switch(kc){
case 33:
s.setValue(s.getValue()+s.getBlockIncrement());
break;
case 34:
s.setValue(s.getValue()-s.getBlockIncrement());
break;
case 35:
s.setValue(s.getOrientation()=="horizontal"?s.getMaximum():s.getMinimum());
break;
case 36:
s.setValue(s.getOrientation()=="horizontal"?s.getMinimum():s.getMaximum());
break;
case 38:
case 39:
s.setValue(s.getValue()+s.getUnitIncrement());
break;
case 37:
case 40:
s.setValue(s.getValue()-s.getUnitIncrement());
break;
}
if(kc>=33&&kc<=40){
return false;
}
},onkeypress:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var kc=e.keyCode;
if(kc>=33&&kc<=40){
return false;
}
},onmousewheel:function(e){
e=Slider.eventHandlers.getEvent(e,this);
var s=this.slider;
if(s._focused){
s.setValue(s.getValue()+e.wheelDelta/120*s.getUnitIncrement());
return false;
}
}};
Slider.prototype.classNameTag="dynamic-slider-control",Slider.prototype.setValue=function(v){
this._range.setValue(v);
this.input.value=this.getValue();
};
Slider.prototype.getValue=function(){
return this._range.getValue();
};
Slider.prototype.setMinimum=function(v){
this._range.setMinimum(v);
this.input.value=this.getValue();
};
Slider.prototype.getMinimum=function(){
return this._range.getMinimum();
};
Slider.prototype.setMaximum=function(v){
this._range.setMaximum(v);
this.input.value=this.getValue();
};
Slider.prototype.getMaximum=function(){
return this._range.getMaximum();
};
Slider.prototype.setUnitIncrement=function(v){
this._unitIncrement=v;
};
Slider.prototype.getUnitIncrement=function(){
return this._unitIncrement;
};
Slider.prototype.setBlockIncrement=function(v){
this._blockIncrement=v;
};
Slider.prototype.getBlockIncrement=function(){
return this._blockIncrement;
};
Slider.prototype.getOrientation=function(){
return this._orientation;
};
Slider.prototype.setOrientation=function(_32){
if(_32!=this._orientation){
if(Slider.isSupported&&this.element){
this.element.className=this.element.className.replace(this._orientation,_32);
}
this._orientation=_32;
this.recalculate();
}
};
Slider.prototype.recalculate=function(){
if(!Slider.isSupported||!this.element){
return;
}
var w=this.element.offsetWidth;
var h=this.element.offsetHeight;
var hw=this.handle.offsetWidth;
var hh=this.handle.offsetHeight;
var lw=this.line.offsetWidth;
var lh=this.line.offsetHeight;
if(this._orientation=="horizontal"){
this.handle.style.left=(w-hw)*(this.getValue()-this.getMinimum())/(this.getMaximum()-this.getMinimum())+"px";
this.handle.style.top=(h-hh)/2+"px";
this.line.style.top=(h-lh)/2+"px";
this.line.style.left=hw/2+"px";
this.line.style.width=Math.max(0,w-hw-2)+"px";
this.line.firstChild.style.width=Math.max(0,w-hw-4)+"px";
}else{
this.handle.style.left=(w-hw)/2+"px";
this.handle.style.top=h-hh-(h-hh)*(this.getValue()-this.getMinimum())/(this.getMaximum()-this.getMinimum())+"px";
this.line.style.left=(w-lw)/2+"px";
this.line.style.top=hh/2+"px";
this.line.style.height=Math.max(0,h-hh-2)+"px";
this.line.firstChild.style.height=Math.max(0,h-hh-4)+"px";
}
};
Slider.prototype.ontimer=function(){
var hw=this.handle.offsetWidth;
var hh=this.handle.offsetHeight;
var hl=this.handle.offsetLeft;
var ht=this.handle.offsetTop;
if(this._orientation=="horizontal"){
if(this._mouseX>hl+hw&&(this._increasing==null||this._increasing)){
this.setValue(this.getValue()+this.getBlockIncrement());
this._increasing=true;
}else{
if(this._mouseX<hl&&(this._increasing==null||!this._increasing)){
this.setValue(this.getValue()-this.getBlockIncrement());
this._increasing=false;
}
}
}else{
if(this._mouseY>ht+hh&&(this._increasing==null||!this._increasing)){
this.setValue(this.getValue()-this.getBlockIncrement());
this._increasing=false;
}else{
if(this._mouseY<ht&&(this._increasing==null||this._increasing)){
this.setValue(this.getValue()+this.getBlockIncrement());
this._increasing=true;
}
}
}
this._timer.start();
};
