/* archived.usemedia.com . scroll . joes koppers . rev 06/2003 (original code 01/2001) */
/* thanx for reading this code */


//setup_scrollbars();

/* event handling */

function mouseDown(e)
{
	if (!e) e = event;
	//if (e.button!=0) return true;
	
	//always hide scrollbars from now on
	scrollhide = true;
	
	var offset = (offsettype=='h')? e.clientX:e.clientY;
	
	this.dragging = true;
	this.offset = offset - this.position;
	
	return false;
}

function mouseMove(e)
{
 	if (!e) e = event;
	//if (e.button!=0) return true;

	var x = e.clientX;
	var y = e.clientY;
	
	/* dragging	*/
	

	if (scrollbar.h.scroller.dragging)
	{
		scrollbar.h.scroller.position = x - scrollbar.h.scroller.offset;
		scroll('h');
	}
	if (scrollbar.v.scroller.dragging)
	{
		scrollbar.v.scroller.position = y - scrollbar.v.scroller.offset;
		scroll('v');
	}
	
	/* not dragging */
	
	if (windowWidth && windowHeight && x!=-1)
	{
		if (scrollbar.h.on && y>windowHeight-50 && !(scrollbar.h.visible || scrollbar.v.visible)) show_scrollbar(true,'h');
		if (scrollbar.v.on && x>windowWidth-50 && !(scrollbar.h.visible || scrollbar.v.visible)) show_scrollbar(true,'v');
		
		if (scrollhide && y<windowHeight-50 && scrollbar.h.visible && !scrollbar.h.scroller.dragging) show_scrollbar(false,'h');
		if (x<windowWidth-50 && scrollbar.v.visible && !scrollbar.v.scroller.dragging) show_scrollbar(false,'v');
	}
	
	return false;

}


/* scrollbars */

function setup_scrollbars()
{
	/* setup scrollbar object */

	scrollbar = new Object();
	
	//general appearance
	scrollbar.outer_color = '#aaaaaa';
	scrollbar.inner_color = 'white';
	scrollbar.margin = 22;
	
	//h=HORIZONTAL
	scrollbar.h = new Object();
	//refs
	scrollbar.h.bar = document.getElementById('h_scrollbar');
	scrollbar.h.bar.div = document.getElementById('h_scrollbar_div');
	scrollbar.h.scroller = document.getElementById('h_scroller');
	scrollbar.h.scroller.div = document.getElementById('h_scroller_div');
	//apply static settings
	scrollbar.h.bar.div.style.left = "10px";
	scrollbar.h.bar.div.style.borderColor = scrollbar.outer_color;
	scrollbar.h.scroller.style.borderColor = scrollbar.inner_color;
	document.getElementById('leftarrow').style.borderColor = scrollbar.outer_color;
	document.getElementById('rightarrow').style.borderColor = scrollbar.outer_color;
	
	//v=VERTICAL
	scrollbar.v = new Object();
	//refs
	scrollbar.v.bar = document.getElementById('v_scrollbar');
	scrollbar.v.bar.div = document.getElementById('v_scrollbar_div');
	scrollbar.v.scroller = document.getElementById('v_scroller');
	scrollbar.v.scroller.div = document.getElementById('v_scroller_div');
	//apply static settings
	scrollbar.v.bar.div.style.top = "10px";
	scrollbar.v.bar.div.style.borderColor = scrollbar.outer_color;
	scrollbar.v.scroller.style.borderColor = scrollbar.inner_color;
	document.getElementById('uparrow').style.borderColor = scrollbar.outer_color;
	document.getElementById('downarrow').style.borderColor = scrollbar.outer_color;

	//capture events	
	document.onmousemove = mouseMove;
	document.onmouseup = function () { scrollbar.h.scroller.dragging = false; scrollbar.v.scroller.dragging = false; scrollbutton = false; }

	scrollbar.h.scroller.onmousedown = mouseDown;
	scrollbar.v.scroller.onmousedown = mouseDown;
	
	document.onresize = init_scrollbars;
	
	//initialize scrollbars for first time..
	init_scrollbars();
}

function init_scrollbars()
{
	get_dimensions();

	//defaults
	scrollbar_defaults(scrollbar.h,windowHeight,windowWidth);
	scrollbar_defaults(scrollbar.v,windowWidth,windowHeight);
	//reset content
	document.getElementById('content_div').style.top = "0px";

	/* initialize scrollbars if needed */
		
	if (contentWidth>windowWidth)
	{
		scrollbar.h.on = true;
		//calculate
		scrollbar.h.scroller.size = Math.round((windowWidth/contentWidth)*scrollbar.h.bar.size);
		scrollbar.h.factor = (scrollbar.h.bar.size - scrollbar.h.scroller.size)/(contentWidth-windowWidth);
		//apply
		scrollbar.h.bar.style.width = scrollbar.h.bar.size +"px";
		scrollbar.h.bar.div.style.top = scrollbar.h.bar.position +"px";
		scrollbar.h.scroller.style.width = scrollbar.h.scroller.size +"px";
		scrollbar.h.scroller.div.style.left = scrollbar.h.scroller.position+10+13 +"px";
		scrollbar.h.scroller.div.style.top = scrollbar.h.bar.position+1 +"px";
		//show
		scrollbar_visibility(scrollbar.h,true);
	} else scrollbar.h.on = false;
	
	if (contentHeight>windowHeight)
	{
		scrollbar.v.on = true;
		//calculate
		scrollbar.v.scroller.size = Math.round((windowHeight/contentHeight)*scrollbar.v.bar.size);
		scrollbar.v.factor = (scrollbar.v.bar.size - scrollbar.v.scroller.size)/(contentHeight-windowHeight);
		//apply
		scrollbar.v.bar.style.height = scrollbar.v.bar.size +"px";
		scrollbar.v.bar.div.style.left = scrollbar.v.bar.position +"px";
		scrollbar.v.scroller.style.height = scrollbar.v.scroller.size +"px";
		scrollbar.v.scroller.div.style.top = scrollbar.v.scroller.position+10+13 +"px";
		scrollbar.v.scroller.div.style.left = scrollbar.v.bar.position+1 +"px";
		//show
		scrollbar_visibility(scrollbar.v,true);
	} else scrollbar.v.on = false;
	
	sections(go_section);
	if (go_section==0) show_scrollbar(true,'h');
}

