var map;
var marker;
var markerRef = new Array();
var reportIcon;
var transIcon;
function load() 
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map"));
		map.setMapType(G_NORMAL_MAP);
		map.setCenter(new GLatLng(53.48,-7.99), 6);
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0,0)));
		map.enableScrollWheelZoom();
				
		// Create transmitter marker icon
		transIcon = new GIcon(G_DEFAULT_ICON);
		transIcon.image = "img/tranmitter.png";
		transIcon.shadow = "img/rounds.png";
		transIcon.iconSize = new GSize(32, 32);
		transIcon.shadowSize = new GSize(59, 32);
		transIcon.iconAnchor = new GPoint(16,16); //pixel located over the geo coordinate
		transIcon.infoWindowAnchor = new GPoint(16, 2);
		transIcon.imageMap=[0,16,3,7,9,2,16,0,24,3,29,8,32,16,29,24,23,29,16,32,7,29,2,23];
		
		//Icon for reports
		reportIcon = new GIcon();
		reportIcon.image = "img/report_icon.png";
		reportIcon.shadow = "img/report_icon_shadow.png";
		reportIcon.iconSize = new GSize(12, 20);
		reportIcon.shadowSize = new GSize(22, 20);
		reportIcon.iconAnchor = new GPoint(6, 20);
		reportIcon.infoWindowAnchor = new GPoint(5, 1);
		
		addTrans();
		
		addSingleReport()
	}
}

function addTrans()
{
	//loop through transmitter array and add markers to the map
	for(var i=0;i<transmitter.length;i++)
	{
		marker = new GMarker(new GLatLng(transmitter[i].lat,transmitter[i].lng),{icon:transIcon});			
		marker.bindInfoWindowHtml(makeTransmitterhtml(transmitter[i]));
		map.addOverlay(marker);
	}
}

function addReports(tid)
{
	removeReports();
	var maxContent = "Loading...<img src='../img/loader2.gif' alt='loading' style='vertical-align:middle' />";
	var maxTitle = "Reception Report";
	
	//Loop through reports array and add markers to the map
	for(var i=0;i<report.length;i++)
	{
		if(report[i].tid == tid)
		{
			marker = new GMarker(new GLatLng(report[i].lat,report[i].lng),{icon:reportIcon});	
			marker.details = report[i];
			GEvent.addListener(marker, 'click', markerClick);
			markerRef.push(marker);
			map.addOverlay(marker);
		}
	}	
}

function markerClick() 
{	
	var maxContentDiv = document.createElement('div');
	maxContentDiv.innerHTML = "Loading...<img src='../img/loader2.gif' alt='loading' style='vertical-align:middle' />";
	var maxTitle = "Reception Report";
	var minContent = makeReporthtml(this)
	this.openInfoWindowHtml(minContent,{maxContent: maxContentDiv,maxTitle: maxTitle});
	
	var rid = this.details.rid;
	var iw = map.getInfoWindow();
	GEvent.addListener(iw, "maximizeclick", function() 
	{
		GDownloadUrl("reportdetails.php?rid="+rid, function(data) 
		{
			maxContentDiv.innerHTML = data;
		});
	});
}

function removeReports()
{
	for(var i=0;i<markerRef.length;i++)
	{
		map.removeOverlay(markerRef[i]);
	}
	markerRef = new Array();
}

function go(lat, lng, tid)
{    
		map.panTo(new GLatLng(lat, lng));
		addReports(tid)
}


function makeTransmitterhtml(t)
{
	var count = countReports(t.tid);
	var html = "<h3>"+t.tname+"</h3>";
	html += "<table><tr><td><b>Location</b></td><td>"+t.location+"&nbsp;</td></tr>";
	html += "<tr><td><b>DTT Muxes</b></td><td>"+t.muxes+"&nbsp;</td></tr>";
	html += "<tr><td><b>Polarization</b></td><td>"+t.pol+"&nbsp;</td></tr>";
	html += "<tr><td><b>DTT enabled</b></td>";
	if(t.dtt == 1)
	{
		html += "<td>Yes</td></tr>";
	}
	else
	{
		html += "<td>No</td></tr>";	
	}	
	html += "<tr><td colspan='2'>";
	if(count != 0)
	{
		html += "<a href='javascript:addReports("+t.tid+");'>Show Reports (" + count.toString() + ")</a>"
	}
	else
	{
		html += "No reports have been submitted<br />for this transmitter"	
	}

	html += "</td></tr></table>";
	return html;
}

function makeReporthtml(m)
{
	var html = "<h3>Report By " + m.details.uname + "</h3>";
	html += "<p>Last updated on " + m.details.lastupdate + "</p>";
	html += "<p>Click on maximize to see report details</p>"
	return html;
}

function countReports(tid)
{
	var count=0;
	for(var i=0;i<report.length;i++)
	{
		if(report[i].tid == tid)
		{
			count ++;
		}
	}
	return count;
}

function setUpSingleMarker(report)
{
	marker = new GMarker(new GLatLng(report.lat,report.lng),{icon:reportIcon});	
	marker.details = report;
	GEvent.addListener(marker, 'click', markerClick);
	markerRef.push(marker);
	map.addOverlay(marker);
	map.setCenter(marker.getLatLng(),8);
	
	var maxContentDiv = document.createElement('div');
	maxContentDiv.innerHTML = "Loading...<img src='../img/loader2.gif' alt='loading' style='vertical-align:middle' />";
	var maxTitle = "Reception Report";
	var minContent = makeReporthtml(marker)
	marker.openInfoWindowHtml(minContent,{maxContent: maxContentDiv,maxTitle: maxTitle});
	
	var rid = marker.details.rid;
	var iw = map.getInfoWindow();
	GEvent.addListener(iw, "maximizeclick", function() 
	{
		var randomnumber=Math.floor(Math.random()*1001)
		GDownloadUrl("reportdetails.php?rid="+rid+"&stamp="+randomnumber, function(data) 
	{
		maxContentDiv.innerHTML = data;
	});
	});	
}

