// JavaScript Document
//-----------------------------------------Fonction ajax
function agendaAjax(url,idDiv,parametres,pageStatique,menu){ //alert(url+'/'+idDiv+'/'+pageStatique+'/'+menu+'/'+parametres.parcours);
	new Ajax.Updater (idDiv,url,{
		parameters : parametres,
		method :'post',
		encoding :'UTF-8',
		onComplete : function (xmlHttp){
		  var contenu =xmlHttp.responseText.strip();
	  
  
		  $("barreTitre").update('Agenda');
		  
		  var annee= "";
		  var mois ="";
		  var jour= "";
		  var affichageSemaine = 0;
		  if(parametres.affichageSemaine!=null)
			  affichageSemaine = parametres.affichageSemaine;
		  if(parametres.jour !=null && parametres.mois !=null && parametres.annee !=null)
			  agenda(parametres.jour,parametres.mois,parametres.annee,affichageSemaine);
		  else					
			  agenda(jour,mois,annee,affichageSemaine);
				
			
		},
		onFailure : function(xmlHttp){
		
		}
	});
	
}


//-----------------------------------------fonction de traitement des événements des sous-menus
function afficherAgenda(page,pageStatique,menu){
	//alert("url:"+url+" page:"+page+" pSt:"+pageStatique+" menu:"+menu);
	//insertion du sous menu dans la balise d'information de la page 'infoSousMenu' 
	$("infoSousMenu").update(page);
	$("infoMenu").update(menu);
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php"; 					
	var menu = $('infoMenu').innerHTML;				
	var parametres = { page : page,menu:menu};
	var idDiv = "conteneurTexte";
	regulationAffichage(idDiv);
	agendaAjax(url,idDiv, parametres,pageStatique,menu);	
	
}



//-----------------------------------------Fonction d'affichage de la l'application agenda
function apercuAgenda(mois,annee){
	$("prochainEvenement").className = "";
	$("fenetreEvenement").className = "Invisible";
	$("agendaTable").className = "";
	var ladate=new Date();
	if(!mois){
		var mois =ladate.getMonth()+1; 
	}
	if(mois< 10)
		mois = '0'+mois;
	if(!annee)
		var annee = ladate.getFullYear();
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	new Ajax.Request(url,
	{	
		parameters : {page:'agenda',mois : mois, annee: annee},
		method : 'post',
		onSuccess : function(xmlHttp){
			var resultat = xmlHttp.responseText;
			$("agendaTable").update(resultat);
		},		
		onFailure : function (xmlHttp){
			
			
		}
	
	});
	

}

function prochainEvenement(dateEvenement){
	var parametres = {dateEvenement: dateEvenement, page:'agenda'};
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	o_options = new Object();
	o_options = {method:'get',parameters:parametres,
	onSuccess: function (xmlHttp){ 
		var contenu =xmlHttp.responseText;
		$("prochainEvenement").update(contenu);
	}};
	var laRequete = new Ajax.Request(url,o_options);
	
}
function aujourdhui(){
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	var menu = $('infoMenu').innerHTML;				
	var parametres = { page : 'agenda',dateJour:1,menu:menu,affichageSemaine:0};
	var idDiv = "conteneurTexte";
	agendaAjax(url,idDiv, parametres,1,'Accueil');
	
}
//fonction appelée lors d'un clique sur le bouton semaine du calendrier afin d'afficher la semaine complete des événements
function semaine(jour,mois,annee){
	var dateDemandee = annee+"-"+mois+"-"+jour;
	//var dateDemandee = $("dateDemandee").innerHTML;
	var reg = new RegExp("-","g");
	var dateTab = dateDemandee.split(reg);
	var affichageSemaine = 1; 
	if(dateTab[2]<10)
		dateTab[2] = "0"+dateTab[2];
	if(dateTab[1]<10)
		dateTab[1] = "0"+dateTab[1];
	affichageEvenement(dateTab[2],dateTab[1],dateTab[0],affichageSemaine);
	
}


