
var googlemap = null;
var markers = [];
var geocoder = null
var infowindows = [];
var infowindowsize = null;
var geocodecounter = 0;


var settocenter = null;
var myLatLngBounds = null;
var markerCounter = 0;
function initialize () {
	
	var myLatlng = new google.maps.LatLng(54.20875, 10.372583);
	
    var myOptions = {
      zoom: 12,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    googlemap = new google.maps.Map(document.getElementById("partner-map"), myOptions);
	geocoder = new google.maps.Geocoder();
	infowindowsize = new google.maps.Size(290,160);

	
	
	jQuery('div.inner-address').each(function() {
	
		var lat = jQuery('div.map-lat',this).text();
		var lon = jQuery('div.map-lon',this).text();
		var myaddr = jQuery('div.map-address',this).text();	
		var myid = jQuery('div.map-address',this).attr('id');
		var uid = parseInt(myid.substr(4,myid.length));
		//console.log([lat,lon,myaddr,uid]);
		//if (false) {
		markers[myid] = null;
		infowindows[myid] = new google.maps.InfoWindow({ content:  jQuery(this).html(), size: infowindowsize });
		var myLatlng  = null;
		if (lat.length > 0 && lon.length > 0) {
		//if (!jQuery(this).hasClass('direct')) {

			 myLatlng = new google.maps.LatLng(lat,lon);
			var marker = new google.maps.Marker({
				map: googlemap, 
				position: myLatlng
			});
			google.maps.event.addListener(marker, 'click', function() {
				for (var k in infowindows) {
					infowindows[k].close();
				}
				infowindows[myid].open(googlemap,marker);
			});
			markers[myid] = marker;
			markerCounter++;
			if (myLatlng) {
				if (!myLatLngBounds) {
					var tmp = new google.maps.LatLng(myLatlng.lat()+0.05,myLatlng.lng()+0.05);
					myLatLngBounds = new google.maps.LatLngBounds(myLatlng,tmp);
					settocenter = myLatlng;
				} else {
					myLatLngBounds.extend(myLatlng);
					settocenter = myLatLngBounds.getCenter();
				}
			}
		} else {
			if (geocodecounter < 10) {
				geocoder.geocode( { 'address': myaddr}, function (results,status) {
					if (status == google.maps.GeocoderStatus.OK) {

						 myLatlng = results[0].geometry.location;
						jQuery.post('/typo3conf/ext/12bis3_geomap/save/index.php',{addrid: uid ,lat: myLatlng.lat(), lon: myLatlng.lng()});
						var marker = new google.maps.Marker({
							map: googlemap, 
							position: myLatlng
						});
						google.maps.event.addListener(marker, 'click', function() {
							for (var k in infowindows) {
								infowindows[k].close();
							}
							infowindows[myid].open(googlemap,marker);
						});
						markers[myid] = marker;
						markerCounter++;
						if (myLatlng) {
							if (!myLatLngBounds) {
								var tmp = new google.maps.LatLng(myLatlng.lat()+0.05,myLatlng.lng()+0.05);
								myLatLngBounds = new google.maps.LatLngBounds(myLatlng,tmp);
								settocenter = myLatlng;
							} else {
								myLatLngBounds.extend(myLatlng);
								settocenter = myLatLngBounds.getCenter();
							}
						}
				 	} 
				});
				geocodecounter++;
			}			 	
		}
		var self = this;
		jQuery('strong.clickable',self).click(function () {
			var inners = jQuery('div.inner-address');
			if (inners.length > 1) {
				
				jQuery('div.inner-address .hideable').hide('normal');
				jQuery('.hideable',self).show('normal');
			}
			googlemap.set_center(markers[myid].get_position());
			googlemap.set_zoom(14);
			for (var k in infowindows) {
				infowindows[k].close();
			}
			infowindows[myid].open(googlemap,markers[myid]);
			return false;
		});
	});
	//console.log([swcoord,necoord]);
	//var swLatLng = new google.maps.LatLng(swcoord.lat,swcoord.lon);
	//var neLatLng = new google.maps.LatLng(necoord.lat,necoord.lon);	
	if (markerCounter > 1) {
		if (myLatLngBounds) googlemap.fitBounds(myLatLngBounds);
	} else {
		googlemap.setZoom(10);
	}
	//
	if (settocenter) googlemap.setCenter(settocenter);
	directionsDisplay = new google.maps.DirectionsRenderer();
	directionsDisplay.setMap(googlemap);

	directionsDisplay.setPanel(document.getElementById("directionsPanel"));

}
jQuery(document).ready(function() {
	 var useragent = navigator.userAgent;
	if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1 ) {
		google.load("maps", "3",  {callback: initialize, other_params:"sensor=true&language=de&region=DE"});
	} else {
		google.load("maps", "3",  {callback: initialize, other_params:"sensor=false&language=de&region=DE"});
	}
	jQuery('a.resetmap').click(function() {
		var myLatlng = new google.maps.LatLng( 54.20875, 10.372583);
		googlemap.set_center(myLatlng);
		googlemap.set_zoom(3);
   		return false;
	});
	
   	
});
