function initScroll()
{
	var scrollParent = document.getElementsByClassName( "scroll" ) ;
	var scrollPanel ;
	var scrollBar ;

	scrollFade = 0 ;
	
	for ( var i = 0 ; i < scrollParent.length ; i++ )
	{
		scrollParent[i].innerHTML = "<span class=\"content\">"+ scrollParent[i].innerHTML +"</span><span class=\"scrollpanel\"></span><span class=\"scrollbar\"></span>" ;
		scrollBar = scrollParent[i].lastChild ;
		scrollPanel = scrollBar.previousSibling ;
		
		scrollBar.Default = "#666" ;
		scrollBar.Hover = "#1485CC" ;
		scrollBar.Click = "#0E4E99" ;
		scrollPanel.Default = "#666" ;
		scrollPanel.Hover = "#444" ;
		scrollPanel.Click = "#222" ;
		
		scrollParent[i].style.overflow = "hidden" ;
		scrollBar.backgroundColor = scrollBar.Default ;
		scrollBar.origTop = scrollBar.offsetTop ;
		scrollBar.origOpac = scrollBar.style.opacity ;
		
		if ( scrollFade == 1 )
			{ scrollParent[i].onmouseover = fadeIn ; scrollParent[i].onmouseout = fadeOut ; }
		else
			scrollParent[i].firstChild.style.width = ( scrollBar.offsetLeft  ) +"px" ;
			
		setNewScrollBar( scrollParent[i] ) ;
		
		scrollBar.mouse = 0 ;
		scrollBar.onmouseover = function() { ( this.backgroundColor == scrollBar.Default ) ? this.style.backgroundColor = this.backgroundColor = scrollBar.Hover : this.mouse = 1 ; } ;
		scrollBar.onmouseout = function() { ( this.backgroundColor == scrollBar.Hover ) ? this.style.backgroundColor = this.backgroundColor = scrollBar.Default : this.mouse = 2 ; } ;
		
		scrollPanel.onmouseover = function() { this.style.backgroundColor = scrollPanel.Hover ; }
		scrollPanel.onmouseout = function() { this.style.backgroundColor = scrollPanel.Default ; }
		scrollPanel.onmousedown = function() { this.style.backgroundColor = scrollPanel.Click ; }
		scrollPanel.onmouseup = scrollTrack ;
		
		scrollBar.onmousedown = scrollStart ;
		
		scrollParent[i].addEventListener( "DOMMouseScroll" , scrollByWheel , false ) ;  
		scrollParent[i].addEventListener( "mousewheel" , scrollByWheel , false ) ;
		scrollParent[i].addEventListener( "onmousewheel" , scrollByWheel , false ) ;
	}
	var o = new objectHandler() ;
	window.onresize = function()
	{	
		for ( var i = 0 ; i < scrollParent.length ; i++ )
		{
			o.scrollParent = scrollParent[i] ;
			setNewScrollBar( o.scrollParent ) ;
		}
	} ;
}
function scrollStart( e )
{
	var e = e || window.event ;
	o = e.target || e.srcElement ;
	if ( e.stopPropagation )
		e.stopPropagation() ;
	if ( e.preventDefault )
		e.preventDefault() ;
	startY = e.clientY - o.offsetTop ;
	o.mouse = 1 ;
	o.style.backgroundColor = o.backgroundColor = o.Click ;
	document.onmousemove = scrolling ;
	document.onmouseup = scrollEnd ;
}
function scrolling( e )
{
	var e = e || window.event ;
	var scroll = new objectHandler() ;
	scroll.bar = o ;
	scroll.parent = o.parentNode ;
	scroll.content = scroll.parent.firstChild ;
	scroll.pos = e.clientY - startY ;
	scrollCalc( scroll ) ;
}
function scrollCalc( scroll )
{
	var newPos = absPos = scroll.pos ;
	var i ;
	if ( newPos <= 0 )
		{ absPos = scroll.bar.origTop ; newPos = 0 ; }
	else if ( newPos >= ( i = scroll.parent.clientHeight - scroll.bar.clientHeight - scroll.bar.origTop + 1 ) )
		{ absPos = --i ; newPos = i ; }
	scroll.bar.style.top = absPos +"px" ;
	scroll.content.style.top = ( -1 * newPos * ( scroll.content.clientHeight - 2 * scroll.bar.origTop ) / scroll.parent.clientHeight ) +"px" ;
}
function scrollByWheel( e )
{
	var e = e || window.event ;
	var wheelData = ( e.detail * -1 ) || ( e.wheelDelta / 40 ) ;
	wheelData *= 10 ;
	var o = e.target || e.srcElement ;
	while ( o.className != "content" )
		o = o.parentNode ;
	var scroll = new objectHandler() ;
	scroll.content = o ;
	scroll.parent = o.parentNode ;
	scroll.bar = scroll.parent.lastChild ;
	scroll.pos = scroll.bar.offsetTop - wheelData ;
	scrollCalc( scroll ) ;
	if ( e.stopPropagation )
		e.stopPropagation() ;
	if ( e.preventDefault )
		e.preventDefault() ;
	e.cancelBubble = true ;
	e.cancel = true ;
	e.returnValue = false ;
	return false ;
}
function scrollEnd()
{
	( o.mouse == 1 )
		? o.style.backgroundColor = o.backgroundColor = o.Hover
		: o.style.backgroundColor = o.backgroundColor = o.Default ;
	o.mouse = 0 ;
	this.onmousemove = null ;
}
function setNewScrollBar( scrollParent )
{
	var scrollbarHeight = scrollParent.clientHeight / scrollParent.scrollHeight ;
	var scrollBar = scrollParent.lastChild ;
	var scrollPanel = scrollBar.previousSibling ;
	if ( scrollbarHeight < 1 )
	{
		scrollBar.style.height = ( scrollbarHeight * scrollParent.clientHeight - 2 * scrollBar.origTop ) +"px" ;
		scrollPanel.style.height = ( scrollParent.clientHeight - 2 * scrollBar.origTop ) +"px" ;
		scrollBar.style.backgroundColor = scrollBar.Default ;
		scrollPanel.style.backgroundColor = scrollPanel.Default ;
		if ( scrollFade == 1 )
			{ scrollBar.style.opacity = 0 ; scrollPanel.style.opacity = 0 ; }
	}
	else
		scrollBar.style.height = scrollPanel.style.height = 0 ;
}
function scrollTrack( e )
{
	e = e || window.event ;
	var y = e.offsetY || e.layerY ;
	var scroll = new objectHandler() ;
	scroll.parent = this.parentNode ;
	scroll.bar = scroll.parent.lastChild ;
	scroll.content = scroll.parent.firstChild ;
	scroll.pos = y - ( scroll.bar.clientHeight / 2 ) ;
	scrollCalc( scroll ) ;
	scroll.bar.mouse = 2 ;
}
function fadeIn()
{
	var scrollBar = this.lastChild ;
	scrollBar.style.opacity = scrollBar.origOpac ;
	scrollBar.previousSibling.style.opacity = scrollBar.origOpac ;
}
function fadeOut()
{
	var scrollBar = this.lastChild ;
	scrollBar.style.opacity = 0 ;
	scrollBar.previousSibling.style.opacity = 0 ;
}
