//Robert Aspinall
//robert.aspinall@noaa.gov
var markers;
var regionmarkers;
var popups;
var stationarray = new Array();
var stnidarray = new Array();
var currenttype = "PreliminaryData";
var currentmarker = "";
var dc = 0;
var region = "";
var origswlat = "";
var origswlng = "";
var orignelat = "";
var orignelng = "";
var nameofcurrentmarker = "";
var currentstnid = "";
var globalauto;
var regionmarkersloaded = 0;

var lastlat;
var lastlng;

var lasttidesstnid;

var cachedhtml;
var cachedstnid;

//Marker index
//var mc = 0;

function zoomtoregion(region) {
	statebox(region);
}

function showloading() {

   //document.getElementById('loading').style.visibility = 'visible';
   document.getElementById('loading').innerHTML = "<img style='border: 0px; margin: 0px;' src='statusanim.gif'> Loading...";
   //document.getElementById('statusgif').src = 'statusanim.gif';

}

function hideloading() {

   //document.getElementById('loading').style.visibility = 'hidden';
   document.getElementById('loading').innerHTML = "<img style='border: 0px; margin: 0px;' src='status.gif'>";
   //document.getElementById('statusgif').src = 'status.gif';
}

function changetype(type) {
    currenttype = type;
	globalauto.scriptQueryAppend = "type=" + currenttype;
	document.getElementById('searchtext').innerHTML = "Search for station (" + document.area.type.options[document.area.type.selectedIndex].text + ")";
	if (type == "TidePredictions") {
	   document.getElementById("secondarybanner").style.visibility = '';
	} else {
	   document.getElementById("secondarybanner").style.visibility = 'hidden';
	}
}

function pickRegionMarker(region) {
    //alert('Calling mapit from region marker');
	zoomtoregion(region);
	//mapit();
	SelectOptionInList(document.area.state, region);
}
	  
// Open the info box for the specified marker.
function popup( i, stnid ) {
	if (cachedstnid == stnid) {
		var tab1 = new GInfoWindowTab("Data", cachedhtml);
		var lat = markers[i].getLatLng().lat();
		var lng = markers[i].getLatLng().lng();
		var tab2 = new GInfoWindowTab("Info", "Latitude: " + lat + "<br>Longitude: " + lng);
		var tabs = new Array();
		tabs.push(tab1);
		tabs.push(tab2);
		markers[i].openInfoWindowTabsHtml(tabs);
		return true;
	}
    var html = popups[i];
	                //url: '/cgi-bin/map/tidesmap.cgi?id=' + stnid,
	                //url: '/etidesweb/StationTideInfo.jsp?Stationid=' + stnid,
	$.ajax({
		url: '/noaatidepredictions/StationTideInfo.jsp?Stationid=' + stnid,
		type: 'GET',
		dataType: 'html',
		timeout: 2000,
		error: function() {
	    	html += "<div id='infowindowrightpane'>";
			html += "Error loading tides";
			html += "</div>";
    		html += "</div>";
		    //markers[i].openInfoWindowHtml(html);
		},
		success: function(tideshtml) {
			//alert(tideshtml);
			//$("#test1").html(html);
			if (tideshtml.length == 0 && stnid.match(/^[0-9]*$/)) {
			   html += "<div id='infowindowrightpane'>";
			   html += "Water level predictions are not available at Great Lakes stations.";
			   html += "</div>";
			   html += "</div>";
			   //markers[i].openInfoWindowHtml(html);
			} else if (tideshtml.substr(0, 3) == "n/a") {
				html += "<div id='infowindowrightpane'>";
				html += "Tide predictions are not available for this station.";
				html += "</div>";
				html += "</div>";
				//markers[i].openInfoWindowHtml(html);
			} else if (!stnid.match(/^[0-9a-zA-Z]*$/)) {
	            html += "<div id='infowindowrightpane'>";
			    html += "Tide predictions are not available for this station.";
				html += "</div>";
			    html += "</div>";
			} else {
			    var tidesurl = "/noaatidepredictions/viewDailyPredictions.jsp?Stationid=" + stnid;
				html += "<div style='cursor: pointer;' onclick=\"window.open('" + tidesurl + "');\" id='infowindowrightpane'>";
				var temp = tideshtml.split('\n');
				var finalline = temp[temp.length - 1];
				var temp2 = finalline.split('|');
				var nexttidetime = temp2[0];
				var nexttidetype = temp2[1] + " tide";
				var nextday = temp2[2];
				
				if (nextday == "NH" || nextday == "NL") { nextday = 1; } else { nextday = 0; }
				if (nexttidetype == "low tide") {
			   		html += "<div align='center' style='width: 143px;'>";
			   		html += "<img src='tidelow2.png' style='margin-top: 0px;'></div>";
			  		html += "<div align='center' style='width: 96px; height: 58px; position: absolute; top: 40px; right: 26px; font-size: 18px; color: black; font-weight: bold;'>" + nexttidetime;
			   		html += "<br><span style='font-size: 12px; font-weight: bold;'>" + nexttidetype + "</span>";
					if (nextday == 1) { html += "<br><style='background-color: red; font-size: 12px;'>next day</span>"; }
					html += "</span></div>";
				} else {
			   		html += "<div align='center' style='width: 143px;'>";
			   		html += "<img src='tidehigh2.png' style='margin-top: 0px;'></div>";
			   		html += "<div align='center' style='width: 96px; height: 58px; position: absolute; top: 46px; right: 26px; font-size: 18px; color: white; font-weight: bold;'>" + nexttidetime;
			   		html += "<br><span style='font-size: 12px; font-weight: bold;'>" + nexttidetype + "</span>";
					if (nextday == 1) { html += "<br><span style='background-color: red; font-size: 12px;'>next day</span>"; }
					html += "</span></div>";
				}
				html += "<div align='center' style='width: 143px;'><table style='border: 0px;'>";
			
				for (var j = 0; j < temp.length - 1; j++) {
			   		//alert(temp[i]);
			   		if (temp[j] != "") {
			      		var temp2 = temp[j].split('|');
				  		html += "<tr>";
				  		temp2[1] = Math.round(temp2[1]*10)/10;
				  		if (temp2[0] == nexttidetime) {
				  			html += "<td class='nexttide' align='right'>";
				  			html += temp2[0] + "</td><td class='nexttide'>" + temp2[2] + "<td class='nexttide' align='right'>" + temp2[1] + " ft.</td>";
				  		} else {
				  			html += "<td class='tide' align='right' style='font-size: 10px;'>";
				  			html += temp2[0] + "</td><td class='tide'>" + temp2[2] + "<td class='tide' align='right'>" + temp2[1] + " ft.</td>";
				  		}
				  		html += "</td></tr>";
			   		}
				}
			//html += tideshtml;
			html += "<tr><td style='text-align: center;' colspan='3'><i>all times in LST</i></td></tr>";
			html += "</table></div>";
			
			html += "</div>";
    		html += "</div>";
			
			//markers[i].openInfoWindowHtml(html);
			//alert(html);
		}
		var tab1 = new GInfoWindowTab("Data", html);
		cachedhtml = html;
		cachedstnid = stnid;
		var lat = markers[i].getLatLng().lat();
		var lng = markers[i].getLatLng().lng();
		var tab2 = new GInfoWindowTab("Info", "Latitude: " + lat + "<br>Longitude: " + lng);
		var tabs = new Array();
		tabs.push(tab1);
		tabs.push(tab2);
		markers[i].openInfoWindowTabsHtml(tabs);
		}
	});
	//alert(html);

}


