// This file adds a new circle overlay to GMaps2
// it is really a many-pointed polygon, but look smooth enough to be a circle.
var CircleOverlay = function(latLng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity) {
    this.latLng = latLng;
    this.radius = radius;
    this.strokeColor = strokeColor;
    this.strokeWidth = strokeWidth;
    this.strokeOpacity = strokeOpacity;
    this.fillColor = fillColor;
    this.fillOpacity = fillOpacity;
}

// Implements GOverlay interface
CircleOverlay.prototype = new GOverlay;

CircleOverlay.prototype.initialize = function(map) {
    this.map = map;
}

CircleOverlay.prototype.clear = function() {
    if(this.polygon != null && this.map != null) {
        this.map.removeOverlay(this.polygon);
    }
}

// Calculate all the points and draw them
CircleOverlay.prototype.redraw = function(force) {
    var d2r = Math.PI / 180;
    circleLatLngs = new Array();
    var circleLat = this.radius * 0.014483;  // Convert statute miles into degrees latitude
    var circleLng = circleLat / Math.cos(this.latLng.lat() * d2r);
    var numPoints = 40;
    
    // 2PI = 360 degrees, +1 so that the end points meet
    for (var i = 0; i < numPoints + 1; i++) { 
        var theta = Math.PI * (i / (numPoints / 2)); 
        var vertexLat = this.latLng.lat() + (circleLat * Math.sin(theta)); 
        var vertexLng = this.latLng.lng() + (circleLng * Math.cos(theta));
        var vertextLatLng = new GLatLng(vertexLat, vertexLng);
        circleLatLngs.push(vertextLatLng); 
    }
    
    this.clear();
    this.polygon = new GPolygon(circleLatLngs, this.strokeColor, this.strokeWidth, this.strokeOpacity, this.fillColor, this.fillOpacity);
    this.map.addOverlay(this.polygon);
}

CircleOverlay.prototype.remove = function() {
    this.clear();
}

CircleOverlay.prototype.containsLatLng = function(latLng) {
    // Polygon Point in poly 
    if(this.polygon.containsLatLng) {
        return this.polygon.containsLatLng(latLng);
    }
}

CircleOverlay.prototype.setRadius = function(radius) {
    this.radius = radius;
}

CircleOverlay.prototype.setLatLng = function(latLng) {
    this.latLng = latLng;
}

