
/*****             Agenda             *****/


moisX=["","Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
JourM=["Di","Lu","Ma","Me","Je","Ve","Sa"];

var select_old= null;

var startWeek = 1;//debut de la semaine 0=dim,1=lun,...
var jourPause = {0:true,6:true}; //jour de pause de la semaine
var jourFeriee = {"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"};

var dateS = strucDate(new Date());//date Selectionné
var dnow = strucDate(new Date());//date actuelle
var dateSel = null;

var t_agnData = new Array();

//structure la date
function strucDate(dateX)
{
	return {"pos":dateX.getDay(),"jour":dateX.getDate(),"mois":dateX.getMonth()+1,"annee":dateX.getFullYear()};
}

//retourne le ième jour du 1er du mois
function premJourMois(mois,annee)
{
	return (new Date(annee,mois-1,1).getDay());
}

//retourne le jour max du mois
function JmaxMois(mois,annee)
{
	return (new Date(annee,mois,0).getDate());
}

/* Test une date si elle est correct*/
function testTypeDate(dateEntree)
{
	tst=false;
	try
	{
		rc=dateEntree.split("/");
		nd=new Date(rc[2],(rc[1]-1),rc[0]);
		tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
	} catch(e) {}
	
	return tst;
}

//selection de la zone avec la souris
function choix(koi,code)
{
	if (code)
	{
		select_old = koi.className;
		koi.className += ' choix';
	}
	else
	{
		koi.className = koi.className.replace ('choix', '');
	}
}

function testTravail(oldX,xx,jj,mm,aa)
{
	classX="jSem";
	classX += (oldX)?"":" grisOld";
	classX += " jSem2";
	//if (jourPause[xx]||jourFeriee[jj+"-"+mm]!=null) classX += " pause";
	if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee) classX += " now";
	if (dateSel&&jj==dateSel.jour&&mm==dateSel.mois&&aa==dateSel.annee) classX += " choix";
	
	return classX;
}

//test si année bissextile
function bissextile(annee) {
	return (annee%4==0 && annee %100!=0 || annee%400==0);
}

//Retourne le nombre de jour depuis le 1er janvier (num de semaine)
function nbJAnnee(dateX){
	var nb_mois=[,0,31,59,90,120,151,181,212,243,273,304,334];
	j=dateX.jour ; m=dateX.mois ; a=dateX.annee;
	nb=nb_mois[m]+j-1 ;
	if (bissextile(a) && m>2) nb++;
	return nb;
}

function isToday(dateX){
  if (jj==dnow.jour&&mm==dnow.mois&&aa==dnow.annee){ return true; }
  return false;
}


function create_agenda( glf_cod, divAgenda, mxS, axS, t_nbEvt )
{	
	//var divAgenda = document.getElementById( cal_name );
	
	//decalage du mois si on clique sur -/+
	/*if (mxS!=-1)
	{
		dateS.mois = mxS;
		dateS.annee = axS;
		if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
		if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
	} 
	
	// initialisation des variables
	Dstart = (premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
	jmaxi = JmaxMois(dateS.mois,dateS.annee);
	jmaxiAvant = JmaxMois((dateS.mois-1),dateS.annee);
	
	//si on veux ajouter le numero de la semaine ...
	//idxWeek = parseInt(nbJAnnee(strucDate(new Date(dateS.mois+'-01-'+dateS.annee)))/7,10)+1;
	
	ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
	*/
	//generation du tableau
	html="<table class='agenda'>";
	//--entête
	html+="<tr class='nav'>";
	html+="<td class='pth' onclick=\"agenda_loader('"+glf_cod+"','"+divAgenda.id+"',"+(dateS.mois-1)+","+dateS.annee+")\"><img src='images/previous.png' /></td>";
	html+="<td colspan='5'><b>"+moisX[dateS.mois]+"&nbsp;"+dateS.annee+"</b></td>";
	html+="<td class='pth' onclick=\"agenda_loader('"+glf_cod+"','"+divAgenda.id+"',"+(dateS.mois+1)+","+dateS.annee+")\"><img src='images/next.png' /></td>";
	html+="</tr>";
	//--corps
	html+="<tr class='jrs'>";
	//affichage des jours DLMMJVS
	for ( var x=0 ; x<7 ; x++ )
		html+="<td class='jSem'><b>"+JourM[(x+startWeek)%7]+"</b></td>";
	html+="</tr>";
	
	//------------------------
	for ( var y=0 ; y <= ymaxi ; y++ )
	{
		html+="<tr>";
		for ( var x=0 ; x < 7 ; x++ )
		{
			idxP = y*7 + x-Dstart + 1; //numero du jour
			aa = dateS.annee;
			xx = ( x + startWeek )%7;
			
			if (idxP<=0)  //jour du mois précedent
			{
				jj = idxP + jmaxiAvant;
				mm = dateS.mois-1;
				if (mm == 0)
				{
					mm = 12;
					aa--;
				}
				html+="<td class='"+testTravail(false,xx,jj,mm,aa)+"'>"+jj+"</td>";
			}
			else if (idxP>jmaxi) //jour du mois suivant
			{
				jj = idxP - jmaxi;
				mm = dateS.mois + 1;
				if ( mm == 13 )
				{
					mm = 1;
					aa++;
				}
			
				html+="<td class='"+testTravail(false,xx,jj,mm,aa)+"'>"+jj+"</td>";
			}
			else //jour du mois en cours
			{
				jj=idxP;
				mm=dateS.mois;
				html+="<td class='"+testTravail(true,xx,jj,mm,aa);
				if (t_nbEvt[jj]>0)
        { html+=" evt";
        } 
        html+="' onmouseover='choix(this,true);";
        if (t_nbEvt[jj] > 0)
        { html += " agn_details("+jj+");";
        }
        html += "' onmouseout='choix(this,false); maskDiv(\"ttAgnEvt\");' onclick=\"\">"+jj+"</td>";
			}
		}
		html+="</tr>";
	}//-------------------------
	html+="</table>";
	
	// print des données dans le calendrier
	divAgenda.innerHTML= html;
	
}

