dw_scrollObjs={}; dw_scrollObj.speed=100; function dw_scrollObj(wnId,lyrId,cntId){this.id=wnId;dw_scrollObjs[this.id]=this;this.animString="dw_scrollObjs."+this.id;this.load(lyrId,cntId);};dw_scrollObj.loadLayer=function(wnId,id,cntId){ if(dw_scrollObjs[wnId])dw_scrollObjs[wnId].load(id,cntId);};dw_scrollObj.prototype.load=function(lyrId,cntId){if(!document.getElementById)return;var wndo,lyr;if(this.lyrId){lyr=document.getElementById(this.lyrId);lyr.style.visibility="hidden"}lyr=document.getElementById(lyrId);wndo=document.getElementById(this.id);lyr.style.top=this.y=0;lyr.style.left=this.x=0;this.maxY=(lyr.offsetHeight-wndo.offsetHeight>0)?lyr.offsetHeight-wndo.offsetHeight:0;this.wd=cntId?document.getElementById(cntId).offsetWidth:lyr.offsetWidth;this.maxX=(this.wd-wndo.offsetWidth>0)?this.wd-wndo.offsetWidth:0;this.lyrId=lyrId;lyr.style.visibility="visible";this.on_load();this.ready=true};dw_scrollObj.prototype.on_load=function(){};dw_scrollObj.prototype.shiftTo=function(lyr,x,y){lyr.style.left=(this.x=x)+"px";lyr.style.top=(this.y=y)+"px"};dw_scrollObj.GeckoTableBugFix=function(){ var ua=navigator.userAgent; if(ua.indexOf("Gecko")>-1&&ua.indexOf("Firefox")==-1&&ua.indexOf("Safari")==-1&&ua.indexOf("Konqueror")==-1){ dw_scrollObj.hold=[]; for(var i=0;arguments[i];i++){ if(dw_scrollObjs[arguments[i]]){ var wndo=document.getElementById(arguments[i]); var holderId=wndo.parentNode.id; var holder=document.getElementById(holderId); document.body.appendChild(holder.removeChild(wndo)); wndo.style.zIndex=1000; var pos=getPageOffsets(holder); wndo.style.left=pos.x+"px";wndo.style.top=pos.y+"px";dw_scrollObj.hold[i]=[arguments[i],holderId] } } window.addEventListener("resize",dw_scrollObj.rePositionGecko,true) } }; dw_scrollObj.rePositionGecko=function(){ if(dw_scrollObj.hold){for(var i=0;dw_scrollObj.hold[i];i++){var wndo=document.getElementById(dw_scrollObj.hold[i][0]);var holder=document.getElementById(dw_scrollObj.hold[i][1]);var pos=getPageOffsets(holder);wndo.style.left=pos.x+"px";wndo.style.top=pos.y+"px"}} }; function getPageOffsets(el){ var left=el.offsetLeft; var top=el.offsetTop; if(el.offsetParent&&el.offsetParent.clientLeft||el.offsetParent.clientTop){ left+=el.offsetParent.clientLeft; top+=el.offsetParent.clientTop } while(el=el.offsetParent){left+=el.offsetLeft;top+=el.offsetTop} return{x:left,y:top}; }; 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(){}