﻿var mois;

function isAnneeBissextile(annee) {
    if (eval(annee % 4) == 0) {

        if (eval(annee % 100) == 0) {

            if (eval(annee % 400) == 0) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return true;
        }
    }
    else {
        return false;
    }
}

function buildMois(annee)
{
	var nbDay;
	var date = new Date();
	date.setFullYear(annee);
	if(isAnneeBissextile(date.getFullYear()))
	{
		nbDay = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}
	else
	{
		nbDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}
	
	var month = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
	var day = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
    mois = new Array();
	
		mois[0] = new Array();
		date.setMonth(0);
		date.setDate(1);
		mois[0]["id"] = "01";
		mois[0]["mois"] = month[0];
		mois[0]["jours"] = nbDay[0];
		mois[0]["premierJour"] = day[date.getDay()];
	
		mois[1] = new Array();
		date.setMonth(1);
		date.setDate(1);
		mois[1]["id"] = "02";
		mois[1]["mois"] = month[1];
		mois[1]["jours"] = nbDay[1];
		mois[1]["premierJour"] = day[date.getDay()];
		
		mois[2] = new Array();
		date.setMonth(2);
		date.setDate(1);
		mois[2]["id"] = "03";
		mois[2]["mois"] = month[2];
		mois[2]["jours"] = nbDay[2];
		mois[2]["premierJour"] = day[date.getDay()];
		
		mois[3] = new Array();
		date.setMonth(3);
		date.setDate(1);
		mois[3]["id"] = "04";
		mois[3]["mois"] = month[3];
		mois[3]["jours"] = nbDay[3];
		mois[3]["premierJour"] = day[date.getDay()];
		
		mois[4] = new Array();
		date.setMonth(4);
		date.setDate(1);
		mois[4]["id"] = "05";
		mois[4]["mois"] = month[4];
		mois[4]["jours"] = nbDay[4];
		mois[4]["premierJour"] = day[date.getDay()];
		
		mois[5] = new Array();
		date.setMonth(5);
		date.setDate(1);
		mois[5]["id"] = "06";
		mois[5]["mois"] = month[5];
		mois[5]["jours"] = nbDay[5];
		mois[5]["premierJour"] = day[date.getDay()];
		
		mois[6] = new Array();
		date.setMonth(6);
		date.setDate(1);
		mois[6]["id"] = "07";
		mois[6]["mois"] = month[6];
		mois[6]["jours"] = nbDay[6];
		mois[6]["premierJour"] = day[date.getDay()];
		
		mois[7] = new Array();
		date.setMonth(7);
		date.setDate(1);
		mois[7]["id"] = "08";
		mois[7]["mois"] = month[7];
		mois[7]["jours"] = nbDay[7];
		mois[7]["premierJour"] = day[date.getDay()];
		
		mois[8] = new Array();
		date.setMonth(8);
		date.setDate(1);
		mois[8]["id"] = "09";
		mois[8]["mois"] = month[8];
		mois[8]["jours"] = nbDay[8];
		mois[8]["premierJour"] = day[date.getDay()];
		
		mois[9] = new Array();
		date.setMonth(9);
		date.setDate(1);
		mois[9]["id"] = "10";
		mois[9]["mois"] = month[9];
		mois[9]["jours"] = nbDay[9];
		mois[9]["premierJour"] = day[date.getDay()];
		
		mois[10] = new Array();
		date.setMonth(10);
		date.setDate(1);
		mois[10]["id"] = "11";
		mois[10]["mois"] = month[10];
		mois[10]["jours"] = nbDay[10];
		mois[10]["premierJour"] = day[date.getDay()];
		
		mois[11] = new Array();
		date.setMonth(11);
		date.setDate(1);
		mois[11]["id"] = "12";
		mois[11]["mois"] = month[11];
		mois[11]["jours"] = nbDay[11];
		mois[11]["premierJour"] = day[date.getDay()];
}

// Fonction d'affichage de la page Calendrier
function bindCalendar(annee)
{
    recupEvents(annee);
}

