
var NukeMapper={init:function(options){var mapId=options.mapId;var staXml=(typeof(options.staXml)!="undefined")?options.staXml:'stas.xml';var evsXml=options.evsXml;var nukesXml=options.nukesXml;var faultsXml=(typeof(options.faultsXml)!="undefined")?options.faultsXml:false;var faultStyle=(typeof(options.faultStyle)!="undefined")?options.faultStyle:false;var iconPath=options.iconPath;var lat=(typeof(options.center[0])!="undefined")?options.center[0]:'33';var lon=(typeof(options.center[1])!="undefined")?options.center[1]:'-120';var defaultZoom=(typeof(options.defaultZoom)!="undefined")?options.defaultZoom:5;var mapType=(typeof(options.mapType)!="undefined")?options.mapType:'G_PHYSICAL_MAP';var maxZoom=(typeof(options.maxZoom)!="undefined")?options.maxZoom:13;var noticeDiv=(typeof(options.noticeDiv)!="undefined")?options.noticeDiv:'notice';var myPolyline=[],myMarkers=[];var staicon=new GIcon();staicon.image=iconPath+"/sta_icon.gif";staicon.iconSize=new GSize(26,26);staicon.iconAnchor=new GPoint(8,8);staicon.infoWindowAnchor=new GPoint(8,17);var nukeicon=new GIcon();nukeicon.image=iconPath+"/nuke_icon.gif";nukeicon.iconSize=new GSize(32,32);nukeicon.iconAnchor=new GPoint(8,8);nukeicon.infoWindowAnchor=new GPoint(8,17);var evicon=new GIcon();evicon.iconAnchor=new GPoint(15,15);evicon.infoWindowAnchor=new GPoint(15,15);var map=new google.maps.Map2(document.getElementById(mapId));map.setCenter(new google.maps.LatLng(lat,lon),defaultZoom);map.setUIToDefault();map.addMapType(G_PHYSICAL_MAP);map.setMapType(mapType);function HtmlControl(html){this.html=html;}
HtmlControl.prototype=new GControl(true,false);HtmlControl.prototype.initialize=function(map){var container=document.createElement('div');var extra=document.createElement('div');extra.innerHTML=this.html;container.appendChild(extra);map.getContainer().appendChild(container);return container;};var securityHtml='<div id="'+noticeDiv+'">For security reasons station locations ';securityHtml+='have been removed for this level of zoom</div>';var securityContent=new HtmlControl(securityHtml);GEvent.addListener(map,"zoomend",function(oldzoom,zoom){if(zoom>=maxZoom){map.addControl(securityContent,new GControlPosition(G_ANCHOR_BOTTOM_LEFT,new GSize(3,40)));}else{map.removeControl(securityContent);}});function raiseError(err){alert('You have not defined a '+err+'. Fatal error. Exiting.');}
function iconTypeSize(mag){var iconInfo=[];var roundedMag=Math.ceil(mag);if(mag>=9){iconInfo[0]=iconPath+"/evstar_red_5.png";iconInfo[1]=60;iconInfo[2]=58;}else if(mag>=8){iconInfo[0]=iconPath+"/evstar_red_5.png";iconInfo[1]=60;iconInfo[2]=58;}else if(mag>=7){iconInfo[0]=iconPath+"/evstar_red_5.png";iconInfo[1]=60;iconInfo[2]=58;}else if(mag>=6){iconInfo[0]=iconPath+"/evstar_red_5.png";iconInfo[1]=60;iconInfo[2]=58;}else if(mag>=5){iconInfo[0]=iconPath+"/evstar_red_"+roundedMag+".png";iconInfo[1]=60;iconInfo[2]=58;}else if(mag>=4){iconInfo[0]=iconPath+"/evstar_red_"+roundedMag+".png";iconInfo[1]=52;iconInfo[2]=50;}else if(mag>=3){iconInfo[0]=iconPath+"/evstar_red_"+roundedMag+".png";iconInfo[1]=42;iconInfo[2]=41;}else if(mag>=2){iconInfo[0]=iconPath+"/evstar_orange_"+roundedMag+".png";iconInfo[1]=30;iconInfo[2]=28;}else if(mag>=1){iconInfo[0]=iconPath+"/evstar_orange_"+roundedMag+".png";iconInfo[1]=20;iconInfo[2]=20;}else{iconInfo[0]=iconPath+"/evstar_orange_"+roundedMag+".png";iconInfo[1]=20;iconInfo[2]=20;}
return iconInfo;}
function createEventMarker(evpoint,evmag,evcontent){var eviconInfo=iconTypeSize(evmag);console.log('making event marker of mag '+evmag);var markerIcon=new GIcon(evicon);markerIcon.image=eviconInfo[0];markerIcon.iconSize=new GSize(eviconInfo[1],eviconInfo[2]);markerOptions={icon:markerIcon};var marker=new GMarker(evpoint,markerOptions);GEvent.addListener(marker,'click',function(){marker.openInfoWindowHtml(evcontent);});return marker;}
function createStaMarker(stapoint,stacontent){var stamarkerIcon=new GIcon(staicon);var stamarkerOptions={icon:stamarkerIcon};var stamarker=new GMarker(stapoint,stamarkerOptions);GEvent.addListener(stamarker,'click',function(){stamarker.openInfoWindowHtml(stacontent);});return stamarker;}
function createNukeMarker(nukepoint,nukemag,nukecontent){var nukemarkerIcon=new GIcon(nukeicon);var nukemarkerOptions={icon:nukemarkerIcon};var nukemarker=new GMarker(nukepoint,nukemarkerOptions);GEvent.addListener(nukemarker,'click',function(){nukemarker.openInfoWindowHtml(nukecontent);});return nukemarker;}
function createFault(abbrev,label,filename){$.ajax({type:"GET",url:filename,dataType:"xml",success:function(faultdata){var faultPoly=[];$(faultdata).find("marker").each(function(){var fltmarkers=$(this);var point=new GLatLng(parseFloat(fltmarkers.attr("lat"),10),parseFloat(fltmarkers.attr("lng"),10));faultPoly.push(point);});myPolyline[abbrev]=new GPolyline(faultPoly,faultStyle.color,faultStyle.weight,faultStyle.opacity,{clickable:faultStyle.clickable});GEvent.addListener(myPolyline[abbrev],"click",function(faultPoly){map.openInfoWindow(faultPoly,"<p><strong>"+label+"</strong></p>");});map.addOverlay(myPolyline[abbrev]);},error:function(){alert("Could not load fault "+label+" from file ("+filename+")");}});}
function loadEvs(){$.ajax({type:"GET",url:evsXml,dataType:"xml",success:function(data){$(data).find("event").each(function(){var markers=$(this);var point=new GLatLng(markers.attr("lat"),markers.attr("lon"));var mag=markers.attr("mag");var content="<div class='infoBox'><table>";content+="<tr><th>Latitude:</th><td>"+markers.attr("lat")+"</td></tr>";content+="<tr><th>Longitude:</th><td>"+markers.attr("lon")+"</td></tr>";content+="<tr><th>Depth (km):</th><td>"+markers.attr("depth")+"</td></tr>";content+="<tr><th>Magnitude:</th><td>"+mag+"</td></tr>";content+="<tr><th>UTC Time:</th><td>"+markers.attr("utctime")+"</td></tr>";content+="<tr><th>Author:</th><td>"+markers.attr("author")+"</td></tr>";content+="</table></div>";var marker=createEventMarker(point,mag,content);map.addOverlay(marker);});},error:function(){alert("Could not load earthquake placemarkers from file "+evsXml);}});}
function loadNukes(){$.ajax({type:"GET",url:nukesXml,dataType:"xml",success:function(data){$(data).find("event").each(function(){var markers=$(this);var point=new GLatLng(markers.attr("lat"),markers.attr("lon"));var mag=markers.attr("mag");var content="<div class='infoBox'><table>";content+="<tr><th>Latitude:</th><td>"+markers.attr("lat")+"</td></tr>";content+="<tr><th>Longitude:</th><td>"+markers.attr("lon")+"</td></tr>";content+="<tr><th>Depth (km):</th><td>"+markers.attr("depth")+"</td></tr>";content+="<tr><th>Magnitude:</th><td>"+mag+"</td></tr>";content+="<tr><th>UTC Time:</th><td>"+markers.attr("utctime")+"</td></tr>";content+="<tr><th>Author:</th><td>"+markers.attr("author")+"</td></tr>";content+="</table></div>";var marker=createNukeMarker(point,mag,content);map.addOverlay(marker);});},error:function(){alert("Could not load earthquake placemarkers from file "+evsXml);}});}
function loadStas(){$.ajax({type:"GET",url:staXml,dataType:"xml",success:function(stas){$(stas).find("station").each(function(){var stamark=$(this);var stapoint=new GLatLng(stamark.find("lat").text(),stamark.find("lon").text());var stacontent="<p><strong>"+stamark.attr('name')+"</strong><br/>"+stamark.find("staname").text()+"</p>";var stamarker=createStaMarker(stapoint,stacontent);myMarkers.push(stamarker);map.addOverlay(stamarker);});},error:function(){alert("Could not load Anza station locations");}});}
function loadFaults(){$.each(faultsXml,function(i){createFault(this.abbrev,this.label,this.file);});}
function zoomControlMarkers(){var mgr=new GMarkerManager(map);mgr.addMarkers(myMarkers,0,(maxZoom-1));mgr.refresh;}
if(!mapId){raiseError('Google map div');}
if(!evsXml){raiseError('events xml file');}
if(!faultsXml&&faultStyle){raiseError('fault style but you have defined some faults to plot');}
if(faultsXml&&!faultStyle){raiseError('any faults to plot but you have defined styles for them');}
if(staXml){loadStas();}
if(faultsXml){loadFaults();}
loadEvs();loadNukes();window.setTimeout(zoomControlMarkers,0);return true;}};
