/* Fonction permettant la création d'un itinéraire Mappy (summary & roadbook) à partir d'éléments permettant de retrouver les adresses de départ et d'arrivée
 * @param string resume : libellé multilangue du paragraphe resume
 * @param string vehicle : libellé multilangue du paragraphe vehicle
 * @param string carburant : llibellé multilangue du paragraphe carburant
 * @param string jouney : libellé multilangue du paragraphe jouney
 * @param string distance : libellé multilangue du paragraphe distance
 * @param string consumption : libellé multilangue du paragraphe consumption
 * @param string douane : libellé multilangue du paragraphe douane
 * @param string feuille : libellé multilangue du paragraphe feuille
 * @param string liters : libellé multilangue du paragraphe liters
 * @param string km : libellé multilangue du paragraphe km
 * @param int parcours : définit s'il s'agit du trajet 'YAller' (1) ou 'enPartir'(2)
 */
function traceRouteWithAdressSearch(resume,vehicle,carburant,journey,distance,consumption,douane,feuille,liters,km,parcours) {
	var countryDepart; 
    var townDepart;
    var addressDepart;
    
    var countryArrivee;
    var townArrivee;
    var addressArrivee;
   
	if (parcours==1) {
		countryDepart= $("#paysDepartA").val();
	   	townDepart = $("#villeDepartA").val();
	   	addressDepart = $("#adresseDepartA").val();
	   
	   	countryArrivee = $("#paysArriveeA").val();
	   	townArrivee = $("#villeArriveeA").val();
	   	addressArrivee = $("#adresseArriveeA").val();
	}
	else {
    	countryDepart = $("#paysDepartP").val();
	    townDepart = $("#villeDepartP").val();
	    addressDepart = $("#adresseDepartP").val();
	    
	    countryArrivee = $("#paysArriveeP").val();
	    townArrivee = $("#villeArriveeP").val();
	    addressArrivee = $("#adresseArriveeP").val();
	}
	
	var depart = "";
	var arrivee = "";
	if ((countryArrivee!=null)&&(countryArrivee!="")&&(townArrivee!=null)&&(townArrivee!="")&&(countryDepart!=null)&&(countryDepart!="")&&(townDepart!=null)&&(townDepart!="")) {
  		var depart = new Mappy.api.geolocation.AddressLocation(countryDepart, townDepart, addressDepart);
   		var arrivee = new Mappy.api.geolocation.AddressLocation(countryArrivee, townArrivee, addressArrivee);
	}
	
	// Fonction Itinéraire
  	traceRoute(resume,vehicle,carburant,journey,distance,consumption,douane,feuille,liters,km,depart,arrivee);    
}

/* Fonction permettant la création d'un itinéraire Mappy (summary & roadbook) à partir d'adresses de départ et d'arrivée
 * @param string resume : libellé multilangue du paragraphe resume
 * @param string vehicle : libellé multilangue du paragraphe vehicle
 * @param string carburant : llibellé multilangue du paragraphe carburant
 * @param string jouney : libellé multilangue du paragraphe jouney
 * @param string distance : libellé multilangue du paragraphe distance
 * @param string consumption : libellé multilangue du paragraphe consumption
 * @param string douane : libellé multilangue du paragraphe douane
 * @param string feuille : libellé multilangue du paragraphe feuille
 * @param string liters : libellé multilangue du paragraphe liters
 * @param string km : libellé multilangue du paragraphe km
 */
function traceRouteWithoutAdressSearch(resume,vehicle,carburant,journey,distance,consumption,douane,feuille,liters,km) {
    var depart = $("#adresse1").val(); 
    var arrivee = $('#adresse2').val();
    
    // Fonction Itinéraire
	traceRoute(resume,vehicle,carburant,journey,distance,consumption,douane,feuille,liters,km,depart,arrivee);
}

/* Fonction permettant la création d'un itinéraire Mappy (summary & roadbook)
 * @param string resume : libellé multilangue du paragraphe resume
 * @param string vehicle : libellé multilangue du paragraphe vehicle
 * @param string carburant : llibellé multilangue du paragraphe carburant
 * @param string jouney : libellé multilangue du paragraphe jouney
 * @param string distance : libellé multilangue du paragraphe distance
 * @param string consumption : libellé multilangue du paragraphe consumption
 * @param string douane : libellé multilangue du paragraphe douane
 * @param string feuille : libellé multilangue du paragraphe feuille
 * @param string liters : libellé multilangue du paragraphe liters
 * @param string km : libellé multilangue du paragraphe km
 * @param object depart : objet créé à partir de l'API mappy
 * @param object arrivee : objet créé à partir de l'API mappy
 */