function Calendar(annee)
{
    for(var index=0; index<mois.length; index++)
    {
        table = document.createElement('table');
        tbody = document.createElement('tbody');
        var caption = document.createElement('caption');
        caption.appendChild(document.createTextNode(mois[index]["mois"]));       
        trHead = document.createElement('tr');
        thLundi = document.createElement('th');
        thLundi.appendChild(document.createTextNode('Lundi'));        
        thMardi = document.createElement('th');
        thMardi.appendChild(document.createTextNode('Mardi'));        
        thMercredi = document.createElement('th');
        thMercredi.appendChild(document.createTextNode('Mercredi'));        
        thJeudi = document.createElement('th');
        thJeudi.appendChild(document.createTextNode('Jeudi'));        
        thVendredi = document.createElement('th');
        thVendredi.appendChild(document.createTextNode('Vendredi'));        
        thSamedi = document.createElement('th');
        thSamedi.appendChild(document.createTextNode('Samedi'));        
        thDimanche = document.createElement('th');
        thDimanche.appendChild(document.createTextNode('Dimanche'));
        table.appendChild(caption);
        trHead.appendChild(thLundi);
        trHead.appendChild(thMardi);
        trHead.appendChild(thMercredi);
        trHead.appendChild(thJeudi);
        trHead.appendChild(thVendredi);
        trHead.appendChild(thSamedi);
        trHead.appendChild(thDimanche);
        tbody.appendChild(trHead);
        var j = 1;
        var premierJourPasse = false;
        var nbSemaines;
        if(mois[index]["jours"] == 28)
        {
            nbSemaines = 5;
        }
        if(mois[index]["jours"] == 29)
        {
            nbSemaines = 5;
        }
        if(mois[index]["jours"] == 30)
        {
            if(mois[index]["premierJour"]=="Dimanche")
            {
                nbSemaines = 6;
            }
            else
            {
                nbSemaines = 5;
            }
        }
        if(mois[index]["jours"] == 31)
        {
            if(mois[index]["premierJour"]=="Samedi" || mois[index]["premierJour"]=="Dimanche")
            {
                nbSemaines = 6;
            }
            else
            {
                nbSemaines = 5;
            }
        }
            for(var n = 1; n<nbSemaines+1; n++)
            {
                var tr = document.createElement('tr');
                for(var m = 1; m<8; m++)
                {
                    var td = document.createElement('td');
                    if(n==1)
                    {
                        if(mois[index]["premierJour"]== "Lundi" && m==1)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Mardi" && m==2)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Mercredi" && m==3)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Jeudi" && m==4)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Vendredi" && m==5)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Samedi" && m==6)
                        {
                            premierJourPasse = true;
                        }
                        if(mois[index]["premierJour"]== "Dimanche" && m==7)
                        {
                            premierJourPasse = true;
                        }                        
                    }
                    
                    if(j>mois[index]["jours"])
                    {
                        premierJourPasse = false;
                    }
                    if(premierJourPasse==true)
                    {
                        td.appendChild(document.createTextNode(j));
                        if(j.toString().length == 1)
                            td.id = "0" + j + mois[index]["id"] + annee;
                        else
                            td.id = j + mois[index]["id"] + annee;
                        j++;
                    }
                    tr.appendChild(td);
                }
                tbody.appendChild(tr);                
            }
            table.appendChild(tbody);
            $("calendrierFetes").appendChild(table);
			
    }  
}

function recupEvents(annee)
{
	new Ajax.Updater('calendrierFetes','scripts/getEvents.php',{
					 method:'get',
					 parameters: {annee:annee}
					 });
	/*
	new Ajax.Request('scripts/getEvents.php', {
		method: 'get',
		onSuccess : function(req){
			var docXML = req.responseXML;
			var dates = docXML.getElementsByTagName('date');
			$A(dates).each(function(dt) {
				var date = dt.getAttribute('day');
				var events = dt.getElementsByTagName('evenement');
				if ($(date) != null) {
					$(date).addClassName('tdEvent');
					Event.observe($(date), 'mouseover', function() {
						mouseX = calculeOffsetLeft($(date));
						mouseY = calculeOffsetTop($(date));
						popupDiv = document.createElement('div');
						Element.addClassName(popupDiv, 'popupDiv');
						$A(events).each(function(ev) {
							titre = ev.getElementsByTagName('titre')[0].firstChild.nodeValue;
							titreDiv = document.createElement('div');
							Element.addClassName(titreDiv, 'titreDiv');
							titreDiv.appendChild(document.createTextNode(titre));
							popupDiv.appendChild(titreDiv);
							if (ev.getElementsByTagName('description')[0].firstChild != null) {
								var description = ev.getElementsByTagName('description')[0].firstChild.nodeValue;
								descrDiv = document.createElement('div');
								Element.addClassName(descrDiv, 'descrDiv');
								descrDiv.appendChild(document.createTextNode(description));
								popupDiv.appendChild(descrDiv);
							}
						});
						$('popupEvents').appendChild(popupDiv);
						$('popupEvents').style.top = mouseY + "px";
						$('popupEvents').style.left = mouseX - 204 + "px";
						$('popupEvents').show();
					});
		
					Event.observe($(date), 'mouseout', function() {
						$('popupEvents').innerHTML = "";
						$('popupEvents').hide();
					});
					
					
				}
			});

		}
	});
	*/
}


function calculeOffsetLeft(r){
  return calculeOffset(r,"offsetLeft");
}

function calculeOffsetTop(r){
  return calculeOffset(r,"offsetTop");
}

function calculeOffset(element,attr){
  var offset=0;
  while(element){
    offset+=element[attr];
    element=element.offsetParent;
  }
  return offset;
}