/* uses code from: http://adomas.org/javascript-mouse-wheel/ */

/* get screensize */
function getScreenSize() {
	// get screen size
	var x = y = 0;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}

	return [x,y];
}

/* handle the scrolling of the map */
function handle(delta) {
	// get screen size
	var screensize = getScreenSize();
	
	// get sizes
	var mapLargeHeight = parseInt(Element.getStyle('map_large', 'height'));
	var mapSmallHeight = parseInt(Element.getStyle('map_small', 'height'));
	var mapMarkerHeight = parseInt(document.getElementById('map_marker').style.height);
	
	// get margins
	var oldMarginTop = parseInt(Element.getStyle('map_large', 'margin-top'));
	var newMarginTop = oldMarginTop + (delta*5);	
	var maxMarginTop = screensize[1] - mapLargeHeight;
	
	if (document.getElementById('map_marker').style.top) {
		oldMarkerTop = parseInt(document.getElementById('map_marker').style.top);
	} else {
		oldMarkerTop = 0;
		document.getElementById('map_marker').style.top = oldMarkerTop + 'px';
	}
	var newMarkerTop = oldMarkerTop - (delta*(5/(mapLargeHeight/mapSmallHeight)));
	var maxMarkerTop = mapSmallHeight - mapMarkerHeight;
	
	// scroll map up/down
	if (newMarginTop <= 0) {
		if (newMarginTop > maxMarginTop) {
			Element.setStyle('map_large', {marginTop: parseInt(newMarginTop)+'px'} );
		}
	}
	
	// scroll map marker up/down
	if (newMarkerTop >= 0) {
		if (newMarkerTop < maxMarkerTop) {
			document.getElementById('map_marker').style.top = parseInt(newMarkerTop) + 'px';
		}
	}
	
}

/* check for mousewheel use */
function wheel(event){
	var delta = 0;
	if (!event) {
		event = window.event;
	}
	if (event.wheelDelta) {
		delta = event.wheelDelta/120; 
		if (window.opera) {
			delta = -delta;
		}
	} else if (event.detail) {
		delta = -event.detail/3;
	}
	if (delta) {
		handle(delta);
        if (event.preventDefault) {
                event.preventDefault();
		}
        event.returnValue = false;
	}
}

/* Initialization code. */
if (window.addEventListener) {
	window.addEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = wheel;