/**
 * Gestion des themes de carto pour VirtualEarth
 * 
 * @requires JQuery 1.2.1
 * @requires Jquery.pngFix.js
 * @requires virtualearth.js
 */

$(document).ready(function() {
  
  var firstTheme = $('#carto .firstTheme')[0];
  var elNimporteOu = $(VzMap.Params.Selectors.pathNimporteOu);
  var elTousThemes = $(VzMap.Params.Selectors.pathTousThemes);
  
  $(document).one(VzMap.Params.Events.MapLoaded, function(evt) {
  	
  	// On declenche l'appel GeoRSS pour tous les themes deja coches
  	$('#carto .checkboxTheme:checked').each(function() {
  		Map.gestionTheme($(this));
  	});
	if (Map.aThemesDest.length > 0)
		Map.getPOIs();
  });
  
  
  /**
   * Gestion du menu des themes desti
   */
   
  // Click sur la checkbox du theme
  $('#carto .checkboxTheme').click(function() {
		// D'abord, si "n'importe ou" est coche, on le decoche
		if (elNimporteOu.attr('checked'))
			elNimporteOu.removeAttr('checked');
			
		Map.gestionTheme($(this));
		Map.getPOIs();
  });
  
  // Click sur "n'importe ou"
  elNimporteOu.click(function() {
  	if ($(this).attr('checked')) { // Case cochee, on coche tous les themes
  		$('#carto .checkboxTheme').each(function() {
  			if ($(this).attr('checked') == undefined) {
  				Map.gestionTheme($(this));
  				$(this).attr('checked', 'checked')
  			}
  		});
  	} else { // Case decochee, on decoche tous les themes
  		$('#carto .checkboxTheme').each(function() {
			Map.gestionTheme($(this));
			$(this).removeAttr('checked')
  		});
  	}
  	
  	// Enfin, affichage des points sur la carte
  	Map.getPOIs();
  });
  
  // Click sur le lien d'une destination. On doit afficher l'infobulle du POI
  $(VzMap.Params.Selectors.pathSubmenuCartoLien).click(function() {
  	var id = $(this).attr('id');
  	if (id) {
  		Map.affichePOI(id);
  	}
  	return false;
  });
  
  
  /**
   * Gestion du moteur d'inspiration
   */
  $('#moteur-inspiration input.themeInsipration').click(function() {
	if (elTousThemes.attr('checked'))
		elTousThemes.removeAttr('checked');
	
	Map.gestionInspi($(this));
	Map.getPOIs();
  });
  
  // Click sur "Tous les themes" (inspiration)
  elTousThemes.click(function() {
	if ($(this).attr('checked')) { // Case cochee, on coche tous les themes
  		$('#carto input.themeInsipration').each(function() {
  			if ($(this).attr('checked') == undefined) {
  				$(this).attr('checked', 'checked')
  				Map.gestionInspi($(this));
  			}
  		});
  	} else { // Case decochee, on decoche tous les themes
  		$('#carto input.themeInsipration').each(function() {
			$(this).removeAttr('checked')
			Map.gestionInspi($(this));
  		});
  	}

	Map.getPOIs();
  });
  
  
  /**
   * Selection d'un continent
   */
  var tabOptions = $('#select-pays option');
  $('#select-continent').change(function() { 
    var selected = false;
    var parent = 'select-continent';
	var child = 'select-pays';
    var parentValue = $('#'+parent).attr('value');

	// Le premier element du select des continents n'est pas selectionne ("Choisissez un continent"). On a donc bien selectionne un continent
	// On vide donc le select enfant (les pays) pour le remplir a nouveau, mais uniquement des pays concernees par le continent
	if($(this).attr('value')) {  
      $('#'+child).removeAttr("disabled"); // Activation du select
      $('#'+child).empty(); // Vidage du select
      
      // On parcourt le tableau d'options pour verifier la dependance avec le menu des continents. Si l'option est concernee, on la rajoute dans le select
      tabOptions.each(function() {
      	if ($(this).hasClass('sub_'+parentValue)) {
      		$('#'+child).append($(this));
      		
      		// On selectionne le premier element de la liste
      		// Pour tous les autres on supprime l'attribut selected pour etre sur qu'elles ne seront pas selectionnees
      		if (!selected) {
      			$(this).attr('selected', 'selected');
      			selected = true;
      		}
      		else {
      			$(this).removeAttr('selected');
      		}
      	}
      });
    }
    // Le select des continents est positionne sur "Choisissez un continent", on remet le select des pays dans son etat initial
    else {
      $('#'+child).attr("disabled", "disabled");
      tabOptions.each(function(){
        $('#'+child).append($(this));
        
        if($(this).attr("value")=='')
        	$(this).attr("selected", "selected");
        else
        	$(this).removeAttr('selected');
        
      });
      
      Map.paramDest = null; // Reinitialisation du parametre de push destination
      return false;
    }
    
	$('#'+child).trigger("change");
    $('#'+child).focus();

	return false;
  });
  
  /**
   * Selection d'un pays
   */
  $('#select-pays').change(function() {
  	
  	if ($(this).attr('value') != 0) {
	  	var latLongZoom = $(this).attr('value').split('~');
	  	var destCode = latLongZoom[3];
	  	
	  	// On affiche le POI si c'est possible. Sinon on deplace juste la carte jusqu'au point donne
	  	try {
	  		Map.affichePOI(destCode, true);
	  	} catch(e) {
	  		Map.GotoAndZoom(latLongZoom[0], latLongZoom[1], latLongZoom[2]);
	  	}
  	}
  });

});
