// Global Variables
var geocoder = new GClientGeocoder();
var map;
var citycount = 0;
var markers = [];
var listelements = [];
var listelements2 = [];
var citypoints = [];
var cityinfo = [];
var temp_id = '';




function load()
{
  if (GBrowserIsCompatible())
  {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(0, 0), 1);
  }
}



function loadFriends(xmldoc)
{
	//alert('entering loadAddresses');
	var xml = xmldoc;
	var friends = xml.getElementsByTagName('user');
	var locations;
	var node = '';
	var hometown = '';
	var name = '';
	var picture = '';
	var personal_info = '';
	var birthday = '';
	//alert(friends.item(1).textContent);

	for (var i = 0; i < friends.length; i++)
 	{
		//Get Names
		name = friends.item(i).childNodes[1].firstChild.data + " " + friends.item(i).childNodes[2].firstChild.data

		//Get Hometown_Location (Town, State, Country, PLZ)
		locations = friends.item(i).getElementsByTagName('hometown_location');
		hometown = '';
		for (var j = 0; j <=2; j++)
	        {
		  node = locations.item(0).childNodes[j];
		  if (node.childNodes.length > 0)
  		  {
		    hometown = hometown + node.firstChild.data + ", ";
		  }
		}
		hometown = hometown.substring(0,hometown.length-2);

		//Get Pictures
		picture = friends.item(i).getElementsByTagName('pic_small');
		if (picture.item(0).childNodes.length > 0)
		    picture = picture.item(0).firstChild.data;
		else
		    picture = 'http://static.ak.facebook.com/pics/s_default.jpg';

		//Get Birthday
		birthday = friends.item(i).getElementsByTagName('birthday');
		if (birthday.item(0).childNodes.length > 0)
		    birthday = birthday.item(0).firstChild.data;
		else
			birthday = '';

		//Get Personal Info (Music)
		personal_info = friends.item(i).getElementsByTagName('music');
		if (personal_info.item(0).childNodes.length > 0)
		    personal_info = personal_info.item(0).firstChild.data;
		else
			personal_info = '';


		bubble = '<div id="bubble"><div id="bubbleimg"><img src="' + picture + '" /></div><div id="bubbletxt"><b>' + name +
			 '</b><br /><br />Birthday: ' + birthday + '<br /><br /> ' + hometown + '</div>';
		
		if (personal_info.length > 0) {
			var index = personal_info.indexOf(",");
			bubble2 = personal_info.slice(0, index);
		}

        listelements[i] = bubble;
        listelements2[i] = bubble2;
        bubble2 = '';
        showAddress(i, hometown, name);
	}

}



function showAddress(id, address, friendNameForListOfCity)
{
        geocoder.getLatLng(
          address,
          function(point){
            if (!point){

	      // JOERN: also: hier koennte ich z.B. addFriendToFriendslist(friendNameForListOfCity, address,0,0) aufrufen
	      // JOERN: wobei die erste Null anzeigt ... kein Marker vorhanden, sprich kein onclick dafuer grau unterlegen
	      // JOERN: die zweite Null ist nur ein Platzhalter ... da hier kein index fuer markers[] mitgegeben werden muss

              //alert(address + " not found");
            }
            else{
                var marker = new GMarker(point);
                markers[id] = marker;

	        // JOERN: also: hier koennte ich z.B. addFriendToFriendslist(friendNameForListOfCity, address,1,id) aufrufen
	        // JOERN: wobei die erste Eins anzeigt, dass der Marker generiert wurde, sprich ich hinterlege onclick in der Liste
	        // JOERN: "id" ist der index fuer markers[], mit der ich dann bei onclick die clickIt(id) Funktion aufrufen kann


                    if (citycount == 0){
                            // create new entry in citypoints and cityinfo and display on map
                            citypoints[citycount] = point;
                            cityinfo[citycount] = '<b>' + address + "</b><br /><br /><u>Your Friends from here:</u><br /><br /><a href=\"javascript:clickIt(" + id + ");\">" + friendNameForListOfCity + "</a><br>";
                            var temp = cityinfo[citycount];
                            // hier machen wir keinen extra staedtemarker, freundmarker mit stadttext ist ok
                            map.addOverlay(marker);
                            GEvent.addListener(marker, "click", function(){
                                marker.openInfoWindowHtml(temp);
                            });
                            citycount++;
                    }
                    else{
                        var schalter = 0;
                        for (i = 0; i < citypoints.length; i++){
                            if (citypoints[i].equals(point)){
                                temp = cityinfo[i];
                                cityinfo[i] = temp + "<a href=\"javascript:clickIt(" + id + ");\">" + friendNameForListOfCity + "</a><br>";
                                // Dieser marker sollte nicht gesetzt werden
                                map.addOverlay(marker);
                                GEvent.addListener(marker, "click", function(){
                                    marker.openInfoWindowHtml(temp + "<a href=\"javascript:clickIt(" + id + ");\">" + friendNameForListOfCity + "</a><br>");
                                });
                                schalter = 1;
                                break;
                            }
                        }
                        if (schalter == 0){
                                // create new entry in citypoints and cityinfo and display on map
                                citypoints[citycount] = point;
                            cityinfo[citycount] = '<b>' + address + "</b><br /><br /><u>Your Friends from here:</u><br /><br /><a href=\"javascript:clickIt(" + id + ");\">" + friendNameForListOfCity + "</a><br>";
                                var temp = cityinfo[citycount];
                                // hier machen wir keinen extra staedtemarker, freundmarker mit stadttext ist ok
                                map.addOverlay(marker);
                                GEvent.addListener(marker, "click", function(){
                                    marker.openInfoWindowHtml(temp);
                                });
                                citycount++;
                        }
                    }
            }
          }
        );
}



function createMarker(point, message)
{
     var marker = new GMarker(point);
     GEvent.addListener(marker, "click", function(){
       marker.openInfoWindowHtml(message);
       });
     return marker;
}



function clickIt(id)
{
  temp_id = id;
  fetchAmazon(id);
}