function get_dimensions()
{
	if (window.innerWidth) //netscape first (documentElement=0 for some reason)
	{ 
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
	} 
	else if (document.documentElement && document.documentElement.clientWidth) //W3C (?)
	{ 
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} 
	else if (document.body) 
	{ //microsoft
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
	contentWidth =  document.getElementById('content').offsetWidth;
	contentHeight =  document.getElementById('content').offsetHeight;
}

function scrollbar_defaults(scrollobj,x,y)
{
	scrollobj.on = false;
	scrollobj.visible = false;
	scrollobj.factor = 1;
	scrollobj.scroller.dragging = false;
	scrollobj.scroller.position = 0;
	scrollobj.scroller.offset = 0;
	scrollobj.bar.position = x+10;
	scrollobj.bar.size = y-47;
	scrollbar_visibility(scrollobj,false);
}

function scrollbar_visibility(scrollobj,show)
{
	scrollobj.bar.div.style.visibility = (show)? "visible":"hidden";
	scrollobj.scroller.div.style.visibility = (show)? "visible":"hidden";
}


/* scrolling */

function show_scrollbar(show,type) 
{
	scrollobj = (type=='h')? scrollbar.h:scrollbar.v;
	windowProperty = (type=='h')? windowHeight:windowWidth;
	property = (type=='h')? 'top':'left';
	
	if (!show && scrollbar_anim) window.clearTimeout(scrollbar_anim);

	scrollobj.visible = (show)? true:false;
	scrollobj.bar.position = (show)? scrollobj.bar.position + .30*((windowProperty-scrollbar.margin)-scrollobj.bar.position):windowProperty+10;
	if (!show) scrollobj.scroller.style.backgroundColor = 'transparent';
	//position
	eval('scrollobj.bar.div.style.'+property+' = scrollobj.bar.position +"px"')
	eval('scrollobj.scroller.div.style.'+property+' = scrollobj.bar.position+1 +"px"')
	//loop
	if (show && scrollobj.bar.position>windowProperty-scrollbar.margin+1) scrollbar_anim = window.setTimeout('show_scrollbar(true,"'+type+'")',15);
}

function do_scroll(direction)
{
	switch (direction) 
	{
		case 'left': scrollbar.h.scroller.position-=5; scroll('h');	break;
		case 'right': scrollbar.h.scroller.position+=5;	scroll('h'); break;
		case 'up': scrollbar.v.scroller.position-=5; scroll('v'); break;
		case 'down': scrollbar.v.scroller.position+=5; scroll('v'); 
	}
	if (scrollbutton) scrolling = window.setTimeout("do_scroll('"+direction+"')",10);
	return false;
}

function scroll(type)
{
	scrollobj = (type=='h')? scrollbar.h:scrollbar.v;
	property = (type=='h')? 'left':'top';
	
	//limit
	var min = 0;
	var max = scrollobj.bar.size-scrollobj.scroller.size-2;
	if (scrollobj.scroller.position<min) scrollobj.scroller.position = min;
	if (scrollobj.scroller.position>max) scrollobj.scroller.position = max;
	//apply
	eval('scrollobj.scroller.div.style.'+property+' = 10+13 + scrollobj.scroller.position +"px"');
	eval('document.getElementById("content_div").style.'+property+' = -(scrollobj.scroller.position/scrollobj.factor) +"px"');

	//update interface while horizontal scroll
	if (type=='h')
	{
		mode = Math.floor( scrollbar.h.scroller.position / ((scrollbar.h.bar.size-22-scrollbar.h.scroller.size)/4) );
		if (mode!=current_mode) sections(-1);
	}
}


/* interface */

function sections(section)
{
	if (section!=-1) { //click
		
		if (section!=0 && section==current_mode) //don't scroll if already there
		{ 
			/* CONTENT functions (defined in dbase..) */
			actions(section);
		}
		else
		{
			scrollbar.h.scroller.position = section * ((scrollbar.h.bar.size-22-scrollbar.h.scroller.size)/4);
			scroll('h');
		}
	}
	else //scroll
	{ 
		section = current_mode = mode;
		
		for (var i=1; i<5; i++)
		{
			document.getElementById('title'+i).style.visibility = (i==mode || section==0)? "visible":"hidden";
			document.getElementById('text'+i).style.visibility = (i==mode)? "visible":"hidden";
			document.getElementById('text'+i).style.backgroundColor = "transparent";
			document.getElementById('grid'+i).style.backgroundColor = (i==mode || section==0)? "white":"transparent";
			document.getElementById('grid'+i).style.borderColor = (i==mode || section==0)? "white":"#bbbbbb";
		}
		document.getElementById('hint').style.visibility = (section==0)? "visible":"hidden";	
	}
}



