/*  My set of Javascript functions  */
/* info@rexbibendi.com done in 2006 */

var map = null;
var icon = null;

function createMarker(point,html)
{
 var marker = new GMarker(point,icon);
 GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
 map.addOverlay(marker);
}


function loadXML(r)
{
  var s="xml.php?";
  var q=document.getElementById('q').value;
  var r=document.getElementById('r').value;
  
  if (q && r) s+="q="+q+"&r="+r;
  else
  {
   if (q) s+="q="+q;
   if (r!=0) s+="r="+r; 
  }
  
  map.clearOverlays()
  
  GDownloadUrl(s , function(data, responseCode) {
  var xml = GXml.parse(data);
  var markers = xml.documentElement.getElementsByTagName("marker");
  for (var i = 0; i < markers.length; i++)
  {
   var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
   var html = markers[i].getAttribute("html");
   var marker = createMarker(point,html);
  }
  });
}


function load()
{
 if (GBrowserIsCompatible())
 {
  // create a Google map v2 object
  map = new GMap2(document.getElementById("map"));

  // add all my favourite controls to the map
  map.addControl(new GLargeMapControl());
  map.addControl(new GMapTypeControl());
  map.addControl(new GScaleControl());
  map.addControl(new GOverviewMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10)));
  map.enableScrollWheelZoom();
  
  // center the map on Roma Caput Mundi
  map.setCenter(new GLatLng(41.895431,12.482181), 5);

  // define our own RexBibendi icon
  icon = new GIcon();
  icon.image = "gfx/icon.png";
  //icon.shadow = "gfx/shadow.png";
  icon.iconSize = new GSize(12, 30);
  //icon.shadowSize = new GSize(22, 20);
  icon.iconAnchor = new GPoint(6, 30);
  icon.infoWindowAnchor = new GPoint(6, 1);

  loadXML();
  
//  drawCircle();
 }
}


function panTo(r)
{
 // check if the zoom level is 7 otherwise force it to 7
 if (map.getZoom()!=7) map.setZoom(7);

 // this is a dirty hack since I couldn't make the switch work
 if (r=="1") { map.panTo(new GLatLng(42.399122,13.900452)); loadXML('Abruzzo'); } 
 if (r=="2") { map.panTo(new GLatLng(40.634799,16.034546)); loadXML('Basilicata'); } 
 if (r=="3") { map.panTo(new GLatLng(39.061849,16.380615)); loadXML('Calabria'); } 
 if (r=="4") { map.panTo(new GLatLng(40.851977,14.269275)); loadXML('Campania'); } 
 if (r=="5") { map.panTo(new GLatLng(44.494759,11.34173)); loadXML('Emilia Romagna'); } 
 if (r=="6") { map.panTo(new GLatLng(46.060595,13.229431)); loadXML('Friuli Venezia Giulia'); } 
 if (r=="7") { map.panTo(new GLatLng(41.895431,12.482181)); loadXML('Lazio'); } 
 if (r=="8") { map.panTo(new GLatLng(44.407061,8.933989)); loadXML('Liguria'); } 
 if (r=="9") { map.panTo(new GLatLng(45.463668,9.188199)); loadXML('Lombardia'); } 
 if (r=="10") { map.panTo(new GLatLng(43.615828,13.518945)); loadXML('Marche'); } 
 if (r=="11") { map.panTo(new GLatLng(41.560086,14.664799)); loadXML('Molise'); } 
 if (r=="12") { map.panTo(new GLatLng(45.080001,7.679999)); loadXML('Piemonte'); } 
 if (r=="13") { map.panTo(new GLatLng(41.126084,16.869254)); loadXML('Puglia'); } 
 if (r=="14") { map.panTo(new GLatLng(40.036027,9.162598)); loadXML('Sardegna'); } 
 if (r=="15") { map.panTo(new GLatLng(37.51844,13.930664)); loadXML('Sicilia'); } 
 if (r=="16") { map.panTo(new GLatLng(43.318661,11.330515)); loadXML('Toscana'); } 
 if (r=="17") { map.panTo(new GLatLng(46.214051,11.228027)); loadXML('Trentino Alto Adige'); } 
 if (r=="18") { map.panTo(new GLatLng(43.110701,12.389171)); loadXML('Umbria'); } 
 if (r=="19") { map.panTo(new GLatLng(45.748679,7.293298)); loadXML('Valle Aosta'); } 
 if (r=="20") { map.panTo(new GLatLng(45.407737,11.877194)); loadXML('Veneto'); } 
}


function drawCircle()
{
 var radius = 1;
 var circle = null;
 var lat = 41.895431;
 var lng = 12.482181;


 var cColor = "#3366ff";
 var stroke = 5;
 var d2r = Math.PI / 180;
 var r2d = 180 / Math.PI;
 var cLat = (radius / 3963.2) * r2d;
 var cLng = cLat / Math.cos(lat * d2r);
 var cPoints = [];
 for (var i = 0; i < 33; i++)
 {
  var theta = Math.PI * (i / 16);
  var cX = lng + (cLng * Math.cos(theta));
  var cY = lat + (cLat * Math.sin(theta));
  var p = new GPoint(cX, cY);
  cPoints.push(p);
 }
 map.removeOverlay(circle);
 circle = new GPolyline(cPoints, cColor, stroke);
 map.addOverlay(circle);
}
