//Robert Aspinall
//robert.aspinall@noaa.gov

var markers;
var popups;
var quakemarkers;
var quakepopups;
var tmarkers;
var tpopups;
var stationarray = new Array();
mapmode();
//Set the map as the primary display (default)
function mapmode() { 
    document.getElementById('linkcontainer').style.width='275px';
	document.getElementById("linkpanel").style.width="275px";
    //document.getElementById('map').style.width='78%';
}

//Set the linkpanel as the primary display
function textmode() {
    document.getElementById('linkcontainer').style.width = "602px";
	document.getElementById("linkpanel").style.width = "602px";
	//alert(document.getElementById("linkcontainer").style.width);
}

// Open the info box for the specified marker.
function popup( i ) {
    markers[i].openInfoWindowHtml(popups[i]);
}

// Open the info box for the specified marker.
function quakepopup( i ) {
    quakemarkers[i].openInfoWindowHtml(quakepopups[i]);
}

function tsunamipopup( i ) {
	tmarkers[i].openInfoWindowHtml(tpopups[i]);
}

// 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 )
    {
    return function() { popup( i ); };
    }

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

function makeTsunamiWarningPopupCaller ( i ) {
	return function() { tsunamipopup( i ); };
}
    
// 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(new GSize(140,140)));
function positionOverview() {
var overview = document.getElementById("map_overview");
overview.style.left = "35px";
overview.style.top = "540px";
overview.firstChild.firstChild.style.left = "0px";
overview.firstChild.firstChild.style.top = "0px";
overview.firstChild.firstChild.style.height = "138px";
overview.firstChild.firstChild.style.width = "138px";
overview.firstChild.firstChild.style.border = "1px solid black";
}
setTimeout("positionOverview()", 1);
*/


map.setCenter(new GLatLng(40, -124.000), 5);

var oldCenter;
var oldRadius;
var oldPoly;

mapit("wc");
//getEarthquakes();

function getEarthquakes() {
    var MSIE = false;
	var FF3 = false;   
	if (navigator.appName == "Microsoft Internet Explorer") {
	   MSIE = true;
	} else {
	   if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
          var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number
          if (ffversion>=3) {
             FF3 = true;
          }
       }
    }
	
    var quakerequest = GXmlHttp.create();
    quakerequest.open("GET", "/earthquakexml", true);
    quakerequest.onreadystatechange = function() {
	if (quakerequest.readyState == 4) {
	    var xmlDoc = quakerequest.responseXML;
	    var quakelocations = xmlDoc.documentElement.getElementsByTagName("item");
	    quakemarkers = new Array(quakelocations.length);
	    quakepopups = new Array(quakelocations.length);
	    for (var i = 0; i < quakelocations.length; i++) {
		var lng, lat;
		if (MSIE || FF3) {
		    lng = parseFloat(GXml.value(quakelocations[i].getElementsByTagName("geo:long")[0]));
		    lat = parseFloat(GXml.value(quakelocations[i].getElementsByTagName("geo:lat")[0]));
		} else {
		    lng = parseFloat(GXml.value(quakelocations[i].getElementsByTagName("long")[0]));
		    lat = parseFloat(GXml.value(quakelocations[i].getElementsByTagName("lat")[0]));
		}
		var point = new GLatLng(lat, lng);
		var quakename = quakelocations[i].getElementsByTagName("title")[0].firstChild.nodeValue;
		var quakedate = quakelocations[i].getElementsByTagName("description")[0].firstChild.nodeValue;
		var quakelink = quakelocations[i].getElementsByTagName("link")[0].firstChild.nodeValue;
		quakepopups[i] = quakename + "<br>" + quakedate + "<br><a href=" + quakelink + ">USGS Info</a>";
		
		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);
		quakemarkers[i] = new GMarker(point, redicon);
		GEvent.addListener(quakemarkers[i], "click", makeQuakePopupCaller(i));
		map.addOverlay(quakemarkers[i]);
	    }
	}
    }
    quakerequest.send(null);
}

