var markers = new Array();
var map;

var tabKmMarker = new Array();
var isInitialized = false;

type_carte = 'grand';

window.addEvent('load', function() {

	////////// Gestion de la reglette kilometrique /////////////////////

	if ($('slider'))
	{
		var SliderObject = new Slider('slider', 'knob', {

			//options
			range: [1, distance_max_constatee],
			snap: false,
			steps: distance_max_constatee-1,
			wheel: false,
			mode: 'horizontal',

			//évènements callback

			onChange: function(step){

				var bulle_distance = $('bulle_distance');
				var txt = step+' km'+(step>1?'s':'');
				if(bulle_distance) {
					bulle_distance.set('html', txt);
				}
				$$('#module_resultat span.info_distance').each(function(item) {
					item.set('html', txt);
				});

				if($('nombre_km'))
					$('nombre_km').set('html', step);

		 	},



			onComplete: function(step){

			if (isInitialized === false)
			{
				load_marker();
				isInitialized = true;
			}
			afficher_marqueur()

			$$('#resultat_recherche div.item').each(function(e) {
				e.setStyle('display', 'none');
			});

			var nb_res_etudiante = 0;
			var nb_cites_u = 0;
			var nb_foyers = 0 ;

			while(step>0)
			{
				$$('#resultat_recherche div.item').each(function(e) {
					if (e.hasClass(step))
					{
						e.setStyle('display', '');

						if (e.hasClass('type_residence_1'))
							nb_res_etudiante++;
						else if (e.hasClass('type_residence_3'))
							nb_cites_u++;

						else if (e.hasClass('type_residence_4'))
							nb_foyers++;

						else
							nb_res_etudiante++;
					}
				});
				step--;
			}

			var infos_nb_res = $('infos_nb_res');
			var bloc_nb_res_etudiante = $('nombre_1');
			if (bloc_nb_res_etudiante)
				bloc_nb_res_etudiante.set('html', nb_res_etudiante);
			if (infos_nb_res)
				infos_nb_res.set('html', nb_res_etudiante);

			var infos_nb_citeu = $('infos_nb_citeu');
			var bloc_nb_cites_u = $('nombre_3');
			if (bloc_nb_cites_u)
				bloc_nb_cites_u.set('html', nb_cites_u);
			if (infos_nb_citeu)
				infos_nb_citeu.set('html', nb_cites_u);

			var infos_nb_citeu = $('infos_nb_citeu');
			var bloc_nb_cites_u = $('nombre_4');
			if (bloc_nb_cites_u)
				bloc_nb_cites_u.set('html', nb_foyers);
			if (infos_nb_citeu)
				infos_nb_citeu.set('html', nb_foyers);

		}
	});

	}


	if ($('slider'))
		SliderObject.set(position_curseur); //init value

	////////// FIN - Gestion de la reglette kilometrique - FIN //////////


	var lien_afficher_map = $('lien_afficher_map');
	var quartier_id = $('quartier_id');
	var ecole_id = $('ecole_id');
	var dateChoisie = $('dateChoisie');
	if(quartier_id) {
		var form_quartier = $('form_quartier');
		if(form_quartier){
			quartier_id.addEvent('change', function() {
				form_quartier.submit();
			});
		}
	}


	if ($('lien_fleche'))
	{
		$('lien_fleche').addEvent('click', function(event){
			if ($('criteres').hasClass('masque'))
			{
				$('criteres').removeClass('masque');
				$('lien_fleche').set('html', '<img src="img/fleche_haut_rabais.gif" alt="Voir les critères" title="Voir les critères" />');
			}
			else
			{
				$('criteres').addClass('masque');
				$('lien_fleche').set('html', '<img src="img/fleche_bas_rabais.gif" alt="masquer les critères" title="Masquer les critères" />');
			}
		});
	}

	var form_ecole = $('form_ecole');
	if(ecole_id){
		var form_ecole = $('form_ecole');
		ecole_id.addEvent('change', function() {
			form_ecole.submit();
		});
	}

	var form_date = $('form_date');
	if ( dateChoisie ){
		dateChoisie.addEvent('change', function(){
			form_date.submit();
		});
	}

	if(lien_afficher_map) {
		lien_afficher_map.addEvent('click', function(event){
			event.preventDefault();

			var map = $('map');
			if(map.getStyle('left') == "-10000px")
			{
				map.setStyle('left',"0px");
				map.setStyle('top',"0px");
				map.setStyle('position',"relative");

				if ($('criteres_map'))
				{
					$('criteres_map').removeClass('masque');
					$('criteres').removeClass('masque');
				}

				if(isInitialized === false)
				{
					load_marker();
					isInitialized = true;
				}

				//afficher_marqueur();

				lien_afficher_map.set('html', '<img src="img/resultats_recherche/masquer_resultats_carte.png" alt="Masquer la carte" />');
			}
			else
			{
				map.setStyle('left',"-10000px");
				map.setStyle('position',"absolute");

				if ($('criteres_map'))
					$('criteres_map').addClass('masque');
				lien_afficher_map.set('html', '<img src="img/resultats_recherche/afficher_resultats_carte.png" alt="Afficher les résultats sur la carte" />');
			}
		});
	}

});

