var secteurJeunesse = {
	id      : "secteurjeunesse",
	libelle : "Secteur jeunesse"
};

var secteurCulture = {
	id      : "secteurculture",
	libelle : "Secteur culture"
};

var coordonneesMJC = {
	id : "mjcbourgenbresse",
	libelle : "MJC de Bourg en Bresse",
	adresse : {
		rue        : "21A allée de Challes",
		codePostal : "01000"               ,
		commune    : "Bourg en Bresse"
	},
	telephone : "04 74 23 27 44",
	email     : {utilisateur: "mjc.bourg.01", domaine: "free.fr"},
	longitude : 46.208876,
	latitude  :  5.233011
}

var coordonneesComite1905 = {
	id : "comite1905",
	libelle : "Comité du 9 décembre 1905",
	adresse : {
		rue        : "42 rue Charles Robin",
		codePostal : "01000"               ,
		commune    : "Bourg en Bresse"
	},
	email     : {utilisateur: "comite1905.01", domaine: "gmail.com"},
	longitude : 46.205869,
	latitude  :  5.232716,
	urlSite : "http://01-comite1905.org/"
}

var coordonneesTheatreBourgEnBresse = {
	id : "theatrebourgenbresse",
	libelle : "Théâtre de Bourg en Bresse",
	adresse : {
		rue        : "11 place de la Grenette",
		codePostal : "01004"               ,
		commune    : "Bourg en Bresse"
	},
	telephone : "04 74 50 40 00",
	longitude : 46.206545,
	latitude  :  5.224793,
	urlSite   : "http://www.theatre-bourg.com/"
}

var coordonneesJeunesseLaique = {
	id : "jeunesselaique",
	libelle : "Jeunesse Laïque",
	adresse : {
		rue        : "42 rue Charles Robin",
		codePostal : "01000"               ,
		commune    : "Bourg en Bresse"
	},
	longitude : 46.205869,
	latitude  :  5.232716
}

var evenementForumBenevolat2011 = {
	id          : "forumbenevolat2011"                                             ,
	type        : "Forum"                                                          ,
	libelle     : "Le bénévolat en Europe"                                         ,
	description : [{texte: "Quelle place pour les jeunes dans les associations ?"}],
	secteurs    : [secteurJeunesse]                                                ,
	date        : "201111282000"                                                   ,
	lieux       : [coordonneesMJC]                                                 ,
	ressources  : ["forum-benevolat-2011"]
};

var evenementHistoireLaicite2011 = {
	id          : "histoirelaicite"                                                  ,
	type        : "Exposition pour les scolaires"                                    ,
	libelle     : "L'histoire de la laïcité"                                         ,
	description : [
		{texte : "Inauguration de l'exposition le lundi 21 novembre."               },
		{texte : "Dossiers pédagogiques et parcours interactif à votre disposition."}
	],
	secteurs    : [secteurJeunesse]                                                  ,
	debut       : "201111210000"                                                     ,
	fin         : "201112170000"                                                     ,
	lieux       : [coordonneesMJC]                                                   ,
	partenaires : [coordonneesComite1905]                                            ,
	coordonneesInscriptions : [
		{telephone : "04 74 23 67 54", email : { utilisateur: "jydaux"      , domaine: "gmail.com"}},
		{telephone : "04 74 23 27 44", email : { utilisateur: "mjc.bourg.01", domaine: "free.fr"   }}
	],
	ressources  : ["histoire-laicite-2011"]
};

var evenementRencontresAmateursTheatre2011 = {
	id          : "rencontresamateurstheatre2011"                                  ,
	libelle     : "Rencontres des amateurs de théâtre"                             ,
	secteurs    : [secteurCulture]                                                 ,
	debut       : "201111100000"                                                   ,
	fin         : "201111190000"                                                   ,
	lieux       : [coordonneesMJC, coordonneesTheatreBourgEnBresse]                ,
	ressources  : ["rat-2011-1", "rat-2011-2"]
};

var evenementSemaineLaicite2011 = {
	id          : "semainelaicite2011"    ,
	libelle     : "Semaine de la laïcité" ,
	description : [
		{texte : "Pour un second siècle de laïcité."},
		{texte : "Mercredi 7 décembre à 20h, à la MJC, projection du film documentaire « Laïcité Inch'Allah » de Nadia El Fani, suivie d'un débat."},
		{texte : "Jeudi 8 décembre à 20h30, à la jeunesse laïque (salle vitrée), conférence de Christian Eyschen : « L'église contre la Libre Pensée »."                      },
		{texte : "Vendredi 9 novembre à 20h30, la MJC, spectacle « RésistanceS » par la compagnie « Le dernier qui sort ferme la porte ». Discours, apéritif dinatoire."}
	],
	secteurs    : [secteurCulture]        ,
	debut       : "201112070000"          ,
	fin         : "201112090000"          ,
	lieux       : [coordonneesMJC]        ,
	ressources  : ["semaine-laicite-2011"]

}