function traceRoute(resume,vehicle,carburant,journey,distance,consumption,douane,feuille,liters,km,depart,arrivee) {	
	// Error si depart ou arrivée null    
    if (depart == null || depart=="" || arrivee == null || arrivee == "") {
   		$(".errorMappy").hide();
		$(".errorMappy2").show();

		$("#summary").hide();
		$("#roadbook").hide();
		
		shapeLayer.clean();
    }
    else {
		$(".errorMappy").hide();
		$(".errorMappy2").hide();
		
		$("#summary").empty();
    	$("#summary").show();
		$("#roadbook").empty();
		$("#roadbook").show();

	    shapeLayer.clean();
	    var tab = [depart, arrivee];
	    var rs = new Mappy.api.route.RouteService();
	    // Throw the request
	    rs.loadRoute(
	        tab,
	        {
	            Vehicle: jQuery('#vehicle').val(),
	            caravane: (jQuery('#caravane').attr("checked") ) ? 1 : 0,
	            gas: jQuery('#gas').val(),
	            gascost: jQuery('#gascost').val(),
	            cost: jQuery('[name=cost]').val(),
	            notoll: (jQuery('#notoll').attr("checked")) ? 1 : 0,
	            nopass: (jQuery('#nopass').attr("checked")) ? 1 : 0,
	            language : lang
	        },
	        function (roadbook) {
	            shapeLayer.addShape(roadbook.shapes[0]);
	            var bounds = shapeLayer.getBounds();
	            map.setCenter(bounds.center, map.getBoundsZoomLevel(bounds));
	
	           var summary = jQuery('#summary');
	           summary.empty();
			   summary.append('<h1>'+ resume +'</h1><hr/>');
	           summary.append(vehicle+' : ' + roadbook.summary.vehicle + '<br/>');
	           summary.append(carburant+' : ' + roadbook.summary.gasName + '<br/>');
	           summary.append(journey+' : ' + dateHMS(roadbook.summary.time) + '<br/>');
	           summary.append(distance+' : ' + Math.round(((roadbook.summary.length)/1000)*10)/10 + ' '+ km +'<br/>');
	           summary.append(consumption+' : ' + Math.round(roadbook.summary.gasConsumption*10)/10+' '+ liters +'<br/>');
	
	            if (roadbook.summary.tolls && roadbook.summary.tolls.length > 0) {
	                var strings = [];
	                for (i = 0; i < roadbook.summary.tolls.length; i += 1) {
	                    toll = roadbook.summary.tolls[i];
	                    if (toll.amount > 0) {
		                    strings.push(
		                        toll.country + " : " + '<span class="bold">' + toll.amount + " " + toll.currency + "</span>"
		                    );
						}
	                }
	                summary.append(douane+' : ' + strings.join(", "));
	              }
	            summary.append('<hr/><br/>');
	           summary.append('<h1>'+ feuille +'</h1>');
	
	            $("#roadbook").html(roadbook.toHtml());
	        },
	        function(e) {
	        	$(".errorMappy").show();
	        }
    	);
    }
}

/* Fonction gérant l'affectation des variables constituant une adresse (countryDdepart, ...)à partir de l'API Mappy (contentMap.jsp)
 * @param int time : le temps en secondes.
 * @reurn object result : le temps découpé en hh::mm::ss
 */
function dateHMS(time) {
	var reste=time;
	var result='';
	
	var nbJours=Math.floor(reste/(3600*24));
	reste -= nbJours*24*3600;
	
	var nbHours=Math.floor(reste/3600);
	reste -= nbHours*3600;
	
	var nbMinutes=Math.floor(reste/60);
	reste -= nbMinutes*60;

	var nbSeconds=reste;

	if (nbJours>0)
		result=result+nbJours+'j ';

	if (nbHours>0)
		result=result+nbHours+'h ';

	if (nbMinutes>0)
		result=result+nbMinutes+'min ';

	if (nbSeconds>0)
		result=result+nbSeconds+'s ';
	
	return result;  
}

/** Fonction gérant le texte de decription des infobulles des clients sur la carte.
 * @param string raisonSocial : le temps en secondes.
 * @param string url : l'url réécrite du client
 * @param string adresse : l'adresse du client
 * @param string codPostal : le code postal du client
 * @param string ville : la ville du client
 * @param string tel : le numero de telephone du client
 * @reurn string texte : renvoie la description du client en format html
 */
function markerContent(raisonSocial,url,adresse,codPostal,ville,tel){
	var texte ="";

	if ((raisonSocial!=null)&&(raisonSocial!="")&&(url!=null)&&(url!="")) {
		texte += "<strong><a target=\"_blank\" href=\""+url+"\">"+raisonSocial+"</a></strong><br/>";
	}
	else if ((raisonSocial!=null)&&(raisonSocial!="")){
		texte += "<strong>"+raisonSocial+"</strong><br/>";
	}
	if((adresse!=null)&&(adresse!="")){
		texte += "<span>"+adresse+"</span><br/>";
	}
	if((codPostal!=null)&&(codPostal!="")&&(ville!=null)&&(ville!="")){
		texte += "<span>"+codPostal+" "+ville+"</span><br/>";
	}
	if((tel!=null)&&(tel!="")){
		texte += "<span>"+tel+"</span><br/>";
	}
	return texte;
}

/*
 *  Fonction permettant de faire des points eclaté qui ne se supperpose pas.
 *  @param markerLayer : la couche marker de la page
 */

function burster() {
	reset();
	markerLayer.explode();
}

/*
 *  Fonction permettant de reset l etat du markerLayer
 *  @param markerLayer : la couche marker de la page.
 */
function reset() {
    markerLayer.reset();
}


