
window.local = window.local || {lat:'51.165691', lon:'10.451526', zoom:5, state:''};

google.load('maps', '2');

function createState(i, data) {
  var points = [];
  for(var k=0;k<data.points.length; k+=2) {
    points.push(new google.maps.LatLng(data.points[k], data.points[k+1]));
  }

  //var polygon = new GPolygon(points, '#f33f00', 5, 1, '#ff0000', 0.2);
  // line color, line weight, opacity, fill color, opacity
  var polygon = new GPolygon(points, '#000000', 3, 0.5, '#5BC7F1', 0.2);

  GEvent.addListener(polygon, 'click', function(overlay, latlng) {          
    location.href = 'http://' + location.host + '/bundesland/dsl-' + i;
  });
  
  GEvent.addListener(polygon, 'mouseover', function(overlay, latlng) {          
    $('#state').html(data.title);
  });
  
  GEvent.addListener(polygon, 'mouseout', function(overlay, latlng) {          
    $('#state').html('keins');
  });

  return polygon;        
}

function getRandom(min, max) {
    var r = min + ( Math.random() * ( max-min ) )
    if(parseInt(Math.random() * 100) < 50) {
      r *= -1;
    }
    return r;
}

function createMarker(item) {
  var lat     = parseFloat(item.lat) + getRandom(0.01, 0.09),
      lon     = parseFloat(item.lon) + getRandom(0.01, 0.09),
      marker  = null,
      //link    = 'http:///' + item.slug + '-' + item.type,
      //info    = '<img src="/wp-content/thumbnails/' + item.slug + '-small2.gif" /><br />Geschwindigkeit: <a href="' + link + '"><strong>' + item.tariff + '</strong></a><br />Messwert: <strong>' + item.speed + ' KB/s</strong>',
      info    = 'Geschwindigkeit: <strong>' + item.tariff + '</strong><br />Messwert: <strong>' + item.speed + ' KB/s</strong>',
      icon    = new GIcon(G_DEFAULT_ICON);

  icon.image            = '/wp-content/plugins/local/img/' + item.slug + '.png';
  icon.iconSize         = new GSize(20.0, 34.0);
  icon.shadow           = '/wp-content/plugins/local/img/shadow.png';
  icon.shadowSize       = new GSize(38.0, 34.0);
  icon.iconAnchor       = new GPoint(10.0, 17.0);
  icon.infoWindowAnchor = new GPoint(10.0, 0.0);
  
  marker = new GMarker(new google.maps.LatLng(lat, lon), {icon:icon});

	GEvent.addListener(marker, 'mouseover', function() {
		marker.openInfoWindowHtml(info);
	});
	
	/*GEvent.addListener(marker, 'click', function() {
		location.href = link;
	});
	*/

	return marker;
}

function isCity() {
  return /\/stadt\//.test(location.pathname);
}

function isVorwahl() {
  return /\/vorwahlnummern\//.test(location.pathname);
}

function isState(flag) {
  var pattern = (flag || false) ? /\/bundesland\// : /\/bundesland/;
  return pattern.test(location.pathname);
}

function addMensurations(map) {

  $.getJSON('http://' + location.host + '/wp-content/plugins/local/ajax.php?method=mensurations&lon=' + window.local.lon + '&lat=' + window.local.lat,
    function(data) {
      $(data.items).each(function(i, item) {
        map.addOverlay(createMarker(item));
      });
    });
}

$(function() {
  var map = document.getElementById('map');
  if(map) {
    map = new google.maps.Map2(map);
  
    if(map) {
      map.addControl(new GSmallMapControl());
      map.setCenter(new google.maps.LatLng(window.local.lat, window.local.lon), window.local.zoom);
  
      if(isState()) {
        $.getJSON(
          'http://' + location.host + '/wp-content/plugins/local/ajax.php?method=polygon&state=' + window.local.state,
          function(data) {
            for(var i in data) {
              map.addOverlay(createState(i, data[i]));
            }
          });
      }
      else {
        map.addOverlay(new GMarker(new google.maps.LatLng(window.local.lat, window.local.lon)));
      }
      
      if(isState(true) || isCity()) {
        addMensurations(map);
      }
      
      if(isVorwahl()) {
        var adsManager = new GAdsManager(map, 'pub-', {
          maxAdsOnMap: 1, 
          style: 'adunit',
          channel: '',
          position: new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(0, 0))
        });
        adsManager.enable();
      }
    }
  }
});
