var NS4=0, IE4=0, ver4=0, isMac=0, sTrans=0;
var lastRollOver = new Array();
var lastImage=0;
var d1=document;
d1.curStep = 0;
d1.curSlide = 1;
var opac=0;
var Img = "slide1";
var sTimer=0;
var scrTimer=0;
var AniTimer=0;
var StartTimer = 0;
var speed=5;

ver = navigator.appVersion ;
DOM = document.getElementById ? 1 : 0; 
IE5 = ((ver.indexOf("MSIE 5")>-1) && DOM) ? 1 : 0; 
IE4 = (document.all) ? 1 : 0; 
NS5 = (DOM && parseInt(ver) >= 5) ? 1 : 0; 
NS4 = (document.layers && !DOM) ? 1 : 0; 
ver4 = (IE5 || IE4 || NS4 || NS5) ? 1 : 0;
OP = ((document.getElementById) && (navigator.userAgent.indexOf('Opera') != -1)) ? true : false

isMac = (navigator.appVersion.indexOf("Mac") != -1) ? 1 : 0;
sTrans = (NS4 || (IE4 && isMac)) ? 0 : 1;

if (NS4) {
	origWidth = innerWidth;
	origHeight = innerHeight;
}

function reDo() {
	if (innerWidth != origWidth || innerHeight != origHeight) {
		location.reload();
	}
}

if (NS4) onresize = reDo;

function blurHandler(e) {
	this.blur();
}

function doBlur() {
	for (i=0; i<document.links.length; i++) {
		target=eval("document.links[i]");
		target.onfocus=blurHandler;
	}
}

function showLayer(layerName, hideLast){
	var myLayer = getObj(layerName, d1);
	if (ver4) {
		myLayer.visibility="visible";
		if (d1.lastLayer) {
			
			if (hideLast) {
				var z = (d1.lastLayer.length-1);
				for (var j=z; j>-1; j--) {
					if (d1.lastLayer[j].indexOf(layerName) < 0) {
						hideLayer(d1.lastLayer[j]);
					}
				}
			}
		} else {
			d1.lastLayer = new Array();
		}
		var cnt = d1.lastLayer.length;
		var fnd = false;
		for (var i=0; i<cnt; i++) {
			if (d1.lastLayer[i] == layerName) {
				fnd = true;
				break;
			}
		}
		if (!fnd) {
			d1.lastLayer.push(layerName);
		}
	}
	return true;
}

function hideLayer(layerName){
	var myLayer = getObj(layerName);
	if (ver4) {
		if (d1.lastLayer) {
			for (var i=0; i<d1.lastLayer.length; i++) {
				if (d1.lastLayer[i] == layerName) {
					d1.lastLayer = d1.lastLayer.slice(0, i).concat(d1.lastLayer.slice(i + 1, d1.lastLayer.length)); 
				}
			}
		}
		myLayer.visibility = "hidden";
	}
	return true;
}

function eraseLayer(layerName){
	var myLayer = getObj(layerName);
	if (ver4) {
		myLayer.display = "none";
	}
	return true;
}

function displayLayer(layerName) {
	var myLayer = getObj(layerName);
	if (ver4) {
		myLayer.display = "block";
		myLayer.visibility = "visible";
	}
	return true;
}
	

function setHeader(nam) {
	if (document.getElementById) {
		document.getElementById("imgheader").innerHTML =nam;
	} else if (document.all) {
		document.all["imgheader"].innerHTML =nam;
	}
}


/* d1.speed=5; */
 
function setStart() {
	//if (document.cookie) {
//		hideLayer('start');
//		d1.curStep = 88;
//	} else {
/* 		document.cookie = "loaded=true";
		showLayer('start');
		StartTimer = setTimeout("startAni()", 9000);
		parent.loaded = 1; */
//	}
//	showLayer('title-image');
//	showLayer('ticker');
/*	showLayer('navi');
	showLayer('fuss');
	showLayer('header');
	showLayer('txt-left');
	showLayer('txt-right');
	showLayer('ticker');*/
	
	scrollObj.init("scrollbar", "main-content-block", "sb-fader", "sb-top", "sb-bottom");
}
	
	
function startAni() {
	clearTimeout(StartTimer);
	if (d1.curStep == 0) {
		if (wipeLayer('start', 'out')) {
			d1.speed = 10;
			d1.curStep++;
			AniTimer = setInterval("startAni()", 50);
		}
	} else if (d1.curStep == 1) {
		if (!doWipe('start', 'out')) {
			d1.curStep++;
		}
	}
}

function wipeLayer(layerName, how, ofs) {
	var myLayer = getObj(layerName);
	if (ver4) {
		if (d1.lastSlide) {
			return false;
		}
		d1.lastSlide = myLayer;
		if (how == "out") {
			d1.endY = (ofs) ? parseInt(ofs) : getHeight(layerName);
			d1.curY = 0;
		} else if (how == "left") {
			d1.endX = (ofs) ? parseInt(ofs) : (0-getWidth(layerName));
			d1.curX = 10;
		} else {
			d1.endY = (ofs) ? parseInt(ofs) : 0;
			d1.curY = getHeight(layerName);
		}
	}
	return true;
}