/* recherche des evenements */
function agenda_loader( glf_cod, cal_name, mxS, axS )
{
  var divAgenda = document.getElementById( cal_name );
  
  if (mxS!=-1)
	{
		dateS.mois = mxS;
		dateS.annee = axS;
		if (dateS.mois<1) {dateS.annee--;dateS.mois+=12;}
		if (dateS.mois>12) {dateS.annee++;dateS.mois-=12;}
	}
	Dstart = (premJourMois(dateS.mois,dateS.annee)+7-startWeek)%7;
	jmaxi = JmaxMois(dateS.mois,dateS.annee);
	jmaxiAvant = JmaxMois((dateS.mois-1),dateS.annee);	
	ymaxi=parseInt((jmaxi+Dstart+1)/7,10);
  
  var t_nbEvt = new Array();
  var nbEvtJr = 0;
  var jour = null;
  var tmpJour = null;
  var desc = '';			
  $.ajax({
    url: "ajax_agncpt.php",
    type: "POST",
    data: { glf_cod: glf_cod, mois: dateS.mois, annee: dateS.annee },
    beforeSend: function () { $('#'+cal_name).prepend('<img src="images/loading.gif" class="load" />'); },
    success: function (xml) {
      xml = ieAjaxBugFix(xml);
      $('#_jqueryAjaxBugFix').find('div').each( function() {
          var cid = $(this).attr('id');
          jour = parseInt($('#jour'+cid).text());
          if (!tmpJour) { tmpJour = parseInt($('#firstDay'+cid).text()); }
          if (jour != tmpJour)
          { t_nbEvt[tmpJour] = nbEvtJr;
            t_agnData[tmpJour] = desc;
            // réinitialisation des variables temp
            desc = ''; tmpJour = jour; nbEvtJr = 0;
          }
          desc += $('#desc'+cid).text();
          desc += "<br>";
          nbEvtJr++;
      });
      // affichage du dernier
      t_nbEvt[tmpJour] = nbEvtJr;
      t_agnData[tmpJour] = desc;
      create_agenda( glf_cod, divAgenda, mxS, axS, t_nbEvt );
    }
  });
}

function agn_details( day )
{ $('#ttAgnEvt').html(t_agnData[day]);
	afficheDiv('ttAgnEvt');
}

/***** fonctions de debug *****/
//affiche paires clé/valeur du tableau en parametre
function afftab(tab)
{
  var msg = '';
  for (elt in tab)
  {
    msg += elt +' : '+ tab[elt] +'\n';
  }
  alert(msg);
}

function ieAjaxBugFix(data)
{
    $("#_jqueryAjaxBugFix").remove();
    $("body").append("<div id=\"_jqueryAjaxBugFix\"></div>");
    $("#_jqueryAjaxBugFix").append(data);
    $("#_jqueryAjaxBugFix").css('display', 'none');
    return $("#_jqueryAjaxBugFix").html();

}
 