//fonction appelé lors d'un clique sur une date de l'aperçu calendrier
//Elle va afficher le tableau d'affichage des événements du jour
//puis par appel de la fonction agenda() on insère les données correspondantes à la date
function affichageEvenement(jour,mois,annee,affichageSemaine){
	//alert(jour+" "+mois+" "+annee);
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	var menu = $('infoMenu').innerHTML;				
	var parametres = { page : 'agenda',dateJour:1,menu:menu,jour:jour,mois:mois,annee:annee,affichageSemaine:affichageSemaine};
	var idDiv = "conteneurTexte";
	//dans le menu Membres il faut cacher le menu accordeon pour éviter des superpositions
	regulationAffichage('conteneurTexte');
	agendaAjax(url,idDiv, parametres,1,'Accueil');
	
}
function agenda(jour,mois,annee,affichageSemaine){
	
	//test déterminant si l'appel provient d'un clique sur le sous-menu 'Calendrier' = affichage des événements d'aujourd'hui jour=mois=annee=""
	//ou d'un clique un chiffre de l'aperçu de calendrier = affichage d'événements d'un date correspondante
	var tab_jour=new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
	var tab_jour_abrege=new Array("Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam");
	var nomMoisTab = new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
	var nomMoisTab_abrege = new Array("Jan","Fév","Mars","Avr","Mai","Juin","Juil","Août","Sept","Oct","Nov","Déc");
	var objetDate=new Date();
	var date = annee+"-"+mois+"-"+jour;
	if(jour=="" && mois=="" && annee=="" ){
		var date = objetDate.getFullYear()+"-"+(objetDate.getMonth()+1)+"-"+objetDate.getDate();
		var dateString = "Aujourd'hui";
		var anneeString =objetDate.getFullYear();
	}
	else if(jour!=""&& mois!="" && annee!="" && affichageSemaine==0){
		objetDate.setDate(jour);
		objetDate.setMonth(mois-1);
		objetDate.setYear(annee);
		var jourSemaine = tab_jour[objetDate.getDay()];
		var date = annee+"-"+mois+"-"+jour;
		var dateString = jourSemaine+", "+jour+" "+nomMoisTab[mois-1];
		var anneeString = annee;
	}
	//requete Ajax : le résultat une chaine de caractère regroupant plusieurs tableaux séparés par un -:=====:-
	// dans chaque tableau il y un événement dont les infos sont délimité par un -::-
	var parametres = {date: date, page:'agenda',info_agenda:1,affichageSemaine:affichageSemaine};
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	o_options = new Object();
	o_options = {method:'post',parameters:parametres,
	onSuccess: function (xmlHttp){ 
		var contenu = xmlHttp.responseText;
		//alert(contenu);
		if(affichageSemaine==0){
			$('dateEvenement').update(dateString);
			$('anneeEvenement').update(anneeString);
		}
		//séparation des événements du jour
		var reg=new RegExp("-:=====:-", "g");
		var listeDesEvenementsTab = contenu.split(reg);
		//séparation des items d'un événement
		var reg=new RegExp("-::-", "g");
		
		for(i=0;i<listeDesEvenementsTab.length;i++){
			if(i){
				var evenementTab = listeDesEvenementsTab[i].split(reg);
				//alert("------------"+evenementTab);
				//séparation liellé valeur(libellé=>valeur)
				for(h=0;h<evenementTab.length;h++){
					var regDebut = new RegExp("debut=>","g");
					var regEvenement = new RegExp("evenement=>","g");
					var regNbreDemieHeure = new RegExp("nbreDemieHeure=>","g");
					var regFin = new RegExp("fin=>","g");
					var regRepeter = new RegExp("repeter=>","g");
					var regDateEvenement = new RegExp("dateEvenement=>","g");
					var regJourDeLaSemaine = new RegExp("jourDeLaSemaine=>","g");
					
					
					//on a besoin de 5 informations evenement, heure de debut, heure de fin et nombre de plage (demie heure ) que dure l'événement
					if (evenementTab[h].match(regDebut)){
						var reg1 = new RegExp("=>","g");
						var libelleDebut = evenementTab[h].split(reg1);
						var debut = libelleDebut[1];
					}
					else if(evenementTab[h].match(regEvenement)){
						var reg2 = new RegExp("=>","g");
						var libelleEvenement = evenementTab[h].split(reg2);
						var evenement = libelleEvenement[1];
					}
					else if(evenementTab[h].match(regNbreDemieHeure)){
						var reg3 = new RegExp("=>","g");
						var libelleNbreDemieHeure = evenementTab[h].split(reg3);
						var nbreDemieHeure = libelleNbreDemieHeure[1];
					}
					else if(evenementTab[h].match(regFin)){
						var reg4 = new RegExp("=>","g");
						var libelleFin = evenementTab[h].split(reg4);
						var fin = libelleFin[1];
					}
					else if(evenementTab[h].match(regRepeter)){
						var reg5 = new RegExp("=>","g");
						var libelleRepeter = evenementTab[h].split(reg5);
						var repeter = libelleRepeter[1];
					}// la dateEvenement est nécessaire lorsque l'on veut afficher les événements autre que ceux de la semaine entière
					else if(evenementTab[h].match(regDateEvenement) && affichageSemaine==1){//alert('affichage: '+affichageSemaine);
						var reg6 = new RegExp("=>","g");
						var libelleDate = evenementTab[h].split(reg6);
						var date = libelleDate[1];
						var reg7 = new RegExp("-","g");
						var dateTab = date.split(reg7);
						var annee = dateTab[0];
						var mois = dateTab[1];
						var jour = dateTab[2];
						objetDate.setDate(jour);
						objetDate.setMonth(mois-1);
						objetDate.setFullYear(annee);
						//numero jour Dimanche=0, Lundi = 1....
						var numeroJour = objetDate.getDay(); //alert(numeroJour+" "+jour+" "+mois);
						//comptage en accord avec celui de PHP. Pour JS 0 correpond à Dimanche et pour Php Lundi
						var jSemaine = numeroJour-1;
						//correction pour dimanche 6 et non pas -1
						if(numeroJour==0)
							jSemaine = 6;
						var jourSemaine = tab_jour_abrege[numeroJour];
						dateString = jourSemaine+", "+jour+" "+nomMoisTab_abrege[mois-1];
						anneeString = annee;
						//$('jour'+numeroJour).update(dateString);
						//$('anneeEvenement').update(anneeString);
						
					}
					else if(evenementTab[h].match(regJourDeLaSemaine) && affichageSemaine==1 ){//alert('affichage: '+affichageSemaine);
						var reg7 = new RegExp("=>","g");
						var libelleJourDeLaSemaine = evenementTab[h].split(reg7);
						var jourDeLaSemaine = libelleJourDeLaSemaine[1];
					}
				}
				//pour la valeur de l'heure de début on sépare les minutes des heures afin de pouvoir arrondir l'heure
				var reg8 = new RegExp(":","g");
				var heureTab = debut.split(reg8);
				var partieHeure = Math.abs(heureTab[0]);
				var partieMinute = Math.abs(heureTab[1]);
				// on en retient 
				if(partieMinute<=15 && partieMinute>=0)
					partieMinute = 0;
				else if(partieMinute<45 && partieMinute>=30)
					partieMinute = 30;
				else if(partieMinute>=45){
					partieMinute = 0;
					partieHeure++;
				}
				var stringHeure = partieHeure;
				if(partieHeure<10)
					var stringHeure = "0"+partieHeure;
				var stringMinute = partieMinute;
				if(partieMinute<10)
					stringMinute = "0"+partieMinute;
				var idDebut = stringHeure+":"+stringMinute;
				var info = debut+" à "+fin+" "+evenement;
				if(affichageSemaine == 1){
					idDebut = stringHeure+":"+stringMinute+jourDeLaSemaine; //alert(idDebut);
					info = debut+" "+evenement.substr(0,4)+"..";
				}
				
				//on insère l'événement à ligne correspondante dans le tableau d'agenda
				$(idDebut).update(info);
				$(idDebut).style.color = "white";
				//les plages répetétifs en bleu et les évenements ponctuels en rouge
				if(repeter == 1)
					$(idDebut+'Cellule').style.backgroundColor = "green";
				else
					$(idDebut+'Cellule').style.backgroundColor = "red";
					
				//on détermine la plage de l'évenement
				for(j=1;j<nbreDemieHeure;j++){
					if(partieMinute<=30 && partieMinute>0){
						
						partieMinute = 30;
						var nPartieHeure = partieHeure + 1;
						var nPartieMinute = 0;
					}
					else{
						partieMinute = 0;
						var nPartieHeure = partieHeure;
						var nPartieMinute = 30;alert
					}
					
					if(nPartieHeure<10)
						nPartieHeure = "0"+nPartieHeure;
					else
						nPartieHeure = ""+nPartieHeure;
					if(nPartieMinute<10)
						nPartieMinute = "0"+nPartieMinute;
					else
						nPartieMinute = ""+nPartieMinute;
					var nouvelleHeure = nPartieHeure+":"+nPartieMinute;
					partieHeure = Math.abs(nPartieHeure);
					partieMinute = Math.abs(nPartieMinute);
					if(affichageSemaine == 1){
						nouvelleHeure = nouvelleHeure+jourDeLaSemaine; 
					}
					if(repeter == 1){
						$(nouvelleHeure).style.color = "green";
						$(nouvelleHeure+'Cellule').style.backgroundColor = "green";
					}
					else{
						$(nouvelleHeure).style.color = "red";
						$(nouvelleHeure+'Cellule').style.backgroundColor = "red";
					}
					
				}
			}
		}
		
		
	}};
	var laRequete = new Ajax.Request(url,o_options);
	
}