function getTsunamiWarningsPacific() {
	var MSIE = false;
	if (navigator.appName == "Microsoft Internet Explorer") { MSIE = true; }
		var tsunamirequest = GXmlHttp.create();
		var url = "/tsunami_warning_hawaii_xml";
		tsunamirequest.open("GET", url, true);
		tsunamirequest.onreadystatechange = function() {
		if (tsunamirequest.readyState == 4) {
			var xmlDoc = tsunamirequest.responseXML;
			var twlocs = xmlDoc.documentElement.getElementsByTagName("item");
			tmarkers = new Array(twlocs.length);
			tpopups = new Array(twlocs.length);
			for (var i = 0; i < twlocs.length; i++) {
				var lng, lat;
				if (MSIE) {
					lng = parseFloat(GXml.value(twlocs[i].getElementsByTagName("geo:long")[0]));
					lat = parseFloat(GXml.value(twlocs[i].getElementsByTagName("geo:lat")[0]));
				} else {
					lng = parseFloat(GXml.value(twlocs[i].getElementsByTagName("long")[0]));
					lat = parseFloat(GXml.value(twlocs[i].getElementsByTagName("lat")[0]));
				}
				var point = new GLatLng(lat, lng);
				var tname = twlocs[i].getElementsByTagName("title")[0].firstChild.nodeValue;
				var tdate = twlocs[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue;
				var tlink = twlocs[i].getElementsByTagName("link")[0].firstChild.nodeValue;
				var tdesc = twlocs[i].getElementsByTagName("description")[0].firstChild.nodeValue;
				tpopups[i] = tname + "<br>" + tdate + "<br><a href=" + tlink + ">PTWC Info</a><br>";
				tpopups[i] += "<textarea rows=\"10\" cols=\"40\">" + tdesc + "</textarea>";
		
				var blueicon = new GIcon();
				blueicon.image = "/tsunami/mm_20_blue.png";
				blueicon.shadow = "/tsunami/mm_20_shadow.png";
				blueicon.iconSize = new GSize(12, 20);
				blueicon.shadowSize = new GSize(22, 20);
				blueicon.iconAnchor = new GPoint(6, 20);
				blueicon.infoWindowAnchor = new GPoint(5, 1);
				tmarkers[i] = new GMarker(point, blueicon);
				GEvent.addListener(tmarkers[i], "click", makeTsunamiWarningPopupCaller(i));
					map.addOverlay(tmarkers[i]);
	    		}
			}
    	}
    	tsunamirequest.send(null);
}
	

function mapit(region) {
    document.suggestbox.station.value = "";
	document.getElementById("autosuggest").style.display = 'none';
    var stations = new Array();
    if (region == "wc") {
        document.getElementById("tab2").className='tab1';
        document.getElementById("tab3").className='tab2';
        document.getElementById("tab4").className='tab3';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab6';
		document.getElementById("tab6").className='tab7';
    } else if (region == "ak") {
        document.getElementById("tab2").className='tab2';
        document.getElementById("tab3").className='tab1';
        document.getElementById("tab4").className='tab3';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab6';
		document.getElementById("tab6").className='tab7';
    } else if (region == "pa") {
        document.getElementById("tab2").className='tab3';
        document.getElementById("tab3").className='tab2';
        document.getElementById("tab4").className='tab1';
		document.getElementById("tab5").className='tab4';
		document.getElementById("tab6").className='tab6';
		document.getElementById("tab6").className='tab7';
    } else if (region == "cb") {
		document.getElementById("tab2").className='tab3';
        document.getElementById("tab3").className='tab2';
        document.getElementById("tab4").className='tab4';
		document.getElementById("tab5").className='tab1';
		document.getElementById("tab6").className='tab6';
		document.getElementById("tab6").className='tab7';
	} else if (region == "ec") {
		document.getElementById("tab2").className='tab3';
		document.getElementById("tab3").className='tab2';
		document.getElementById("tab4").className='tab4';
		document.getElementById("tab5").className='tab5';
		document.getElementById("tab6").className='tab1';
		document.getElementById("tab7").className='tab7';
	} else if (region == "gc") {
		document.getElementById("tab2").className='tab3';
		document.getElementById("tab3").className='tab2';
		document.getElementById("tab4").className='tab4';
		document.getElementById("tab5").className='tab5';
		document.getElementById("tab6").className='tab7';
		document.getElementById("tab7").className='tab1';
	}

    map.clearOverlays();

	
    var request = GXmlHttp.create();
    var regionname = region + ".xml";
    var iframe = window.frames['linkpanel'];
    iframe.location.href = regionname;

    request.open("GET", regionname, true);
    request.onreadystatechange = function() {
    if (request.readyState == 4) {
        var xmlDoc = request.responseXML;
        var locations = xmlDoc.documentElement.getElementsByTagName("location");
        markers = new Array(locations.length);
        popups = new Array(locations.length);
    
        for (var i = 0; i < locations.length; i++) {
            var pointsarray = locations[i].getElementsByTagName("point");
            var lng, lat;
            lng = parseFloat(pointsarray[0].getAttribute("lng"));
            lat = parseFloat(pointsarray[0].getAttribute("lat"));
            var point = new GLatLng(lat,lng);
      
            //Grab the tag names from the XML
            var commonname = locations[i].getElementsByTagName("commonname")[0].firstChild.nodeValue;
            var stnid = locations[i].getElementsByTagName("stnid")[0].firstChild.nodeValue;
			stations.push(commonname);
            var link = locations[i].getElementsByTagName("link")[0].getAttribute("href");
			if (locations[i].getElementsByTagName("phone")[0]) {
               var phone = locations[i].getElementsByTagName("phone")[0].firstChild.nodeValue;
			}
            if (locations[i].getElementsByTagName("platid")[0]) {
			   var platid = locations[i].getElementsByTagName("platid")[0].firstChild.nodeValue;
			}
			if (locations[i].getElementsByTagName("channel")[0]) {
               var channel = locations[i].getElementsByTagName("channel")[0].firstChild.nodeValue;
			}
            if (locations[i].getElementsByTagName("xmittime")[0]) {
			   var xmittime = locations[i].getElementsByTagName("xmittime")[0].firstChild.nodeValue;
			}
			var prim_dcp = locations[i].getElementsByTagName("prim_dcp")[0].firstChild.nodeValue;
                        var backup_dcp = locations[i].getElementsByTagName("backup_dcp")[0].firstChild.nodeValue;
		        var status = locations[i].getElementsByTagName("status")[0].firstChild.nodeValue;	
                        var gain = locations[i].getElementsByTagName("gain")[0].firstChild.nodeValue;
			var offset = locations[i].getElementsByTagName("offset")[0].firstChild.nodeValue;
            var waterlevel = locations[i].getElementsByTagName("waterlevel")[0].firstChild.nodeValue;
      
            var xperts = locations[i].getElementsByTagName("xpert");
            if (xperts[0]) {
                var xpert = xperts[0].firstChild.nodeValue;
            } else {
                var xpert = "";
            }
      
            var html = "<div id='infowindowframe'>";
                html += "<div id='infowindowtitle'>" + commonname + " " + stnid + "</div>";
                html += "<div id='infowindowleftpane'>"
				if (locations[i].getElementsByTagName("phone")[0]) {
                   html += "Phone<br>";
				}
				if (locations[i].getElementsByTagName("platid")[0]) {
                //   html += "Platform ID<br>";
				}
				if (locations[i].getElementsByTagName("channel")[0]) {
                //   html += "Channel<br>";
				}
                if (locations[i].getElementsByTagName("xmittime")[0]) {
				//   html += "Transmit Time<br>";
				}
				//html += "Primary DCP:<br>";
                  //              html += "Backup DCP:<br>";
                    //            html += "Status:<br>";
				//html += "Gain:<br>";
				//html += "Offset:<br>";
                //html += "Sensor Type:<br>";
                html += "<a href=\"#\" onClick=\"window.open('";
				html += link;
				html += "', '', 'width=680,height=720,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes');\">";
				html += "<img border=0 src=\"/tsunami/tsunamiicon.png\" alt=\"Water Level Data\">";
				html += "</a><br>";
				html += "Water Level Data";
                html += "</div>";
                html += "<div id='infowindowrightpane'>";
				if (locations[i].getElementsByTagName("phone")[0]) {
                   html += phone + "<br>"; 
				}
				if (locations[i].getElementsByTagName("platid")[0]) {
				//   html += platid + "<br>";
				}
				if (locations[i].getElementsByTagName("platid")[0]) {
				//   html += channel + "<br>";
				}
				if (locations[i].getElementsByTagName("platid")[0]) {
				//   html += xmittime + "<br>";
				}
				//html += prim_dcp + "<br>";
                //                html += backup_dcp + "<br>";
                //                html += status + "<br>";
				//html += gain + "<br>";
				//html += offset + "<br>";
				//html += waterlevel + "<br>";
				//html += "<a target=\"_blank\" href=\"/plotcomp.shtml?station_info=" + stnid + "+" + commonname + "\">";
				//html += "<img border=0 src=\"/tsunami/tideicon.png\">";
				//html += "</a><br>";
				//html += "6 min data";
                html += "</div>";
            html += "</div>";
            popups[i] = html;
      
            var icon = new GIcon();
            icon.image = "/tsunami/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);
            
            if (xpert == "yes") {
                markers[i] = new GMarker(point, {icon: icon, title:commonname});
            } else {
                markers[i] = new GMarker(point, {title:commonname});
            }
            GEvent.addListener(markers[i], "click", makePopupCaller(i));
            map.addOverlay(markers[i]);
        }
    if (region == "wc") { map.setCenter(new GLatLng(42, -124), 5); }
    if (region == "ak") { map.setCenter(new GLatLng(61.5, -149), 4); }
    if (region == "pa") { map.setCenter(new GLatLng(21, -157), 8); }
	if (region == "cb") { map.setCenter(new GLatLng(18, -68), 7); }
	if (region == "ec") { map.setCenter(new GLatLng(36, -71), 5); }
	if (region == "gc") { map.setCenter(new GLatLng(25, -86), 5); }    
    }
	new AutoSuggest(document.getElementById('station'),stations);
}
request.send(null);
stationarray = stations;
getEarthquakes();
//getTsunamiWarningsPacific();
}


