//////////////////////////////////
// ShroomTown Custom Scrolling //
////////////////////////////////
//// JavaScript by Morthian ///
//////////////////////////////

// Usage: Load element contents. -> Execute function "customScroll('elementId')". //


//Activate custom scroll
function customScroll(id) {
	arrowDisplay(id);
	mousewheel(id);
}

//Add event listener
function mousewheel(id) {
	
	//Add event listener
	if(document.getElementById(id).addEventListener) {
		document.getElementById(id).addEventListener('DOMMouseScroll', (function (x) {return function (e) {moveObject(x, e);};})(id), false);	//Method 1 (Firefox, Opera, Safari)
	} 
	
	document.getElementById(id).onmousewheel = (function (x) {return function (e) {moveObject(x, e);};})(id);	//Method 2 (IE, Opera)
}

//Define cancel event function
function cancelEvent(e) {
	e = e ? e : window.event;
	if(e.stopPropagation)
	  e.stopPropagation();
	if(e.preventDefault)
	  e.preventDefault();
	e.cancelBubble = true;
	e.cancel = true;
	e.returnValue = false;
	return false;
}

//Scroll element via mouse wheel
function moveObject(id, event) {
	
	//Define element
	div = document.getElementById(id);
	
	//Check for overflow
	if(div.scrollHeight > div.offsetHeight) {
	
		//Define initial delta
		var delta = 0;
	 
		//Validate event
		if (!event) { 
			event = window.event; 
		}
	 
		//Retrieve delta
		if (event.detail) {
			delta = event.detail;	//Method 1
		}
		else if (event.wheelDelta) {
			delta = -event.wheelDelta;	//Method 2
		}
		
		//Scroll element
		if (delta < 0) {
			document.getElementById(id).scrollTop -= 50; 
		}
		else if (delta > 0) {
		   document.getElementById(id).scrollTop += 50;
		}
		
		//Toggle arrow displays
		arrowDisplay(id);
	 
		//Cancel event primary function
		return cancelEvent(event);
	}
}

//Define scroll timer
function scrollDiv(id,val) {
	
	//Define element
	div = document.getElementById(id);
	
	//Check for overflow
	if(div.scrollHeight > div.offsetHeight) {
		scrollTimer = setInterval("scrollInterval('"+id+"',"+val+")", 1);
	}
}

//Scroll element via arrows
function scrollInterval(id,val) {
	
	//Define variables
	div = document.getElementById(id);
	maxPosition = (div.scrollHeight - div.offsetHeight);
	newPosition = (div.scrollTop + val);
	
	//Scroll element
	if(newPosition >= maxPosition) {
		document.getElementById(id).scrollTop = maxPosition;
		clearInterval(scrollTimer);
	}
		
	else if(newPosition <= 0) {
		document.getElementById(id).scrollTop = 0;
		clearInterval(scrollTimer);
	}
		
	else {
		document.getElementById(id).scrollTop += val;
	}
	
	//Toggle arrow displays
	arrowDisplay(id);
}

//Toggle arrow displays
function arrowDisplay(id) {
	
	//Define variables
	div = document.getElementById(id);
	upArrow = id+'_up';
	downArrow = id+'_down';
	maxPosition = (div.scrollHeight - div.offsetHeight);
	curPosition = (div.scrollTop);
	
	//Check for overflow
	if(div.scrollHeight <= div.offsetHeight) {
		document.getElementById(upArrow).style.backgroundImage = 'url(_graphics/scroll_up_grey.png)';
		document.getElementById(upArrow).style.cursor = 'default';
		document.getElementById(downArrow).style.backgroundImage = 'url(_graphics/scroll_down_grey.png)';
		document.getElementById(downArrow).style.cursor = 'default';
	}
	
	else {
	
		if(curPosition >= maxPosition) {	//Bottom
			document.getElementById(id).scrollTop = maxPosition;
			document.getElementById(upArrow).style.backgroundImage = 'url(_graphics/scroll_up.png)';
			document.getElementById(upArrow).style.cursor = 'pointer';
			document.getElementById(downArrow).style.backgroundImage = 'url(_graphics/scroll_down_grey.png)';
			document.getElementById(downArrow).style.cursor = 'default';
		}
			
		else if(curPosition <= 0) {		//Top
			document.getElementById(id).scrollTop = 0;
			document.getElementById(upArrow).style.backgroundImage = 'url(_graphics/scroll_up_grey.png)';
			document.getElementById(upArrow).style.cursor = 'default';
			document.getElementById(downArrow).style.backgroundImage = 'url(_graphics/scroll_down.png)';
			document.getElementById(downArrow).style.cursor = 'pointer';
		}
			
		else {	//Center
			document.getElementById(upArrow).style.backgroundImage = 'url(_graphics/scroll_up.png)';
			document.getElementById(upArrow).style.cursor = 'pointer';
			document.getElementById(downArrow).style.backgroundImage = 'url(_graphics/scroll_down.png)';
			document.getElementById(downArrow).style.cursor = 'pointer';
		}
	}
}