// This returns a function closure that calls popup() with the specified arg.
// This is necessary because the API left out client-data.
function makePopupCaller( i, stnid )
    {
	currentmarker = stnid;
    return function() { popup( i, stnid ); };
    }


// Center the map on the West Coast region

var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GScaleControl());
map.addControl(new GOverviewMapControl());
//map.addMapType(G_SATELLITE_3D_MAP);
map.setCenter(new GLatLng(40, -84.000), 4);
var mm = new MarkerManager(map);
var regionmm = new MarkerManager(map);


//Populate the region markers array, but don't add them to the map yet.
createRegionMarkers();

//alert('calling mapit from page load');
mapregions();
clearit();

GEvent.addListener(map, "movestart", function() {
	origswlat = map.getBounds().getSouthWest().lat();
	origswlng = map.getBounds().getSouthWest().lng();
	orignelat = map.getBounds().getNorthEast().lat();
	orignelng = map.getBounds().getNorthEast().lng();
});

GEvent.addListener(map, "moveend", function() {
   	//If not zoomed in to at least 7, abort.
	//if (map.getZoom() <= 8) { return false; }
	//alert('Calling mapit from moveend');
	//alert('moveend mapit');
	if (map.getZoom() >= 5) {
		mapit(currentstnid);
	} else {
		clearit();
	}
});

GEvent.addListener(map, "infowindowclose", function() {
    currentstnid = "";
	currid = "";
	nameofcurrentmarker = "";	
});


Array.prototype.remove=function(s){
  for(i=0;i<this .length;i++){
    if(s == this[i]) this.splice(i, 1);
  }
}

var redicon = new GIcon();
redicon.image = "/tsunami/mm_20_red.png";
redicon.shadow = "/tsunami/mm_20_shadow.png";
redicon.iconSize = new GSize(12, 20);
redicon.shadowSize = new GSize(22, 20);
redicon.iconAnchor = new GPoint(6, 20);
redicon.infoWindowAnchor = new GPoint(5, 1);

function clearit() {
	var stations = new Array();
	var stnids = new Array();
	mm.clearMarkers();

	var url = '/gmap3/intro.html';
	var iframe = window.frames['linkpanel'];
	iframe.location.href = url;
}