var evenementBoeufVinaigre2011 = {
	id          : "boeufvinaigre2011"    ,
	libelle     : "Boeuf au vinaigre" ,
	description : [
		{texte : "Rencontres musciales."},
		{texte : "Jeudi 3 novembre 2011 à la Tannerie à 20h."},
		{texte : "Dimanche 18 décembre 2011 à la MJC à 16h."},
		{texte : "Samedi 4 février 2012 à la Ferme à Jazz à 20h."},
		{texte : "Jeudi 15 mars 2012 à la Tannerie à 20h."},
		{texte : "Dimanche 29 avril 2012 à la MJC à 16h."},
		{texte : "Jeudi 31 mai à la Tannerie à 20h."}
	],
	secteurs    : [secteurCulture]        ,
	debut       : "201111030000"          ,
	fin         : "201205310000"          ,
	lieux       : [coordonneesMJC]        ,
	ressources  : ["boeuf-vinaigre-2011"]
};

var evenementFestivalCinemaSolidaire2011 = {
	id          : "festivalcinemasolidaire2011"    ,
	libelle     : "Festival du cinéma solidaire" ,
	description : [
		{texte : "Trois ciné-débats"},
		{texte : "« Solutions locales pour un désordre globale » de Coline Serreau, jeudi 24 novembre à 14h à la MJC."},
		{texte : "« De mémoires d'ouvriers » de Gilles Perret, vendredi 25 novembre à 20h30 au cinéma la Grenette."   },
		{texte : "« Ma part du gâteau » de Cédric Klapisch, mardi 29 novembre à 14h à la MJC."                        }
	],
	secteurs    : [secteurCulture]        ,
	debut       : "201111240000"          ,
	fin         : "201111290000"          ,
	lieux       : [coordonneesMJC]        ,
	ressources  : ["festival-cinema-solidaire-2011"]

};

var evenementFestivalMetal2011 = {
	id          : "festivalmetal2011"    ,
	libelle     : "Festival métal" ,
	description : [
		{texte : "Avec les groupes « Blasphème », « Messaline », « Acétylène » et « Epsilon »"},
		{texte : "Concerts à partir de 20h, entrée à 10 €"},
		{texte : "Apéro offert de 19h30 à 20h. Buvette et snack."},
		{texte : "Concerts à partir de 20h, entrée à 10 €"}
	],
	secteurs    : [secteurCulture]        ,
	date       : "201111192000"          ,
	lieux       : [coordonneesMJC]        ,
	ressources  : ["festival-metal-2011"],
	coordonneesRenseignements : [
		{telephone : "06 12 46 21 82", email : { utilisateur: "eric.martelat", domaine: "free.fr"   }}
	]
};

var evenementArdcor2011ReunionInfo = {
	id          : "ardcorprojetjeune2011reunioninfo"    ,
	libelle     : "Projet jeunes ar'Dcor" ,
	description : [
		{texte : "Si on imaginait qu'un collectif de jeunes envahisseurs prenait d'assaut l'espace urbain de Bourg en Bresse, pour un projet artistique détonnant ..."},
		{texte : "Vous avez entre 10 et 20 ans, rendez-vous le mardi 20 décembre à 17h30 à la MJC pour une réunion d'information."}
	],
	secteurs    : [secteurJeunesse, secteurCulture],
	date       : "20111220173000"          ,
	lieux       : [coordonneesMJC]        ,
	ressources  : ["ardcor-projet-jeune-2011-reunion-info"]
};

var evenementStagePrintempsEcritures2012 = {
    id : "stageprintempsecriture2012",
    libelle : "Stage printemps des écritures",
    description : [
        {texte : "Stage avec Vincent Geneslay, « Gaufrage et autres techniques »."},
        {texte : "Le stage est ouvert aux adolescents et adultes initiés."}
    ],
    secteurs : [secteurCulture],
    debut : "201203300000",
    fin : "201204010000",
    lieux : [coordonneesMJC],
    telechargements : [
        {libelle : "Informations et bulletin d'inscription (format PDF)", fichier : "stage-printemps-ecritures-2012.pdf"},
        {libelle : "Informations et bulletin d'inscription (format Word)", fichier : "stage-printemps-ecritures-2012.doc"}
    ]
};

