var $j = jQuery.noConflict();

var map=null;
var myPano=null;
function initialize() {

	if (GBrowserIsCompatible()) {
		function handleNoFlash(errorCode) {
			if (errorCode == 600) { /* pas de streetview */
				myPano.hide();
			}
			/*
			if (errorCode == FLASH_UNAVAILABLE) {
				alert("Error: Flash doesn't appear to be supported by your browser");
				return;
			}*/
		}
		function zoomTo(point) {
			var bounds=map.getBounds();
			/*while (!bounds.containsLatLng(point)) {
				map.zoomOut(null, true);
				bounds=map.getBounds();
			}
			//map.panTo(point);*/
			if (!bounds.containsLatLng(point)) {
				map.zoomOut(point, true);
			}
		}
		function createMarker(node) {
			var coords=node.find('div.coords').eq(0).text().split(',');
			var point=new GLatLng(coords[0], coords[1]);
			var pov={};
			if (coords.length==5) {
				pov={yaw:parseInt(coords[2]),pitch:parseInt(coords[3]),zoom:parseInt(coords[4])};
			}
			var main_title=node.find('h2').eq(0).text();
			var myIcon = new GIcon(G_DEFAULT_ICON);
			myIcon.image=node.find('h2 img').eq(0).attr('src');
			myIcon.iconSize=new GSize(24,24);
			
			var marker = new GMarker(point, {'title' : main_title, 'icon':myIcon});
			var tabs=[];
			node.find('div.infos').each(function() {
				var title=$j(this).find('h3').eq(0).text();
				var content='<b>'+main_title+'</b><br /><br/>'+$j(this).find('div').eq(0).html();
				tabs.push(new GInfoWindowTab(title, content));
			});
			if (!tabs.length) {
				tabs.push(new GInfoWindowTab(main_title, '<b>'+main_title+'</b>'));
			}
			GEvent.addListener(marker, "click", function() {
				zoomTo(point);
				marker.openInfoWindowTabs(tabs);
				myPano.setLocationAndPOV(point, pov);
			});
			node.find('h2 a').click(function() {
				zoomTo(point);
				marker.openInfoWindowTabs(tabs);
				myPano.setLocationAndPOV(point, pov);
				return false;
			});
			return marker;
		}

		myPano = new GStreetviewPanorama(document.getElementById("pano"));
        GEvent.addListener(myPano, "error", handleNoFlash);  
		map = new GMap2(document.getElementById("googlemap"));
		map.setMapType(G_HYBRID_MAP);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		
		map.enableScrollWheelZoom();
		var point=new GLatLng(49.403138,2.325553);
		map.setCenter(point, 17);
		new GKeyboardHandler(map);
		myPano.setLocationAndPOV(point);
		$j('.Listing .Element').each(function() {
			var marker=createMarker($j(this));
			map.addOverlay(marker);
		});

	}
}

function getInfos() {
	var pov=myPano.getPOV();
	var latlng=myPano.getLatLng();
	alert('Latitude: '+latlng.lat()+' , Longitude' + latlng.lng()+' ,yaw: '+pov.yaw + ' ,pitch: ' +pov.pitch + ' ,zoom:'+pov.zoom); 
}

$j(function() {
	initialize();
});