function mapregions() {
	if (regionmarkersloaded == 0) {
    	regionmm.addMarkers(regionmarkers, 0, 17);
    	regionmm.refresh();
		regionmarkersloaded = 1;
	}
}

function mapit(currid) {
	showloading();
	markers = new Array();
	tidemarkers = new Array();
    currenttype = document.area.type.options[document.area.type.selectedIndex].value;
	var swlat = map.getBounds().getSouthWest().lat();
	var swlng = map.getBounds().getSouthWest().lng();
	var nelat = map.getBounds().getNorthEast().lat();
	var nelng = map.getBounds().getNorthEast().lng();
	 
    //Clear stations and stnids arrays
    var stations = new Array();
    var stnids = new Array();
    
    //Set the tabs to the correct selection
    //setTabs(region);
	
    //Clear existing overlays from both the map and the marker manager
    //map.clearOverlays();
    mm.clearMarkers();

    	var request = GXmlHttp.create();
    	//var regionname = "xml/" + region + ".xml";
		//var url = "/cgi-bin/odinmap.cgi?type=" + currenttype + "&orignelat=" + orignelat + "&orignelng=" + orignelng + "&origswlat=" + origswlat + "&origswlng=" + origswlng + "&nelat=" + nelat + "&nelng=" + nelng + "&swlat=" + swlat + "&swlng=" + swlng;
		var url = "/cgi-bin/map/odinmap.cgi?type=" + currenttype + "&nelat=" + nelat + "&nelng=" + nelng + "&swlat=" + swlat + "&swlng=" + swlng;
    	var iframe = window.frames['linkpanel'];
    	iframe.location.href = url;

    	request.open("GET", url, true);
    	request.onreadystatechange = function() {
	    if (request.readyState == 4) {
		var xmlDoc = request.responseXML;
		var locations = xmlDoc.documentElement.getElementsByTagName("location");

		popups = new Array(locations.length);

		for (var i = 0; i < locations.length; i++) {

			//Create the GLatLng object for this marker
		    var pointsarray = locations[i].getElementsByTagName("point");
		    var lng = parseFloat(pointsarray[0].getAttribute("lng"));
		    var lat = parseFloat(pointsarray[0].getAttribute("lat"));
		    var point = new GLatLng(lat,lng);
			var predtype = "";
			if (locations[i].getElementsByTagName("predtype")[0]) {
			   predtype = locations[i].getElementsByTagName("predtype")[0].firstChild.nodeValue;
			}
      
		    //Grab the tag names from the XML
		    var commonname = locations[i].getElementsByTagName("commonname")[0].firstChild.nodeValue;
		    var stnid = locations[i].getElementsByTagName("stationid")[0].firstChild.nodeValue;
		    
			
			//Arrays for autocomplete.
			stations.push(commonname);
		    stnids.push(stnid);
	
			var html = buildhtml(locations[i]);
   		    popups[i] = html;
            
			//Add the marker to the markers array
            if (predtype == "") {
				markers[i] = new GMarker(point, { title: commonname});
			} else {
				markers[i] = new GMarker(point, { icon: redicon, title: commonname});
			}
			//Add the event listener to popup the info window on click for this marker
	    	GEvent.addListener(markers[i], "click", makePopupCaller(i, stnid));
			
		} // End of stations for loop from XMLDoc
		//Add stations to marker manager
		var primarymarkers = new Array();
		var tidemarkers = new Array();
		for (var i = 0; i < markers.length; i++) {
		   if (markers[i].getIcon().image != "/tsunami/mm_20_red.png") {
		      primarymarkers.push(markers[i]);
		   } else {
		      tidemarkers.push(markers[i]);
		   }
		}
		mm.addMarkers(primarymarkers, 5, 17);
		mm.addMarkers(tidemarkers, 9, 17);
		//mm.addMarkers(markers, 5, 17);

		mm.refresh();

		hideloading();

		if (currid != "") {
	       for (var count = 0; count < markers.length; count++) {
	          if (markers[count].getTitle() == nameofcurrentmarker) {
		         //alert("count " + count + "currid " + currid);
				 popup(count, currid);
	          }
	       }
	    }
	    } // End of readystate 4 function
	} // End of ready state change function
	request.send(null);
 
    //statebox(region);

	

    //new AutoSuggest(document.getElementById('station'),stations);

    stationarray = stations;
    stnidarray = stnids;
	
}


//Functions to support the search functionality
function gotoLocation(name) {
	   var docname = "/cgi-bin/map/odinlocation.cgi?stnid=" + name;
       gotomarker(docname);
}