var evenementPrintempsEcritures2012 = {
    id : "printempsecritures2012",
    libelle : "Printemps des écritures",
    description : [
        {texte : "Expos - Ateliers - Stages - Animations"}
    ],
    secteurs : [secteurCulture],
    debut : "201203160000",
    fin : "201204070000",
    lieux : [coordonneesMJC],
    ressources : ["printemps-ecritures-2012-1", "printemps-ecritures-2012-2"]
}

var baseEvenements = [
	evenementForumBenevolat2011           ,
	evenementHistoireLaicite2011          ,
	evenementRencontresAmateursTheatre2011,
	evenementSemaineLaicite2011           ,
	evenementBoeufVinaigre2011            ,
	evenementFestivalCinemaSolidaire2011  ,
	evenementFestivalMetal2011            ,
	evenementArdcor2011ReunionInfo        ,
    evenementStagePrintempsEcritures2012  ,
    evenementPrintempsEcritures2012
];

function elementEvenement(evenement, reduit) {
	var element = document.createElement("article");
	if (!reduit) element.setAttribute("id"   , evenement.id);
	element.setAttribute("class", "evenement" );
	
	{ // Titre
		var elementHeader = document.createElement("header");
		element.appendChild(elementHeader);
		
		if (!reduit && evenement.type !== undefined) {
			var elementH1Type = document.createElement("h1");
			elementHeader.appendChild(elementH1Type);
			elementH1Type.appendChild(document.createTextNode(evenement.type));
		}
		
		var elementH1Titre = document.createElement("h1");
		elementHeader.appendChild(elementH1Titre);
		elementH1Titre.appendChild(document.createTextNode(evenement.libelle));
		
		if (reduit) {
			var elementDetail = document.createElement("div");
			elementHeader.appendChild(elementDetail);
			
			elementDetail.appendChild(document.createTextNode("("));
			
			var lien = document.createElement("a");
			elementDetail.appendChild(lien);
			lien.setAttribute("href", "evenements.html#" + evenement.id);
			lien.appendChild(document.createTextNode("Plus de détails"))	;
			
			elementDetail.appendChild(document.createTextNode(")"));
		}
	}
	
	{ // Dates
		var elementDates = document.createElement("div");
		element.appendChild(elementDates);
		elementDates.setAttribute("class", "dates");
		
		if (evenement.date !== undefined) {
			elementDates.appendChild(document.createTextNode("Le " + formaterDateAffichage(construireDate(evenement.date))));
		} else if (evenement.debut !== undefined) {
			if (evenement.fin === undefined) {
				element.appendChild(document.createTextNode("A partir de " + formaterDateAffichage(construireDate(evenement.debut))));
			} else {
				element.appendChild(document.createTextNode("Du " + formaterDateAffichage(construireDate(evenement.debut)) + " au " + formaterDateAffichage(construireDate(evenement.fin))));
			}
		}
	}
	
	{ // Lieux
		for (var index = 0; index < evenement.lieux.length; index++) {
			var lieu = evenement.lieux[index];
			
			if (reduit) {
				var elementLieu = document.createElement("div");
				element.appendChild(elementLieu);
				elementLieu.setAttribute("class", "coordonnees");
				
				elementLieu.appendChild(document.createTextNode(lieu.libelle));
			} else {
				element.appendChild(elementCoordonnees(lieu));
			}
		}
	}
	
	{ // Partenaires
		if (!reduit && evenement.partenaires !== undefined) {
			var elementPartenaires = document.createElement("div");
			element.appendChild(elementPartenaires);
			elementPartenaires.setAttribute("class", "partenaires");
			
			for (var index = 0; index < evenement.partenaires.length; index++) {
				var partenaire = evenement.partenaires[index];
				
				var elementPartenaire = document.createElement("div");
				elementPartenaires.appendChild(elementPartenaire);
				
				elementPartenaire.appendChild(document.createTextNode("Avec : "));
				
				if (partenaire.urlSite !== undefined) {
					var lien = document.createElement("a");
					elementPartenaire.appendChild(lien);
					lien.setAttribute("href", partenaire.urlSite);
					lien.appendChild(document.createTextNode(partenaire.libelle));
				} else {
					elementPartenaire.appendChild(document.createTextNode(partenaire.libelle));
				}
			}
		}
	}
	
	{ // Description
		var nombreParagraphes = evenement.description == null ? 0 : evenement.description.length;
		
		if (nombreParagraphes > 0) {
			element.appendChild(elementParagraphe(evenement.description[0]));
			
			if (!reduit) {
				for (var index = 1; index < nombreParagraphes; index++) {
					element.appendChild(elementParagraphe(evenement.description[index]));
				}
			}
		}
	}
	
	{ // Inscriptions
		if (!reduit && evenement.coordonneesInscriptions !== undefined) {
			var elementInscriptions = document.createElement("div");
			element.appendChild(elementInscriptions);
			
			elementInscriptions.appendChild(document.createTextNode("Inscriptions :"));
			
			for (var index = 0; index < evenement.coordonneesInscriptions.length; index++) {
				var coordonnees = evenement.coordonneesInscriptions[index];
				elementInscriptions.appendChild(elementCoordonnees(coordonnees));
			}
		}
	}
	
	{ // Renseignements
		if (!reduit && evenement.coordonneesRenseignements !== undefined) {
			var elementRenseignements = document.createElement("div");
			element.appendChild(elementRenseignements);
			
			elementRenseignements.appendChild(document.createTextNode("Renseignements :"));
			
			for (index in evenement.coordonneesRenseignements) {
				var coordonnees = evenement.coordonneesRenseignements[index];
				elementRenseignements.appendChild(elementCoordonnees(coordonnees));
			}
		}
	}

	{ // Ressources
		if (evenement.ressources != undefined) {
			if (reduit) {
				var elementRessource = document.createElement("div");
				element.appendChild(elementRessource);
				elementRessource.setAttribute("class", "ressource");
				
				var image = document.createElement("img");
				elementRessource.appendChild(image);
				image.setAttribute("src", "image.php?id=" + evenement.ressources[0] + "&size=100");
				// Une seule vignette de la première ressource pour le mode réduit
				
			} else {
				for (var index = 0; index < evenement.ressources.length; index++) {
					var ressource = evenement.ressources[index];
					
					var elementRessource = document.createElement("div");
					element.appendChild(elementRessource);
					elementRessource.setAttribute("class", "ressource");
					
					var lien = document.createElement("a");
					elementRessource.appendChild(lien);
					lien.setAttribute("href", "image.php?id=" + evenement.ressources[index]);
					
					var image = document.createElement("img");
					lien.appendChild(image);
					image.setAttribute("src", "image.php?id=" + evenement.ressources[index] + "&size=800");
				}
			}
		}
	}

    { // Documents téléchargeables
        if (!reduit && evenement.telechargements != undefined) {
            for (var index = 0; index < evenement.telechargements.length; index++) {
                var telechargement = evenement.telechargements[index];

                var elementTelechargement = document.createElement("div");
                element.appendChild(elementTelechargement);
                elementTelechargement.setAttribute("class", "telechargement");

                var lien = document.createElement("a");
                elementTelechargement.appendChild(lien);
                lien.setAttribute("href", telechargement.fichier);
                lien.appendChild(document.createTextNode(telechargement.libelle));
            }
        }
    }
	
	{ // Lien site
		if (evenement.urlSite !== undefined) {
			var elementSite = document.createElement("div");
			element.appendChild(elementSite);
			elementSite.setAttribute("class", "site");
			
			var lien = document.createElement("a");
			elementSite.appendChild(lien);
			lien.setAttribute("href", evenement.urlSite);
			lien.appendChild(document.createTextNode(evenement.urlSite));
		}
	}
	
	return element;
}

