var currentSlide
var scrollObjList = {}

function initScroll(id)
{
	if(scrollObjList[id])
	{
		scrollObj=scrollObjList[id];
	}
	else
	{
		scrollObjList[id] = scrollObj = document.getElementById(id);
		scrollObj.timeID = null;
	}
	scrollElmList = scrollObj.getElementsByTagName("div");
	for(var i=0;i<scrollElmList.length;i++)
	{
		scrollElm=scrollElmList[i];
		switch(scrollElm.className)
		{
			case "scrollField":
				scrollObj.scrollField = scrollElm;
				scrollObj.scrollContent = scrollElmList[i+1];
				
				scrollElm.style.width = scrollObj.offsetWidth+"px";
				
				// determin width of scrollContent
				scrollObj.scrollContent.style.left="-500px";
				scrollObj.scrollContent.style.width=scrollObj.scrollContent.offsetWidth+"px";
				//scrollObj.scrollContent.style.width="300px";	

				scrollObj.scrollContent.style.left="0px";
				scrollObj.scrollContent.style.top="0px";
				
				scrollElm.id = scrollObj.id;
				scrollElm.onmousewheel = function()
				{
					if(event.wheelDelta<0)
					{
						scrollContents(this.id,"down",wheelStep)
						clearTimeout(scrollObj.timeID);
					}
					else
					{
						scrollContents(this.id,"up",wheelStep)
						clearTimeout(scrollObj.timeID);
					}
					return false;
				}
				break;
			case "scrollBarV":
				scrollObj.scrollBarV = scrollElm;
				scrollElm.id = scrollObj.id;
				if(scrollObj.scrollContent.offsetHeight<=scrollObj.scrollField.offsetHeight)
				{
					scrollObj.scrollField.style.width=scrollObj.scrollField.offsetWidth+"px";
					scrollElm.style.visibility="hidden";
					scrollElm.onmousedown=null;
				}
				else
				{
					scrollElm.style.left=scrollObj.scrollField.offsetWidth-scrollElm.offsetWidth+"px";
					scrollObj.scrollField.style.width=scrollObj.scrollField.offsetWidth-scrollElm.offsetWidth-1+"px";
					scrollElm.style.visibility="visible";
					scrollElm.onmousedown= function(e)
					{
						if(e){
							mY = e.layerY;
							e.cancelBubble=true;
						}
						else
						{
							mY = event.offsetY
							event.cancelBubble=true;
						}
						scrollObj = document.getElementById(this.id);
						if(mY>scrollObj.sliderV.offsetTop)
						{
							scrollContents(this.id,"down",scrollbarStep)
						}
						else
						{
							scrollContents(this.id,"up",scrollbarStep)
						}
						this.onmouseup = this.onmouseleave = function()
						{
							scrollObj = document.getElementById(this.id);
							document.onselectstart = null;
							clearTimeout(scrollObj.timeID);
						}
						document.onselectstart = function()
						{
							return false;	
						}
					}
				}
				break;
			case "buttonUp":
				scrollObj.buttonUp = scrollElm;
				scrollElm.id = scrollObj.id;
				scrollElm.onmouseover=function(e)
				{
					if(e) event = e;
					event.cancelBubble=true;
					scrollContents(this.id,"up")
					this.onmouseout = function()
					{
						scrollObj = document.getElementById(this.id);
						document.onselectstart = null;
						clearTimeout(scrollObj.timeID);
					}
					document.onselectstart = function()
					{
						return false;	
					}
				}
				break;
			case "buttonDown":
				scrollObj.buttonDown = scrollElm;
				scrollElm.id = scrollObj.id;
				scrollElm.onmouseover=function(e)
				{
					if(e) event = e;
					event.cancelBubble=true;
					scrollContents(this.id,"down")
					
					this.onmouseout = function()
					{
						scrollObj = document.getElementById(this.id);
						document.onselectstart = null;
						clearTimeout(scrollObj.timeID);
					}
					document.onselectstart = function()
					{
						return false;	
					}
				}
				break;
			case "sliderV":
				scrollObj.sliderV = scrollElm;
				
				scrollElm.id = scrollObj.id;
				scrollElm.scrollRange = [(scrollObj.buttonUp.offsetTop+scrollObj.buttonUp.offsetHeight),scrollObj.buttonDown.offsetTop];
		
				scrollElm.style.top = scrollElm.scrollRange[0]+"px";
				
				scrollElm.scrollAreaHeight = scrollElm.scrollRange[1]-scrollElm.scrollRange[0];
				
				sliderHeight  = Math.floor((scrollElm.scrollAreaHeight/scrollObj.scrollContent.offsetHeight)*scrollObj.scrollField.offsetHeight)
				scrollElm.style.height = ((sliderHeight<10)?10:sliderHeight)+"px";
				
				scrollElm.scrollRatio = (scrollElm.scrollAreaHeight-scrollElm.offsetHeight)/(scrollObj.scrollContent.offsetHeight-scrollObj.scrollField.offsetHeight);
				
				scrollElm.dragRatio = (scrollObj.scrollContent.offsetHeight-scrollObj.scrollField.offsetHeight)/(scrollElm.scrollAreaHeight-scrollElm.offsetHeight);
				scrollElm.onmousedown = function(e)
				{
					if(e) event = e;
					event.cancelBubble=true;
					
					currentSlide = this;
					mY=event.clientY;
					document.onmousemove = function(e)
					{
						if(e) event = {clientY:e.clientY}
						yPos = mY - event.clientY;
						if(currentSlide.offsetTop-yPos<=currentSlide.scrollRange[0])
						{
							currentSlide.style.top = currentSlide.scrollRange[0]+"px";
						}
						else if(currentSlide.offsetTop-yPos>=currentSlide.scrollRange[1]-currentSlide.offsetHeight)
						{
							currentSlide.style.top = (currentSlide.scrollRange[1]-currentSlide.offsetHeight)+"px";
						}
						else
						{
							currentSlide.style.top = currentSlide.offsetTop-yPos+"px";
						}
					
						document.getElementById(currentSlide.id).scrollContent.style.top=-Math.floor((currentSlide.offsetTop-currentSlide.scrollRange[0])*currentSlide.dragRatio)+"px";
						mY = event.clientY;
						return false;
					}
					document.onmouseup = function()
					{
						document.onmousemove = null;
						document.onselectstart = null;
					}
					document.onselectstart = function()
					{
						return false;	
					}
				}
				break;
				// -----------------------------------------
		}
	}
}

