var self = "";
google.load("jquery", "1.3.2", {uncompressed:true});
	function init() {
		vph = YAHOO.util.Dom.getViewportHeight();
		mc_vph = vph - 50;
		var mapc = new YAHOO.widget.Panel("map_container", {width:"825px", x:225, draggable:true, close:false, visible: true});
		mapc.cfg.setProperty("height", mc_vph);
		mc_vph -= 50;
		var stormlist = new Array();
		YAHOO.util.Dom.setStyle('hurr_map','height',mc_vph + "px");
      var map = new GMap2(document.getElementById("hurr_map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
        var gmarkers = [];
        var gicons = [];
        gicons["Extratropical Storm"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00ff00"});
        gicons["Subtropical Depression"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#FF00FF"});
        gicons["Subtropical Storm"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00FFFF"});
        gicons["Tropical Depression"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#FFFF00"});
        gicons["Tropical Storm"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#FF83FF"});
        gicons["Hurricane"] = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#FF0000"});
        map.setCenter(new GLatLng(30.5,-79.0), 5);
		mapc.render();
		mapc.show();
      function createMarker(point,name,html,category,advisory,pau,fau,discu) {
        var marker = new GMarker(point,gicons[category]);
//        var marker = new GMarker(point);
        // === Store the category and name info as a marker properties ===
        marker.mytype = category;
        marker.myname = name;
		marker.myadvisory = advisory;
		var tabs = [];
		tabs.push(new GInfoWindowTab("Summary",html));
		$.post(self, {trace:1, loc: 'click', name: name, type: category, advisory: advisory, pau: pau, fau: fau, discu: discu });
		if (pau != '') {
			$.post(self, {text: pau}, function(data) {
			if (data.text != '') {
				tabs.push(new GInfoWindowTab("Public Advisory",'<pre style="font-size:80%">' + data.text + '</pre>'));
			}},"json");
		}
		if (fau != '') {
			$.post(self, {text: fau}, function(data) {
			if (data.text != '') {
				tabs.push(new GInfoWindowTab("Forecast Advisory",'<pre style="font-size:80%">' + data.text + '</pre>'));
			}},"json");
		}
		if (discu != '') {
			$.post(self, {text: discu}, function(data) {
			if (data.text != '') {
				tabs.push(new GInfoWindowTab("Discussion",'<pre style="font-size:80%">' + data.text + '</pre>'));
			}},"json");
		}
        GEvent.addListener(marker, "click", function() {
/*		          if (tabs.length > 1) {
			          for (i=0;i<tabs.length;i++) {
			              htmls[i] = '<div style="height:50px;width:'+tabs.length*88+'px">' + htmls[i] + '<\/div>';
			          }
		            }
*/
				marker.openInfoWindowTabsHtml(tabs, {maxWidth:600 		});
        });
//        gmarkers.push(marker);
        return marker;
      }

        var cbGetEvent = function(o){
		var tmp = o.responseXML.documentElement;
		if (tmp.tagName == 'stormhistory') {
				var storms = tmp.getElementsByTagName("storm");
				var bounds = new GLatLngBounds();
				var polyPoints = Array();
				map.clearOverlays();
		        for (var i = 0; i < storms.length; i++) {
		          // obtain the attribues of each storm
		          var lat = parseFloat(storms[i].getElementsByTagName('latitude')[0].firstChild.nodeValue);
		          var lng = parseFloat(storms[i].getElementsByTagName('longitude')[0].firstChild.nodeValue);
		          var point = new GLatLng(lat,lng);
			  polyPoints[i] = point;
			  bounds.extend(point);
		          var movement = storms[i].getElementsByTagName("movement")[0].firstChild.nodeValue;
		          var type = storms[i].getElementsByTagName("type")[0].firstChild.nodeValue;
		          var wind = storms[i].getElementsByTagName("windspeedmph")[0].firstChild.nodeValue;
		          var name = storms[i].getElementsByTagName("name")[0].firstChild.nodeValue;
		          var name = storms[i].getElementsByTagName("name")[0].firstChild.nodeValue;
		          var advisory = storms[i].getElementsByTagName("advisory")[0].firstChild.nodeValue;
		          var timegmt = storms[i].getElementsByTagName("timegmt")[0].firstChild.nodeValue;
				  var forecaster = '';
				  if (storms[i].getElementsByTagName("forecaster").length > 0) {
					  if (storms[i].getElementsByTagName("forecaster")[0].firstChild != null) {
				  		forecaster = storms[i].getElementsByTagName("forecaster")[0].firstChild.nodeValue;
					  }
				  }
				  var publicadvisoryurl = (storms[i].getElementsByTagName("publicadvisoryurl").length > 0)?storms[i].getElementsByTagName("publicadvisoryurl")[0].firstChild.nodeValue:'';
				  var forecastadvisoryurl = (storms[i].getElementsByTagName("forecastadvisoryurl").length > 0)?storms[i].getElementsByTagName("forecastadvisoryurl")[0].firstChild.nodeValue:'';
				  var discussionurl = (storms[i].getElementsByTagName("discussionurl").length > 0)?storms[i].getElementsByTagName("discussionurl")[0].firstChild.nodeValue:'';
		          var html = "<b>"+name+"</b><p>Type: " + type +"<br />Date/Time (GMT): " + timegmt + "<br />Movement: "+movement + "<br />Wind: "
				  	+ wind + "<br />Forecaster: " + forecaster;
		          // create the marker
		          var marker = createMarker(point,name,html,type,advisory,publicadvisoryurl,forecastadvisoryurl,discussionurl);
		          map.addOverlay(marker);
			  map.addOverlay(new GPolyline(polyPoints));
		        }
			map.setZoom(map.getBoundsZoomLevel(bounds));
			map.setCenter(bounds.getCenter());
			waitPanel.hide();
			mapc.show();
		} else {
			var storms = tmp.getElementsByTagName("storm");
			stormlist = new Array();
			for (var i = 0; i < storms.length; i++) {
				stormlist[i] = new Array();
				stormlist[i].name = storms[i].getElementsByTagName("name")[0].firstChild.nodeValue;
				stormlist[i].year = storms[i].getElementsByTagName("year")[0].firstChild.nodeValue;
				stormlist[i].stormnumber = storms[i].getElementsByTagName("seasonnumber")[0].firstChild.nodeValue;
			}
			var sbhtml = [];
			var divs = [];
			var yr = '';
			for (var i = 0; i < stormlist.length; i++) {
				if (yr == '') yr = stormlist[i].year;
				divs[i] = 'storm_' + stormlist[i].stormnumber + '_' + stormlist[i].year;
				sbhtml[i] = '<div id="storm_' + stormlist[i].stormnumber + '_' + stormlist[i].year + '"><a href="#">' + stormlist[i].name + '</a></div>';
			}
			sidebar.setBody('');
			sidebar.setBody(sbhtml.join('\n'));
			sidebar.setHeader(yr);
			YAHOO.util.Event.addListener(divs,"click",track_storm);
			mapc.setHeader("Hurricane Tracking");
         map.setCenter(new GLatLng(30.5,-79.0), 5);
			map.clearOverlays();
			sidebar.render();
			sidebar.show();

		}
	}
        var cbnull = function(){}

        var cb =
        {
                success:cbnull,
                failure:cbnull
        }

        var cbev =
        {
                success:cbGetEvent,
                failure:cbnull
        }

	function track_storm() {
		tmp = this.id.split('_');
		st = tmp[1];
		yr = tmp[2];
		_gaq.push(['_trackEvent', 'Track', 'Storm', yr + ':' + stormlist[st - 1].name]);
		pass_str = 'which=stormtrack&storm=' + st + '&year=' + yr;
		gc = YAHOO.util.Connect.asyncRequest('POST',self,cbev,pass_str);
		mapc.setHeader('Hurricane Tracking - ' + yr + ' -- ' + stormlist[st - 1].name);
		mapc.hide();
		waitPanel.render();
		waitPanel.show();
	}

	function get_storms() {
		which = this.id.split('_');
		pass_str = 'which='+which[1]+'&year='+which[2];
		_gaq.push(['_trackEvent', 'Get', 'Storms', which[1] + ' ' + which[2]]);
		gc = YAHOO.util.Connect.asyncRequest('POST',self,cbev,pass_str);
	}

	var btns = ["<br />
<b>Warning</b>:  implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>/home/hurrtrac/public_html/track.js.php</b> on line <b>178</b><br />
"];
	YAHOO.util.Event.addListener(btns,'click',get_storms);
	var sidebar = new YAHOO.widget.Panel("storms_sidebar", {width:"200px", x:0, draggable:true, close:false, visible: false});
	pass_str = 'which=stormlist&year='+2012;
	gc = YAHOO.util.Connect.asyncRequest('POST',self,cbev,pass_str);
	waitPanel = new YAHOO.widget.Panel("wait",
												{ width:"240px",
												  fixedcenter:true,
												  close:false,
												  draggable:false,
												  modal:true,
												  visible:false
												}
											);

	}
	YAHOO.util.Event.addListener(window, "load", init);