function elementParagraphe(paragraphe) {
	var element = document.createElement("p");
	element.appendChild(document.createTextNode(paragraphe.texte));
	return element;
}

function evenementsActuels(idSecteur) {
	var evenements = new Array();
	
	for (var index = 0; index < baseEvenements.length; index++) {
		var evenement = baseEvenements[index];
		if (                            evenementObsolete(evenement           )) continue;
		if (idSecteur !== undefined && !evenementSecteur (evenement, idSecteur)) continue;
		
		evenements.push(evenement);
	}
	
	return trierEvenements(evenements);
}

var dateJourTechnique = formaterDateTechnique(new Date());

function evenementObsolete(evenement) {
	var dateObsolescence = null;
	if      (evenement.date !== undefined) dateObsolescence = evenement.date;
	else if (evenement.fin  !== undefined) dateObsolescence = evenement.fin ;
	
	if (dateObsolescence == null) return false;
	return dateObsolescence < dateJourTechnique;
}

function evenementSecteur(evenement, idSecteur) {
	if (evenement.secteurs === undefined) return false;
	if (evenement.secteurs ==  null     ) return false;
	
	for (var index = 0; index < evenement.secteurs.length; index++) {
		var secteur = evenement.secteurs[index];
		if (secteur.id == idSecteur) return true;
	}
	
	return false;
}

