function DragZoomControl(b,c,f){this.globals={draggingOn:false,cornerTopDiv:null,cornerRightDiv:null,cornerBottomDiv:null,cornerLeftDiv:null,mapPosition:null,outlineDiv:null,mapWidth:0,mapHeight:0,mapRatio:0,startX:0,startY:0,borderCorrection:0};this.globals.style={opacity:0.2,fillColor:"#000",border:"2px solid blue"};var e=this.globals.style;for(var d in b){e[d]=b[d]}var a=e.border.split(" ");e.outlineWidth=parseInt(a[0].replace(/\D/g,""));e.outlineColor=a[2];e.alphaIE="alpha(opacity="+(e.opacity*100)+")";this.globals.backStack=[];this.globals.options={buttonHTML:"zoom ...",buttonStartingStyle:{width:"52px",border:"1px solid black",padding:"2px"},buttonStyle:{background:"#FFF"},backButtonHTML:"zoom back",backButtonStyle:{background:"#FFF",display:"none"},buttonZoomingHTML:"Drag a region on the map",buttonZoomingStyle:{background:"#FF0"},overlayRemoveTime:6000,backButtonEnabled:false,stickyZoomEnabled:false,rightMouseZoomOutEnabled:false,minDragSize:0};for(var d in c){this.globals.options[d]=c[d]}if(f==null){f={}}this.globals.callbacks=f}DragZoomControl.prototype=new GControl();DragZoomControl.prototype.saveMapContext=function(a){if(this.globals.options.backButtonEnabled){this.saveBackContext_(a,true);this.globals.backButtonDiv.style.display="block"}};DragZoomControl.prototype.initiateZoom=function(){this.buttonclick_()};DragZoomControl.prototype.initiateZoomBack=function(){if(this.globals.options.backButtonEnabled){this.backbuttonclick_()}};DragZoomControl.prototype.initButton_=function(a){var b=this.globals;var c=document.createElement("div");c.innerHTML=b.options.buttonHTML;DragZoomUtil.style([c],{cursor:"pointer",zIndex:200});DragZoomUtil.style([c],b.options.buttonStartingStyle);DragZoomUtil.style([c],b.options.buttonStyle);a.appendChild(c);return c};DragZoomControl.prototype.initBackButton_=function(a){var b=this.globals;var c=document.createElement("div");c.innerHTML=b.options.backButtonHTML;DragZoomUtil.style([c],{cursor:"pointer",zIndex:200});DragZoomUtil.style([c],b.options.buttonStartingStyle);DragZoomUtil.style([c],b.options.backButtonStyle);a.appendChild(c);return c};DragZoomControl.prototype.setButtonMode_=function(b){var a=this.globals;if(b=="zooming"){a.buttonDiv.innerHTML=a.options.buttonZoomingHTML;DragZoomUtil.style([a.buttonDiv],a.options.buttonStartingStyle);DragZoomUtil.style([a.buttonDiv],a.options.buttonZoomingStyle)}else{a.buttonDiv.innerHTML=a.options.buttonHTML;DragZoomUtil.style([a.buttonDiv],a.options.buttonStartingStyle);DragZoomUtil.style([a.buttonDiv],a.options.buttonStyle)}};DragZoomControl.prototype.initialize=function(b){var k=this.globals;var g=this;var l=b.getContainer();var m=document.createElement("div");DragZoomUtil.style([m],{cursor:"pointer",zIndex:150});var j=this.initButton_(m);var c=this.initBackButton_(m);l.appendChild(m);var e=document.createElement("div");var h=["outlineDiv","cornerTopDiv","cornerLeftDiv","cornerRightDiv","cornerBottomDiv"];for(var f=0;f=g.options.minDragSize&&a.height>=g.options.minDragSize){var n=new GPoint(a.startX,a.startY);var p=new GPoint(a.endX,a.startY);var j=new GPoint(a.endX,a.endY);var h=new GPoint(a.startX,a.endY);var s=g.map.fromContainerPixelToLatLng(n);var d=g.map.fromContainerPixelToLatLng(p);var t=g.map.fromContainerPixelToLatLng(j);var l=g.map.fromContainerPixelToLatLng(h);var o=new GPolyline([s,d,t,l,s],g.style.outlineColor,g.style.outlineWidth+1,0.4);try{g.map.addOverlay(o);setTimeout(function(){g.map.removeOverlay(o)},g.options.overlayRemoveTime)}catch(q){}var m=o.getBounds();var d=m.getNorthEast();var l=m.getSouthWest();var t=new GLatLng(l.lat(),d.lng());var s=new GLatLng(d.lat(),l.lng());if(g.options.rightMouseZoomOutEnabled&&g.draggingRightMouse){var f=g.map.getBounds().toSpan();var b=m.toSpan();var i=Math.max(f.lat()/b.lat(),f.lng()/b.lng());var k=g.map.getZoom()-Math.ceil(Math.log(i,2))}else{var k=g.map.getBoundsZoomLevel(m)}var r=m.getCenter();g.map.setCenter(r,k);if(g.callbacks.dragend!=null){g.callbacks.dragend(s,d,t,l,n,p,j,h)}}if(g.options.stickyZoomEnabled){this.initCover_();if(g.options.backButtonEnabled){this.saveBackContext_(g.options.backButtonHTML,false)}g.backButtonDiv.style.display="none"}}};DragZoomControl.prototype.setDimensions_=function(){var a=this.globals;var b=a.map.getSize();a.mapWidth=b.width;a.mapHeight=b.height;a.mapRatio=a.mapHeight/a.mapWidth;DragZoomUtil.style([a.mapCover,a.cornerTopDiv,a.cornerRightDiv,a.cornerBottomDiv,a.cornerLeftDiv],{top:"0px",left:"0px",width:a.mapWidth+"px",height:a.mapHeight+"px"})};DragZoomControl.prototype.initStyles_=function(){var a=this.globals;DragZoomUtil.style([a.mapCover,a.cornerTopDiv,a.cornerRightDiv,a.cornerBottomDiv,a.cornerLeftDiv],{filter:a.style.alphaIE,opacity:a.style.opacity,background:a.style.fillColor});a.outlineDiv.style.border=a.style.border};DragZoomControl.prototype.buttonclick_=function(){var a=this.globals;a.backButtonDiv.style.display="none";if(a.mapCover.style.display=="block"){this.resetDragZoom_();if(a.options.backButtonEnabled){this.restoreBackContext_();if(a.backStack.length==0){a.backButtonDiv.style.display="none"}}}else{this.initCover_();if(a.options.backButtonEnabled){this.saveBackContext_(a.options.backButtonHTML,false)}}};DragZoomControl.prototype.backbuttonclick_=function(){var a=this.globals;if(a.options.backButtonEnabled&&a.backStack.length>0){this.restoreBackContext_();if(a.callbacks.backbuttonclick!=null){a.callbacks.backbuttonclick(a.methodCall)}}};DragZoomControl.prototype.saveBackContext_=function(d,a){var b=this.globals;var c={};c.center=b.map.getCenter();c.zoom=b.map.getZoom();c.maptype=b.map.getCurrentMapType();c.text=b.backButtonDiv.innerHTML;c.methodCall=a;b.backStack.push(c);b.backButtonDiv.innerHTML=d};DragZoomControl.prototype.restoreBackContext_=function(){var a=this.globals;var b=a.backStack.pop();a.map.setCenter(b.center,b.zoom,b.maptype);a.backButtonDiv.innerHTML=b.text;a.methodCall=b.methodCall;if(a.backStack.length==0){a.backButtonDiv.style.display="none"}};DragZoomControl.prototype.initCover_=function(){var a=this.globals;a.mapPosition=DragZoomUtil.getElementPosition(a.map.getContainer());this.setDimensions_();this.setButtonMode_("zooming");DragZoomUtil.style([a.mapCover],{display:"block",background:a.style.fillColor});DragZoomUtil.style([a.outlineDiv],{width:"0px",height:"0px"});if(a.callbacks.buttonclick!=null){a.callbacks.buttonclick()}};DragZoomControl.prototype.getRelPos_=function(b){var c=DragZoomUtil.getMousePosition(b);var a=this.globals;return{top:(c.top-a.mapPosition.top),left:(c.left-a.mapPosition.left)}};DragZoomControl.prototype.getRectangle_=function(d,b,h,e){var g=false;var f=false;var c=h.left-d;var a=h.top-b;if(c<0){c=c*-1;g=true}if(a<0){a=a*-1;f=true}delta=c>a?c:a;return{startX:d,startY:b,endX:d+delta,endY:b+parseInt(delta*e),width:delta,height:parseInt(delta*e),left:g,top:f}};DragZoomControl.prototype.resetDragZoom_=function(){var a=this.globals;DragZoomUtil.style([a.mapCover,a.cornerTopDiv,a.cornerRightDiv,a.cornerBottomDiv,a.cornerLeftDiv],{display:"none",opacity:a.style.opacity,filter:a.style.alphaIE});a.outlineDiv.style.display="none";this.setButtonMode_("normal");if(a.options.backButtonEnabled&&(a.backStack.length>0)){a.backButtonDiv.style.display="block"}};var DragZoomUtil={};DragZoomUtil.gE=function(a){return document.getElementById(a)};DragZoomUtil.getMousePosition=function(a){var c=0;var b=0;if(!a){var a=window.event}if(a.pageX||a.pageY){c=a.pageX;b=a.pageY}else{if(a.clientX||a.clientY){c=a.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);b=a.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop)}}return{left:c,top:b}};DragZoomUtil.getElementPosition=function(c){var b=c.offsetLeft;var a=c.offsetTop;var d=c.offsetParent;while(d!=null){b+=d.offsetLeft;a+=d.offsetTop;d=d.offsetParent}return{left:b,top:a}};DragZoomUtil.style=function(d,c){if(typeof(d)=="string"){d=DragZoomUtil.getManyElements(d)}for(var a=0;a