function gotomarker(docname) {
	     var r = GXmlHttp.create();
		 r.open("GET", docname, true);
		 r.onreadystatechange = function() {
         
		    if (r.readyState == 4) {
			   var xmlDoc = GXml.parse(r.responseText);
			   var gotomarkers = xmlDoc.documentElement.getElementsByTagName("marker");
               for (var i = 0; i < gotomarkers.length; i++) {
                  // obtain the attribues of each marker
                  var lat = parseFloat(gotomarkers[i].getAttribute("lat"));
                  var lng = parseFloat(gotomarkers[i].getAttribute("lng"));
                  var point = new GLatLng(lat,lng);
                  var name = gotomarkers[i].getAttribute("name");
				  var stnid = gotomarkers[i].getAttribute("stnid");
				  currentstnid = stnid;
                  // create the marker
                  //var marker = createMarker(point,label,html);
                  //map.addOverlay(marker);
				  nameofcurrentmarker = name;
				  map.setCenter(point, 9);
				  //alert('gotomarker mapit');
				  //mapit(stnid);
               }
			}
		 }
		 r.send(null);
}

function buildhtml(location) {
	var commonname = location.getElementsByTagName("commonname")[0].firstChild.nodeValue;
	var stnid = location.getElementsByTagName("stationid")[0].firstChild.nodeValue;
	var stationinformation = location.getElementsByTagName("info")[0].getAttribute("href");
	var preliminarydata = location.getElementsByTagName("prelim")[0].getAttribute("href");
	var verifieddata = location.getElementsByTagName("ver")[0].getAttribute("href");
	var tidepredictions = location.getElementsByTagName("pred")[0].getAttribute("href");
	var currentdata = location.getElementsByTagName("curr")[0].getAttribute("href");
	var meteorologicalobservations = location.getElementsByTagName("met")[0].getAttribute("href");
	var conductivity = location.getElementsByTagName("con")[0].getAttribute("href");
	var ports = location.getElementsByTagName("PORTS")[0].getAttribute("href");
	var ofs = location.getElementsByTagName("OFS")[0].getAttribute("href");
	var benchmarksheets = location.getElementsByTagName("bench")[0].getAttribute("href");
	var datums = location.getElementsByTagName("datums")[0].getAttribute("href");
	var harmonicconstituents = location.getElementsByTagName("harcon")[0].getAttribute("href");
	var sealeveltrends = location.getElementsByTagName("slt")[0].getAttribute("href");
	var predtype = "";
	if (location.getElementsByTagName("predtype")[0]) {
	   predtype = location.getElementsByTagName("predtype")[0].firstChild.nodeValue;
	}

	var html = "<div id='infowindowframe'>";
	if (stnid.match(/^[0-9]*$/)) {
	   html += "<div id='infowindowtitle' class='dfont'><a target='_blank' style='color: white;' href='/geo.shtml?location=" + stnid + "'>";
	   if (commonname.length > 30) {
	      html += commonname.substring(0,27) + "...";
	   } else {
	      html += commonname;
	   }
	   html +="</a><br><a target='_blank' style='color: white;' href='/geo.shtml?location=" + stnid + "'>" + stnid + "</a></div>";
	} else {
	   html += "<div id='infowindowtitle' class='dfont'>" + commonname + "<br>" + stnid + "</div>";
	}
	html += "<div id='infowindowleftpane'>";
	if (predtype == "S") { html += "Secondary station<br>"; }
	if (stnid.match(/^[0-9]*$/) && preliminarydata) {
	   html += "<a target='_blank' style='font-size: 12px; font-weight: bold; color: #000066;' href='/geo.shtml?location=" + stnid + "'>Station Home Page</a><br>";
	}
	html += "<span style='font-weight: bold;'>Jump to:</span><br>";
	if (stationinformation) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + stationinformation + "\">Station Info</a><br>";
	}
	if (preliminarydata) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + preliminarydata + "\">Preliminary Data</a><br>";
	}
	if (verifieddata) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + verifieddata + "\">Verified Data</a><br>";
	}
	if (tidepredictions) {
	    //html += "<a class='dfont' target=\"_blank\" href=\"/" + tidepredictions + "\">Tide Predictions</a><br>";
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + "noaatidepredictions/viewDailyPredictions.jsp?Stationid=" + stnid + "\">Tide Predictions</a><br>";
	}
	if (currentdata) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + currentdata + "\">Currents Data</a><br>";
	}
	if (meteorologicalobservations) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + meteorologicalobservations + "\">Meteorological</a><br>";
	}
	if (conductivity) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + conductivity + "\">Conductivity</a><br>";
	}
	if (ports) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + ports + "\">PORTS</a><br>";
	}
	if (ofs) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + ofs + "\">Forecasts</a><br>";
	}
	if (benchmarksheets) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + benchmarksheets + "\">Benchmark Sheets</a><br>";
	}
	if (datums) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + datums + "\">Datums</a><br>";
	}
	if (harmonicconstituents) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + harmonicconstituents + "\">Harmonic Con.</a><br>";
	}
	if (sealeveltrends) {
	    html += "<a class='dfont' target=\"_blank\" href=\"/" + sealeveltrends + "\">Sea Level Trends</a><br>";
	}			
	html += "</div>";
	return html;
}

