var _Gwakeapikey = "529bc2220567426bcfc2d28d41d5638dd51af339b010d403cac4e951194a5c63";var rooturl = "http://marina.geowake.com/marina.api";var _Gapiwake;var _Gmapwake;var browser=navigator.appName;var b_version=navigator.appVersion;var imgExt="png";var ENC_ZOOM_LEVEL=13;if((b_version.indexOf("MSIE 6")>=0)||(b_version.indexOf("MSIE 5")>=0)){imgExt="gif"}var chartXYZArray=new Array(50);var tileXYZArray=new Array(50);var tileAllOverlaysArray=new Array(50);var tileBoylatArray=new Array(50);var tileLightsArray=new Array(50);var tileDaymarArray=new Array(50);var tileMarinaArray=new Array(50);var tileMorfacArray=new Array(50);var overlayArrays=new Array();overlayArrays[0]=tileAllOverlaysArray;overlayArrays[1]=tileBoylatArray;overlayArrays[2]=tileLightsArray;overlayArrays[3]=tileDaymarArray;overlayArrays[4]=tileMarinaArray;overlayArrays[5]=tileMorfacArray;var overlayTypes=new Array();overlayTypes[0]="all";overlayTypes[1]="boylat";overlayTypes[2]="lights";overlayTypes[3]="daymar";overlayTypes[4]="marina";overlayTypes[5]="morfac";var ENCToggleID="toggle_geowake";var georooturl=".geowake.com/marina.api";var gwsubdomain=4;var DebugYes=false;function gWake(B,A){this.map=B;this.key=_Gwakeapikey;this.v=A;_Gapiwake=new GeoWakeAPI(this.map,this.key,this.v);_Gmapwake=B;this.init=function(){}}gWake.prototype.ToggleENCId=function(A){ENCToggleID=A};gWake.prototype.AddOverlay=function(){_Gapiwake.AddOverlay()};gWake.prototype.RemoveOverlay=function(){_Gapiwake.RemoveOverlay()};gWake.prototype.updateOnMove=function(){_Gapiwake.updateOnMove()};gWake.prototype.updateOverlays=function(A){_Gapiwake.doMapMove(true,false,A)};function GeoWakeAPI(D,C,A){this.map=D;this.key=C;this.v=A;this.raster_view=0;this.geowake_view=1;this.geowake_isZoomedOut=false;this.raster_redisplay=0;this.custommap;this.tilelayers;if(A=="lite"){for(var B=0;B<overlayTypes.length;B++){overlayTypes[B]=overlayTypes[B]+"_lite"}}else{if(A=="rbff"){for(var B=0;B<overlayTypes.length;B++){overlayTypes[B]=overlayTypes[B]+"_rbff"}}else{if(A=="boatus"){for(var B=0;B<overlayTypes.length;B++){overlayTypes[B]=overlayTypes[B]+"_boatus"}}}}this.AddControls=function(){this.controlGeoWakeLogo=new geowakeLogo();this.map.addControl(this.controlGeoWakeLogo)};this.RemoveControls=function(){this.map.removeControl(this.controlGeoWakeLogo)};this.AddEncOverlay=function(F,E){this.geowake_view=1;this.doMapMove(F,E,null)};this.RemoveEncOverlay=function(){this.geowake_view=0;for(var F=0;F<tileXYZArray.length;F++){tileXYZArray[F]="";for(var E=0;E<overlayArrays.length;E++){try{this.map.removeOverlay(overlayArrays[E][F])}catch(G){}}}}}GeoWakeAPI.prototype.AddOverlay=function(B,A){if(B!=true){B=false}if(A!=true){A=false}this.AddControls();this.AddEncOverlay(B,A)};GeoWakeAPI.prototype.RemoveOverlay=function(){this.RemoveControls();this.RemoveEncOverlay()};GeoWakeAPI.prototype.showGeowake=function(){if(this.geowake_view==0){this.geowake_view=1;this.AddEncOverlay(false,false)}else{this.geowake_view=0;this.RemoveEncOverlay()}};GeoWakeAPI.prototype.updateOnMove=function(){GEvent.addListener(_Gmapwake,"moveend",function(){_Gapiwake.doMapMove(false,false,null)})};Array.prototype.indexOf=function(B){for(var A=0;A<this.length;A++){if(this[A]==B){return A}}return -1};Array.prototype.has=function(A){return this.indexOf(A)>=0};Array.prototype.getIndex=function(A){return this.indexOf(A)};Array.prototype.getFirstEmpty=function(B){for(var A=0;A<this.length;A++){if(this[A]==""){return A}if(this[A]==undefined){return A}}return -1};Array.prototype.getReplacementIndex=function(D,B,C,A,F){for(var E=0;E<this.length;E++){if(this[E]!=undefined){xyz=this[E].split("|");x=xyz[0];y=xyz[1];z=xyz[2];if((x>D)||(y<B)||(x<C)||(y>A)){return E}}}return -1};GeoWakeAPI.prototype.doMapMove=function(R,K,H){var Q=this.map.getCenter();var A=this.map.getZoom();var M=Math.floor(Math.random()*1001);var E=this.map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(this.map.getBounds().getNorthEast().lat(),this.map.getBounds().getNorthEast().lng()),A);var C=Math.floor(E.x/256);var B=Math.floor(E.y/256);var P=this.map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(this.map.getBounds().getSouthWest().lat(),this.map.getBounds().getSouthWest().lng()),A);var N=Math.floor(P.x/256);var L=Math.floor(P.y/256);try{showAll=document.getElementById(ENCToggleID).checked;if(!showAll){return true}}catch(O){}if((A<ENC_ZOOM_LEVEL)&&(!this.geowake_isZoomedOut)){this.geowake_isZoomedOut=true;try{document.getElementById("gw_enc_button").style.backgroundImage="url()"}catch(O){}this.showGeowake();return true}if((A>=ENC_ZOOM_LEVEL)&&(this.geowake_isZoomedOut)){this.geowake_isZoomedOut=false;try{document.getElementById("gw_enc_button").style.backgroundImage="url("+rooturl+"/res/img/Marina_Layout."+imgExt+")"}catch(O){}this.showGeowake();return true}if(this.geowake_view==0){return false}var G=N;while(G<=C){var F=B;while(F<=L){if(R){var I=tileXYZArray.getIndex(G+"|"+F+"|"+A);updateOverlayArrays(this.map,I,G,F,A,this.key,M,false,false,K,H)}else{if(!tileXYZArray.has(G+"|"+F+"|"+A)){var D=tileXYZArray.getFirstEmpty();if(D>-1){tileXYZArray[D]=G+"|"+F+"|"+A;updateOverlayArrays(this.map,D,G,F,A,this.key,M,false,true,K,null)}else{var J=tileXYZArray.getReplacementIndex(C,B,N,L,A);if(J>-1){tileXYZArray[J]=G+"|"+F+"|"+A;updateOverlayArrays(this.map,J,G,F,A,this.key,M,true,true,K,null)}}}}F=F+1}G=G+1}};function updateOverlayArrays(K,M,G,F,A,R,N,P,E,L,I){var D=true;var H=true;var Q;var C;var B;try{H=document.getElementById(ENCToggleID).checked}catch(O){try{for(Q=1;Q<overlayTypes.length;Q++){D=document.getElementById(ENCToggleID+"_"+overlayTypes[1].replace(/_lite/,"")).checked;H=false}}catch(O){H=true}}if(H){C=0;B=1;doDebug("Mode: <b>using 'table=all'</b><br>",true)}else{C=1;B=overlayTypes.length;doDebug("Mode: <b>using individual overlay tables</b><br>",true)}for(Q=C;Q<B;Q++){if(P){try{K.removeOverlay(overlayArrays[Q][M])}catch(O){}}try{D=document.getElementById(ENCToggleID+"_"+overlayTypes[Q].replace(/_lite/,"")).checked}catch(O){D=true}if(L){D=true}if(D){if(E){var J=new GGeoXml("http://gw"+rtnServer()+georooturl+"/marina?key="+R+"&table="+overlayTypes[Q]+"&x="+G+"&y="+F+"&z="+A+"&"+N);try{K.addOverlay(J)}catch(O){}overlayArrays[Q][M]=J}else{try{K.addOverlay(overlayArrays[Q][M])}catch(O){try{K.removeOverlay(overlayArrays[Q][M])}catch(O){}if(overlayTypes[Q]==I){var J=new GGeoXml("http://gw"+rtnServer()+georooturl+"/marina?key="+R+"&table="+overlayTypes[Q]+"&x="+G+"&y="+F+"&z="+A+"&"+N);try{K.addOverlay(J)}catch(O){}overlayArrays[Q][M]=J}}}}else{try{K.removeOverlay(overlayArrays[Q][M])}catch(O){}}}}GeoWakeAPI.prototype.ChartOverlay=function(){GEvent.addListener(_Gmapwake,"zoomend",function(){})};function rtnServer(){gwsubdomain+=1;if(gwsubdomain>9){gwsubdomain=4}return gwsubdomain}function geowakeLogo(){}geowakeLogo.prototype=new GControl();geowakeLogo.prototype.initialize=function(C){var A=document.createElement("div");var B=document.createElement("div");this.setButtonStyle_(B);A.appendChild(B);GEvent.addDomListener(B,"click",function(){window.open("http://marina.geowake.com")});C.getContainer().appendChild(A);return A};geowakeLogo.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT,new GSize(5,15))};geowakeLogo.prototype.setButtonStyle_=function(A){A.style.width="84px";A.style.height="29px";A.style.backgroundImage="url("+rooturl+"/res/img/geowake_Marina_logo."+imgExt+")";A.style.cursor="pointer"};function doDebug(D,B){if(DebugYes==true){try{var A=document.getElementById("debug");if(B){A.innerHTML=""}A.innerHTML=A.innerHTML+"<br>"+D}catch(C){}}}
var DebugYes=false;var visibleChart=0;function gwChartOverlay(A){this.ChartNUM=10;this.filledArray=new Array(this.ChartNUM);this.cFolderArray=new Array(this.ChartNUM);this.layerOpacity=1;visibleChart=0;this.enableOpacity=0;this.opControlVisible=0;this.chartToggleState=new Array(this.ChartNUM);for(var B=0;B<this.ChartNUM;B++){this.chartToggleState[B]=false}if(A==null){this.map=map}else{this.map=A}this.domChartList=document.geowake_chartForm.geowake_chartList;this.domCheckBoxAll=document.getElementById("checkboxAll");this.className="gwCharts"}gwChartOverlay.prototype.addOpacityControls=function(){this.opControl=new gwApiOpacityControl(custommap0);this.map.addControl(this.opControl)};gwChartOverlay.prototype.enableOpacityControl=function(){this.enableOpacity=1};gwChartOverlay.prototype.disableOpacityControl=function(){this.enableOpacity=0};gwChartOverlay.prototype.addOption=function(B,D,C){var A=document.createElement("OPTION");A.text=D;A.value=C;B.options.add(A)};gwChartOverlay.prototype.setMapId=function(A){if(A==null){this.map=map}else{this.map=A}};gwChartOverlay.prototype.setChartListId=function(A){if(A==null){this.domChartList=document.geowake_chartForm.geowake_chartList}else{this.domChartList=A}};gwChartOverlay.prototype.setCheckBoxId=function(A){if(A==null){this.domCheckBoxAll=document.getElementById("checkboxAll")}else{this.domCheckBoxAll=document.getElementById(A)}};gwChartOverlay.prototype.changeClassName=function(A){if(A==null){this.className="gwCharts"}else{this.className=A}};gwChartOverlay.prototype.updateChartOnMove=function(){this.doChartMove();this.defineOverlays();if(this.classname==null){GEvent.addListener(this.map,"moveend",function(){gwCharts.doChartMove()})}else{GEvent.addListener(this.map,"moveend",function(){this.classname.doChartMove()})}};gwChartOverlay.prototype.doChartMove=function(){this.zoom=this.map.getZoom();var C=Math.floor(Math.random()*1001);var A=this.map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(this.map.getBounds().getNorthEast().lat(),this.map.getBounds().getNorthEast().lng()),this.zoom);var B=this.map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(this.map.getBounds().getSouthWest().lat(),this.map.getBounds().getSouthWest().lng()),this.zoom);ne=this.map.getBounds().getNorthEast();sw=this.map.getBounds().getSouthWest();dhtmlLoadScript("http://marina.geowake.com/chartServer/chart?key="+_Gwakeapikey+"&bbox="+ne.y+","+ne.x+","+sw.y+","+sw.x+"&z="+this.map.getZoom()+"&type=json&obj="+this.className)};gwChartOverlay.prototype.updateCharts=function(A){this.loadChartOverlays(this.map,A,this.zoom)};gwChartOverlay.prototype.loadChartOverlays=function(B,E,D){var C=document.getElementById("debug");var F=this.domCheckBoxAll;var A;chartFolders=E.charts;doDebug("********************",false);this.chartOrder(chartFolders);this.updateDropdown(E);doDebug("_____________________",false)};gwChartOverlay.prototype.chartOrder=function(H){var A=document.getElementById("debug");var B=this.domCheckBoxAll;var I;var F;var C;if(H.length<=this.ChartNUM){I=H.length}else{I=this.ChartNUM}F=0;for(D=0;D<this.ChartNUM;D++){C=0;for(var E=0;E<I;E++){if(H[E].chartdir==folderName[D]){if(this.filledArray[D]==0){this.filledArray[D]=2;this.cFolderArray[D]=E;C=1;doDebug("chart exists: "+folderName[D],false)}else{if(this.filledArray[D]==1){this.filledArray[D]=1;this.cFolderArray[D]=E;C=1;doDebug("Chart Already ON: "+folderName[D],false)}}F=F+1}}if(C==0){this.filledArray[D]=0;this.cFolderArray[D]=-1}}doDebug("Filled ARRAY: "+this.filledArray[0]+","+this.filledArray[1]+","+this.filledArray[2],false);doDebug("cFolder ARRAY: "+this.cFolderArray[0]+","+this.cFolderArray[1]+","+this.cFolderArray[2],false);doDebug("Folder Names: "+folderName[0]+","+folderName[1]+","+folderName[2],false);doDebug("chartCNT:"+F+"ChartF Names: ",false);doDebug("Visible: "+visibleChart);for(E=0;E<H.length;E++){doDebug(H[E].chartdir+",",false)}for(E=0;E<this.ChartNUM;E++){if(this.filledArray[E]==0){if(parseInt(visibleChart)==E){this.chartToggleState[visibleChart]=false;this.toggleCharts(visibleChart);visibleChart=0;this.domChartList.selectedIndex=0}}}for(var D=0;D<I;D++){var K=0;var G=-1;for(E=0;E<this.ChartNUM;E++){if(this.cFolderArray[E]==D){K=1;G=E;break}}doDebug("Found: "+K+" Found SPOT: "+G,false);if(K==0){var J=-1;for(E=0;E<this.ChartNUM;E++){if(this.cFolderArray[E]==-1){J=E;this.cFolderArray[E]=D;this.filledArray[E]=1;break}}doDebug("Slot: "+J,false);doDebug("Slot Folder: "+H[D].chartdir,false);if(J!=-1){folderName[J]=H[D].chartdir;if(B.checked==true){if(this.chartToggleState[J]==false){this.chartToggleState[J]=true;if(this.visibleCharts==J){this.toggleCharts(J)}}}}}else{if(K==1){if(this.filledArray[G]==2){this.filledArray[G]=1;if(B.checked==true){if(this.chartToggleState[G]==false){this.chartToggleState[G]=true;if(this.visibleCharts==D){this.toggleCharts(D)}}}this.cFolderArray[G]=D;doDebug("Toggle Existing chart: "+G,false)}else{if(this.filledArray[E]==1){doDebug("Chart found and ON: "+G,false)}}}}}};gwChartOverlay.prototype.updateDropdown=function(B){var E;var H=new Array(2);var D;var G;if(chartFolders.length<=this.ChartNUM){E=chartFolders.length}else{E=this.ChartNUM}var I=this.domChartList.selectedIndex;if(E==0){this.domChartList.options[0].text="No Charts";this.domChartList.selectedIndex=0;this.domChartList.disabled="disabled"}else{this.domChartList.disabled="";var A=this.domChartList.options.length;this.domChartList.options.length=0;this.addOption(this.domChartList,"Select NOAA Charts",-1);for(var C=0;C<E;C++){try{H=folderName[C].split("/");D=H[1]}catch(F){}G=this.findChartName(folderName[C],E,B);if(G>-1){doDebug("Add option: "+H+" = "+D+"-"+B.charts[G].name+" "+C,false);this.addOption(this.domChartList,D+"-"+B.charts[G].name,C);updateOptions=1}}if(I<=this.domChartList.options.length){this.domChartList.selectedIndex=parseInt(I)}else{}}doDebug("New len after: "+this.domChartList.options.length,false);doDebug("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",false);doDebug("Filled ARRAY: "+this.filledArray[0]+","+this.filledArray[1]+","+this.filledArray[2],false);doDebug("cFolder ARRAY: "+this.cFolderArray[0]+","+this.cFolderArray[1]+","+this.cFolderArray[2],false);doDebug("Folder Names: "+folderName[0]+","+folderName[1]+","+folderName[2],false);doDebug("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",false)};gwChartOverlay.prototype.findChartName=function(F,A,E){var B=-1;var D;for(var C=0;C<A;C++){if(F==E.charts[C].chartdir){doDebug("position = "+C+"-- "+E.charts[C].name);return C}}return B};gwChartOverlay.prototype.chartChange=function(D){var B=D.selectedIndex;var C=D.options[B].value;var A=this.domCheckBoxAll;A.checked=false;this.toggleAllCharts();A.checked=true;this.chartToggleState[C]=true;visibleChart=C;this.toggleCharts(visibleChart);if(this.enableOpacity&&(this.opControlVisible==0)){this.opControl.addControl();this.opControlVisible=1}doDebug("val = "+C,false)};gwChartOverlay.prototype.defineOverlays=function(){subloop[0]=1;subloop[1]=1;subloop[2]=1;var C=new GCopyrightCollection("YOUR COPYRIGHT :");var B=new GCopyrightCollection("Map Data");var A=new GCopyright(1,new GLatLngBounds(new GLatLng(-90,-180),new GLatLng(90,180)),4,"geowake.com");B.addCopyright(A);tilelayers0=new GTileLayer(C);tilelayers0.getTileUrl=CustomGetTileUrl0;tilelayers0.opacity=1;tilelayers0.isPng=function(){return true};tilelayers0.getOpacity=function(){return this.opacity};custommap0=new GTileLayerOverlay(tilelayers0)};gwChartOverlay.prototype.toggleChartOverlay=function(){var B=this.domCheckBoxAll;var A=parseInt(visibleChart)+1;this.domChartList.selectedIndex=A;if(B.checked==false){this.domChartList.disabled="disabled";this.domChartList.selectedIndex=0;if(this.enableOpacity&&(this.opControlVisible==1)){this.opControl.removeControl();this.opControlVisible=0}}else{this.domChartList.disabled="";if(this.enableOpacity&&(this.opControlVisible==0)){this.opControl.addControl();this.opControlVisible=1}}this.toggleAllCharts()};gwChartOverlay.prototype.toggleAllCharts=function(){var A=this.domCheckBoxAll;var B=visibleChart;if(A.checked==true){this.chartToggleState[B]=true;this.toggleCharts(B)}else{if(A.checked==false){this.chartToggleState[B]=false;this.toggleCharts(B)}}};gwChartOverlay.prototype.toggleCharts=function(A){if(this.chartToggleState[A]==true){this.map.addOverlay(custommap0);doDebug("toggle on "+A,false)}else{if(this.chartToggleState[A]==false){this.map.removeOverlay(custommap0);doDebug("toggle OFF "+A,false)}}};gwChartOverlay.prototype.getFolderName=function(A){return folderName[A]};CustomGetTileUrl0=function(B,A){if(subloop[0]==3){subloop[0]=7}else{if(subloop[0]==9){subloop[0]=1}else{subloop[0]=subloop[0]+1}}try{newstr0=folderName[visibleChart].split("/")}catch(C){}return"http://gw"+subloop[0]+".geowake.com/chartServer/tile?key="+_Gwakeapikey+"&qk="+TileToQuadKey(B.x,B.y,A)+"&dir="+newstr0[0]+"&chart="+newstr0[1]};var newstr0=new Array(2);var subloop=new Array(3);var folderName=new Array(this.ChartNUM);var tilelayers0;var custommap0;dhtmlLoadScript=function(A){var B=document.createElement("script");B.src=A;B.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(B)};function TileToQuadKey(B,G,F){var D="";for(var E=F;E>0;E--){var C=1<<(E-1);var A=0;if((B&C)!=0){A++}if((G&C)!=0){A+=2}D+=A}return D}function gwApiOpacityControl(A){this.overlay=A}gwApiOpacityControl.prototype=new GControl();gwApiOpacityControl.prototype.setSlider=function(B){var A=Math.round((58*B));this.slide.left=A;this.knob.style.left=A+"px";this.knob.style.top="0px"};gwApiOpacityControl.prototype.setOpacity=function(){this.overlay.getTileLayer().opacity=this.slide.left/58;this.map.removeOverlay(this.overlay);this.map.addOverlay(this.overlay)};gwApiOpacityControl.prototype.initialize=function(E){var D=this;this.map=E;var A;var C=navigator.userAgent.toLowerCase();if((C.indexOf("msie")>-1)&&(C.indexOf("opera")<1)){this.ie=true}else{this.ie=false}var B=document.createElement("div");B.style.width="70px";B.style.height="21px";if(this.ie){A="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://marina.geowake.com/marina.api/res/img/opacity-slider.png', sizingMethod='crop');";B.innerHTML='<div id="wgOpacitySlider" style="height:21px; width:70px; '+A+'" ></div>'}else{B.innerHTML='<div id="wgOpacitySlider" style="height:21px; width:70px; background-image: url(http://marina.geowake.com/marina.api/res/img/opacity-slider.png)" ></div>'}if(this.ie){A="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://marina.geowake.com/marina.api/res/img/opacity-slider.png', sizingMethod='crop');";this.knob=document.createElement("div");this.knob.style.height="21px";this.knob.style.width="13px";this.knob.style.overflow="hidden";this.knob_img=document.createElement("div");this.knob_img.style.height="21px";this.knob_img.style.width="83px";this.knob_img.style.filter=A;this.knob_img.style.position="relative";this.knob_img.style.left="-70px";this.knob.appendChild(this.knob_img)}else{this.knob=document.createElement("div");this.knob.style.height="21px";this.knob.style.width="13px";this.knob.style.backgroundImage="url(http://marina.geowake.com/marina.api/res/img/opacity-slider.png)";this.knob.style.backgroundPosition="-70px 0px";this.knob.style.left="58px";this.knob.style.top="0px"}B.appendChild(this.knob);this.slide=new GDraggableObject(this.knob,{container:B});this.slide.setDraggableCursor("pointer");this.slide.setDraggingCursor("pointer");this.container=B;this.setSlider(this.overlay.getTileLayer().opacity);GEvent.addListener(this.slide,"dragend",function(){D.setOpacity()});return B};gwApiOpacityControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(7,47))};gwApiOpacityControl.prototype.addControl=function(){try{this.map.getContainer().appendChild(this.container);this.setSlider(this.overlay.getTileLayer().opacity)}catch(A){}};gwApiOpacityControl.prototype.removeControl=function(){try{this.map.getContainer().removeChild(this.container)}catch(A){}}
