objs={};scrollIt.speed=100;function scrollIt(wnId, lyrId, cntId){
this.id=wnId; objs[this.id]=this;this.animString="objs."+this.id;this.load(lyrId, cntId);}
scrollIt.loadLayer=function(wnId, id, cntId){if(objs[wnId]) objs[wnId].load(id,cntId);}
scrollIt.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;}
scrollIt.prototype.on_load=function(){}  
scrollIt.prototype.shiftTo=function(lyr,x,y){lyr.style.left=(this.x=x)+"px"; 
lyr.style.top=(this.y=y)+"px";}
scrollIt.GeckoTableBugFix=function(){var ua=navigator.userAgent;
if(ua.indexOf("Gecko")>-1&&ua.indexOf("Firefox")==-1&&ua.indexOf("Safari")==-1&&ua.indexOf("Konqueror")==-1){
scrollIt.hold=[];for (var i=0;arguments[i];i++){if(objs[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";
scrollIt.hold[i]=[arguments[i],holderId];}}
window.addEventListener("resize",scrollIt.rePositionGecko,true);}}
scrollIt.rePositionGecko=function(){if(scrollIt.hold){for(var i=0;scrollIt.hold[i];i++){
var wndo=document.getElementById(scrollIt.hold[i][0]);var holder=document.getElementById(scrollIt.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};}
scrollIt.stopScroll=function(wnId){if(objs[wnId]) objs[wnId].endScroll();}
scrollIt.doubleSpeed=function(wnId){if(objs[wnId]) objs[wnId].speed*=3;}
scrollIt.resetSpeed=function(wnId){if(objs[wnId]) objs[wnId].speed/=2;}
scrollIt.initScroll=function(wnId,deg,sp){if(objs[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);}
objs[wnId].fx=cosine/(Math.abs(cosine)+Math.abs(sine));objs[wnId].fy=sine/(Math.abs(cosine)+Math.abs(sine));
objs[wnId].endX=(deg==90||deg==270)?objs[wnId].x:(deg<90||deg>270)?-objs[wnId].maxX:0; 
objs[wnId].endY = (deg == 0 || deg == 180)? objs[wnId].y:(deg<180)?0:-objs[wnId].maxY;
objs[wnId].startScroll(sp);}}
scrollIt.prototype.startScroll=function(speed){if(!this.ready)return;if(this.timerId)clearInterval(this.timerId);
this.speed=speed||scrollIt.speed;this.lyr=document.getElementById(this.lyrId);this.lastTime=(new Date()).getTime();
this.on_scroll_start();this.timerId=setInterval(this.animString+".scroll()",10);}
scrollIt.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);}}}}
scrollIt.prototype.endScroll=function(){if(!this.ready) return;if(this.timerId) clearInterval(this.timerId);this.timerId=0;this.lyr=null;}
scrollIt.prototype.on_scroll=function(){}
scrollIt.prototype.on_scroll_start=function(){}
scrollIt.prototype.on_scroll_end=function(){}