
Drupal.gmap.addHandler('gmap', function(elem) {
  var obj = this;
  obj.bind('init', function() {
    $.each(obj.vars.overlay, function(i,d) {
      switch (d.type) {
        case 'wms':

var MAGIC_NUMBER=6356752.3142;
var DEG2RAD=0.0174532922519943;
var PI=3.14159267;

var FORMAT_DEFAULT="image/png";

function dd2MercMetersLng(p_lng) {
return MAGIC_NUMBER*(p_lng*DEG2RAD);
}

function dd2MercMetersLat(p_lat) {
if (p_lat >= 85) p_lat=85;
if (p_lat <= -85) p_lat=-85;
return MAGIC_NUMBER*Math.log(Math.tan(((p_lat*DEG2RAD)+(PI/2)) /2));
}

CustomGetTileUrlMTNOPS=function(a,b,c) {
if (typeof(window['this.myMercZoomLevel'])=="undefined") this.myMercZoomLevel=0;
if (typeof(window['this.myStyles'])=="undefined") this.myStyles="";
var lULP = new GPoint(a.x*256,(a.y+1)*256);
var lLRP = new GPoint((a.x+1)*256,a.y*256);
var lUL = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lULP,b,c);
var lLR = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lLRP,b,c);
if (this.myMercZoomLevel!=0 && map.getZoom() < this.myMercZoomLevel) {
    var lBbox=dd2MercMetersLng(lUL.lngDegrees)+","+dd2MercMetersLat(lUL.latDegrees)+","+dd2Me
rcMetersLng(lLR.lngDegrees)+","+dd2MercMetersLat(lLR.latDegrees);
    var lSRS="EPSG:54004";
} else {
    var lBbox=lUL.x+","+lUL.y+","+lLR.x+","+lLR.y;
    var lSRS="EPSG:4326";
}
var lURL=this.myBaseURL;
lURL+="&REQUEST=GetMap";
lURL+="&SERVICE=WMS";
lURL+="&reaspect=false&VERSION=1.1.1";
lURL+="&LAYERS="+this.myLayers;
lURL+="&STYLES="+this.myStyles;
lURL+="&FORMAT="+this.myFormat;
lURL+="&BGCOLOR=0xFFFFFF";
lURL+="&TRANSPARENT=TRUE";
lURL+="&SRS="+lSRS;
lURL+="&BBOX="+lBbox;
lURL+="&WIDTH=256";
lURL+="&HEIGHT=256";
lURL+="&GroupName="+this.myLayers;
return lURL;
}

function customOpacity() { return this.myOpacity; }


var tileNex = new GTileLayer(new GCopyrightCollection(""),1,17);
tileNex.myLayers='nexrad-n0r';
tileNex.myFormat='image/png';
tileNex.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?';
tileNex.getTileUrl=CustomGetTileUrlMTNOPS;
tileNex.getOpacity = function() {return 0.7;}

var tileDrg = new GTileLayer(new GCopyrightCollection(""),1,17);
tileDrg.myLayers='drg';
tileDrg.myFormat='image/jpeg';
tileDrg.myBaseURL='http://terraservice.net/ogcmap.ashx?';
tileDrg.getTileUrl=CustomGetTileUrlMTNOPS;

var tileSTP= new GTileLayer(new GCopyrightCollection(""),1,17);
tileSTP.myLayers='nexrad-ntp';
tileSTP.myFormat='image/png';
tileSTP.myBaseURL='http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/ntp.cgi?';
tileSTP.getTileUrl=CustomGetTileUrlMTNOPS;
tileSTP.getOpacity = function() {return 0.7;}

var layer3=[G_SATELLITE_MAP.getTileLayers()[0],G_HYBRID_MAP.getTileLayers()[1],tileSTP,tileNex];
var layer4=[tileDrg];

var custommap3 = new GMapType(layer3, G_SATELLITE_MAP.getProjection(), "Weather", G_SATELLITE_MAP);
var custommap4 = new GMapType(layer4, G_SATELLITE_MAP.getProjection(), "Topo", G_SATELLITE_MAP);

obj.map.addMapType(custommap3);
obj.map.addMapType(custommap4);

obj.map.addMapType(G_SATELLITE_3D_MAP);

          break;
      }
    });
  });
});
