var mmap;
var markers = [];
var htmls = [];
var gmarkers = [];
var i;
var status = 'suche';
function ginit() {
	  $('map').setStyle = $(document.body).getHeight + 'px';	
	   mmap = new GMap2($("map"));
	   mmap.setCenter(new GLatLng(53.59	 ,10.01490800),14);
	   mmap.enableContinuousZoom();
	   mmap.enableDoubleClickZoom();
	   var bottomleft = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(5,5));
	   mmap.addControl(new GSmallZoomControl(),bottomleft);
	   mmap.setMapType(G_HYBRID_MAP);
	   home =  new GLatLng(53.62294,10.017766);
  	   Element.setOpacity('side','0.8');
  	   GDownloadUrl("./arb.class.php?gettrees=all", gettrees);
				
  	   new Effect.MoveBy ($('side'),80,0,{
  	   			transition:Effect.Transitions.sinoidal,delay:1,duration:0.6});
 	   new Ajax.Autocompleter("nadel", "autocomplete_choices", "./arb.class.php?searching=1", {
 	   		paramName:'nadel',
 	   		minChars:2,
 	   		frequency: 0.7,
 	   		indicator:'warte',
 	   		afterUpdateElement:function(e,i) {
 	   			Element.hide('modus');
 	   			var id = i.id.split('_');
 	   				Element.show('warte');
 	   				GDownloadUrl("./arb.class.php?gettrees=" + id['1'], gettrees);
					$('treeid').value = id['1'];
				
 	   			if ($F('modus')=='write') {
 	   				Element.show('add');
 	   				Element.show('esc');
 	   				status = 'selected';
 	   			} else {
					
					$('nadel').className='output';
 	   				$('label').className='output';
 	   			
				
				}
			}	
 	   		});
 	   	Element.setOpacity($('autocomplete_choices'),'0.4');	
		new PeriodicalExecuter(function() {
			switch (status) {
				case 'suche','save': 
					$('nadel').className='input';
 	   				$('label').className='input';
 	   				$('esc').style.display='none';
 	   				$('save').style.display='none';
 	   				$('add').style.display='none';
 	   			break;
				case 'selected':
					$('nadel').className='output';
 	   				$('label').className='output';
 	   				$('nadel').disable='disable';
 	   		break;
				case 'newtree':
					Element.hide('add');
					Element.show('save');
				break;
			}
			Try.these(function(){$('autocomplete_choices').style.width = $('max').getAttribute('rel')/2 + 'em';});
		 },0.2);
}

abbruch = function() {
	mmap.clearOverlays();
	GDownloadUrl("./arb.class.php?gettrees=all", gettrees);
		Element.show('modus');
 	   			
	$('nadel').className='input';
 	$('label').className='input';
 	$('save').style.display='none';
 	Effect.Fade('add');
 	Effect.Fade('esc');
 	
	$('nadel').value='';
	$('nadel').focus();
	status='suche';
}

calc = function() {
	var cm = $F('inp');
	var f =  $F('meter');
	var yy;
	yy = 2009 - cm * f / 2.5;
	$('year').value = '' + Math.round(yy);
}

var newpoint;

