var stopReload=false;
var map;
var gmarkers = [];
var tempmarkers = [];
var clusterer;
var test = false;

// generall help functions
function d(id){return document.getElementById(id);}

// Show Info Box of POI-List (rgpopup)
function show(id) {
  obj = document.getElementById(id);
  if (obj.style.display!="block") obj.style.display = "block";
}


// Hide Info Box of POI-List (rgpopup)
function hide(id) {
  obj = document.getElementById(id);
  if (obj.style.display!="none") obj.style.display = "none";
}

function getBound() {
  var myXmlVar=String(map.getBounds());
  myXmlVar=myXmlVar.replace(/\(/g ,"");
  myXmlVar=myXmlVar.replace(/\)/g ,"");
  myXmlVar=escape(myXmlVar);
  //alert(myXmlVar);
  return myXmlVar;
}

var baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
//baseIcon.iconSize = new GSize(22, 29);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(5, 8);
baseIcon.iconAnchor = new GPoint(8, 8);
baseIcon.infoWindowAnchor = new GPoint(32, 32);
baseIcon.infoShadowAnchor = new GPoint(80, 25);
baseIcon.transparent = "http://www.google.com/mapfiles/markerTransparent.png";

// openPic from typo3 core function 
function openPic(url,winName,winParams) {  
  var theWindow = window.open(url,winName,winParams); 
  if (theWindow) {theWindow.focus();} 
}

// geocoding for searchbox
function showAddress(address) {
  if (geocoder) {
    geocoder.getLatLng(
      address,
      function(point) {
        if (!point) {
          alert(address + " not found");
        } else {
          map.setCenter(point, 13);
        }
      }
    );
  }
}

// catTreemneu
function rggmTree(data) {
  tx_rggooglemap_pi1processCatTree(data);
  setTimeout("fdTableSort.init()", 1000);
}

// catTreemneu
function rggmSearchMenu(data) {
  tx_rggooglemap_pi1processSearchInMenu(data);
  setTimeout("fdTableSort.init()", 1000);
}

function deleteSearchResult() {
  document.getElementById("searchFormResult").innerHTML = '';
  for (var i = 0; i < tempmarkers.length; i++) {
  map.removeOverlay(tempmarkers[i]);
  
  }
}

function checkall(id) {
var contentDiv = document.getElementById(id);
  var test = document.getElementById(id).getElementsByTagName("input");
  var state = false;
  
  if (test[1].checked==false) {
    for (var i=0; i<test.length; i++) {
      test[i].checked = true;
    }
  } else {
    for (var i=0; i<test.length; i++) {
      test[i].checked = false;
    }
  }   
  tx_rggooglemap_pi1processCat(xajax.getFormValues('rggmsearch')); 
}

function uncheckTree () {
  var test = document.getElementById("treemenu1").getElementsByTagName("input");
      for (var i=0; i<test.length; i++) {
      test[i].checked = false;
    }
   tx_rggooglemap_pi1processCat(xajax.getFormValues('rggmsearch')); 
}



	var circle;
	var centerMarker;
	var circleRadius;
	var geocoder = new GClientGeocoder();


function drawCircle(center, circleRadius){
	if (circle) {
		map.removeOverlay(circle);
	}


	map.setCenter(center);

	
	//centerMarker = new GMarker(map.getCenter(),{draggable:false});
	//GEvent.addListener(centerMarker,'dragend',drawCircle)
	//map.addOverlay(centerMarker);

	var center = map.getCenter();

	var bounds = new GLatLngBounds();

	if (circleRadius>0)
	{
		var circlePoints = Array();
		
		with (Math) {
			var d = circleRadius/6378.8;	// radians
	
			var lat1 = (PI/180)* center.lat(); // radians
			var lng1 = (PI/180)* center.lng(); // radians
	
			for (var a = 0 ; a < 361 ; a++ ) {
				var tc = (PI/180)*a;
				var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
				var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
				var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
				var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
				circlePoints.push(point);
				bounds.extend(point);
			}
	
			if (d < 1.5678565720686044) {
				circle = new GPolygon(circlePoints, '#889c47', 2, 1, '#889c47', 0.25);	
			}
			else {
				circle = new GPolygon(circlePoints, '#889c47', 2, 1);	
			}
			map.addOverlay(circle); 
	
			map.setZoom(map.getBoundsZoomLevel(bounds));
		}
	}
}

function centerAddress() {
	var address=document.getElementById('rggmCity').value;
	var circleRadius=document.getElementById('rggmRadius').value;

	if (circleRadius==0) circleRadius=10;

	if (address != '' && geocoder) {
		geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					document.getElementById('rggmCity').value='';
					hide('rggmRadiusdiv');
					if (circle) {
						map.removeOverlay(circle);
					}

				} else {
					show('rggmRadiusdiv');
					drawCircle(point, circleRadius);
				}
			}
		);
	} else 
	{	
		hide('rggmRadiusdiv');
		if (circle) {
			map.removeOverlay(circle);
		}
	}
}

// directions
var gdir;
var retrysearch=0;

            function getDirections(uid,table) {
		document.getElementById('getdirections').innerHTML='';
		retrysearch=0;
                  gdir=new GDirections(map, document.getElementById('getdirections'));
        var saddr = document.getElementById('saddr').value;
        var daddr = document.getElementById('daddr').value;
        gdir.load('from: '+saddr+' to: '+daddr);
	setTimeout("waitdirections()",500);
       }  

function waitdirections() {
	if (gdir.getStatus().code == 500) setTimeout("waitdirections()",500);
	else
	{
		if (gdir.getStatus().code == 602 && retrysearch==0) {
			retrysearch=1;
			var saddr = document.getElementById('saddr').value+' , italy';
			var daddr = document.getElementById('daddr').value;
			gdir.load('from: '+saddr+' to: '+daddr);
			setTimeout("waitdirections()",500);
		} else if (gdir.getStatus().code != 200) document.getElementById('getdirections').innerHTML='<p>Non riesco a trovare '+document.getElementById('saddr').value+'</p><p>Status code '+gdir.getStatus().code+'</p>';
	}
}
