var ua = navigator.userAgent.toLowerCase(),os,browser,version,data;

function checkBrowser() {
    if (detect('konqueror')) {browser = "Konqueror"; os = "Linux";}
    else if (detect('safari')) browser = "Safari";
    else if (detect('omniweb')) browser = "OmniWeb";
    else if (detect('firefox')) browser = "Firefox";
    else if (detect('opera')) browser = "Opera";
    else if (detect('gecko')) browser = "Gecko based";
    else if (detect('webtv')) browser = "WebTV";
    else if (detect('icab')) browser = "iCab";
    else if (detect('msie')) browser = "Internet Explorer";
    else if (!detect('compatible')) {browser = "Netscape Navigator"; version = ua.charAt(8);}
    else browser = "An unknown browser";

    if (!version) version = ua.charAt(stringposition + data.length);

    if (!os) {
       if (detect('linux')) os = "Linux";
       else if (detect('x11')) os = "Unix";
       else if (detect('mac')) os = "Mac";
       else if (detect('win')) os = "Windows";
       else os = "An unknown operating system";
    }
}

function detect(text) {
   stringposition = ua.indexOf(text) + 1;
   data = text;
   return stringposition;
}

function outputValues() {
   var outputs = ['browser','browser version','operating system','user agent string (in lowercase)']
   var outputs2 = [browser, version, os, ua]
   for (i=0; i<outputs.length; i++) {
       para = document.createElement('p');
       document.body.appendChild(para);
       para.appendChild(document.createTextNode('Your ' + outputs[i] + ' is: ' + outputs2[i]))
   }
}

window.onload = function() {
   checkBrowser();
   outputValues();
}

//<![CDATA[

var markers = [];
var broadcasts = [];
var gmarkers = [];
var gmarkersType = [];
var map;
var timeOut=100;
var i=0;
var blueicon;
var redicon;
var j;


function mapit() {
	if (detect('jerkbrowser')) {
		alert("We're sorry, this map is not currently compatible with this browser.");
	} else if (GBrowserIsCompatible()) {
		// arrays to hold copies of the markers
		j = 0;
		
		// create the map
		map = new GMap(document.getElementById("map"));

		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.centerAndZoom(new GPoint(-79.94, 32.79), 6);
		// create custom icons
		
		redicon = new GIcon();
		redicon.image = "http://splendidtable.publicradio.org/whereweeat/map/images/mm_20_red.png";
		redicon.shadow = "http://splendidtable.publicradio.org/whereweeat/map/images/mm_20_shadow.png";
		redicon.iconSize = new GSize(12, 20);
		redicon.shadowSize = new GSize(22, 20);
		redicon.iconAnchor = new GPoint(6, 20);
		redicon.infoWindowAnchor = new GPoint(5, 1);
		
		// This function picks up the click and opens the corresponding info window. Not used right now
		function myclick(i) {
			gmarkers[i].openInfoWindowHtml(htmls[i]);
		}

		// Read the data from example.xml
		var request = GXmlHttp.create();
		request.open("GET", "/listings/091107/sterns.xml", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;
				// obtain the array of markers and loop through it
				markers = xmlDoc.documentElement.getElementsByTagName("location");
//				broadcasts = xmlDoc.documentElement.getElementsByTagName("broadcast");
				window.setTimeout(mapOne,timeOut);
			}
		}
		request.send(null);
	} else {
		alert("Sorry, Google Maps is not compatible with this browser.");
	}
}    


// A function to create the marker and set up the event window
function createMarker(point, name, city, address, state, zip, url, website, airdate, whatsgood, lat, lng) {
//			alert('point is ' + point + ',\nname is ' + name + ',\ncity is ' + city + ',\nstate is ' + state + ',\naddress is ' + address + ',\nday is ' + day + ',\ntime is ' + time + '\n');

	var marker = new GMarker(point, redicon);
	var	thisHTMLText =  "<div class=\"overlaySize\"><strong><p class=\"overlayText\">"
						+ name 
						+ "</strong><br />" 
						+ address 
						+ "<br />"
						+ city
						+ ", "
						+ state
						+ " "
						+ zip
						+ "<br /><br />"
						+ whatsgood
						+ "</p><div class=\"overlayTextSmall\"><a href=" 
						+ url
						+ " target=blank>"
						+ website
						+ "</a>"
						+ "<br />"
						+ "<em>Aired: "
						+ airdate
						+ "</em></div></div>";
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(thisHTMLText);
	});
	// save the info we need to use later
	gmarkers[j] = marker;
	j++;
	return marker;
}



function mapOne() {
	if (i < markers.length) {
	
		var max=Math.min(i+10, markers.length);
		while (i < max){
			// obtain the attribues of each marker
			var lat = markers[i].getAttribute("lat");
			var lng = markers[i].getAttribute("long");
			var point = new GPoint(lng,lat);
			var restaurant = markers[i].getAttribute("restaurant");
			var city = markers[i].getAttribute("city");
			var address = markers[i].getAttribute("address");
			var state = markers[i].getAttribute("state");
			var url = markers[i].getAttribute("url");
			var website = markers[i].getAttribute("website");
			var zip= markers[i].getAttribute("zip");
			var airdate = markers[i].getAttribute("airdate");
			var whatsgood = markers[i].getAttribute("whatsgood");


			
			// create the marker
			var marker = createMarker(point, restaurant, city, address, state, zip,  url, website, airdate, whatsgood, lat, lng);
			map.addOverlay(marker);
			i++;
		}
		if (document.getElementById('loadingMessage')) {
			document.getElementById('loadingMessage').innerHTML = "Loading: " + i + " of " + markers.length;
			window.setTimeout(mapOne,timeOut);
		}
	} else {
		document.getElementById('loading').style.visibility = 'hidden';
	}	
}


function selectState(u) {
	var idx = u.selectedIndex;
	var val = u.options[idx].value;
	var zoomArray = val.split(',');
	if (val != "") {
		map.centerAndZoom(new GPoint(parseFloat(zoomArray[1]),parseFloat(zoomArray[2])), parseInt(zoomArray[0]));
		map.zoomTo(parseInt(zoomArray[0]));
	}
}

    //]]>