var map;

function setWarnings(res) {
    var doc = res.responseXML;
    if (!doc) return;
    var warnings = doc.getElementsByTagName("warning");
		for (var i=0; i<warnings.length; i++) {
				var w = warnings[i];
				var loc = w.getAttribute("location");
				var description = w.firstChild.nodeValue;
				lookupLocation(loc,description);
		}
}

function showMarker(loc,res,description) {
		try {
				_showMarker(loc,res,description);
		} catch (e) {alert(e);}
}

function _showMarker(loc,res,description) {
		var txt = res.responseText;
		var parts = txt.split(/,/);
		if (parts.length<4) return;
		var code = parts[0];
		if (code != '200') return;
		var lat = parseFloat(parts[2]);
		var lng = parseFloat(parts[3]);
		//
		// Insert some randomness for multiple hits
		//
		lat += Math.random() * 0.001;
		lng += Math.random() * 0.001;
		var point = new GLatLng(lat,lng);
    var marker = new GMarker(point);
    map.addOverlay(marker);
    var html = '';
    html += '<div id="mainInfoDiv" style="height:250; width:450; padding: 2px; font-family:courier; font-size:8pt; overflow:auto">';
		description = description.replace(/\n/,'<br/>');
		html += description;
    html += "</div>";
		GEvent.addListener(marker, "click", function() {
						marker.openInfoWindowHtml(html);
				});
}

function lookupLocation(loc,description) {
		var url = '/warnings/geo.php';
    var params = {q:loc};
		new Ajax.Request (url, 
											{method: 'get', 
															parameters: params, 
															onSuccess: function(res) {
															showMarker(loc,res,description);
													}
															});
}

function genWarnings() {
		var url = '/warnings/lookup.php';
    var params = {};
		new Ajax.Request (url, 
											{method: 'get', 
															parameters: params, 
															onSuccess: setWarnings
															});
}

function onLoad() {

    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(41.0069, -96.6817),5);
    map.setUIToDefault();
    
    genWarnings();
}
