function hookMouseWheel()
{
    if (window.addEventListener)
        window.addEventListener('DOMMouseScroll', onMouseWheel, false);
    window.onmousewheel = document.onmousewheel = onMouseWheel;
}

function isOverSwf(mEvent)
{
    var elem;
    var eleme;
    if (mEvent.srcElement) {
        elem = mEvent.srcElement.nodeName;
        eleme = mEvent.srcElement;
    } else if (mEvent.target) {
    	elem = mEvent.target.nodeName;
    	eleme = mEvent.target;
    }
    if (eleme.name == "map" && (elem.toLowerCase() == "object" || elem.toLowerCase() == "embed")) {
        return true;
    }
    return false;
}

function onMouseWheel(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 (isOverSwf(event)) {
			callExternalInterface(delta);
    	 	return cancelEvent(event);
	}

    return true;
}

function log(e)
{
	//console.log(e);
}

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;
}

hookMouseWheel();


function callExternalInterface(delta)
{
	var mo = thisMovie("map");
	
	if(mo[1])
		mo = mo[1];

	mo.mouseWheel(delta);
}

function thisMovie(movieName)
{
   if (navigator.appName.indexOf("Microsoft") != -1){
	   return window[movieName];
    }
    else {
        return document[movieName];
    }
}

