/**
 * Cette fonction permet de calculer l'age d'une personne
 * @param jour int : jour de naissance
 * @param mois int : mois de naissance
 * @param annee int : annee de naissance
 * @return int : age de la personne
 */
function getAge(jour,mois,annee) {
	var d = new Date();
	var age = d.getFullYear()-annee-1;
	if(d.getMonth()+1 > mois || d.getMonth()+1 == mois && d.getDate() >= jour) { age++; }
	return age;
}

/**
 * Cette fonction permet d'afficher une adresse via googlemaps
 */
function showMap(elemMap,address,zoom,marker,description) {				
	if (GBrowserIsCompatible()) { // Si le navigateur est compatible avec googlemaps			
		// Creer la map
		map = new GMap2(elemMap);
		//map.addControl(new GLargeMapControl3D());

		// Chercher l'adresse
		geocoder = new GClientGeocoder();
		if (geocoder) {
			geocoder.getLatLng(address,function(point) {
				if (!point) { // Adresse trouve
					alert("Adress not found !");
				} else { // Adresse non trouve
					map.setCenter(point, zoom);
					if(marker) { // Si un markeur doit etre ajoute
						var m = new GMarker(point); // Creer le marqueur
						map.addOverlay(m); // Ajouter le marqueur
						//m.openInfoWindowHtml(description);
					}
				}
			});
		}
	}
}

/**
 * Cette fonction permet de bloquer les slides lorsqu'on
 */
function blockSlides() {
	slidesBlocked = 1;
	timeBlock = new Date();
}

// Variables globales
var initHeight = 0; 	// Hauteur initiale des box
var initWidth = 0; 		// Largeur initiale des box
var slidesBlocked = 0; 	// Les slides sont ils bloques ?
var timeBlock; 			// Date de bloquage des slides

// Actions quand le dom de la page est pret
$(document).ready(function () {
	// Arrondir les divs
	$("#header, #statut, #content > div").corner("5px");
	
	// Mettre un onclick sur les liens
	$(".resizable a").click(function() {
		blockSlides();
	});
	
	// Animer les divs
	$("#content > div.resizable").each(function(i,elem){
		// Definir l'evenement onclick
		$(elem).click(function() {
			// Debloquer si necessaire
			if(slidesBlocked == 1) {
				d = new Date();
				if(d.valueOf() - timeBlock.valueOf() > 500) {
					slidesBlocked = 0;
				}
			}
		
			if(slidesBlocked == 0) { // Si les slides ne sont pas bloques
				// Remonter l'affichage en haut de page
				window.scrollTo(0,0);
			
				if($(elem).css("width") != "97%") { // Cacher toutes les box puis afficher la box demandee en entier
					// Enregistrer la hauteur/largeur de l'element si necessaire
					if(initHeight == 0 && initWidth == 0) {
						initHeight = $(elem).css("height");
						initWidth = $(elem).css("width");
					}
				
					// Cacher toutes les autres divs
					$("#content > div").slideUp("slow");
					
					// Ajouter des evenements dans la queue
					$(elem).queue(function() {
						// Afficher le contenu à afficher
						$(elem).find(".resizable-hide").show();
						
						// Cacher le contenu à cacher
						$(elem).find(".resizable-show").hide();
						
						// Agrandir la div
						$(elem).css({width:"97%",height:"auto"});
						
						// Afficher la div
						$(elem).slideDown("normal");
						
						// Charger les cartes si necessaires
						$(elem).find(".map").each(function(i,div) {
							if($(div).is(":empty")) {
								window.setTimeout(function() { showMap(div,$(div).next(".adress").html(),8,true); },i*2000);
							}
						});
						
						// Relancer la queue
						$(this).dequeue();
					});
				}
				else { // Reafficher toutes les box
					// Cacher la div
					$(elem).slideUp("normal",function() {								
						// Retrecir la div
						$(elem).css({width:initWidth,height:initHeight});
						
						// Afficher le contenu à afficher
						$(elem).find(".resizable-show").show();
						
						// Cacher le contenu à cacher
						$(elem).find(".resizable-hide").hide();
						
						// Afficher toutes les autres divs
						$("#content > div").slideDown("slow");
					});
				}
			}
		});
	});
});