function doWipe(layerName, how, nxtLayer, dist) {
	var myLayer = getObj(layerName);
	if (nxtLayer) {
		var myNxtLayer = getObj(nxtLayer);
	}
	if (ver4) {
		if (how == "out") {
			if (parseInt(d1.curY) < d1.endY) {
				d1.curY = d1.curY + d1.speed;
			} else {
				d1.lastSlide = 0;
				d1.curY = d1.endY;
				return false;
			}
			setTop(myLayer);
		} else if (how == "left") {
			setLeft(myLayer);
			if (myNxtLayer) {
				setLeft(myNxtLayer, dist);
			}
			if (parseInt(d1.curX) > d1.endX + d1.speed) {
				d1.curX = d1.curX - d1.speed;
			} else {
				d1.curX = 0;
			}
		} else {
			if (d1.curY > d1.endY) {
				d1.curY = d1.curY - d1.speed;
			} else {
				d1.lastSlide = 0;
				d1.curY = d1.endY;
				return false;
			}
			setTop(myLayer);
		}
		
		myLayer.visibility="visible";
	}
	return true;
}
	
function getObj(name, parentObj) {
	if (parentObj == null) {
		parentObj = document;
	}
	if (document.getElementById) {
		return document.getElementById(name).style;
	} else if (document.all) {
		return document.all[name].style;
	} else if (document.layers) {
		if (!parentObj.layers[name]) {
			for (var i=0; i<parentObj.layers; i++) {
				return getObj(name, parentObj.layers[i]);
			}
		} else {
			return document.layers[name];
		}
	} else {
		return false;
	}
}

function getLayer(name, parentObj) {
	if (parentObj == null) {
		parentObj = document;
	}
	if (document.getElementById) {
		return document.getElementById(name);
	} else if (document.all) {
		return document.all[name];
	} else if (document.layers) {
		if (!parentObj.layers[name]) {
			for (var i=0; i<parentObj.layers; i++) {
				return getLayer(name, parentObj.layers[i]);
			}
		} else {
			return document.layers[name];
		}
	} else {
		return false;
	}
}

function setTop(layerObj) {
	if ( IE4 || NS5 || IE5 ) {
		layerObj.top = d1.curY + "px";
	} else {
		layerObj.clip.top = d1.curY;
	}
}

function setLeft(layerObj, dist) {
	d = dist ? dist : 0;
	l = d1.curX + d;
	if ( IE4 || NS5 || IE5 ) {
		layerObj.left = l + "px";
	} else {
		layerObj.clip.left = l;
	}
}

function getHeight(layerName) {
	layerObj = getLayer(layerName);
	if ( IE4 || NS5 || IE5 ) {
		var h = parseInt(layerObj.offsetHeight);
	} else if ( NS4 ) {
		var h = layerObj.height;
	}
	return h;
}

function getWidth(layerName) {
	layerObj = getLayer(layerName);
	if ( IE4 || NS5 || IE5 ) {
		var w = parseInt(layerObj.offsetWidth);
	} else if ( NS4 ) {
		var w = layerObj.width;
	}
	return w;
}

function checkScroll(buttonLayer, layerName) {
	if (getHeight(layerName) < 315) {
		hideLayer(buttonLayer);
	}
}
			
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}