function formaterAnnee(date) {
	return "" + date.getFullYear();
}

function formaterMois(date) {
	var mois = date.getMonth() + 1;
	if (mois < 10) mois = "0" + mois;
	return "" + mois;
}

function formaterJour(date) {
	var jour = date.getDate();
	if (jour < 10) jour = "0" + jour;
	return "" + jour;
}

function formaterHeures(date) {
	var heures = date.getHours();
	if (heures == 0) return "";
	if (heures < 10) heures = "0" + heures;
	return "" + heures;
}

function formaterMinutes(date) {
	var minutes = date.getMinutes();
	if (minutes == 0) return "";
	if (minutes < 10) minutes = "0" + minutes;
	return "" + minutes;
}

function formaterDateTechnique(date) {
	return formaterAnnee(date) + formaterMois(date) + formaterJour(date) + formaterMinutes(date) + formaterHeures(date);
}

function formaterDateAffichage(date) {
	var heures = formaterHeures(date);
	if (heures != "") heures = " à " + heures + "h" + formaterMinutes(date);
	return formaterJour(date) + "/" + formaterMois(date) + "/" + formaterAnnee(date) + heures;
}

function construireDate(chaine) {
	var date = new Date();
	date.setYear (parseFloat(chaine.substring(0, 4))    );
	date.setMonth(parseFloat(chaine.substring(4, 6)) - 1);
	date.setDate (parseFloat(chaine.substring(6, 8))    );

	if (chaine.length > 8) {
		date.setHours  (parseFloat(chaine.substring( 8, 10)));
		date.setMinutes(parseFloat(chaine.substring(10, 12)));
	}
	
	return date;
}

function formatFichier(url) {
	return url.substring(url.lastIndexOf(".") + 1).toUpperCase();
}

function dateEvenement(evenement) {
	if (evenement.date  !== undefined) return evenement.date ;
	if (evenement.debut !== undefined) return evenement.debut;
	return null;
}

function trierEvenements(evenements) {
	var evenementsTries = evenements.slice(0);
	evenementsTries.sort(comparerEvenements);
	return evenementsTries;
}

function comparerEvenements(evenement1, evenement2) {
	return parseInt(dateEvenement(evenement1)) - parseInt(dateEvenement(evenement2));
}

function elementCoordonnees(coordonnees) {
	var element = document.createElement("div");
	element.setAttribute("class", "coordonnees");
	
	if (coordonnees.libelle !== undefined) {
		var elementLibelle = document.createElement("div");
		element.appendChild(elementLibelle);
		elementLibelle.appendChild(document.createTextNode(coordonnees.libelle));
	}
	
	if (coordonnees.adresse !== undefined) {
		var elementAdresse = document.createElement("div");
		element.appendChild(elementAdresse);
		elementAdresse.appendChild(document.createTextNode(coordonnees.adresse.rue + " " + coordonnees.adresse.codePostal + " " + coordonnees.adresse.commune));
	}
	
	if (coordonnees.telephone !== undefined) {
		var elementTelephone = document.createElement("div");
		element.appendChild(elementTelephone);
		elementTelephone.appendChild(document.createTextNode(coordonnees.telephone));
	}
	
	if (coordonnees.urlSite !== undefined) {
		var elementSite = document.createElement("div");
		element.appendChild(elementSite);
		elementSite.setAttribute("class", "site");
		
		var lien = document.createElement("a");
		elementSite.appendChild(lien);
		lien.setAttribute("href", coordonnees.urlSite);
		lien.appendChild(document.createTextNode(coordonnees.urlSite));
	}
	
	if (coordonnees.email !== undefined) {
		var elementEmail = document.createElement("div");
		element.appendChild(elementEmail);
		elementEmail.appendChild(emailLink(coordonnees.email.utilisateur, coordonnees.email.domaine));
	}
	
	if (coordonnees.longitude !== undefined && coordonnees.latitude !== undefined) {
		var elementPlanAcces = document.createElement("div");
		element.appendChild(elementPlanAcces);
		var elementLien = document.createElement("a");
		elementPlanAcces.appendChild(elementLien);
		elementLien.setAttribute("href", "http://maps.google.fr/?q=" + coordonnees.longitude + "+" + coordonnees.latitude);
		elementLien.appendChild(document.createTextNode("Plan d'accès"));
	}
	
	return element;
}


