
var EventManager=new Class({
	initialize:function(mediaMap)
	{
	var me=this;
	me.mediaMap=mediaMap;
	},
	startListening:function(){
		var me=this;
		if(!me.clickHandle)
			me.clickHandle=GEvent.addListener(me.mediaMap.mainMap,"click" , function(overlay, latLng, overlayLatlng){me.clickEventHandler(overlay, latLng, overlayLatlng);});
		if(!me.rightClickHandle)
			me.rightClickHandle=GEvent.addListener(me.mediaMap.mainMap,"singlerightclick" , function(point, src, overlay){me.rightClickEventHandler(overlay, point, src);});

		/*****Debug Click Listeners*************/
		mm_execute(function(){
			var me=this;
			me.addEvent('onOverlayClick',function(){mm_debug('Event: onOverlayClick');});
			me.addEvent('onMarkerClick',function(){mm_debug('Event: onMarkerClick');});
			me.addEvent('onPolygonClick',function(){mm_debug('Event: onPolygonClick');});
			me.addEvent('onMapClick',function(){mm_debug('Event: onMapClick');});
			me.addEvent('onUnknownClick',function(overlay, latlng, overlayLatlng){
				mm_debug('Event: onUnknownClick - '+overlay+" - "+latlng+" - "+overlayLatlng);});

			me.addEvent('onOverlayRightClick',function(){mm_debug('Event: onOverlayRightClick');});
			me.addEvent('onMarkerRightClick',function(){mm_debug('Event: onMarkerRightClick');});
			me.addEvent('onPolygonRightClick',function(){mm_debug('Event: onPolygonRightClick');});
			me.addEvent('onMapRightClick',function(){mm_debug('Event: onMapRightClick');});
			me.addEvent('onUnknownRightClick',function(overlay, point, src){
				mm_debug('Event: onUnknownRightClick - '+overlay+" - "+point+" - "+src);});

		});
	},
	stopListening:function(){},
	clickEventHandler:function(overlay, latLng, overlayLatLng){
		var me=this;

		if(overlay instanceof GMarker)
		{
			me.fireEvent('onMarkerClick', [overlay, latLng, overlayLatLng]);
			return;
		}
		else if(overlay instanceof GPolygon)
		{
			me.fireEvent('onPolygonClick', [overlay, latLng, overlayLatLng]);
			return;
		}
		if(overlay instanceof GOverlay)
		{
			me.fireEvent('onOverlayClick', [overlay, latLng, overlayLatLng]);
			return;
		}
		else if(overlay instanceof GMap)
		{
			me.fireEvent('onMapClick', [overlay, latLng, overlayLatLng]);
			return;
		}
		else{
			//alert(overlayLatLng);
			me.fireEvent('onUnknownClick',[overlay, latLng, overlayLatLng]);
		}
	},
	rightClickEventHandler:function(overlay, src, point){
		var me=this;
		me.fireEvent('onRightClick', [overlay, src, point]);
		if(overlay instanceof GMarker)
		{
			me.fireEvent('onMarkerRightClick', [overlay, src, point]);
			return;
		}
		else if(overlay instanceof GPolygon)
		{
			me.fireEvent('onPolygonRightClick', [overlay, src, point]);
			return;
		}
		if(overlay instanceof GOverlay)
		{
			me.fireEvent('onOverlayRightClick', [overlay, src, point]);
			return;
		}
		else if(overlay instanceof GMap)
		{
			me.fireEvent('onMapRightClick', [overlay, src, point]);
			return;
		}
		else{
			//alert(overlayLatLng);
			me.fireEvent('onUnknownRightClick',[overlay, src, point]);
		}
	}
});
EventManager.implement(new Options(),new Events());