/////////////////////////////////////////////
/////////////////////////////////////////////
/////////////////////////////////////////////

function SelectOptionInList( lstSelectList, intID ) {
            try
            {
                  var intIndex = 0;
                  // Loop through all the options
                  for( intIndex = 0; intIndex < lstSelectList.options.length; intIndex++ )
                  {
                        // Is this the ID we are looking for?
                        if( lstSelectList.options[intIndex].value == intID ) 
                        {
                              // Select it
                              lstSelectList.selectedIndex = intIndex;
                              // Yes, so stop searching
                              break;
                        }
                  }
            }
            catch( expError )
            {
                  alert( "ClientUtilities1.js::SelectOptionInList( ).\n" +
                              "Error:" + expError.number + ", " + expError.description );
            }
}

function setTabs(region) {
	var rname = region.split("-")[0];
    if (rname == "ec" || rname == "Maine" || rname == "NewHampshire" || rname == "Massachusetts" || rname == "NewYork" || rname == "RhodeIsland" || rname == "Connecticut" || rname == "NewJersey" || rname == "Pennsylvania" || rname == "Delaware" || rname == "Maryland" || rname == "DistrictofColumbia" || rname == "Virginia" || rname == "NorthCarolina" || rname == "SouthCarolina" || rname == "Georgia" || rname == "Florida") {
        document.getElementById("tab2").className='tab1';
        document.getElementById("tab3").className='tab2';
        document.getElementById("tab4").className='tab3';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab5';
		document.getElementById("tab7").className='tab6';
    } else if (rname == "gf" || rname == "Texas" || rname == "Lousiana" || rname == "Mississippi" || rname == "Georgia" || rname == "Florida") {
        document.getElementById("tab2").className='tab2';
        document.getElementById("tab3").className='tab1';
        document.getElementById("tab4").className='tab3';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab5';
		document.getElementById("tab7").className='tab6';
    } else if (rname == "wc" || rname == "Washington" || rname == "Oregon" || rname == "California") {
        document.getElementById("tab2").className='tab3';
        document.getElementById("tab3").className='tab2';
        document.getElementById("tab4").className='tab1';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab5';
		document.getElementById("tab7").className='tab6';
    } else if (rname == "ak" || rname == "NorthernAlaska" || rname == "WesternAlaska" || rname == "SoutheasternAlaska") {
	    document.getElementById("tab2").className='tab3';
	    document.getElementById("tab3").className='tab4';
        document.getElementById("tab4").className='tab5';
        document.getElementById("tab5").className='tab1';
		document.getElementById("tab6").className='tab2';
		document.getElementById("tab7").className='tab6';
    } else if (rname == "pa" || rname == "Hawaii" || rname == "PacificIslands") {
		document.getElementById("tab2").className='tab4';
		document.getElementById("tab3").className='tab5';
        document.getElementById("tab4").className='tab2';
		document.getElementById("tab5").className='tab3';
        document.getElementById("tab6").className='tab1';
		document.getElementById("tab7").className='tab6';
	} else if (rname == "gl" || rname == "LakeHuron" || rname == "LakeErie" || rname == "LakeMichigan" || rname == "LakeSuperior" || rname == "LakeOntario" || rname == "StLawrenceRiver" || rname == "NiagaraRiver" || rname == "DetroitRiver" || rname == "LakeStClair" || rname == "StClairRiver" || rname == "StMarysRiver") {
	    document.getElementById("tab2").className='tab4';
		document.getElementById("tab3").className='tab5';
        document.getElementById("tab4").className='tab2';
		document.getElementById("tab5").className='tab3';
        document.getElementById("tab6").className='tab6';
		document.getElementById("tab7").className='tab1';
    }
}


