/* * 01/12/2008 17:23pm * */
var globs = "apikey=nicowebv3";
var uriBase = document.getElementById("urlIdentifier").getAttribute("content");
var uriWs = uriBase+"ws/Streetview/";
var urls = new Array();
urls['angs'] = uriWs+"angs-0.1.php";
urls['angv'] = uriWs+"angv-0.1.php";

/* * addNewGstreeviewSession ( ) */
function addNewGstreeviewSession () {
	
	var opts = { method : 'post' , parameters : globs+"&points="+$('buffer').value,
		onSuccess : function (r) { 
			//$('boxTPLoad').style.display='none'; 
			}
		/*onFailure : function (r) { alert(r.responseText); }, 
		, onComplete : function (r) {  alert(r.responseText); }*/
	}
	new Ajax.Request(urls['angs'],opts);
	//new Ajax.Updater("serverlog",urls['angs'],opts);

}

/* * addNewGstreeviewVisualisation ( string panoId , string latlng , string copyright , string description , string nextpano ) */
function addNewGstreeviewVisualisation (panoId,latlng,copyright,desc,nextpano) {

	var opts = { method : 'post' , parameters : globs+"&panoid="+panoId+"&latlng="+latlng+"&copyright="+copyright+"&description="+desc+"&nextpano="+nextpano,
		onSuccess : function (r) { 
			//$('boxTPLoad').style.display='none'; 
			}
		/*onFailure : function (r) { alert(r.responseText); }, 
		, onComplete : function (r) {  alert(r.responseText); }*/
	}
	new Ajax.Request(urls['angv'],opts);
	//new Ajax.Updater("serverlog",urls['angv'],opts);

}


// gmaps
var map;
var geocoder=null;
// gmaps.streetview
var myPano;   
var panoClient;
var fenwayPOV = {yaw:180,pitch:0};
var points = new Array();
var currentpoint = null;
var idpano = null;
var refresh_delay = 10000;

function initialize() {
  //var center = new GLatLng(42.345573,-71.098326);    
  
  map = new GMap2(document.getElementById("map_canvas"));
  //map.setCenter(center, 15);
  showAddress("Gare Saint Lazare, Paris, France");
  GEvent.addListener(map, "click", function(overlay,point) {
    //panoClient.getNearestPanorama(latlng, showPanoData);
    //alert(point);
    map.addOverlay(new GMarker(point));
    document.getElementById('buffer').value += point.lat()+","+point.lng()+";";
  });
  
}


/*
	* launchPresentation ( string idel )
*/
function launchPresentation (idel) {
	panoClient = new GStreetviewClient();
	
	var csv = document.getElementById('buffer').value;
	points = csv.split(";");
	var coords = points[0].split(",");
	var lat = coords[0]; var lng = coords[1];
	document.getElementById('ok1').disabled = true;
	
	idpano = idel;
	myPano = new GStreetviewPanorama(document.getElementById(idel));
  myPano.setLocationAndPOV(new GLatLng(lat,lng), fenwayPOV);
  GEvent.addListener(myPano, "error", handleNoFlash);  
  panoClient.getNearestPanorama(new GLatLng(lat,lng), showPanoData);
  currentpoint=1;
  addNewGstreeviewSession();
  window.setTimeout("refreshPoint()",refresh_delay);
  
}


/*
	* showPanoData ( jsobject panodata )
*/
function showPanoData(panoData) {
  if (panoData.code != 200) {
    alert('impossible de localiser la vue streetview, ci-apres, le message du serveur: ' + panoData.code+' pour les coords '+panoData);
    return;
  }
  
  var displayString = [
    "LatLng: " + panoData.location.latlng,
    "Copyright: " + panoData.copyright,
    "Description: " + panoData.location.description/*,
    "Next Pano ID: " + panoData.links[0].panoId*/
  ].join("<br/>");
  map.openInfoWindowHtml(panoData.location.latlng, displayString);
  myPano.setLocationAndPOV(panoData.location.latlng);
  addNewGstreeviewVisualisation(panoData.location.panoId,panoData.location.latlng,panoData.copyright,panoData.location.description,panoData.links[0].panoId);
}


/*
	* refreshPoint ( )
*/
function refreshPoint ( ){
	
	var coords = points[currentpoint].split(",");
	var lat = coords[0]; var lng = coords[1];
	
	myPano = new GStreetviewPanorama(document.getElementById(idpano));
  myPano.setLocationAndPOV(new GLatLng(lat,lng), fenwayPOV);
  //GEvent.addListener(myPano, "error", handleNoFlash);  
  panoClient.getNearestPanorama(new GLatLng(lat,lng), showPanoData);
  
	currentpoint++;
	if(points[currentpoint]==false|points[currentpoint]==null) {
		alert('voila ;-) vous etes arrive');
		document.getElementById('ok1').disabled = false;
		return false;
	}
	else window.setTimeout("refreshPoint()",refresh_delay);
}

function handleNoFlash(errorCode) {
  if (errorCode == 603) {
    alert("Erreur : flash n'est pas supporte par votre navigateur");
    return;
  }
}  

/*
	* reinitBuffer () 
*/
function reinitBuffer () {
	
	document.getElementById('buffer').value=''
	points = null;
	document.getElementById('ok0').disabled = false;
	map.clearOverlays();
	
	return true;
}

/*
	* showAddress ( string address )
*/
function showAddress(address) {
	if(geocoder==null) geocoder = new GClientGeocoder();
	
	geocoder.getLatLng(address,
	  function(point) { if (!point) { alert("L'adresse : "+address + " n'a pu etre localisee "); } else { map.setCenter(point, 15); } }
	);
	
}
