dw_scrollObj.stopScroll=function(wnId){
if(dw_scrollObjs[wnId])dw_scrollObjs[wnId].endScroll();
}
dw_scrollObj.doubleSpeed=function(wnId){
if(dw_scrollObjs[wnId])dw_scrollObjs[wnId].speed*=2;
}
dw_scrollObj.resetSpeed=function(wnId){
if(dw_scrollObjs[wnId])dw_scrollObjs[wnId].speed/=2;
}
dw_scrollObj.initScroll=function(wnId,deg,sp){
if(dw_scrollObjs[wnId]){
var cosine,sine;
if(typeof deg=="string"){
switch(deg){
case"up":deg=90;break;
case"down":deg=270;break;
case"left":deg=180;break;
case"right":deg=0;break;
default:
alert("Direction of scroll in mouseover scroll links should be 'up', 'down', 'left', 'right' or number: 0 to 360.");
}
}
deg=deg%360;
if(deg%90==0){
cosine=(deg==0)?-1:(deg==180)?1:0;
sine=(deg==90)?1:(deg==270)?-1:0;
}else{
var angle=deg*Math.PI/180;
cosine=-Math.cos(angle);sine=Math.sin(angle);
}
dw_scrollObjs[wnId].fx=cosine/(Math.abs(cosine)+Math.abs(sine));
dw_scrollObjs[wnId].fy=sine/(Math.abs(cosine)+Math.abs(sine));
dw_scrollObjs[wnId].endX=(deg==90||deg==270)?dw_scrollObjs[wnId].x:
(deg<90||deg>270)?-dw_scrollObjs[wnId].maxX:0;
dw_scrollObjs[wnId].endY=(deg==0||deg==180)?dw_scrollObjs[wnId].y:
(deg<180)?0:-dw_scrollObjs[wnId].maxY;
dw_scrollObjs[wnId].startScroll(sp);
}
}
dw_scrollObj.prototype.startScroll=function(speed){
if(!this.ready)return;if(this.timerId)clearInterval(this.timerId);
this.speed=speed||dw_scrollObj.speed;
this.lyr=document.getElementById(this.lyrId);
this.lastTime=(new Date()).getTime();
this.on_scroll_start();
this.timerId=setInterval(this.animString+".scroll()",10);
}
dw_scrollObj.prototype.scroll=function(){
var now=(new Date()).getTime();
var d=(now-this.lastTime)/1000*this.speed;
if(d>0){
var x=this.x+this.fx*d;var y=this.y+this.fy*d;
if(this.fx==0||this.fy==0){
if((this.fx==-1&&x>-this.maxX)||(this.fx==1&&x<0)||
(this.fy==-1&&y>-this.maxY)||(this.fy==1&&y<0)){
this.lastTime=now;
this.shiftTo(this.lyr,x,y);
this.on_scroll(x,y);
}else{
clearInterval(this.timerId);this.timerId=0;
this.shiftTo(this.lyr,this.endX,this.endY);
this.on_scroll_end(this.endX,this.endY);
}
}else{
if((this.fx<0&&x>=-this.maxX&&this.fy<0&&y>=-this.maxY)||
(this.fx>0&&x<=0&&this.fy>0&&y<=0)||
(this.fx<0&&x>=-this.maxX&&this.fy>0&&y<=0)||
(this.fx>0&&x<=0&&this.fy<0&&y>=-this.maxY)){
this.lastTime=now;
this.shiftTo(this.lyr,x,y);
this.on_scroll(x,y);
}else{
clearInterval(this.timerId);this.timerId=0;
this.on_scroll_end(this.x,this.y);
}
}
}
}
dw_scrollObj.prototype.endScroll=function(){
if(!this.ready)return;
if(this.timerId)clearInterval(this.timerId);
this.timerId=0;this.lyr=null;
}
dw_scrollObj.prototype.on_scroll=function(){}
dw_scrollObj.prototype.on_scroll_start=function(){}
dw_scrollObj.prototype.on_scroll_end=function(){}
