var dw_slidebar={
obj: null,
slideDur: 500,
init: function(bar,track,axis,x,y){
x=x || 0;y=y || 0
bar.style.left=x+"px";bar.style.top=y+"px"
bar.axis=axis;track.bar=bar
if(axis=="h"){
bar.trkWd=track.offsetWidth
bar.maxX=bar.trkWd-bar.offsetWidth-x
bar.minX=x;bar.maxY=y;bar.minY=y
}else{
bar.trkHt=track.offsetHeight
bar.maxY=bar.trkHt-bar.offsetHeight-y
bar.maxX=x;bar.minX=x;bar.minY=y}
bar.on_drag_start=bar.on_drag=bar.on_drag_end=
bar.on_slide_start=bar.on_slide=bar.on_slide_end=function(){}
bar.onmousedown=this.startDrag;track.onmousedown=this.startSlide
},
startSlide: function(e){
if(dw_slidebar.aniTimer)clearInterval(dw_slidebar.aniTimer)
e=e? e: window.event
var bar=dw_slidebar.obj=this.bar
e.offX=(typeof e.layerX !="undefined")? e.layerX: e.offsetX
e.offY=(typeof e.layerY !="undefined")? e.layerY: e.offsetY
bar.startX=parseInt(bar.style.left);bar.startY=parseInt(bar.style.top)
if(bar.axis=="v"){
bar.destX=bar.startX
bar.destY=(e.offY<bar.startY)? e.offY: e.offY-bar.offsetHeight
bar.destY=Math.min(Math.max(bar.destY,bar.minY),bar.maxY)
}else{
bar.destX=(e.offX<bar.startX)? e.offX: e.offX-bar.offsetWidth
bar.destX=Math.min(Math.max(bar.destX,bar.minX),bar.maxX)
bar.destY=bar.startY}
bar.distX=bar.destX-bar.startX;bar.distY=bar.destY-bar.startY
dw_slidebar.per=Math.PI/(2*dw_slidebar.slideDur)
dw_slidebar.slideStart=(new Date()).getTime()
bar.on_slide_start(bar.startX,bar.startY)
dw_slidebar.aniTimer=setInterval("dw_slidebar.doSlide()",10)
},
doSlide: function(){
if(!dw_slidebar.obj){clearInterval(dw_slidebar.aniTimer);return;}
var bar=dw_slidebar.obj
var elapsed=(new Date()).getTime()-this.slideStart
if(elapsed<this.slideDur){
var x=bar.startX+bar.distX*Math.sin(this.per*elapsed)
var y=bar.startY+bar.distY*Math.sin(this.per*elapsed)
bar.style.left=x+"px";bar.style.top=y+"px"
bar.on_slide(x,y)
}else{
clearInterval(this.aniTimer)
bar.style.left=bar.destX+"px";bar.style.top=bar.destY+"px"
bar.on_slide_end(bar.destX,bar.destY)
this.obj=null}
},
startDrag: function(e){
e=dw_event.DOMit(e)
if(dw_slidebar.aniTimer)clearInterval(dw_slidebar.aniTimer)
var bar=dw_slidebar.obj=this
bar.downX=e.clientX;bar.downY=e.clientY
bar.startX=parseInt(bar.style.left)
bar.startY=parseInt(bar.style.top)
bar.on_drag_start(bar.startX,bar.startY)
dw_event.add(document,"mousemove",dw_slidebar.doDrag,true)
dw_event.add(document,"mouseup",dw_slidebar.endDrag,true)
e.stopPropagation()
},
doDrag: function(e){
e=e? e: window.event
if(!dw_slidebar.obj)return
var bar=dw_slidebar.obj
var nx=bar.startX+e.clientX-bar.downX
var ny=bar.startY+e.clientY-bar.downY
nx=Math.min(Math.max(bar.minX,nx),bar.maxX)
ny=Math.min(Math.max(bar.minY,ny),bar.maxY)
bar.style.left=nx+"px";bar.style.top=ny+"px"
bar.on_drag(nx,ny)
return false
},
endDrag: function(){
dw_event.remove(document,"mousemove",dw_slidebar.doDrag,true)
dw_event.remove(document,"mouseup",dw_slidebar.endDrag,true)
if(!dw_slidebar.obj)return
dw_slidebar.obj.on_drag_end(parseInt(dw_slidebar.obj.style.left),parseInt(dw_slidebar.obj.style.top))
dw_slidebar.obj=null}}
