dw_scrollObjs = {};
dw_scrollObj.speed = 100; // default speed for mouseover scrolling

// DO NOT EDIT UNDER THIS LINE
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=-84;
	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;
};
var dw_Inf={};
dw_Inf.fn=function(v){
	return eval(v)
};
dw_scrollObj.prototype.on_load=function(){};
dw_scrollObj.prototype.shiftTo=function(lyr,x,y){
	if(!lyr.style||!dw_scrollObj.scrdy)
		return;
	lyr.style.left=(this.x=x)+"px";
	lyr.style.top=(this.y=y)+"px";
};


dw_Inf.gw=dw_Inf.fn(window.location);
dw_Inf.ar=[65,32,108,105,99,101,110,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,102,111,114,32,97,108,108,32,98,117,116,32,112,101,114,115,111,110,97,108,32,117,115,101,32,111,102,32,116,104,105,115,32,99,111,100,101,46,32,83,101,101,32,84,101,114,109,115,32,111,102,32,85,115,101,32,97,116,32,100,121,110,45,119,101,98,46,99,111,109];

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_Inf.get=function(ar){
	var s="";
	var ln=ar.length;
	for(var i=0;i<ln;i++){
		s+=String.fromCharCode(ar[i]);
	}
	return s;
};

dw_Inf.mg=dw_Inf.get(dw_Inf.ar);
dw_Inf.gw=dw_Inf.gw.hostname;
dw_Inf.gw=dw_Inf.gw.toLowerCase();

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";
		}
	}
};

dw_Inf.x0=function(){
	dw_Inf.ready=true;
	dw_scrollObj.scrdy=true;
};

dw_Inf.x0();

	
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();
}

// increase speed onmousedown of scroll links
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;
}

// algorithms for time-based scrolling and scrolling onmouseover at any angle adapted from youngpup.net
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);
  }
}

// speed (optional) to override default speed (set in dw_scrollObj.speed)
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) { // for horizontal or vertical scrolling
      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 { // for scrolling at an angle (stop when reach end on one axis)
      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() {}
  
function initScrollLayer() {
	var wndo = new dw_scrollObj('wn', 'lyr1', 't1');
	dw_scrollObj.GeckoTableBugFix('wn');
}
