
/*************************************

		Google Maps Script
		  Stefan Bauer
  
	 drawNeighborsMap(div, length, width, neighbors)
	 drawLocationMap(div, length, width)
	 loadDirections(mapdiv, directionsdiv, targetadress, startadress, l)

************************************/	
	 	
	function drawNeighborsMap(div, length, width, neighbors, div_width, div_height){
		var el = document.getElementById (div);
		if (el != null)
		{
			var map2 = new GMap2(el,{size:new GSize(div_width,div_height)});
			map2.setCenter(new GLatLng(width,length), 11);
			
			var bounds = map2.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngSpan = northEast.lng() - southWest.lng();
			var latSpan = northEast.lat() - southWest.lat();
		
			var tinyIcon = new GIcon();
			tinyIcon.image = "http://www.urlaubambauernhof.at/fileadmin/template/img/googleMaps_icon.png";
			tinyIcon.iconSize = new GSize(15, 21);
			tinyIcon.iconAnchor = new GPoint(6, 20);
			tinyIcon.infoWindowAnchor = new GPoint(5, 1);
			markerOptions = { icon:tinyIcon };
						
			$.each(neighbors, function(i,hof){
				//alert(hof.Hof);
				var point = new GLatLng(hof.breitengrad,hof.laengengrad);
				var marker = new GMarker(point,markerOptions);
				var string = "<div style='width:100px'>"+hof.Hof+"</div>";
				
				/*$.each(hof, function(i,item){
					alert(i+" "+item);
				});*/
				
				GEvent.addListener(marker, "mouseover", function (evt) {
					mapInfoAusgabe(hof.Hof, hof.kategorie, hof.Plz, hof.Ort, hof.bild, hof.Mitgl_Art);
				});
				
				GEvent.addListener(marker, "mouseout", function () {
							mapInfoHide();
				});
				
				GEvent.addListener(marker, "click", function () {
							mapInfoMove(hof.mgl);
				});
				
				map2.addOverlay(marker);
			  	
				//map2.addOverlay(new GMarker(point, markerOptions));
			});
			
			var homeIcon = new GIcon();
			homeIcon.image = "http://www.urlaubambauernhof.at/fileadmin/template/img/googleMaps_icon_rot.png";
			homeIcon.iconSize = new GSize(20, 27);
			homeIcon.iconAnchor = new GPoint(6, 20);
			homeIcon.infoWindowAnchor = new GPoint(5, 1);
			markerOptions = { icon:homeIcon };
			
			//homeIcon zeichnen
			var point = new GLatLng(width,length);
			map2.addOverlay(new GMarker(point, markerOptions));
			
			map2.setUIToDefault();
		}
	}
	
	
	function drawSuchergebnisMap(div, hoefe, div_width, div_height, center_width, center_length, zoom){
			
			if (typeof zoom == "undefined")
			{
				zoom = 6;
			}
			var map2 = new GMap2(document.getElementById(div),{size:new GSize(div_width,div_height)});
			//map2.setCenter(new GLatLng(center_width,center_length), 14);
			
//			map2.setCenter(new GLatLng(center_length,center_width), 6);
			map2.setCenter(new GLatLng(center_length,center_width), zoom);

						
			var bounds = map2.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngSpan = northEast.lng() - southWest.lng();
			var latSpan = northEast.lat() - southWest.lat();
		
			var tinyIcon = new GIcon();
			tinyIcon.image = "http://www.urlaubambauernhof.at/fileadmin/template/img/googleMaps_icon.png";
			tinyIcon.iconSize = new GSize(15, 21);
			tinyIcon.iconAnchor = new GPoint(6, 20);
			tinyIcon.infoWindowAnchor = new GPoint(5, 1);
			markerOptions = { icon:tinyIcon };
				
			$.each(hoefe, function(i,hof){
				var point = new GLatLng(hof.breitengrad,hof.laengengrad);
				var marker = new GMarker(point,markerOptions);
				var string = "<div style='width:100px'>"+hof.Hof+"</div>";				
				var html=mapInfoAusgabeHTML(hof.id, hof.hofname, hof.kategorie, hof.plz, hof.ort, hof.googeBoxImage, hof.isPZV);
				GEvent.addListener(marker, "mouseover", function () {
					map2.openInfoWindowHtml(point,html);

				});				
				
				map2.addOverlay(marker);
			});
			
			map2.setUIToDefault();	
	}
	
	
	function mapInfoMove(hofid){
		window.location="index.php?id=14&hofId="+hofid;	
	}
	
	function mapInfoHide(){
		$("#map_information").children().remove();
		$('#map_information').hide(200);
	}
	var count=0;
	function mapInfoAusgabeHTML(id,hofname, kategorie, plz, ort, bild, isPZV){
		count++;
		var imgpath="uploads/uab_member_images/";

		//alert("bild:"+bild);
		
		
		/*if(bild != "" && typeof bild != "undefined"){
			var img=imgpath+'tiny/'+bild;
		} else {
			var img=imgpath+'noImage_small.png';
		}*/
		
		 var element= '<div><img src="'+bild+'" align="left" style="border:none; margin-right:4px;" />'+hofname+'<br />';
		 
		 var grafic="flower_small.png";
		 if(isPZV){
			 grafic="sun_small.png";
		 }
		 
		 if(kategorie < 9){
			for(var i=0; i<kategorie; i++){
				element += '<img src="fileadmin/template/img/'+grafic+'" /> '; 
			}
		}
         
		 element += '<br />'+plz+' '+ort+'</div>';
		 element += '<div style="text-align:right; padding-top:5px; cursor:pointer;" onclick="loadMemberHistory(\'#'+id+'\')"><b>Mehr Informationen</b></div>';	
		return element;
	}
	
	function mapInfoAusgabe(hofname, kategorie, plz, ort, bild, Mitgl_Art){
		
		var imgpath="uploads/uab_member_images/";		
		if(bild != ""){
			var img=imgpath+'tiny/'+bild;
			img = bild;
		} else {
			var img=imgpath+'noImage_small.png';
		}

		 var element= '<div><img src="'+img+'" align="left" style="border:none; margin-right:4px;" />'+hofname+'<br />';
		 
		 var grafic="flower_small.png";
		 if(Mitgl_Art==3){
			 grafic="sun_small.png";
		 }
		 
		 if(kategorie != 9){
			 for(var i=0; i<kategorie; i++){
				 element += '<img src="fileadmin/template/img/'+grafic+'" /> '; 
			 }
		 }
         
		 element += '<br />'+plz+' '+ort+'</div>';	
		 
		$(element).appendTo('#map_information');
		$('#map_information').show(400);
	}
	
	function drawLocationMap(div, length, width){
		var el = document.getElementById (div);
		if (el != null)
		{
			var map = new GMap2(el,{size:new GSize(330,300)});			
			map.setCenter(new GLatLng(width,length), 13);
			
			var bounds = map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngSpan = northEast.lng() - southWest.lng();
			var latSpan = northEast.lat() - southWest.lat();
		
				var tinyIcon = new GIcon();
				tinyIcon.image = "http://www.urlaubambauernhof.at/fileadmin/template/img/googleMaps_icon_rot.png";
				//tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
				tinyIcon.iconSize = new GSize(20, 27);
				//tinyIcon.shadowSize = new GSize(22, 20);
				tinyIcon.iconAnchor = new GPoint(6, 20);
				tinyIcon.infoWindowAnchor = new GPoint(5, 1);
				markerOptions = { icon:tinyIcon };	
			
			  var point = new GLatLng(width,length);
			  map.addOverlay(new GMarker(point, markerOptions));

			map.setUIToDefault();	
		}
	}
	
	function drawBigLocationMap(div, length, width, divWidth, divHeight){			
			var map = new GMap2(document.getElementById(div),{size:new GSize(330,300,divWidth,divWidth)});			
			map.setCenter(new GLatLng(width,length), 13);
			
			var bounds = map.getBounds();
			var southWest = bounds.getSouthWest();
			var northEast = bounds.getNorthEast();
			var lngSpan = northEast.lng() - southWest.lng();
			var latSpan = northEast.lat() - southWest.lat();
		
				var tinyIcon = new GIcon();
				tinyIcon.image = "http://www.urlaubambauernhof.at/fileadmin/template/img/googleMaps_icon_rot.png";
				//tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
				tinyIcon.iconSize = new GSize(20, 27);
				//tinyIcon.shadowSize = new GSize(22, 20);
				tinyIcon.iconAnchor = new GPoint(6, 20);
				tinyIcon.infoWindowAnchor = new GPoint(5, 1);
				markerOptions = { icon:tinyIcon };	
			
			  var point = new GLatLng(width,length);
			  map.addOverlay(new GMarker(point, markerOptions));

			map.setUIToDefault();	
	}
	
    var map;
    var gdir;
    var geocoder = null;
    var addressMarker;
	
    function loadDirections(mapdiv, directionsdiv, targetadress, startadress, l) {
			  
		$("#".directionsdiv).children().remove();
		var gofrom=targetadress;
		var togo=startadress;
		var lang = l; 
	
			  
		if (GBrowserIsCompatible()) {      
			map = new GMap2(document.getElementById(mapdiv));
			gdir = new GDirections(map, document.getElementById(directionsdiv));
			GEvent.addListener(gdir, "load", onGDirectionsLoad);
			GEvent.addListener(gdir, "error", handleErrors);
			setDirections(togo, gofrom, lang);
			map.setUIToDefault();	
		}
	
    }
    
    function setDirections(fromAddress, toAddress, locale) {
		
      gdir.load("from: " + fromAddress + " to: " + toAddress,
                { "locale": locale });
    }

    function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	     alert("Die eingegebene Adresse konnte nicht gefunden werden.");
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	     alert("Diese Anfrage konnte nicht verarbeitet werden. Bitte überprüfen Sie die Werte und starten Sie die Anfrage erneut.");
	   
	   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
	     
	   else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	     alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
	    
	   else alert("An unknown error occurred.");
	   
	}

	function onGDirectionsLoad(){ 
      // Use this function to access information about the latest load()
      // results.

      // e.g.
      // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
	  // and yada yada yada...
	}
