/**
 * SWFMacMouseWheel v1.0: Mac Mouse Wheel functionality in flash - http://blog.pixelbreaker.com/
 *
 * SWFMacMouseWheel is (c) 2006 Gabriel Bucknall and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Dependencies: 
 * SWFObject v2.0 - (c) 2006 Geoff Stearns.
 * http://blog.deconcept.com/swfobject/
 */
 
var mw_keepDeltaAtPlusMinusThree = true; // let's not allow other deltas than +/- 3 because that's what flash player does

function SWFMacMouseWheel( swfObject )
{
	this.so = swfObject;
	var isMac = navigator.appVersion.toLowerCase().indexOf( "mac" ) != -1;
	if( isMac ) this.init();
}

SWFMacMouseWheel.prototype = {
	init: function()
	{
		SWFMacMouseWheel.instance = this;
	},
	
	mousewheelhandler: function()
	{
		if (window.addEventListener)
		{
	        window.addEventListener('DOMMouseScroll', SWFMacMouseWheel.instance.wheel, false);
		}
		window.onmousewheel = document.onmousewheel = SWFMacMouseWheel.instance.wheel;

	},
	
	activateWheelListener: function(){
		this.deactivateWheelListener();
		this.mousewheelhandler();
	},
	
	deactivateWheelListener: function(){
		if (window.addEventListener)
		{
	        window.removeEventListener('DOMMouseScroll', SWFMacMouseWheel.instance.wheel, false);
		}
		window.onmousewheel = null;
		document.onmousewheel = null;
	},
	
	handle: function( delta, x, y )
	{
		document[ this.so.getAttribute('id') ].externalMouseEvent( delta, x, y );
	},

	wheel: function(event){
        var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
			// Safari
			delta = event.wheelDelta/120;
			//if (window.opera) delta = -delta;
		} else if (event.detail) {
			// Firefox
			delta = -event.detail*3;
		}
		if (mw_keepDeltaAtPlusMinusThree) {
			if (delta > 0) delta = 3;
			if(delta < 0){
				delta = -3;
			}
		}
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta){
	        // handle mouse events here:
			var thisMouse;
			if ((navigator.userAgent.indexOf('Firefox') != -1) || (navigator.userAgent.indexOf('Camino') != -1)) thisMouse = {x:event.layerX, y:event.layerY};
			else if (navigator.userAgent.indexOf('Safari') != -1) thisMouse = {x:event.offsetX, y:event.offsetY};
			else if (navigator.userAgent.indexOf('Opera') != -1) thisMouse = {x:event.offsetX, y:event.offsetY};
			else thisMouse = {x:event.offsetX, y:event.offsetY};
			
			SWFMacMouseWheel.instance.handle(delta, thisMouse.x, thisMouse.y);
			//else alert("osxmousewheel: ExternalInferface function dispatchExternalMouseWheelEvent not found");
        }
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
	}
};