// need info here


/* global map object
----------------------------------------------- */
jbHeatmap = {

	// public properties

	initLat: 43.0549758046,
	initLon: -87.9378700650,
	initZoom: 11,
	initType: G_NORMAL_MAP,
	width: 400,
	height: 300,

	// public methods

	init: function() {
		// test to see if browser supports google maps
		if (GBrowserIsCompatible()) {
			// unobtrusive javascript
			$('densityMapDemoFrame').innerHTML = '<div id="densityMapDemo" style="border:1px solid #ccc;"><p id="loading" style="background:url(/images/ajax-loader.gif) center center no-repeat;padding-top:150px;text-align:center;">Loading map&#8230;</p></div>';
			// initialize map
			var map = $('densityMapDemo');
			map.style.width = this.width + 'px';
			map.style.height = this.height + 'px';
			map = new GMap2(map);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			// store map within object
			this.map = map;
			// add data and then add density map
			this.getData();
		} else {
			// let user know
			$('densityMapDemo').innerHTML = '<p style="padding:20px;text-align:center;">We&#0039;re sorry, but your browser doesn&#0039;st support the Google Maps API.</p>';
		}
	},

	getData: function() {
		new Ajax.Request('/data/heat-maps-demo-data.js', { 
			method: 'get',
			onSuccess: function(data) {
				var obj = data.responseText.evalJSON(true);
				if (obj.result) {
					// store data within object and add density map
					jbHeatmap.data = obj.points;
					jbHeatmap.addDensityMap();
				}
			},
			onFailure: function(){
				// let user know
				$('densityMapDemo').innerHTML = '<p style="padding:20px;text-align:center;">We&#0039;re sorry, but the density map data couldn&#0039;t be loaded at this time.</p>';
			}
		} );
	},

	addDensityMap: function() {
		// render map
		this.map.setCenter(new GLatLng(this.initLat, this.initLon), this.initZoom, this.initType);
		// initialize density map
		var heatMap = new GEOHeatmap();
		heatMap.Init(this.width, this.height);
		// send data to density map
		heatMap.SetData(this.data);
		heatMap.SetBoost(1);
		var preUrl = heatMap.GetURL();
//var temp = document.createElement('div');
//temp.innerHTML = preUrl;
		// render in our Google Map
		var heatmapOverlay = new HMGoogleOverlay(preUrl);
//for(keyvar in heatmapOverlay){
//temp.innerHTML = temp.innerHTML + keyvar + '--' + heatmapOverlay[keyvar] + '<br />';
//}
//$('densityMapDemoFrame').appendChild(temp);
		this.map.addOverlay(heatmapOverlay);
	},

	// private properties

	data: new Array(),
	map: false

}

/* event listeners
----------------------------------------------- */
Event.observe(window, 'load', jbHeatmap.init.bindAsEventListener(jbHeatmap), false);
Event.observe(window, 'unload', GUnload, false);