function createRegionMarkers() {
	regionmarkers = new Array();
	
	//Blue striped icon
	var icon = new GIcon();
    icon.image = "xpert.png";
    icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    icon.iconSize = new GSize(20, 34);
    icon.shadowSize = new GSize(37, 34);
    icon.iconAnchor = new GPoint(9, 34);
    icon.infoWindowAnchor = new GPoint(9, 2);
	
    regionmarkers[0] = new GMarker(new GLatLng(44.036, -68.955), { draggable: false, icon: icon, title: "Maine"});
	GEvent.addListener(regionmarkers[0], "click", function() { pickRegionMarker("Maine"); });
	regionmarkers[1] = new GMarker(new GLatLng(42.968, -70.801), { draggable: false, icon: icon, title: "New Hampshire"});
	GEvent.addListener(regionmarkers[1], "click", function() { pickRegionMarker("NewHampshire"); });
	regionmarkers[2] = new GMarker(new GLatLng(42.350, -71.065), { draggable: false, icon: icon, title: "Massachusetts"});
	GEvent.addListener(regionmarkers[2], "click", function() { pickRegionMarker("Massachusetts"); });
	regionmarkers[3] = new GMarker(new GLatLng(40.572, -73.916), { draggable: false, icon: icon, title: "New York"});
	GEvent.addListener(regionmarkers[3], "click", function() { pickRegionMarker("NewYork"); });
	regionmarkers[4] = new GMarker(new GLatLng(41.461, -71.180), { draggable: false, icon: icon, title: "Rhode Island"});
	GEvent.addListener(regionmarkers[4], "click", function() { pickRegionMarker("RhodeIsland"); });
	regionmarkers[5] = new GMarker(new GLatLng(41.244, -72.702), { draggable: false, icon: icon, title: "Connecticut"});
	GEvent.addListener(regionmarkers[5], "click", function() { pickRegionMarker("Connecticut"); });
	regionmarkers[6] = new GMarker(new GLatLng(40.002, -74.080), { draggable: false, icon: icon, title: "New Jersey"});
	GEvent.addListener(regionmarkers[6], "click", function() { pickRegionMarker("NewJersey"); });
	regionmarkers[7] = new GMarker(new GLatLng(39.880, -75.267), { draggable: false, icon: icon, title: "Pennsylvania"});
	GEvent.addListener(regionmarkers[7], "click", function() { pickRegionMarker("Pennsylvania"); });
	regionmarkers[8] = new GMarker(new GLatLng(39.070, -75.410), { draggable: false, icon: icon, title: "Delaware"});
	GEvent.addListener(regionmarkers[8], "click", function() { pickRegionMarker("Delaware"); });
	regionmarkers[9] = new GMarker(new GLatLng(38.702, -76.431), { draggable: false, icon: icon, title: "Maryland"});
	GEvent.addListener(regionmarkers[9], "click", function() { pickRegionMarker("Maryland"); });
	regionmarkers[10] = new GMarker(new GLatLng(38.891, -77.030), { draggable: false, icon: icon, title: "Washington D.C."});
	GEvent.addListener(regionmarkers[10], "click", function() { pickRegionMarker("DistrictofColumbia"); });
	regionmarkers[11] = new GMarker(new GLatLng(37.405, -76.124), { draggable: false, icon: icon, title: "Virginia"});
	GEvent.addListener(regionmarkers[11], "click", function() { pickRegionMarker("Virginia"); });
	regionmarkers[12] = new GMarker(new GLatLng(35.209, -76.267), { draggable: false, icon: icon, title: "North Carolina"});
	GEvent.addListener(regionmarkers[12], "click", function() { pickRegionMarker("NorthCarolina"); });
	regionmarkers[13] = new GMarker(new GLatLng(32.768, -79.777), { draggable: false, icon: icon, title: "South Carolina"});
	GEvent.addListener(regionmarkers[13], "click", function() { pickRegionMarker("SouthCarolina"); });
	regionmarkers[14] = new GMarker(new GLatLng(31.409, -81.271), { draggable: false, icon: icon, title: "Georgia"});
	GEvent.addListener(regionmarkers[14], "click", function() { pickRegionMarker("Georgia"); });
	regionmarkers[15] = new GMarker(new GLatLng(27.976, -81.541), { draggable: false, icon: icon, title: "Florida"});
	GEvent.addListener(regionmarkers[15], "click", function() { pickRegionMarker("Florida"); });
	regionmarkers[16] = new GMarker(new GLatLng(28.459, -96.234), { draggable: false, icon: icon, title: "Texas"});
	GEvent.addListener(regionmarkers[16], "click", function() { pickRegionMarker("Texas"); });
	regionmarkers[17] = new GMarker(new GLatLng(29.516, -91.614), { draggable: false, icon: icon, title: "Louisiana"});
	GEvent.addListener(regionmarkers[17], "click", function() { pickRegionMarker("Louisiana"); });
	regionmarkers[18] = new GMarker(new GLatLng(30.363, -88.851), { draggable: false, icon: icon, title: "Mississippi"});
	GEvent.addListener(regionmarkers[18], "click", function() { pickRegionMarker("Mississippi"); });
	regionmarkers[19] = new GMarker(new GLatLng(30.637, -87.934), { draggable: false, icon: icon, title: "Alabama"});
	GEvent.addListener(regionmarkers[19], "click", function() { pickRegionMarker("Alabama"); });
	regionmarkers[20] = new GMarker(new GLatLng(47.249, -124.321), { draggable: false, icon: icon, title: "Washington"});
	GEvent.addListener(regionmarkers[20], "click", function() { pickRegionMarker("Washington"); });
	regionmarkers[21] = new GMarker(new GLatLng(44.197, -124.156), { draggable: false, icon: icon, title: "Oregon"});
	GEvent.addListener(regionmarkers[21], "click", function() { pickRegionMarker("Oregon"); });
	regionmarkers[22] = new GMarker(new GLatLng(37.090, -122.360), { draggable: false, icon: icon, title: "California"});
	GEvent.addListener(regionmarkers[22], "click", function() { pickRegionMarker("California"); });
	regionmarkers[23] = new GMarker(new GLatLng(70, -152), { draggable: false, icon: icon, title: "NorthernAlaska"});
	GEvent.addListener(regionmarkers[23], "click", function() { pickRegionMarker("NorthernAlaska"); });
	regionmarkers[24] = new GMarker(new GLatLng(19.590, -155.434), { draggable: false, icon: icon, title: "Hawaii"});
	GEvent.addListener(regionmarkers[24], "click", function() { pickRegionMarker("Hawaii"); });
	regionmarkers[25] = new GMarker(new GLatLng(13.442, 144.653), { draggable: false, icon: icon, title: "Pacific Islands"});
	GEvent.addListener(regionmarkers[25], "click", function() { pickRegionMarker("PacificIslands"); });
	regionmarkers[26] = new GMarker(new GLatLng(42.092, -81.427), { draggable: false, icon: icon, title: "Lake Erie"});
	GEvent.addListener(regionmarkers[26], "click", function() { pickRegionMarker("LakeErie"); });
	regionmarkers[27] = new GMarker(new GLatLng(43.521, -77.776), { draggable: false, icon: icon, title: "Lake Ontario"});
	GEvent.addListener(regionmarkers[27], "click", function() { pickRegionMarker("LakeOntario"); });
	regionmarkers[28] = new GMarker(new GLatLng(47.889, -87.824), { draggable: false, icon: icon, title: "Lake Superior"});
	GEvent.addListener(regionmarkers[28], "click", function() { pickRegionMarker("LakeSuperior"); });
	regionmarkers[29] = new GMarker(new GLatLng(45.149, -82.481), { draggable: false, icon: icon, title: "Lake Huron"});
	GEvent.addListener(regionmarkers[29], "click", function() { pickRegionMarker("LakeHuron"); });
	regionmarkers[30] = new GMarker(new GLatLng(43.990, -87.075), { draggable: false, icon: icon, title: "Lake Michigan"});
	GEvent.addListener(regionmarkers[30], "click", function() { pickRegionMarker("LakeMichigan"); });
	regionmarkers[31] = new GMarker(new GLatLng(44.603, -75.595), { draggable: false, icon: icon, title: "St. Lawrence River"});
	GEvent.addListener(regionmarkers[31], "click", function() { pickRegionMarker("StLawrenceRiver"); });
	regionmarkers[32] = new GMarker(new GLatLng(43.084, -79.074), { draggable: false, icon: icon, title: "Niagara River"});
	GEvent.addListener(regionmarkers[32], "click", function() { pickRegionMarker("NiagaraRiver"); });
	regionmarkers[33] = new GMarker(new GLatLng(42.217, -83.106), { draggable: false, icon: icon, title: "Detroit River"});
	GEvent.addListener(regionmarkers[33], "click", function() { pickRegionMarker("DetroitRiver"); });
	regionmarkers[34] = new GMarker(new GLatLng(42.473, -82.68), { draggable: false, icon: icon, title: "Lake St. Clair"});
	GEvent.addListener(regionmarkers[34], "click", function() { pickRegionMarker("LakeStClair"); });
	regionmarkers[35] = new GMarker(new GLatLng(42.813, -82.487), { draggable: false, icon: icon, title: "St. Clair River"});
	GEvent.addListener(regionmarkers[35], "click", function() { pickRegionMarker("StClairRiver"); });
	regionmarkers[36] = new GMarker(new GLatLng(46.385, -84.29), { draggable: false, icon: icon, title: "St. Marys River"});
	GEvent.addListener(regionmarkers[36], "click", function() { pickRegionMarker("StMarysRiver"); });
	regionmarkers[37] = new GMarker(new GLatLng(60, -164), { draggable: false, icon: icon, title: "WesternAlaska"});
	GEvent.addListener(regionmarkers[37], "click", function() { pickRegionMarker("WesternAlaska"); });
	regionmarkers[38] = new GMarker(new GLatLng(59.888, -149.5), { draggable: false, icon: icon, title: "SoutheasternAlaska"});
	GEvent.addListener(regionmarkers[38], "click", function() { pickRegionMarker("SoutheasternAlaska"); });
		
}


