
jQuery(document).ready(function() {
	
	var init = function() {
		jQuery('#mapView').removeClass('svhidden');
		var modelData = jQuery('#jsonDescriptor').text();
		var model = jQuery.evalJSON(modelData);
		var visible = true;
		
		var center = new google.maps.LatLng(model.center.latitude, model.center.longitude);
		var mapOptions = {zoom: 12, center: center,mapTypeId: google.maps.MapTypeId.ROADMAP};
		var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
		if (model.type == 'portlet' || model.type == 'page') {
			for (i in model.places) {
				var place = model.places[i];
				var marker = placeMarker(place,map);
				if (model.type == 'page') {
					marker.toggleWindow();
				}
			}
			
		} else if (model.type == 'reference') {
			var bounds = new google.maps.LatLngBounds();
			for (var g in model.groups) {
				var group = model.groups[g];
				for (var p in group.places) {
					var place = group.places[p];
					var marker = placeMarker(place,map);
					place.marker = marker;
					bounds.extend(marker.position);
				}
				
				jQuery('#toggle_'+g).click(function (event) {
					var elementId = jQuery(this).attr('id');
					var groupId = elementId.substring(7);
					var on = false;
					var toggleGroup =  model.groups[groupId];
					for (var p in toggleGroup.places) {
						var marker = toggleGroup.places[p].marker;
						on = marker.toggle();
						
					}
					jQuery(this).css('background','url(' + getIcon(toggleGroup.color,on) + ') no-repeat top left');
				});
			}
			if (bounds) {
				//map.fitBounds(bounds);
				map.setCenter(bounds.getCenter());
				map.setZoom(11);
			}
	
			
		} else {
			console.log('Unsupported type ' + model.type);
		}
		jQuery('.map-close-button').click(function() {
			if (visible) {
				jQuery('#map_canvas').addClass('svhidden');
				jQuery('#mapPanelContainer').addClass('svhidden');
				visible = false;	
			} else {
				jQuery('#map_canvas').removeClass('svhidden');
				jQuery('#mapPanelContainer').removeClass('svhidden');
				visible = true;
			}
			return false;
		});
		/*jQuery('#mapAccess > a').click(function() {
			jQuery('#mapAccess').addClass('svhidden');
			jQuery('#mapView').removeClass('svhidden');
		}); */
	};
	
	if (IE6) {
		setTimeout(init,1000);
	} else {
		init();
	}
});

var createBounds = function(marker) {
	var bounds = new google.maps.LatLngBounds(marker.getPosition(),marker.getPosition());
	return bounds;
};

var placeMarker = function(place,map) {
	var marker = createMarker(place.latitude,place.longitude,map,place.description,{icon: place.color,link: place.link});
	return marker;
};

