// 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(-41.28648, 174.776217), 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);

	moHotel0 = { icon:blackIcon };
	moHotel0.title = "Intercontinental Wellington";
	var h0Marker = new GMarker(new GLatLng(-41.284643, 174.776688), moHotel0);
    map.addOverlay(h0Marker);
    GEvent.addListener(h0Marker, "click", function() {
	    h0Marker.openInfoWindowHtml("<strong>Intercontinental Wellington</strong><br/><a target='blank' href='http://wellington.new-zealand.intercontinental.com/'>http://wellington.new-zealand.intercontinental.com</a>");
	  });
	                
	moHotel1 = { icon:blackIcon };
	moHotel1.title = "Bolton Hotel";
	var h1Marker = new GMarker(new GLatLng(-41.279385, 174.774697), moHotel1);
    map.addOverlay(h1Marker);
    GEvent.addListener(h1Marker, "click", function() {
	    h1Marker.openInfoWindowHtml('<strong>Bolton Hotel</strong><br/><a target="blank" href="http://www.boltonhotel.co.nz/">http://www.boltonhotel.co.nz</a>');
	  });

	moHotel2 = { icon:blueIcon };
	moHotel2.title = "CityLife Wellington";
	var h2Marker = new GMarker(new GLatLng(-41.284817, 174.775454), moHotel2);
    map.addOverlay(h2Marker);
    GEvent.addListener(h2Marker, "click", function() {
	    h2Marker.openInfoWindowHtml('<strong>CityLife Wellington</strong><br/><a target="blank" href="http://www.heritagehotels.co.nz/citylife-wellington/">http://www.heritagehotels.co.nz/citylife-wellington</a>');
	  });

	moHotel3 = { icon:blueIcon };
	moHotel3.title = "Holiday Inn Wellington";
	var h3Marker = new GMarker(new GLatLng(-41.280854, 174.778726), moHotel3);
    map.addOverlay(h3Marker);
    GEvent.addListener(h3Marker, "click", function() {
	    h3Marker.openInfoWindowHtml('<strong>Holiday Inn Wellington</strong><br/><a target="blank" href="http://www.holidayinn.com/hotels/gb/en/wellington/wlgfs/hoteldetail">http://www.holidayinn.com</a>');
	  });

	moHotel4 = { icon:blueIcon };
	moHotel4.title = "James Cook Grand Chancellor";
	var h4Marker = new GMarker(new GLatLng(-41.284498, 174.774177), moHotel4);
    map.addOverlay(h4Marker);
    GEvent.addListener(h4Marker, "click", function() {
	    h4Marker.openInfoWindowHtml("<strong>James Cook Grand Chancellor</strong><br/><a target='blank' href='http://www.ghihotels.com/hgc/James%20Cook%20Wellington/hotels.aspx'>http://www.ghihotels.com</a>");
	  });

	moHotel5 = { icon:blueIcon };
	moHotel5.title = "Quality Hotel Wellington";
	var h5Marker = new GMarker(new GLatLng(-41.29543, 174.774778), moHotel5);
    map.addOverlay(h5Marker);
    GEvent.addListener(h5Marker, "click", function() {
	    h5Marker.openInfoWindowHtml('<strong>Quality Hotel Wellington</strong><br/><a target="blank" href="http://www.hotelwellington.co.nz/">http://www.hotelwellington.co.nz</a>');
	  });

	moHotel6 = { icon:blueIcon };
	moHotel6.title = "West Plaza Hotel";
	var h6Marker = new GMarker(new GLatLng(-41.289577, 174.776752), moHotel6);
    map.addOverlay(h6Marker);
    GEvent.addListener(h6Marker, "click", function() {
	    h6Marker.openInfoWindowHtml('<strong>West Plaza Hotel</strong><br/><a target="blank" href="http://www.westplaza.co.nz/">http://www.westplaza.co.nz</a>');
	  });

	moHotel7 = { icon:blueIcon };
	moHotel7.title = "Novotel Capital Wellington";
	var h7Marker = new GMarker(new GLatLng(-41.283918, 174.774714), moHotel7);
    map.addOverlay(h7Marker);
    GEvent.addListener(h7Marker, "click", function() {
	    h7Marker.openInfoWindowHtml('<strong>Novotel Capital Wellington</strong><br/><a target="blank" href="http://www.novotel.com/gb/hotel-3276-novotel-wellington-capital/index.shtml">http://www.novotel.com</a>');
	  });

	moHotel8 = { icon:orangeIcon };
	moHotel8.title = "Hotel Ibis Wellington";
	var h8Marker = new GMarker(new GLatLng(-41.283773, 174.776902), moHotel8);
    map.addOverlay(h8Marker);
    GEvent.addListener(h8Marker, "click", function() {
	    h8Marker.openInfoWindowHtml('<strong>Hotel Ibis Wellington</strong><br/><a target="blank" href="http://www.ibishotel.com/gb/hotel-3049-ibis-wellington/index.shtml">http://www.ibishotel.com</a>');
	  });

	moHotel9 = { icon:orangeIcon };
	moHotel9.title = "Hotel Willis";
	var h9Marker = new GMarker(new GLatLng(-41.296693, 174.77026), moHotel9);
    map.addOverlay(h9Marker);
    GEvent.addListener(h9Marker, "click", function() {
	    h9Marker.openInfoWindowHtml('<strong>Hotel Willis</strong><br/><a target="blank" href="http://www.hotelwillis.co.nz/">http://www.hotelwillis.co.nz</a>');
	  });

	moHotel20 = { icon:orangeIcon };
	moHotel20.title = "Kingsgate Hotel Wellington";
	var h20Marker = new GMarker(new GLatLng(-41.274876, 174.776296), moHotel20);
    map.addOverlay(h20Marker);
    GEvent.addListener(h20Marker, "click", function() {
	    h20Marker.openInfoWindowHtml('<strong>Kingsgate Hotel Wellington</strong><br/><a target="blank" href="http://www.millenniumhotels.co.nz/kingsgatewellington/index.html">http://www.millenniumhotels.co.nz/kingsgatewellington</a>');
	  });

	moHotel22 = { icon:orangeIcon };
	moHotel22.title = "Mercure Wellington";
	var h22Marker = new GMarker(new GLatLng(-41.293595, 174.769578), moHotel22);
    map.addOverlay(h22Marker);
    GEvent.addListener(h22Marker, "click", function() {
	    h22Marker.openInfoWindowHtml('<strong>Mercure Wellington</strong><br/><a target="blank" href="http://www.mercure.com/gb/hotel-1991-mercure-hotel-wellington/index.shtml">http://www.mercure.com</a>');
	  });

	moHotel23 = { icon:orangeIcon };
	moHotel23.title = "Bay Plaza Hotel";
	var h23Marker = new GMarker(new GLatLng(-41.292786, 174.78512), moHotel23);
    map.addOverlay(h23Marker);
    GEvent.addListener(h23Marker, "click", function() {
	    h23Marker.openInfoWindowHtml('<strong>Bay Plaza Hotel</strong><br/><a target="blank" href="http://www.bayplaza.co.nz/">http://www.bayplaza.co.nz</a>');
	  });

	moHotel24 = { icon:blueIcon };
	moHotel24.title = "Copthorne Hotel Oriental Bay";
	var h24Marker = new GMarker(new GLatLng(-41.291816, 174.787607), moHotel24);
    map.addOverlay(h24Marker);
    GEvent.addListener(h24Marker, "click", function() {
	    h24Marker.openInfoWindowHtml('<strong>Copthorne Hotel Oriental Bay</strong><br/><a target="blank" href="http://www.millenniumhotels.co.nz/copthorneorientalbay/index.html">http://www.millenniumhotels.co.nz/copthorneorientalbay</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);        
  
	} 
}

