function exO(a){return Math.round(a)+"px"} 

GMap2.prototype.applyZoom = function(a) 
{ 
        var b = this; 
        var c = Math.floor(Math.log(b.viewSize.width) * Math.LOG2E - 2); 
        var d = b.zoomLevel - a; 
        if (d > c) 
        { 
                d = c; 
        } 
        else if (d < -c) 
        { 
                d = -c; 
        } 


        var e = Math.pow(2, d); 
        b.style.zoom = e; 
        var f = b.viewSize.width * b.centerScreen.x; 
        var h = b.viewSize.height * b.centerScreen.y; 
        b.style.left = exO((this._savedOffset.x - f) * e + f); 
        b.style.top = exO((this._savedOffset.y - h) * e + h); 



} 


GMap2.prototype.smoothZoomTo = function(newZoom) 
{ 
        var a = this; 

        if (a.zoom == undefined) 
        { 
                a.setZoom(newZoom); 
                return; 
        } 


        a._currentZoom = parseInt(a.getZoom()); 
        a._targetZoom = newZoom; 
        a._savedOffset={"x" : a.offsetLeft, "y" : a.offsetTop}; 
        a.hideOverlays(); 


        this._zoomInterval = setInterval(function() { 
                a._currentZoom += 0.3 * (a._targetZoom - a._currentZoom); 


                if (Math.abs(a._targetZoom - a._currentZoom) < 0.05) 
                { 
                        if (a._savedOffset) 
                        { 
                                a.style.left=exO(a._savedOffset.x); 
                                a.style.top=exO(a._savedOffset.y); 
                        } 
                        a.style.zoom = 1; 
                        a.showOverlays(); 
                        a.setZoom(a._targetZoom); 
                        a._savedOffset = null; 
                        window.clearInterval(a._zoomInterval); 
                } 
                else 
                { 
                        a.applyZoom(a._currentZoom); 
                } 
        }, 50); 



} 


function myZoom(oEvent, scr) 
{ 
        var new_zoom = map.getZoom(); 
        if (scr >= 120) 
                 new_zoom++; 
        else 
                
                new_zoom--;

        map.smoothZoomTo(new_zoom); 
        if (oEvent.preventDefault) 
                oEvent.preventDefault(); 



} 

function hookMouseWheelHandlers(id) 
{ 
        var d = document.getElementById(id); 
        if (d) 
        { 
                try 
                { 
                        if (document.body.addEventListener) 
                                d.addEventListener('DOMMouseScroll', function(oEvent) { 
myZoom(oEvent, oEvent.detail * -40); }, false); 
                        else 
                                d.onmousewheel = function() { myZoom(event, event.wheelDelta); return 
false; } 
                } catch (ex) {} 
        } 


} 

