	
	var g_displayFunction;
	var g_lastId;
	
	var g_isShortDesc = false;
	var text 			= new Array();
	var specialEvents 	= new Array();

	function DateEvent(p_date, p_type, p_desc, p_longDesc){
		this.date 		= p_date;
		this.type 		= p_type;
		this.desc 		= p_desc;
		this.longDesc 	= p_longDesc;
		this.id			= p_date;
	}


	function getDayPadded(p_day){
		if(parseInt(p_day) < 10 && p_day.substring(1,0) != "0" ){
			
			return "0" + parseInt(p_day);
		}
		return p_day;
	}

	function getObjForId(p_id){
		var objs = new Array();
		for(var i = 0; i < text.length; i++){
			if(text[i].id == p_id)
				objs.push(text[i]);
		}	
		return objs;
	}
	
	function formatDate(date){
		var parts = date.split("-");
		var months = new Array();
		months[1] = "Janvier";
		months[2] = "Février";
		months[3] = "Mars";
		months[4] = "Avril";
		months[5] = "Mai";
		months[6] = "Juin";
		months[7] = "Juillet";
		months[8] = "Août";
		months[9] = "Septembre";
		months[10] = "Octobre";
		months[11] = "Novembre";
		months[12] = "Décembre";
		return getDayPadded(parts[0]) + " " + months[parseInt(parts[1])].toLowerCase() + " " + parts[2];
	}
	
	function displayTextForDate(){
		g_displayFunction = "displayTextForDate()";
		var id = event.srcElement.getAttribute("id");
		if(event.srcElement.tagName != "TD")
			id = g_lastId;
		g_lastId = id;
		var objs = getObjForId(id);

		var outText = "";
		var ids = getSelectedCheckBox();
		outText = "<b>" + formatDate(objs[0].date) + "</b><br>"
		
		for(var i = 0; i < objs.length; i++){
			if(isValid(ids, objs[i].type)){
				outText += "&nbsp;&nbsp;&nbsp;<span>&nbsp;<b>" + document.getElementById(objs[i].type).nextSibling.innerText + "</b><br><div style='padding-left:30px'>" + chooseDescription(objs[i]) + "</div><br></span><br>";
			}
		}
		document.getElementById("display").innerHTML = outText;
		event.cancelBubble = true;
	}

	function addDate(p_id, p_type, p_desc, p_longDesc){
		if(document.getElementById(p_id)){
			text.push(new DateEvent(p_id, p_type, p_desc, p_longDesc));
		}
	}

	function addSpecialEvent(p_id, p_type, p_desc, p_longDesc){
		specialEvents.push(new DateEvent(p_id, p_type, p_desc, p_longDesc));
	}
	
	function showDates(p_month, p_monthToShow){
		var dateToShow = new Array();
		for(var i = 0; i < text.length; i++){
			var obj = text[i];
			dateToShow.push("<b>" + formatDate(obj.date) + "</b> " + " - " + obj.desc);
		}
		
		var textOut = "";
		for(var i in dateToShow){
			textOut += (dateToShow[i] + "<br>");
		}
		document.getElementById("eventForMonthContainer").innerHTML = textOut;
		document.getElementById("legendId").innerHTML = p_monthToShow;
	}

	function showEvent(){

		showId.style.display = "none";
		hideId.style.display = "block";

		eventForMonth.style.display = "block";
		if(currentCal ==  "jan")
			showDates("janvier", "Janvier");
		else
			showDates("fevrier", "Février");
	}

	function hideEvent(){
		showId.style.display = "block";
		hideId.style.display = "none";
		eventForMonth.style.display = "none";
	}


	function showCal(p_id){

		document.getElementById("display").innerHTML = "";
		showId.style.display 				= "block";
		hideId.style.display 				= "none";
		eventForMonth.style.display = "none";
		document.getElementById(currentCal).style.display = "none";
		currentCal = p_id
		document.getElementById(currentCal).style.display = "block";
	}


	function clearCal(){

		var tds = document.getElementsByTagName("TD");
		
		for(var i = 0; i < tds.length; i++){
			if(tds[i].className == "normal" || tds[i].className == "highlighted"){
				tds[i].onclick			= function(){};
				tds[i].className		= "normal";
			}
		}
	}
	
	function displayCal(){
		if(g_displayFunction)
			eval(g_displayFunction);

		clearCal();
		var ids = getSelectedCheckBox();
		for(var i = 0; i < text.length; i++){
			var obj = text[i];
			
			if(isValid(ids, obj.type)){
				var element 					= document.getElementById(obj.id);
				element.onclick					= displayTextForDate;
				element.className				= "highlighted";
			}
		}
	}
	
	function displaySpecialEvents(){
		var outText = "";
		var sortedArray = new Array();
		var idSorted	= new Array();
		var paddedDate	= "";
		for(var i = 0; i < specialEvents.length; i++){
			paddedDate = padIt(specialEvents[i].date);
			if(sortedArray[paddedDate])
				sortedArray[paddedDate].push(specialEvents[i]);
			else{
				sortedArray[paddedDate] = new Array();
				sortedArray[paddedDate].push(specialEvents[i]);
				idSorted.push(paddedDate);
			}
		}
		
		
		for(var i in idSorted.sort()){
			var objs = sortedArray[idSorted[i]];
			
			outText += "<span style='font-weight:bold;font-family:verdana;font-size:13px;'>" + formatDate(idSorted[i]) + "</span><br>";
			for(var j in objs){
				outText += "&nbsp;&nbsp;&nbsp;<span>&nbsp;<div style='padding-left:30px'>" + chooseDescription(objs[j]) + "</div><br></span>";
			}
		}
		
		if(outText == "")
			outText = "Aucun";
		document.getElementById("specialEvents").innerHTML = outText;
	
	}
	
	function isValid(p_ids, p_id){
		if(p_ids.length > 0){
			for(var i = 0; i < p_ids.length; i++){
				var id = p_ids[i];
				if(id == p_id)
					return true;
			}
		}
		return false;
			
	}
	
	function getSelectedCheckBox(){
		var inputs = document.getElementsByTagName("INPUT");
		var ids = new Array();
		for(var i = 0; i < inputs.length; i++){
			if(inputs[i].type == "checkbox" && inputs[i].checked){
				ids.push(inputs[i].id);
			}
		}
		return ids;
	}
	
	function selectCk(p_state){
		var inputs = document.getElementsByTagName("INPUT");
		for(var i = 0; i < inputs.length; i++){
			if(inputs[i].type == "checkbox"){
				inputs[i].checked = p_state;
			}
		}
		displayCal();

	}

	function showByDates(){
		g_displayFunction = "showByDates()";
		var ids = getSelectedCheckBox();
		var outText = "";
		var sortedArray = new Array();
		var idSorted	= new Array();
		var paddedDate	= "";
		for(var i = 0; i < text.length; i++){
			if(isValid(ids, text[i].type)){
				paddedDate = padIt(text[i].date);
				if(sortedArray[paddedDate])
					sortedArray[paddedDate].push(text[i]);
				else{
					sortedArray[paddedDate] = new Array();
					sortedArray[paddedDate].push(text[i]);
					idSorted.push(paddedDate);
				}
				
			}
		}
		
		
		for(var i in idSorted.sort()){
			var objs = sortedArray[idSorted[i]];
			
			outText += "<span style='font-weight:bold;font-family:verdana;font-size:13px;'>" + formatDate(idSorted[i]) + "</span><br>";
			for(var j in objs){
				//outText += "&nbsp;&nbsp;&nbsp;<span>&nbsp;<b>" + types[objs[j].type] + "</b><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + chooseDescription(objs[j]) + "<br></span><br>";
				outText += "&nbsp;&nbsp;&nbsp;<span>&nbsp;<b>" + types[objs[j].type] + "</b><br><div style='padding-left:30px'>" + chooseDescription(objs[j]) + "</div><br></span><br>";
			}
		}
		document.getElementById("display").innerHTML = outText;
	
	}

	function showByTypes(){
		g_displayFunction = "showByTypes()";
		var ids = getSelectedCheckBox();
		var outText = "";
		var sortedArray = new Array();
		var idSorted	= new Array();
		var type	= "";
		for(var i = 0; i < text.length; i++){
			if(isValid(ids, text[i].type)){
				type = text[i].type;
				if(sortedArray[type])
					sortedArray[type].push(text[i]);
				else{
					sortedArray[type] = new Array();
					sortedArray[type].push(text[i]);
					idSorted.push(type);
				}
				
			}
		}
		
		
		for(var i in idSorted.sort()){
			var objs = sortedArray[idSorted[i]];
			
			outText += "<B>" + types[idSorted[i]] + "</b><br>";
			for(var j in objs){
				outText += "&nbsp;&nbsp;&nbsp;<span>&nbsp;<b>" + formatDate(objs[j].date) + "</b><br><div style='padding-left:30px'>" + chooseDescription(objs[j]) + "</div><br></span><br>";
			}
		}
		document.getElementById("display").innerHTML = outText;
		
	}	
	
	function chooseDescription(p_obj){
		if(g_isShortDesc)
			return "<i>"  + p_obj.desc + "</i>";
		else
			return "<i>"  + p_obj.desc + "</i><br><br>" + p_obj.longDesc;
	
	}
	
	function padIt(p_date){
		var parts = p_date.split("-");
		return getDayPadded(parts[0]) + "-" + getDayPadded(parts[1]) + "-" + parts[2];
	}
	
	