function statebox(region) {
   
SelectOptionInList(document.area.state, region);

if (region) {
   //We're in a specific area
   var areaname = region;
if (areaname == "ec") {
   	map.setCenter(new GLatLng(36, -76.7), 5);
} else if (areaname == "gf") {
	map.setCenter(new GLatLng(27, -88.75), 6);
} else if (areaname == "wc") {
	map.setCenter(new GLatLng(42, -124.7), 5);
} else if (areaname == "ak") {
	map.setCenter(new GLatLng(61.5, -149), 4);
} else if (areaname == "pa") {
	map.setCenter(new GLatLng(21, -157), 8);
} else if (areaname == "gl") {
	map.setCenter(new GLatLng(44, -83.84), 5);
} else if (areaname == "cb") {
	map.setCenter(new GLatLng(17, -72), 5);
} else if (areaname == "Maine") {
   map.setCenter(new GLatLng(44, -68.6), 8);
} else if (areaname == "NewHampshire") {
   map.setCenter(new GLatLng(43, -70), 8);
} else if (areaname == "Hawaii") {
	map.setCenter(new GLatLng(20.89, -156.47), 8);
} else if (areaname == "PacificIslands") {
	map.setCenter(new GLatLng(13.44, 144.65), 3);
} else if (areaname == "Massachusetts") {
map.setCenter(new GLatLng(42, -71), 8);
} else if (areaname == "NewYork") {
map.setCenter(new GLatLng(41, -73), 8);
} else if (areaname == "RhodeIsland") {
map.setCenter(new GLatLng(41.5, -71), 9);
} else if (areaname == "Connecticut") {
map.setCenter(new GLatLng(41, -72.9), 8);
} else if (areaname == "NewJersey") {
map.setCenter(new GLatLng(40, -74.8), 8);
} else if (areaname == "Pennsylvania") {
map.setCenter(new GLatLng(39.9, -75.1), 8);
} else if (areaname == "Delaware") {
map.setCenter(new GLatLng(39.5, -75.5), 8);
} else if (areaname == "Maryland") {
map.setCenter(new GLatLng(38.9, -75.9), 8);
} else if (areaname == "DistrictofColumbia") {
map.setCenter(new GLatLng(38.8, -77), 11);
} else if (areaname == "Virginia") {
map.setCenter(new GLatLng(37.1, -75.9), 8);
} else if (areaname == "NorthCarolina") {
map.setCenter(new GLatLng(34.7, -76.6), 8);
} else if (areaname == "SouthCarolina") {
map.setCenter(new GLatLng(32.8, -79.7), 7);
} else if (areaname == "Georgia") {
map.setCenter(new GLatLng(32, -80.9), 8);
} else if (areaname == "Florida") {   
map.setCenter(new GLatLng(28.4, -80.5), 6);   
} else if (areaname == "Texas") {   
map.setCenter(new GLatLng(28.4, -96.3), 8);
} else if (areaname == "Mississippi") {
map.setCenter(new GLatLng(30.3, -88.8), 8);   
} else if (areaname == "Louisiana") {   
map.setCenter(new GLatLng(29.6, -91), 7);   
} else if (areaname == "Missouri") {   
map.setCenter(new GLatLng(30, -88), 8);   
} else if (areaname == "Alabama") {
map.setCenter(new GLatLng(30, -88), 8);   
} else if (areaname == "Washington") {
map.setCenter(new GLatLng(46.7, -122), 7);   
} else if (areaname == "Oregon") {         
map.setCenter(new GLatLng(44.5, -124), 7);   
} else if (areaname == "California") {   
map.setCenter(new GLatLng(37, -122), 6);   
} else if (areaname == "StLawrenceRiver") {
map.setCenter(new GLatLng(44.331, -75.935), 8);
} else if (areaname == "LakeOntario") {
map.setCenter(new GLatLng(43.57, -77.627), 7);
} else if (areaname == "NiagaraRiver") {
map.setCenter(new GLatLng(43.082, -79.062), 12);
} else if (areaname == "LakeErie") {
map.setCenter(new GLatLng(42.1, -81.083), 7);
} else if (areaname == "DetroitRiver") {
map.setCenter(new GLatLng(42.288, -83.093), 10);
} else if (areaname == "LakeStClair") {
map.setCenter(new GLatLng(42.473, -82.68), 10);
} else if (areaname == "StClairRiver") {
map.setCenter(new GLatLng(42.813, -82.487), 10);
} else if (areaname == "LakeHuron") {
map.setCenter(new GLatLng(44.66, -83.287), 7);
} else if (areaname == "StMarysRiver") {
map.setCenter(new GLatLng(46.385, -84.29), 11);
} else if (areaname == "LakeMichigan") {
map.setCenter(new GLatLng(43.947, -86.442), 7);
} else if (areaname == "LakeSuperior") {
map.setCenter(new GLatLng(47.1, -87.62), 6);
} else if (areaname == "NorthernAlaska") {
map.setCenter(new GLatLng(69.866, -149.501), 5);
} else if (areaname == "WesternAlaska") {
map.setCenter(new GLatLng(59.291, -159.58), 5);
} else if (areaname == "SoutheasternAlaska") {
map.setCenter(new GLatLng(59.888, -149.5), 5);
} else {
//Default case
map.setCenter(new GLatLng(37, -122), 4);
}
}

}