setmarker = function() {	
	var html = '';
	var txt;
	status = 'newtree';
	var marker = new GMarker(mmap.getCenter(),{draggable:true});      		
	mmap.addOverlay(marker);
//	marker.openInfoWindowHtml('<div>Description of this new tree</div><textarea id="txt"></textarea><div><input id="inp" size="3" /> cm <select><option value="1">Umfang</option><option value="3.14">Durchmesser</option></select> = <span style="color:black!important;font-size:8pt!important" id="years">0</span> years old</div>',{redraw:true});
	marker.openInfoWindowHtml('<div id="treeform" style="width:340px;height:200px"></div>');
	GEvent.addListener(mmap,"infowindowopen",function(m) {
		$('treeform').innerHTML = '<div style="font-size:7pt"> Description of this new tree:</div>'
		   + '<textarea id="txt"></textarea><div style="font-size:7pt"><br/>Calculator for year of planting:</div>'
		   + '<div style="font-size:8pt" ><input id="inp" onblur="calc();" onkeyup="calc();" size="3" /> cm <select onchange="calc()" id="meter"><option value="1">perimeter</option><option value="3.14">diameter</option></select>' 
		   + ' Year of planting: <input id="year" size="4"  /></div>';
	});
	
	marker.enableDragging();
	GEvent.addListener(marker, "dragstart", function() {
       		  html = $('treeform');       
            	txt =  $F('txt')
            	mmap.closeInfoWindow();
	});
	GEvent.addListener(marker, "dragend", function(p) {
		marker.openInfoWindowHtml(html,{redraw:true});
		$('txt').value= txt;
		newpoint=p;
	});

}


/////////////////////////////////////////////////////////////
gettrees = function(doc) {
	mmap.clearOverlays();
	var jsonData = eval('(' + doc + ')');
	var bounds = new GLatLngBounds();
	 
	for (var i=0; i<jsonData.markers.length; i++) {
	  var point = new GLatLng(jsonData.markers[i].lat, jsonData.markers[i].lng);
	  var marker = createMarker(point, jsonData.markers[i].label, jsonData.markers[i].html);
	   bounds.extend(point);
	   mmap.addOverlay(marker);
	  
	}
	Element.hide('warte');
	Element.show('esc');
	var level = mmap.getBoundsZoomLevel(bounds);	
	if (level>18) level=18;
	if (level>3) {
		mmap.setZoom(level);
  		mmap.setCenter(bounds.getCenter());
	}
}          
      
savetree = function() {
	status = 'save';
	var params = 'txt=' + encodeURI($F('txt')) + 'year=' + encodeURI($F('year')) + '&geo=' + newpoint.toUrlValue() + '&treeid=' + $F('treeid');
	new Ajax.Request("./arb.class.php?savetree=1",{parameters:params,method:'post'});
	mmap.clearOverlays();
	$('nadel').className='input';
 	$('label').className='input';
 	$('save').style.display='none';
 	$('add').style.display='none';
 	$('esc').style.display='none'; 	  
	$('nadel').value='';
	$('nadel').focus();
	abbruch();
}


 function createMarker(point,name,html) {
        var marker = new GMarker(point,{icon:tree});
        if (html.length>1) {
        	GEvent.addListener(marker, "click", function() {
          	marker.openInfoWindowHtml(html);
        	});
        }
        gmarkers[i] = marker;
        htmls[i] = html;
        i++;
        return marker;
      }



function log(o) {
	Try.these(console.log(o));
}

function drawCircle(center, radius, nodes, liColor, liWidth, liOpa, fillColor, fillOpa) {
// Esa 2006
	//calculating km/degree
	var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
	var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;

	//Loop 
	var points = [];
	var step = parseInt(360/nodes)||10;
	for(var i=0; i<=360; i+=step)
	{
	var pint = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), center.lng() + 
	(radius/lngConv * Math.sin(i * Math.PI/180)));
	points.push(pint);
	}
	points.push(points[0]); // Closes the circle, thanks Martin
	fillColor = fillColor||liColor||"#0055ff";
	liWidth = liWidth||2;
	var poly = new GPolygon(points,liColor,liWidth,liOpa,fillColor,fillOpa);
	mmap.addOverlay(poly);
}




var baseIcon = new GIcon();
baseIcon.iconSize=new GSize(24,24);
baseIcon.shadowSize=new GSize(36,24);
baseIcon.iconAnchor=new GPoint(10,10);
baseIcon.infoWindowAnchor=new GPoint(0,0);
          
var tree = new GIcon(baseIcon, "http://tools.webmasterei.com/arboretum/tree.gif", null, "http://maps.google.com/mapfiles/kml/pal4/icon27s.png");


