var map;
var batch = [];
var firePoints;
var mgr;
var gOverlay;
var gWitchOverlay;
//var mapExtension = null;
//var qtaskFire = null;
//var queryFire = null;
var exml;
var aYears = [2001,2002,2003,2004,2005,2006,2007];
var cntr = 0;
var jTodayDate;
var j24Hour;
var j48Hour;
var theYear;
var filePrefix = "http://www.geospatialtraining.com/WildfireData/N_America.MCD14DL.";
var fileSuffix = ".json";


function init() {
   if (GBrowserIsCompatible()) {
      displayMessage("infoDivPoints", "Loading wildfire data"  + "<p><img src='progressBar.gif' />");
   
      map = new GMap2(dojo.byId("map"));
      map.setCenter(new GLatLng(38.422179,-96.937288), 3);  
      map.setUIToDefault();
      map.addMapType(G_PHYSICAL_MAP);
      map.setMapType(G_PHYSICAL_MAP);
    
      mgr = new MarkerManager(map);
      
      GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {  
         if (newLevel >= 10) {
            mgr.addMarkers(batch,3);
            mgr.refresh();	 
         }
         else {
            mgr.clearMarkers();
            mgr.refresh();
         }
      });
      
      //Google AdSense
      var publisherID = 'pub-2210005687052234';

      var adsManagerOptions = {
        maxAdsOnMap : 2,
        style: 'adunit',
        // The channel field is optional - replace this field with a channel number 
        // of your own for Google AdSense tracking
        channel: '2478921614'  
      };

      adsManager = new GAdsManager(map, publisherID, adsManagerOptions);
      adsManager.enable();
		 
      // get the date information so we can read the file
      var today = new Date();
      jTodayDate = today.getDOY().toString();
      j24Hour = (jTodayDate - 1).toString();
      j48Hour = (jTodayDate - 2).toString();		    
      theYear = today.getFullYear();		 

      //Create MapExtension utility class
      //mapExtension = new esri.arcgis.gmaps.MapExtension(map);

      // Query Task for Fire Polygons
      //qtaskFire = new esri.arcgis.gmaps.QueryTask("http://server.arcgisonline.com/ArcGIS/rest/services/Specialty/USGS_FirePerimeterAlt_SoCal_2D/MapServer/0");

      // Query Fire variable
      //queryFire = new esri.arcgis.gmaps.Query();
			    
      firePoints = new dojo.data.ItemFileReadStore({url: filePrefix + theYear.toString() + j24Hour.toString() + fileSuffix});
     
      var store = function(items, request) {
	 for (var i = 0; i < items.length; i++) {
		var item = items[i];
		var latitude = Number(firePoints.getValue(item,"latitude"));
		var longitude = Number(firePoints.getValue(item,"longitude"));
		var theDate = firePoints.getValue(item,"date");
		var theTime = Number(firePoints.getValue(item,"time"));
		var satellite = firePoints.getValue(item,"satellite");
		var confidence = Number(firePoints.getValue(item,"confidence"));
		
		if ((satellite == 'T' || satellite == 'A') && confidence >= 70) {
		   var infoText = "<strong>Latitude:</strong> " + latitude + "<br>" + "<strong>Longitude:</strong> " + longitude + "<br>" + "<strong>Date:</strong> " + theDate + " <strong>Time:</strong> " + theTime + "<br>" + "<strong>Satellite:</strong> " + satellite + "<br>" + "<strong>Confidence:</strong> " + confidence;
		
		   var point = new GLatLng(latitude, longitude);
		
		   var marker = createMarker(point,infoText);
		   batch.push(marker);
		}
		
	 }
	 fireSpinner.value = batch.length;
	 //mgr.addMarkers(batch,3);
	 //mgr.refresh();
	 var mcOpts = { maxZoom: 10};
	 var mc = new MarkerClusterer(map, batch, mcOpts);
	 
       }

      
      var request = firePoints.fetch({onComplete: store});
      
      
   }
   displayMessage("infoDivPoints", "");
}

function updateFirePoints(){
   

   //get the date to display   
   var useYesterday;
   if (dojo.byId("g1rb2").checked) {
	//yesterdays fires
	useYesterday = true;
   }
   else {
	useYesterday = false;
   }
   
   //get the confidence value
   var confidenceValue = dojo.byId("confValue").value;	   
   
   //satellite information 
   var satAqua = dojo.byId("cbAqua").checked;
   var satTerra = dojo.byId("cbTerra").checked;
   var satString;
   
   if (!satAqua && !satTerra) {
	alert("Select at least one satellite");
   }
   else if (satAqua && satTerra) {
	satString = "*";
   }
   else if (satAqua) {
	satString = "A";
   }
   else {
	satString = "T";
   }
   
   displayMessage("infoDivPoints", "Loading wildfire data"  + "<p><img src='progressBar.gif' />");
   mgr.clearMarkers();
   batch.length = 0;		
   
   if (useYesterday) {
	firePoints = new dojo.data.ItemFileReadStore({url: filePrefix + theYear.toString() + j48Hour.toString() + fileSuffix});
   }
   else {
	firePoints = new dojo.data.ItemFileReadStore({url: filePrefix + theYear.toString() + j24Hour.toString() + fileSuffix});
   }
		     
   var store = function(items, request) {
      for (var i = 0; i < items.length; i++) {
	 var item = items[i];
	 var latitude = Number(firePoints.getValue(item,"latitude"));
	 var longitude = Number(firePoints.getValue(item,"longitude"));
	 var theDate = firePoints.getValue(item,"date");
	 var theTime = Number(firePoints.getValue(item,"time"));
	 var satellite = firePoints.getValue(item,"satellite");
	 var confidence = Number(firePoints.getValue(item,"confidence"));
		
	 if (confidence >= confidenceValue) {
	    var infoText = "<strong>Latitude:</strong> " + latitude + "<br>" + "<strong>Longitude:</strong> " + longitude + "<br>" + "<strong>Date:</strong> " + theDate + " <strong>Time:</strong> " + theTime + "<br>" + "<strong>Satellite:</strong> " + satellite + "<br>" + "<strong>Confidence:</strong> " + confidence;
		
	    var point = new GLatLng(latitude, longitude);
		
	    var marker = createMarker(point,infoText);
	    batch.push(marker);
	}
	fireSpinner.value = batch.length;
		
     }
     
     mgr.addMarkers(batch,3);
     mgr.refresh();
   }

      
  var request = firePoints.fetch({query: {satellite: satString}, onComplete: store});
  displayMessage("infoDivPoints", "");
 }


function createMarker(point,html) {
	
   var fireIcon = new GIcon(G_DEFAULT_ICON);
   fireIcon.image = "fire.png";    
   fireIcon.size = new GSize(48,48);
   markerOptions = { icon:fireIcon };
		
   var marker = new GMarker(point,markerOptions);
   GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml(html);
   });
   return marker;
}
