
/*
 * 
 *
 * Fonctions clientes communes pour gerer les indices
 * 
 */


// variables à définir dans la page "h^ote"
/*var date_actualisation_indices_serveur = null;	// php string
var date_actualisation_indices_client = null; 	// js date obj
var periode_actualisation_indices = <?php echo $gertrude_periode_actualisation_indices?>;*/

var timer_indices = null;
var liste_indices = null;
// -------------------------------------------------------------------------------------------------------
//	I N D I C E S
// -------------------------------------------------------------------------------------------------------
// APPELS ET RETOURS AJAX pour les indices 
// 
// 

// -------------------------------------------------------------------------------------------------------
// Appel de la màj de l'indice urbain sur la page de la carto
// RA 05/2008, cf fction suivante
function actualiser_indice_urbain_mini()
{
accueil_actualiser_indice_urbain_mini();

}


// -------------------------------------------------------------------------------------------------------
// A peu près pareil pour la page d'accueil; pas d'enregistrement de la date de màj
// Appelé aussi depuis la page "indices"
function accueil_actualiser_indice_urbain_mini()
{
var url;	
var indice_urbain, indice_rocade;
var vu, vr;
	
Ajax_lire_indices()
indice_urbain = lire_indice_urbain();
indice_rocade = lire_indice_rocade();
indice_general_U = lire_indice_general_U();

if(indice_urbain && indice_urbain['speed'])
		postionner_curseur_indice_urbain(indice_urbain['speed']);

if(indice_rocade && indice_rocade['speed'])
		postionner_curseur_indice_rocade(indice_rocade['speed']);
else 
		desactiver_indice_rocade();		
if(indice_general_U)
	vu = indice_general_U['speed'];
if(indice_rocade)
	vr = indice_rocade['speed'];
accueil_actualiser_indice_general(vu, vr);

if(timer_indices)
	clearTimeout(timer_indices);
timer_indices = setTimeout("accueil_actualiser_indice_urbain_mini();", periode_actualisation_indices);	
}

// -------------------------------------------------------------------------------------------------------
// Appel ajax de la page qui renvoie les données de type indice
function Ajax_lire_indices()
{
var url;	
var res; // chaine resultat de l'appel Ajax;
var indice_urbain;

// test affichage : postionner_curseur_indice_urbain(20);

url = "gertrude/indices/get_indices_data.php";

res=addeo_envoyer_requete_xmlhttp(url,'','GET');
if(!res || res=="")
	return;
// de json à objet js	

try
	{
	eval("liste_indices="+res+";");
	}
catch(err)
	{
	liste_indices = null;
	}	
}

	
// -------------------------------------------------------------------------------------------------------
// lire_indice_rocade
function lire_indice_rocade()
{
return(lire_indice_dans_liste_indices("indice rocade"));
}
// -------------------------------------------------------------------------------------------------------
// lire_indice_urbain : retourner celui de la table dont l'id correspond
function lire_indice_urbain()
{
return(lire_indice_dans_liste_indices("indice urbain"));	
}

// -------------------------------------------------------------------------------------------------------
// lire_indice_urbain : retourner celui de la table dont l'id correspond
function lire_indice_general_U()
{
return(lire_indice_dans_liste_indices("indice general"));	
}

// -------------------------------------------------------------------------------------------------------
// lire_indice
function lire_indice_dans_liste_indices(id_indice)
{
var id, one_indice;
var N, i;

if(liste_indices == null)
	return(null);
	
table_indices = liste_indices.table;

if(!table_indices)
	return(null);	
if((N = table_indices.length) == 0)
	return(null);	
for(i=0; i<N; i++)
	{
	one_indice = table_indices[i];
	id = one_indice.id;
	if(id.indexOf(id_indice, 0) > 0)
		return(one_indice);
	}
return(null);	
}


// -------------------------------------------------------------------------------------------------------
// Enregistre la date de l'actualisation sous 2 formats : 
// - format serveur php (2007-11-15T15:59:23+02:00)'
// - format client Js : objet Date()
//
function dater_actualisation_indices(str_time_from_serveur)
{
date_actualisation_indices_serveur = str_time_from_serveur;
date_actualisation_indices_client = new Date();

//afficher_date_actualisation(date_actualisation_indices_client);
}

// -------------------------------------------------------------------------------------------------------
function postionner_curseur_indice_urbain(val)
{
var X, Y, L, H, y, h_1kmh;
var DECALAGE_VERTICAL = +10;

// /* test des valeurs (en km/h)*/val = 21;	

fond = layer_adresse("indice_urbain");	
curseur = layer_adresse("curseur_indice_urbain");
// pas de val < 0
val = Math.max(val, 0); 
H = layer_lire_hauteur(null, fond);
L = layer_lire_hauteur(null, fond);
Y = layer_lire_position_y(null, fond);
X = layer_lire_position_x(null, fond);
// combien de px pour un km/h ? la jauge compte pour 30 km/h
h_1kmh = H/30;
 	
y = Math.floor(val * h_1kmh);
y = Math.max(y, 1);
y = Math.min(y, H-1);

layer_positionner(null, X-12,H-y+DECALAGE_VERTICAL, curseur);
//curseur.style.top = -y + "px;"
//layer_montrer(null, curseur);
	
}