function initialize() {
  var map;
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));
    map.addControl(new GLargeMapControl());
    
    map.setCenter(new GLatLng(-44.696085, 169.133148), 14);
    
	var accommIcon = new GIcon(G_DEFAULT_ICON);
	accommIcon.image = "http://www.newzealandtravelinsider.com/images/accomm.png";

	var blackIcon = new GIcon(G_DEFAULT_ICON);
	blackIcon.image = "http://www.newzealandtravelinsider.com/images/black05.png";
	blackIcon.iconSize = new GSize(32, 37);

	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "http://www.newzealandtravelinsider.com/images/blue04.png";
	blueIcon.iconSize = new GSize(32, 37);

	var orangeIcon = new GIcon(G_DEFAULT_ICON);
	orangeIcon.image = "http://www.newzealandtravelinsider.com/images/orange03.png";
	orangeIcon.iconSize = new GSize(32, 37);
	                
	moHotel1 = { icon:orangeIcon };
	moHotel1.title = "Bayview Motel Apartments";
	var h1Marker = new GMarker(new GLatLng(-44.7149, 169.13), moHotel1);
    map.addOverlay(h1Marker);
    GEvent.addListener(h1Marker, "click", function() {
	    h1Marker.openInfoWindowHtml('<strong>Bayview Motel Apartments</strong><br/><a target="blank" href="http://www.bayviewwanaka.co.nz/">http://www.bayviewwanaka.co.nz</a>');
	  });

	moHotel2 = { icon:blueIcon };
	moHotel2.title = "Bella Vista Motel (Wanaka)";
	var h2Marker = new GMarker(new GLatLng(-44.695322, 169.136066), moHotel2);
    map.addOverlay(h2Marker);
    GEvent.addListener(h2Marker, "click", function() {
	    h2Marker.openInfoWindowHtml('<strong>Bella Vista Motel (Wanaka)</strong><br/><a target="blank" href="http://www.bellavistamotels.co.nz/">http://www.bellavistamotels.co.nz</a>');
	  });

	moHotel3 = { icon:blueIcon };
	moHotel3.title = "Best Western Belvedere Luxury Apartments";
	var h3Marker = new GMarker(new GLatLng(-44.697915, 169.138727), moHotel3);
    map.addOverlay(h3Marker);
    GEvent.addListener(h3Marker, "click", function() {
	    h3Marker.openInfoWindowHtml('<strong>Best Western Belvedere Luxury Apartments</strong><br/><a target="blank" href="http://www.wanakaholidays.co.nz/">http://www.wanakaholidays.co.nz</a>');
	  });

	moHotel4 = { icon:blueIcon };
	moHotel4.title = "Fairway Motel & Apartments";
	var h4Marker = new GMarker(new GLatLng(-44.693339, 169.144993), moHotel4);
    map.addOverlay(h4Marker);
    GEvent.addListener(h4Marker, "click", function() {
	    h4Marker.openInfoWindowHtml('<strong>Fairway Motel & Apartments</strong><br/><a target="blank" href="http://www.fairwaylodgemotel.co.nz/">http://www.fairwaylodgemotel.co.nz</a>');
	  });

	moHotel5 = { icon:blackIcon };
	moHotel5.title = "Lakeside Apartments";
	var h5Marker = new GMarker(new GLatLng(-44.6934, 169.136281), moHotel5);
    map.addOverlay(h5Marker);
    GEvent.addListener(h5Marker, "click", function() {
	    h5Marker.openInfoWindowHtml('<strong>Lakeside Apartments</strong><br/><a target="blank" href="http://www.lakesidewanaka.co.nz/">http://www.lakesidewanaka.co.nz</a>');
	  });

	moHotel6 = { icon:blueIcon };
	moHotel6.title = "Peak-Sport Chalet";
	var h6Marker = new GMarker(new GLatLng(-44.677293, 169.131622), moHotel6);
    map.addOverlay(h6Marker);
    GEvent.addListener(h6Marker, "click", function() {
	    h6Marker.openInfoWindowHtml('<strong>Peak-Sport Chalet</strong><br/><a target="blank" href="http://www.peak-sportchalet.co.nz/">http://www.peak-sportchalet.co.nz</a>');
	  });

	moHotel7 = { icon:blueIcon };
	moHotel7.title = "The Moorings";
	var h7Marker = new GMarker(new GLatLng(-44.693058, 169.136269), moHotel7);
    map.addOverlay(h7Marker);
    GEvent.addListener(h7Marker, "click", function() {
	    h7Marker.openInfoWindowHtml('<strong>The Moorings</strong><br/><a target="blank" href="http://www.themoorings.co.nz/">http://www.themoorings.co.nz</a>');
	  });

	moHotel8 = { icon:blackIcon };
	moHotel8.title = "Wanaka Luxury Apartments";
	var h8Marker = new GMarker(new GLatLng(-44.702577, 169.124465), moHotel8);
    map.addOverlay(h8Marker);
    GEvent.addListener(h8Marker, "click", function() {
	    h8Marker.openInfoWindowHtml('<strong>Wanaka Luxury Apartments</strong><br/><a target="blank" href="http://www.wanakaluxuryapartments.co.nz/">http://www.wanakaluxuryapartments.co.nz</a>');
	  });

	moHotel9 = { icon:accommIcon };
	moHotel9.title = "Manuka Crescent Motel";
	var h9Marker = new GMarker(new GLatLng(-44.681901, 169.1331), moHotel9);
    map.addOverlay(h9Marker);
    GEvent.addListener(h9Marker, "click", function() {
	    h9Marker.openInfoWindowHtml('<strong>Manuka Crescent Motel</strong><br/><a target="blank" href="http://www.manukacrescentmotel.co.nz/">http://www.manukacrescentmotel.co.nz</a>');
	  });

	moHotel10 = { icon:accommIcon };
	moHotel10.title = "Archway Motels";
	var h10Marker = new GMarker(new GLatLng(-44.693289, 169.141749), moHotel10);
    map.addOverlay(h10Marker);
    GEvent.addListener(h10Marker, "click", function() {
	    h10Marker.openInfoWindowHtml('<strong>Archway Motels</strong><br/><a target="blank" href="http://www.archwaymotels.co.nz/">http://www.archwaymotels.co.nz</a>');
	  });

	moHotel11 = { icon:accommIcon };
	moHotel11.title = "Brookvale Motel";
	var h11Marker = new GMarker(new GLatLng(-44.695673, 169.137783), moHotel11);
    map.addOverlay(h11Marker);
    GEvent.addListener(h11Marker, "click", function() {
	    h11Marker.openInfoWindowHtml('<strong>Brookvale Motel</strong><br/><a target="blank" href="http://www.brookvale.co.nz/">http://www.brookvale.co.nz</a>');
	  });

	moHotel12 = { icon:accommIcon };
	moHotel12.title = "Alpine Motel Apartments";
	var h12Marker = new GMarker(new GLatLng(-44.694712, 169.14098), moHotel12);
    map.addOverlay(h12Marker);
    GEvent.addListener(h12Marker, "click", function() {
	    h12Marker.openInfoWindowHtml('<strong>Alpine Motel Apartments</strong><br/><a target="blank" href="http://www.alpinemotels.co.nz/">http://www.alpinemotels.co.nz</a>');
	  });

	moHotel13 = { icon:accommIcon };
	moHotel13.title = "Clearbrook Luxury Accommodation";
	var h13Marker = new GMarker(new GLatLng(-44.697122, 169.137354), moHotel13);
    map.addOverlay(h13Marker);
    GEvent.addListener(h13Marker, "click", function() {
	    h13Marker.openInfoWindowHtml('<strong>Clearbrook Luxury Accommodation</strong><br/><a target="blank" href="http://www.clearbrook.co.nz/">http://www.clearbrook.co.nz</a>');
	  });

	moHotel14 = { icon:accommIcon };
	moHotel14.title = "Wanaka Heights Motel";
	var h14Marker = new GMarker(new GLatLng(-44.693552, 169.141409), moHotel14);
    map.addOverlay(h14Marker);
    GEvent.addListener(h14Marker, "click", function() {
	    h14Marker.openInfoWindowHtml('<strong>Wanaka Heights Motel</strong><br/><a target="blank" href="http://www.wanakaheightsmotel.co.nz/">http://www.wanakaheightsmotel.co.nz</a>');
	  });

	var circleRadius2 = 1.86; //miles = 3 km
	circle2 = new CircleOverlay(map.getCenter(), circleRadius2, "#004EFF", 1, 0.15, "#004EFF", 0.15);	
	map.addOverlay(circle2);

	var circleRadius1 = 1.24; //miles = 2 km
	circle1 = new CircleOverlay(map.getCenter(), circleRadius1, "#FFFC00", 1, 0.4, "#FFFC00", 0.4);	
	map.addOverlay(circle1);

	var circleRadius = 0.62; //miles = 1 km
	circle = new CircleOverlay(map.getCenter(), circleRadius, "#0CFF00", 1, 0.25, "#0CFF00", 0.25);	
	map.addOverlay(circle);

    map.setMapType(G_NORMAL_MAP);        
  
	} 
}

