function SWFMouseWheelExternal( id )
{
	this.swf_id = id;
	this.bol_isScrollable = false;
	this.init();
}

SWFMouseWheelExternal.prototype = {
	init: function()
	{
		SWFMouseWheelExternal.instance = this;
		if (window.addEventListener) {
			window.addEventListener('DOMMouseScroll', SWFMouseWheelExternal.instance.onMouseWheel, false);
		}
		window.onmousewheel = document.onmousewheel = SWFMouseWheelExternal.instance.onMouseWheel;
    
	},
	
	isScrollable: function ()
	{
		return SWFMouseWheelExternal.instance.bol_isScrollable;
	},
	
	setIsScrollable: function (bol_which)
	{
		SWFMouseWheelExternal.instance.bol_isScrollable = bol_which;
	},
	
	onMouseWheel: function(event)
	{
		//alert('wheel event.wheelDelta:' + event.wheelDelta + " event.detail:" + event.detail);
		var delta = 0;
	    if (!event) //IE
    	    event = window.event;
	    if (event.wheelDelta) {  //IE/Opera
    	    delta = event.wheelDelta/120;
        	if (window.opera) delta = -delta;
	    } else if (event.detail) { //mozilla
    	    delta = -event.detail/3;
	    }
    	if( /AppleWebKit/.test(navigator.userAgent) ) {	
	        delta /= 3;	    
	    }
	    
	    var out = true;
	   // alert("SWFMouseWheelExternal.instance.isScrollable():" + SWFMouseWheelExternal.instance.isScrollable());
	    if (SWFMouseWheelExternal.instance.isScrollable()) {
    		var bolCancelEvent = true;
	    	if (delta) {
    			var func = document[ SWFMouseWheelExternal.instance.swf_id ].externalMouseEvent;
    			if (func != null) {
    				document[ SWFMouseWheelExternal.instance.swf_id ].externalMouseEvent( delta );
    				bolCancelEvent = document[ SWFMouseWheelExternal.instance.swf_id ].getScrollExternalDom();
	    		}
    		}
    		
    		if (bolCancelEvent) out = SWFMouseWheelExternal.instance.cancelEvent(event);
	    	
    	}
    	
	    return out;
	},

	cancelEvent: function(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;
	}
	
}