var scrollObj = {
	dragObj: false,
	layerObj: false,
	mouseOffset: false,
	boundsT: false,
	boundsB: false,
	layerT: false,
	layerH: false,
	scrollQ: false,
	curY: false,
	active: false,
	speed: 5,
	scrTimer: false,
	
	init: function(scrBack, scrLayer, dragBar, scrUp, scrDown) {
		scrBounds = getLayer(scrBack);
		this.dragObj = getLayer(dragBar);
		bUp = getLayer(scrUp);
		bDown = getLayer(scrDown);
		
		/* this.boundsT = scrBounds.offsetTop + this.getHeight(bUp); */
		this.boundsT = this.getHeight(bUp);
		var boundsH = this.getHeight(scrBounds) - this.getHeight(this.dragObj) - this.getHeight(bUp) - this.getHeight(bDown);
		
		this.boundsB = this.boundsT + boundsH;
		scrBounds.onmousedown = scrollObj.jump;

		bUp.onmousedown = scrollObj.scrollUp;
		bDown.onmousedown = scrollObj.scrollDown;
		
		this.layerObj = getLayer(scrLayer);
		var layerPos = this.getPosition(this.layerObj);
		this.layerT = layerPos.y;
		this.layerH = this.getHeight(this.layerObj);
		
		this.scrollQ = this.layerH / boundsH;
		
		this.curY = 0;
		
		document.onmousemove = scrollObj.mouseMove;
		document.onmouseup   = scrollObj.mouseUp;
		this.dragObj.onmousedown   = scrollObj.mouseDown;
		
		/** Initialization code. 
 		* If you use your own event management code, change it as required.
		*/
		if (window.addEventListener)
	        /** DOMMouseScroll is for mozilla. */
    	    window.addEventListener('DOMMouseScroll', scrollObj.wheel, false);
		/** IE/Opera. */
		window.onmousewheel = document.onmousewheel = scrollObj.wheel;
	},
	

/** Event handler for mouse wheel event.
 */
	wheel: function(event) {
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.
                 */
                if (window.opera)
					delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */

        if (delta != 0) {
			scrollObj.active = true;
			//scrollObj.curY = scrollObj.layerObj.offsetTop;
               scrollObj.doScroll(delta*20);
               scrollObj.active = false;
		}
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault)
                event.preventDefault();
		event.returnValue = false;
	},


	getMouseOffset: function(target, ev) {
		ev = ev || window.event;
		var docPos    = this.getPosition(target);
		var mousePos  = this.mouseCoords(ev);
		return {x:mousePos.x - target.offsetLeft, y:mousePos.y - target.offsetTop};
	},

	mouseCoords: function(ev){
		if(ev.pageX || ev.pageY){
			return {x:ev.pageX, y:ev.pageY};
		}
		return {
			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
			y:ev.clientY + document.body.scrollTop  - document.body.clientTop
		};
	},

	getPosition: function(e) {
		var left = 0;
		var top  = 0;

		while (e.offsetParent) {
			left += e.offsetLeft;
			top  += e.offsetTop;
			e     = e.offsetParent;
		}

		left += e.offsetLeft;
		top  += e.offsetTop;

		return {x:left, y:top};
	},

	getHeight: function(obj) {
		if ( IE4 || NS5 || IE5 ) {
			var h = parseInt(obj.offsetHeight);
		} else if ( NS4 ) {
			var h = obj.height;
		}
		return h;
	},

	mouseMove: function(ev) {
		ev           = ev || window.event;
		var mousePos = scrollObj.mouseCoords(ev);

		if (scrollObj.mouseOffset) {
			var newY = Math.max(scrollObj.boundsT, Math.min(scrollObj.boundsB, mousePos.y - scrollObj.mouseOffset.y));
			scrollObj.dragObj.style.position = 'absolute';
			scrollObj.dragObj.style.top = newY+'px';
			
			var diffY = newY - scrollObj.boundsT;
			layerY = 0 - scrollObj.scrollQ * diffY;
			scrollObj.layerObj.style.position = 'absolute';
			scrollObj.layerObj.style.top = layerY+'px';
			scrollObj.curY = layerY;
			return false;
		}
	},
	
	mouseUp: function() {
		scrollObj.mouseOffset = false;
		scrollObj.stopScroll();
	},

	mouseDown: function(ev) {
		if (!scrollObj.mouseOffset)
			scrollObj.mouseOffset = scrollObj.getMouseOffset(scrollObj.dragObj, ev);
		return false;
	},
	
	scrollUp: function(ev) {
		scrollObj.scrollLayer('up');
	},
		
	scrollDown: function(ev) {
		scrollObj.scrollLayer('down');
	},
	
	jump: function(ev) {
	    if (scrollObj.active) return false;
		ev           = ev || window.event;
		var mousePos  = scrollObj.mouseCoords(ev);
		var dragPos = scrollObj.getPosition(scrollObj.dragObj);
		
		var newY = 0;
		if (mousePos.y > (dragPos.y + scrollObj.getHeight(scrollObj.dragObj))) 
			newY = -50;
		else if (mousePos.y < dragPos.y)
			newY = 50;
		if (newY != 0) {
			scrollObj.active = true;
			//scrollObj.curY = scrollObj.layerObj.offsetTop;
			scrollObj.doScroll(newY);
		}
			
	},
	
	scrollLayer: function(how) {
		if (scrollObj.active) return false;
		
		scrollObj.active = true;
		//scrollObj.curY = scrollObj.layerObj.offsetTop;
			
		if (how == 'up') {
			speed = (scrollObj.speed < 0) ? scrollObj.speed * -1 : scrollObj.speed;
		} else {
			speed = (scrollObj.speed > 0) ? scrollObj.speed * -1 : scrollObj.speed;
		}
		scrollObj.scrTimer = setInterval("scrollObj.doScroll(speed)", 50);
		return true;
	},
	
	doScroll: function(q) {
		var newY = Math.min(0, Math.max(scrollObj.layerH*-1, scrollObj.curY + q));
		if (scrollObj.curY + q != newY)
			scrollObj.active = false;
		
		scrollObj.curY = newY;
		scrollObj.layerObj.style.top = scrollObj.curY+'px';
		var newY = Math.max(scrollObj.boundsT, Math.min(scrollObj.boundsB, scrollObj.boundsT - scrollObj.curY / scrollObj.scrollQ));
		scrollObj.dragObj.style.top = newY+'px';
		if (!scrollObj.active) {
			scrollObj.stopScroll();
			return false;
		} else return true;
	},
	
	stopScroll: function() {
		scrollObj.active = false;
		clearTimeout(scrollObj.scrTimer);
	}
}

window.onload = function() {
	scrollObj.init("scrollbar", "main-content-block", "sb-fader", "sb-top", "sb-bottom");
}