function postionner_curseur_indice_rocade(val)
{
var DECALAGE_VERTICAL = +16;
var X, Y, L, H, y, h_1kmh;

// /*test valeurs km/h */ val = 61;	

fond = layer_adresse("indice_rocade");	
curseur = layer_adresse("curseur_indice_rocade");
// pas de val < 0
val = Math.max(val, 0); 
H = layer_lire_hauteur(null, fond);
L = layer_lire_largeur(null, fond);
Y = layer_lire_position_y(null, fond);
X = layer_lire_position_x(null, fond);
// combien de px pour un km/h ? la jauge compte pour 30 km/h
h_1kmh = H/90;
 	
y = Math.floor(val * h_1kmh);
y = Math.max(y, 1);
y = Math.min(y, H-1);

layer_positionner(null, X+L,H-y+DECALAGE_VERTICAL, curseur);
layer_montrer(null, curseur);
	
}

// -------------------------------------------------------------------------------------------------------
// Si absence de données ou données erronées, grise l'indixcateur et cacher le curseur
function desactiver_indice_rocade()
{
var curseur = layer_adresse("curseur_indice_rocade");
var o;

layer_cacher(null, curseur);

o = layer_adresse("fond_indice_rocade"); 
o.className = "indice_inactif";

}

// -------------------------------------------------------------------------------------------------------
// A peu près pareil pour la page d'accueil; pas d'enregistrement de la date de màj
function accueil_actualiser_indice_general(vitesse_u, vitesse_r)
{
var vu, vr
// griser tous les pavés
o = layer_adresse("rect_sature"); o.className = "rect_indice_inactif";
o = layer_adresse("rect_charge"); o.className = "rect_indice_inactif";
o = layer_adresse("rect_dense"); o.className = "rect_indice_inactif";
o = layer_adresse("rect_fluide"); o.className = "rect_indice_inactif";

vu = parseInt(vitesse_u);
vr = parseInt(vitesse_r);

if(isNaN(vu))
	desactiver_indice_general_urbain();
else
	{
	// en allumer 1.
	if(vu <= 5)
		{
		o = layer_adresse("rect_sature"); o.className = "rect_indice_actif";
		}
	if(vu > 5 && vu <= 10)		
		{
		o = layer_adresse("rect_charge"); o.className = "rect_indice_actif";
	}
	if(vu > 10 && vu <= 15)		
		{
		o = layer_adresse("rect_dense"); o.className = "rect_indice_actif";
		}
	if(vu > 15)
		o = layer_adresse("rect_fluide"); o.className = "rect_indice_actif";
	
	accueil_positionner_curseur_indice_general_urbain(o);		
	}
	

if(isNaN(vr))
	desactiver_indice_general_rocade();
else
	{
	// indice général_rocade
	if(vr <= 30)		
		{
		o = layer_adresse("rect_charge"); o.className = "rect_indice_actif";
		}
	if(vr > 30  && vr <= 60)		
		{
		o = layer_adresse("rect_dense"); o.className = "rect_indice_actif";
		}
	if(vr > 60)
		o = layer_adresse("rect_fluide"); o.className = "rect_indice_actif";

	accueil_positionner_curseur_indice_general_rocade(o);
	}
}

// -------------------------------------------------------------------------------------------------------
function actualiser_indice_general(vitesse_u, vitesse_r)
{
return(accueil_actualiser_indice_general(vitesse_u, vitesse_r));
}


// -------------------------------------------------------------------------------------------------------
// curseur sous un des pavés (layer) de l'indice général
function accueil_positionner_curseur_indice_general_rocade(layer)
{
curseur = layer_adresse("curseur_indice_general2");
if(!curseur)
	return;

H = layer_lire_hauteur(null, layer);
L = layer_lire_largeur(null, layer);
Y = layer_lire_position_y(null, layer);
X = layer_lire_position_x(null, layer);

l = 16; // largeur du curseur
x = X + L/2 - l;
y = -2;
 	
layer_positionner(null, x,y, curseur);
}
// -------------------------------------------------------------------------------------------------------
function desactiver_indice_general_rocade()
{
layer_cacher("curseur_indice_general2");
}

// -------------------------------------------------------------------------------------------------------
// curseur sous un des pavés (layer) de l'indice général
function accueil_positionner_curseur_indice_general_urbain(layer)
{

curseur = layer_adresse("curseur_indice_general1");
if(!curseur)
	return;

H = layer_lire_hauteur(null, layer);
L = layer_lire_largeur(null, layer);
Y = layer_lire_position_y(null, layer);
X = layer_lire_position_x(null, layer);

l = 16; // largeur du curseur
x = X + L/2 - l;
y = 2;
 	
layer_positionner(null, x,y, curseur);
}

// -------------------------------------------------------------------------------------------------------
function desactiver_indice_general_urbain()
{
layer_cacher("curseur_indice_general1");
}