function afficher_marqueur()
{
	var map = $('map');
	var chx_residence = $('chx_res');
	var chx_residence_dispo = $('chx_res_dispo');
	var chx_citeu = $('chx_citeu');

	var chx_lycee = $('chx_lycee');
	var chx_universite = $('chx_universite');
	var chx_ecole = $('chx_ecole');

	if ($('slider'))
		var nb_km = parseInt($('nombre_km').get('html')) ;
	else
		var nb_km = 50 ;

	for (i=0 ; i<tabKmMarker.length ; i++)
 	{
 		var bIsChecked = false;

 		if (tabKmMarker[i].type == 'point_de_repere')
 		{
 			bIsChecked = true;
 		}
 		else
 		{
	 		if(chx_residence.checked === true)
	 		{
		 		if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "res_non_dispo")
					bIsChecked = true;
			}
			//
			if (chx_residence_dispo.checked === true)
			{
				if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "res_dispo")
					bIsChecked = true;
			}
			//
			if(chx_citeu.checked === true)
			{
				if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "cite_u")
					bIsChecked = true;
			}
			//
			if(chx_ecole.checked === true)
			{
				if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "ecole")
					bIsChecked = true;
			}
			//
			if(chx_lycee.checked === true)
			{
				if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "lycee")
					bIsChecked = true;
			}
			//
			if(chx_universite.checked === true)
			{
				if(tabKmMarker[i].distance <= nb_km  && tabKmMarker[i].categorie == "universite")
					bIsChecked = true;
			}
		}

		tabKmMarker[i].marker.setVisible(bIsChecked);

 	}

}