function apercuEvenement(jour,mois,annee){
	$("agendaTable").className = "Invisible";
	$("prochainEvenement").className = "Invisible";
	if(mois< 10)
		mois = '0'+mois;
	if(jour< 10)
		jour = '0'+jour;
	//alert(jour+' '+mois+' '+annee);
	dateEvenement = annee+'-'+mois+'-'+jour;
	var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
	new Ajax.Request(url,
	{	
		parameters : {page:'agenda',dateEvenement : dateEvenement},
		method : 'post',
		onSuccess : function(xmlHttp){
			var resultat = xmlHttp.responseText;
			resultat += '<br/><input type="button", value="Fermer" name="fermer" onclick="apercuAgenda('+mois+','+annee+')" />';
			
			$("fenetreEvenement").className = "";
			$("fenetreEvenement").update(resultat);
			//apercuAgenda(mois,annee);
			//$("agendaTable").update(resultat);
		},		
		onFailure : function (xmlHttp){
			
			
		}
	
	});
}
function resume(annee){
  regulationAffichage('conteneurTexte');
  var url = $("infoURL").innerHTML+"ajaxTriathlon.php";
  new Ajax.Request(url,
  {	
	  parameters : {page:'agenda',resumeEvenements: 1,section:'triathlon',annee:annee},
	  method : 'post',
	  onSuccess : function(xmlHttp){
		  var resultat = xmlHttp.responseText;
		  $("conteneurTexte").update(resultat);
		  
	  }
  
  });
}



