var map,pointMap={};pointMap.inflectionLng=-101.9;pointMap.isFront=true;pointMap.mapTypeIndex=0;pointMap.markers={};var arrowMarker=new GIcon;arrowMarker.image="/img/pointmap/arrow.png";arrowMarker.shadow="/img/pointmap/arrow_shadow.png";arrowMarker.iconSize=new GSize(39,34);arrowMarker.shadowSize=new GSize(39,34);arrowMarker.iconAnchor=new GPoint(10,34);arrowMarker.infoWindowAnchor=new GPoint(10,0);function EuclideanProjection(e){this.pixelsPerLonDegree=[];this.pixelsPerLonRadian=[];this.pixelOrigo=[];this.tileBounds=[];for(var a=256,b=1,c=0;c<e;c++){var d=a/2;this.pixelsPerLonDegree.push(a/360);this.pixelsPerLonRadian.push(a/(2*Math.PI));this.pixelOrigo.push(new GPoint(d,d));this.tileBounds.push(b);a*=2;b*=2}}EuclideanProjection.prototype=new GProjection;EuclideanProjection.prototype.fromLatLngToPixel=function(b,a){var c=Math.round(this.pixelOrigo[a].x+b.lng()*this.pixelsPerLonDegree[a]),d=Math.round(this.pixelOrigo[a].y+-2*b.lat()*this.pixelsPerLonDegree[a]);return new GPoint(c,d)};EuclideanProjection.prototype.fromPixelToLatLng=function(b,a,c){var d=(b.x-this.pixelOrigo[a].x)/this.pixelsPerLonDegree[a],e=-.5*(b.y-this.pixelOrigo[a].y)/this.pixelsPerLonDegree[a];return new GLatLng(e,d,c)};EuclideanProjection.prototype.tileCheckRange=function(a,c){var b=this.tileBounds[c];if(a.y<0||a.y>=b)return false;if(a.x<0||a.x>=b){a.x=a.x%b;if(a.x<0)a.x+=b}return true};EuclideanProjection.prototype.getWrapWidth=function(a){return this.tileBounds[a]*256};function getCustomMapType(f,e){var b=new GCopyrightCollection("Chart"),c=new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0,"&copy;2007 <a href='http://www.rootdown.us/'>Rootdown.us</a>");b.addCopyright(c);var a=[new GTileLayer(b,0,17)];a[0].getTileUrl=CustomGetTileUrl;a[0].imagePath=e;var d=new GMapType(a,new EuclideanProjection(18),f,{errorMessage:""});return d}function getOverlayedMapType(g,f,c){var b=new GCopyrightCollection("Chart"),d=new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),0,"&copy;2007 <a href='http://www.rootdown.us/'>Rootdown.us</a>");b.addCopyright(d);var a=[new GTileLayer(b,0,17),new GTileLayer(b,0,17)];a[0].getTileUrl=CustomGetTileUrl;a[0].imagePath=f;a[1].getTileUrl=CustomGetOverlayTileUrl;a[1].imagePath=c;a[1].getOpacity=function(){return .4};var e=new GMapType(a,new EuclideanProjection(18),g,{errorMessage:""});return e}function load(){if(GBrowserIsCompatible()){var c=parseInt(document.getElementById("hdLat").value),d=parseInt(document.getElementById("hdLng").value),b=parseInt(document.getElementById("hdZoom").value);map=new GMap2(document.getElementById("map"));map.setCenter(new GLatLng(c,d),b);map.enableDoubleClickZoom();map.enableContinuousZoom();for(var a=0;a<map.getMapTypes().length;a++)map.removeMapType(map.getMapTypes()[0]);map.addMapType(getCustomMapType("Front Skin","front_skin"));map.addMapType(getCustomMapType("Front Muscle","front_muscle"));map.addMapType(getCustomMapType("Front Skeleton","front_skeleton"));map.addMapType(getOverlayedMapType("Front Skeleton","front_skin","front_skeleton"));map.addMapType(getOverlayedMapType("Front Skeleton","front_muscle","front_skeleton"));map.addMapType(getCustomMapType("Left Arm Pinky","left_arm_pinky"));map.addMapType(getCustomMapType("Back Skin","back_skin"));map.addMapType(getCustomMapType("Back Muscle","back_muscle"));map.addMapType(getCustomMapType("Back Skeleton","back_skeleton"));map.addMapType(getOverlayedMapType("Back Skeleton","back_skin","back_skeleton"));map.addMapType(getOverlayedMapType("Back Skeleton","back_muscle","back_skeleton"));map.removeMapType(map.getMapTypes()[0]);map.setMapType(map.getMapTypes()[0]);document.getElementById("map").style.backgroundColor="#FFFFFF";GEvent.addListener(map,"moveend",function(){var a=map.getCenter()});GEvent.addListener(map,"zoomend",function(b,a){a<1&&map.setZoom(1);a>5&&map.setZoom(5);UpdateMarkers()});GEvent.addListener(map,"click",function(a){if(a&&a.point){var b="<div id='divContent' class='infoContainer'></div>";a.openInfoWindowHtml(b);LoadContentService.LoadPointLocationBlock(a.point.pointID)}});if(knownPoints){DrawMeridians();DrawPoints();AutoCenter()}overlay_change(document.getElementById("selOverlayID"));front_change(document.getElementById("selFront"));mapType_change(document.getElementById("selMapTypeID"))}}function AutoCenter(){var i=parseInt(document.getElementById("hdPointID").value),h=parseInt(document.getElementById("hdMeridianID").value),g=document.getElementById("hdMeridianList").value.split(",");if(i!=0){var a=knownPoints[i];if(a){var l=map.getSize().width>400?5:4;if(a.lat!=null&&a.lng!=null)map.setCenter(new GLatLng(a.lat,a.lng),l);else a.backlat!=null&&a.backlng!=null&&map.setCenter(new GLatLng(a.backlat,a.backlng),l)}}else if(h!=0){var c=180,f=180,d=-180,e=-180;for(key in knownPoints){var a=knownPoints[key];if(a&&a.meridianID==h){if(a.lat<c)c=a.lat;if(a.lng<f)f=a.lng;if(a.lat>d)d=a.lat;if(a.lng>e)e=a.lng}}if(c==180)return;var k=new GLatLng((d+c)/2,(e+f)/2),j=new GLatLngBounds(new GLatLng(d,f),new GLatLng(c,e)),b=map.getBoundsZoomLevel(j);if(b<1)b=1;if(b>5)b=5;map.setCenter(k,b)}else if(g.length>0&&g[0]!=0){var c=180,f=180,d=-180,e=-180;for(key in knownPoints){var a=knownPoints[key];if(a&&a.meridianID==g[0]){if(a.lat<c)c=a.lat;if(a.lng<f)f=a.lng;if(a.lat>d)d=a.lat;if(a.lng>e)e=a.lng}}if(c==180)return;var k=new GLatLng((d+c)/2,(e+f)/2),j=new GLatLngBounds(new GLatLng(d,f),new GLatLng(c,e)),b=map.getBoundsZoomLevel(j);if(b<1)b=1;if(b>5)b=5;map.setCenter(k,b)}}function UpdateMarkers(){for(var a in knownPoints)UpdateMarker(knownPoints[a].marker)}function DrawPoints(){var c=document.getElementById("selMeridianList").value,d=document.getElementById("hdMeridianList").value.split(",");for(var f in knownPoints){var a=knownPoints[f],e=false;if(c!=0)for(var b=0;b<d.length;b++)if(a.meridianID==d[b]){e=true;break}if(c==0||e==true){DrawPoint(a,a.lat,a.lng,true);DrawPoint(a,a.backlat,a.backlng,false)}}}function DrawPoint(b,d,e,f){if(d&&e&&f==pointMap.isFront){var a=b.marker;if(!a){a=new GMarker(new GLatLng(d,e));a.point=b;b.marker=a;a.labelDiv=document.createElement("DIV");a.labelDiv.className="markerLabel";var c=document.createElement("A");c.className="navlink";a.labelDiv.appendChild(c)}map.addOverlay(a)}}function UpdateMarker(a){if(!a||!a.labelDiv||!a.point)return;var d=document.getElementById("selMeridianList").value;if(d!=null&&d!=0){for(var f=false,e=document.getElementById("hdMeridianList").value.split(","),c=0;c<e.length;c++)if(a.point.meridianID==e[c]){f=true;break}if(!f){a.labelDiv.style.visibility="hidden";return}}if(a.point.IsVisible()){a.labelDiv.style.visibility="visible";if(a.labelDiv.childNodes.length==1){var g=a.point.shortName.replace("-"," "),h=a.labelDiv.childNodes[0];h.innerHTML=g}a.labelDiv.style.position="absolute";var b=map.fromLatLngToDivPixel(a.getPoint()),i=b.x>map.getSize().x?b.x-map.getSize().x:b.x;a.labelDiv.style.left=i+"px";a.labelDiv.style.top=b.y+"px";a.labelDiv.style.color="#ffffff";a.labelDiv.style.backgroundColor="#"+a.point.color;map.getPane(G_MAP_FLOAT_SHADOW_PANE).appendChild(a.labelDiv)}else a.labelDiv.style.visibility="hidden"}function DrawMeridians(){var b=null,c,d;for(var i in knownPoints){var a=knownPoints[i];if(!a)continue;var g=false,h=document.getElementById("selMeridianList").value;if(h!=0){for(var f=document.getElementById("hdMeridianList").value.split(","),e=0;e<f.length;e++)if(a.meridianID==f[e])g=true;if(!g)continue}if(b==null||b.meridianID!=a.meridianID){DrawMeridianLine(c,b,true);DrawMeridianLine(d,b,false);c=[];d=[]}PushVertex(c,a.lat,a.lng);PushVertex(d,a.backlat,a.backlng);b=a}DrawMeridianLine(c,b,true);DrawMeridianLine(d,b,false)}function PushVertex(c,a,b){a&&b&&c.push(new GLatLng(a,b))}function DrawMeridianLine(a,b,e){var f=e==pointMap.isFront?.6:.15;if(a&&a.length>1){var c="#cccccc";if(b&&meridians[b.meridianID])c=meridians[b.meridianID].color;var d=new GPolyline(a,c,5,f);map.addOverlay(d)}}function GetInflectedLng(a){var b=pointMap.inflectionLng-a;return 2*pointMap.inflectionLng-a}function CustomGetTileUrl(a,b){return CustomGetLayerTileUrl(a,b,0)}function CustomGetOverlayTileUrl(a,b){return CustomGetLayerTileUrl(a,b,1)}function CustomGetLayerTileUrl(a,e,c){var d=map.getCurrentMapType().getTileLayers()[c].imagePath,b=17-e;if(a.x>13||a.y>27)return "/tiles/white.gif";var f="/tiles/"+d+"/"+b+"/"+a.x+"_"+a.y+"_"+b+".gif";return f}function setMapType(a){pointMap.mapTypeIndex=a;resetMapType()}function setMapTypeInner(a){map.setMapType(map.getMapTypes()[a])}function resetMapType(){var a=parseInt(pointMap.mapTypeIndex);if(!pointMap.isFront)a+=6;setMapTypeInner(a)}function redrawOverlays(){var a=document.getElementById("selOverlayID");map.clearOverlays();switch(parseInt(a.options[a.selectedIndex].value)){case 0:DrawMeridians();DrawPoints();break;case 1:DrawMeridians();break;case 2:DrawPoints()}UpdateMarkers()}function zoomIn(c,a){var b=parseInt(map.getZoom())+1;if(a)map.setCenter(a,b);else map.zoomIn()}function zoomOut(){map.zoomOut()}function overlay_change(a){redrawOverlays();a.blur()}function meridians_change(a){if(a.selectedIndex==0){var b=document.getElementById("hdMeridianList");b.value="";redrawOverlays();AutoCenter()}else{var c=document.getElementById("divMeridianList");c.style.visibility="visible";a.selectedIndex=1}a.blur()}function front_change(a){pointMap.isFront=a.selectedIndex==0;resetMapType();redrawOverlays();a.blur()}function mapType_change(a){setMapType(parseInt(a.options[a.selectedIndex].value));a.blur()}function AccuPoint(e,b,f,h,i,c,d,a,g){this.pointID=e;this.shortName=b;this.marker=f;this.lat=h;this.lng=i;this.backlat=c;this.backlng=d;this.meridianID=a;this.color=g}AccuPoint.prototype.IsVisible=function(){if(pointMap.isFront)return this.lat!=null;else return this.backlat!=null};function Meridian(a,c,b){this.meridianID=a;this.name=c;this.color=b}var canClearDump=false;function dump(b){var a=document.getElementById("txt");if(!a)return;if(canClearDump)a.value="";a.value+=b+"\r\n";canClearDump=false;setTimeout("canClearDump = true",100)}function logMulti(){for(var a="",c=true,b=0;b<logMulti.arguments.length;b++){if(!c)a+=", ";a+=logMulti.arguments[b];c=false}dump(a)}