function load_marker(lat, long)
{

	var france = new google.maps.LatLng(46.227638, 2.213749);
    var myOptions = {
      zoom: 4,
      center: france,
      scaleControl: true,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }

	map = new google.maps.Map(document.getElementById("map"), myOptions);

	var bounds = new google.maps.LatLngBounds();
	infoBulle = new google.maps.InfoWindow();

	for(i=0; i<markers.length; i++){

		var myLatLng = new google.maps.LatLng(markers[i].lat, markers[i].long);
		var lieu = new google.maps.Marker({
	       position: myLatLng,
	       map: map
		});
		bounds.extend(myLatLng);

		//console.log(map);

		lieu.infobulle = markers[i].infowindow ;


		  if (markers[i].type == 'point_de_repere')
		  {
			lieu.setTitle('Adresse saisie');
			lieu.setIcon('img/gm_ico/cible.png');
			tabKmMarker[tabKmMarker.length] = {marker : lieu, type : 'point_de_repere'};
		  }
		  else if (markers[i].type == 'residence')
	      {
		      //résidence étudiante
		      if(markers[i].typeresidence == '1') {
		        //si elle est dispo

		          if(markers[i].dispo) {
		            //marker.setVisible(false);
		            lieu.setTitle('Résidence avec disponibilité immédiate');
		            lieu.setIcon('img/gm_ico/gm_res_dispo.png');
		            //tab_residence_dispo[tab_residence_dispo.length] = lieu;
		            tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'res_dispo'};
		          }
		          else
		          {
		          	 lieu.setTitle('Résidence sans disponibilité immédiate');
		          	 lieu.setIcon('img/gm_ico/gm_res_non_dispo.png');
		          	 //tab_residence[tab_residence.length] = lieu;
		          	 tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'res_non_dispo'};
		          }
		      }
		      else if (markers[i].typeresidence == '3'){
		          //marker.setIcon('http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png');
		          //console.log(lieu);
		          lieu.setTitle('Cité U');
		          lieu.setIcon('img/gm_ico/gm_cite_u.png');
		          lieu.setVisible(false);
		          //tab_marqueurs_citeu[tab_marqueurs_citeu.length] = lieu;
		          tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'cite_u'};
		      }
	      }
	      else if (markers[i].type == 'ecole')
	      {
	      	if (markers[i].typeresidence == '1')
	      	{
		          //marker.setIcon('http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png');
		          lieu.setTitle('Lycée');
		          lieu.setIcon('img/gm_ico/gm_lycee.png');
		          lieu.setVisible(false);
		          //tab_marqueurs_lycee[tab_marqueurs_lycee.length] = lieu;
		          tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'lycee'};
		     }
		     else if (markers[i].typeresidence == '2')
	      	 {
		          //marker.setIcon('http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png');
		          lieu.setTitle('Université');
		          lieu.setIcon('img/gm_ico/gm_universite.png');
		          lieu.setVisible(false);
		          //tab_marqueurs_universite[tab_marqueurs_universite.length] = lieu;
		          tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'universite'};
		     }
		     else
		     {
		     	  //marker.setIcon('http://www.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png');
		          lieu.setTitle('Ecole');
		          lieu.setIcon('img/gm_ico/gm_ecole.png');
		          lieu.setVisible(false);
		          //tab_marqueurs_ecole[tab_marqueurs_ecole.length] = lieu;
		          tabKmMarker[tabKmMarker.length] = {marker : lieu, distance : markers[i].dist, type : 'residence' , categorie : 'ecole'};
		     }
	      }


		/*
		if (markers[i].lat == lat && markers[i].long == long)
		{
			infoBulle.setContent(lieu.infobulle);
            infoBulle.open(map, lieu);
		}
		*/

		google.maps.event.addListener(lieu, 'click', function() {
            infoBulle.setContent(this.infobulle);
            infoBulle.open(map, this);
        });

		map.fitBounds(bounds);

	}

}

function afficher_marker(i)
{
	var map = $('map');
	var lien_afficher_map = $('lien_afficher_map');

	if(map.getStyle('left') == "-10000px")
	{
		map.setStyle('left',"0px");
		map.setStyle('top',"0px");
		map.setStyle('position',"relative");

		if ($('criteres_map'))
		{
			$('criteres_map').removeClass('masque');
			$('criteres').removeClass('masque');
		}
		lien_afficher_map.set('html', '<img src="img/resultats_recherche/masquer_resultats_carte.png" alt="Masquer la carte" />');

		if (isInitialized === false)
		{
			load_marker();
			afficher_marqueur();
			isInitialized === true;
		}
	}

	afficher_point_carte(i);

	var obj = $('ancre_map');
	if(obj)
		var myFx = new Fx.Scroll(window).toElement(obj);
}

function afficher_point_carte(i)
{
	 var infobulle_gps = tabKmMarker[i].marker.infobulle ;
	 infoBulle.setContent(infobulle_gps);
	 infoBulle.open(map, tabKmMarker[i].marker);
}