var defaultStep = 5;
var wheelStep = 26;
var scrollbarStep = 52;
function scrollContents(id,dir,scrollStep)
{
	if(!scrollStep) scrollStep=defaultStep;
	var scrollObj = document.getElementById(id);
	clearTimeout(scrollObj.timeID);
	switch(dir)
	{
		case "up":				
			if(scrollObj.scrollContent.offsetTop+scrollStep<0)
			{
				scrollObj.scrollContent.style.top=(scrollObj.scrollContent.offsetTop+scrollStep)+"px";
			}
			else
			{
				scrollObj.scrollContent.style.top="0px"
				clearTimeout(scrollObj.timeID);
			}
			break;
		case "down":				
			if(scrollObj.scrollContent.offsetTop-scrollStep>(-scrollObj.scrollContent.offsetHeight+scrollObj.scrollField.offsetHeight))
			{
				scrollObj.scrollContent.style.top=(scrollObj.scrollContent.offsetTop-scrollStep)+"px";
			}
			else
			{
				scrollObj.scrollContent.style.top=(-scrollObj.scrollContent.offsetHeight+scrollObj.scrollField.offsetHeight)+"px"
				clearTimeout(scrollObj.timeID);
			}
			break;
		
	}
	switch(dir)
	{
		case "up":				
		case "down":
			scrollObj.sliderV.style.top = scrollObj.sliderV.scrollRange[0]+Math.floor(-scrollObj.scrollContent.offsetTop*scrollObj.sliderV.scrollRatio)+"px";
			break;
	}
	
	scrollObj.timeID = setTimeout("scrollContents(\""+id+"\",\""+dir+"\","+scrollStep+")",40);
}