// set gmap api

switch (document.domain) {
	case 'dealers.pl.dev.syzygy.net':
		var APIkey = 'ABQIAAAAXSuYev7_x5hYGhtdqBj_vRSascCXNMycjRtZQ5frUOvWnzkoLhQFDIp0mJ5xKWiyAskjp0uVHzD6Rg';
		break;
	case 'dealers.pl.stg.syzygy.net':
		var APIkey = 'ABQIAAAAXSuYev7_x5hYGhtdqBj_vRSJwsNEN6Mu30l-kUD4tmRGGPf4DRSi82MPTG070-o-kkClLC-yQcVXhQ';
		break;
	case 'betadealers.mazda.syzygy.net':
		var APIkey = 'ABQIAAAAmMTr0SLbSR6i7PdaLRpKhxS9uoJm8qMOkphiKVGAfy8MbXD4_RRaI7Ih0arwoxHCQgEw14D8d7bMUw';
		break;
	case 'dealers.mazda.co.uk':
		var APIkey = 'ABQIAAAAXSuYev7_x5hYGhtdqBj_vRSan8Swua0AiEEv4ehlUmWUhszD4BQ778nWFZf9LvZ53b__bU_FfNU4YQ';
		break;
	case 'dealers.mazda.pl':
		var APIkey = 'ABQIAAAAjHHFtN7QvMvSbLXLRc3u1hTHneFO3va916-I9irXc1p2bl02ghQ-qUBkanYy6EeMmNGO5yN5RPj4Hg';
		break;	
	default: var APIkey = 'foo';
}

document.writeln('\n\t<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key='+APIkey+'" type="text/javascript"></script>');
/*var gmap_script = document.createElement('script');
gmap_script.src = 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=' + APIkey;
document.body.appendChild(gmap_script);*/


/* New google Maps code */
var gmap2 = {
    v: {
        location: {lat: null, lng: null, zoom: null, showPin: false}
    },
    map: null, point: null,
    init: function(elem){
        if (elem.length == 0) return;
		this.behaviours.beforeRenderMap();
		//x = (x)? x : elem.width();
		//y = (y)? y : elem.height();
        this.v.location = this.getGmapParams($('#mapLocation')); //get default locations for init
        this.map = new GMap2(elem.get(0)/*, { size: new GSize(x, y)}*/ );
        this.map.setCenter(this.getGmapPoint(this.v.location.lat, this.v.location.lng), this.v.location.zoom);
        this.cupoint = new GLatLng(this.v.location.lat, this.v.location.lng);
        //maps.GMapOptions();
        this.map.addControl(new GSmallMapControl());
        //map.checkResize();
        if (this.v.location.showPin){
            this.createPoint(this.v.location.lat, this.v.location.lng);
        }
		$(window).unload( function(){  //register unload handler
			if (typeof GUnload !== 'undefined') GUnload();
		});
		this.behaviours.afterRenderMap();
    },
    click: function(point, fn){
        GEvent.addListener(point, "click", function(){
            fn();
        });
    },
    windowOpen: function (point, html){
        this.map.openInfoWindowHtml(point, html);
    },
    getGmapParams: function(params){
        if (params !== null){
            return { lat: parseFloat(params.find('var.lat').html()),
                     lng: parseFloat(params.find('var.lng').html()),
                     zoom: (params.find('var.zoom').length > 0)? parseInt(params.find('var.zoom').html()) : 1,
                     showPin: (params.find('var.showPin').length > 0)? parseBool(params.find('var.showPin').html()) : false
            };
        }
        return false;
    },
    isEnabled: function(){
        if (typeof window.GBrowserIsCompatible == 'undefined' || !GBrowserIsCompatible()) return false;
        return true;
    },
    getGmapPoint: function(lat,lng){
        return new GLatLng(lat, lng);
    },
    createPoint: function (lat,lng, n){
        n = (n !== undefined)? n : false;
        var point = new GLatLng(lat, lng);
        var markerOptions = {};
        if (n !== false){
            var letterIcon = new GIcon(G_DEFAULT_ICON);
			if (typeof n == 'string') {
				letterIcon.image = 'http://maps.google.com/intl/en_ALL/mapfiles/marker_white' + n.toUpperCase() + '.png';
				if (n == '') {
					letterIcon.image = '/img/mazda_icon.png';
					letterIcon.printImage = '/img/mazda_icon.gif';
					letterIcon.mozPrintImage  = '/img/moz_mazda_icon.gif';
				}
			} 
			else {
				letterIcon.image = 'http://maps.google.com/intl/en_ALL/mapfiles/marker' + String.fromCharCode("A".charCodeAt(0) + n) + '.png';
				//letterIcon.image = '/img/mazda_icon.png';
			}
            markerOptions = { icon: letterIcon};
        }

        var p = new GMarker(point, markerOptions);
        this.map.addOverlay(p);

        return p;
    },
    center: function(minLng, maxLng, minLat, maxLat){
        var sw = new GLatLng(minLat, minLng);
        var ne = new GLatLng(maxLat, maxLng);
        var bounds = new GLatLngBounds(sw, ne);
        this.map.setCenter(bounds.getCenter());
        this.map.setZoom(this.map.getBoundsZoomLevel(bounds));
    },
	drawCircle: function (lat, lng, radius, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity) {
		var d2r = Math.PI/180;
		var r2d = 180/Math.PI;
		var Clat = radius * 0.014483;  // Convert statute miles into degrees latitude
		var Clng = Clat/Math.cos(lat*d2r); 
		var Cpoints = []; 
		for (var i=0; i < 33; i++) { 
			var theta = Math.PI * (i/16); 
			Cy = lat + (Clat * Math.sin(theta)); 
			Cx = lng + (Clng * Math.cos(theta)); 
			var P = new GPoint(Cx,Cy); 
			Cpoints.push(P); 
		}

		var polygon = new GPolygon(Cpoints, strokeColor, strokeWidth, strokeOpacity, fillColor, fillOpacity);
		this.map.addOverlay(polygon);
		return polygon;
	},
    addBehaviours: function (b){
        for(var f in b){
            this.behaviours[f] = b[f];
        }
    },
    behaviours: {
        beforeRenderMap: function () {},
		afterRenderMap: function () {}
    }
};

function parseBool(bol){
    if (bol.toLowerCase() == 'false') return false;
    return true;
}
