var color = '';
var background = '';

function BtnHighLight(btn,focused)
{
btn.className = 'btnmenu';
if (focused) { btn.className = 'btnmenu_sel'; }
}

function ChangezIndex(name,index)
{
document.getElementById(name).style.zIndex=index;
}

function UpdateValue(element,valeur)
{
  if(document.getElementById(element).value == valeur)
    { document.getElementById(element).value = ''; }
}

function ResetValue(element,valeur)
{
  if(document.getElementById(element).value == '') 
    { document.getElementById(element).value = valeur; }
}

function SetValueDate(element, element1)
{
	var mois, annee, valeur, datecliquer, datedbt, trouve, datefin;
	var tabmois = new Array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
	annee = document.getElementById('anneeactuel_'+element).value;
	mois = RechercheValeur(tabmois,document.getElementById('moisactuel_'+element).value);
	mois = String(mois);	
	valeur = document.getElementById(element1).value; 
	if(mois.length == 1) { mois = '0' + mois; }
	if(valeur.length == 1) { valeur = '0'+valeur; }
	datedbt = "";
	datecliquer = valeur+'/'+mois+'/'+annee;
	//controler les dates pour ne pas avoir date_fin < date_deb
	if((element == 'date_fin')&&(document.getElementById('date_deb').value != ""))
	  { 
	  datedbt = document.getElementById('date_deb').value;
	  trouve = ComparerDates(datedbt,datecliquer);
	  if(trouve) { document.getElementById(element).value = datecliquer; Hide('calendrier_'+element); }
	  else { alert('Veuillez sélectionner une date supérieure à la première date choisie'); }
	  }
	else
	{
	  if((element == 'date_deb')&&(document.getElementById('date_fin').value != ""))
	  {
	  datefin = document.getElementById('date_fin').value;
	  trouve = ComparerDates(datecliquer,datefin);
	  if(trouve) { document.getElementById(element).value = datecliquer; Hide('calendrier_'+element); }
	  else { alert('Veuillez sélectionner une date inférieure à la date de fin choisie'); }
	  }
	  else
	  {
      document.getElementById(element).value = datecliquer;
	  Hide('calendrier_'+element);
	  }
    }
	
}

function ShowValue(element)
{
   if (document.getElementById(element) != null)
      {
      alert(document.getElementById(element).value);
      }
}

function SelectUpdateGetVars(element,variables)
{
  if (document.getElementById(element) != null)
    {
    var selectElmt = document.getElementById(element);
    var valeur = selectElmt.options[selectElmt.selectedIndex].value;
	UpdateGetVars(variables,valeur);
    }
}

function UpdateGetVars(variables,valeur)
{
  var url = new Array();
  var liste_var = "";
  var trouve = false;
  url["query"] = document.location.search;
  arguments = ParseQuery(url["query"]);
  for(var i= 0; i < arguments.length; i++)
    {
	if(arguments[i][0] == variables) 
	  { 
	  trouve = true;
	  arguments[i][1] = valeur; 
	  }
	if (liste_var != "") { liste_var += '&amp;'; }
    liste_var += arguments[i][0] + '=' + arguments[i][1];
	}
	
  if(!trouve) 
    {
	if (liste_var != "") { liste_var += '&amp;'; }
    liste_var += variables + '=' + valeur;
	}
  var retour = "";
 /* url["scheme"] = document.location.protocol;
  url["host"] = document.location.hostname;
  if (url["scheme"] != "") { retour += url["scheme"]; }
  if (url["host"] != "") { retour += url["host"]; }*/
  url["path"] = document.location.pathname;
  document.location = url["path"] + "?" + liste_var; 
}

function ParseQuery(url)
{
  var arguments = new Array;
  url = url.substring(1);
  var liste = url.split('&');
  for(var i= 0; i < liste.length; i++)
    { 
	element = liste[i].split('=');
	arguments[i] = new Array();
	for(var j=0; j< element.length;j++)
	  {
	  arguments[i][j] = element[j]; 
	  }
	}
  return(arguments);
}

function RechercheValeur(tableau,valeur)
{
	var i, resultat;
	for (i=0;i<=(tableau.length);i++)
	{
	  if (valeur == tableau[i])
		{
		resultat = i;
		}
	}
	return resultat;
}

function DecomposeDate(LeParam1)
{
var LeRetour = new Array();
var interm = new Array();
if(LeParam1.indexOf('-') != -1)
  {
	interm = LeParam1.split('-');
	LeRetour[0] = interm[2];
	LeRetour[1] = interm[1];
	LeRetour[2] = interm[0];
  }
else
  {
	LeRetour = LeParam1.split('/');
  }
return LeRetour;
}

function DateAnglaise(LeParam1,LeParam2)
{
LaDate = new Array(3);
LaDate = DecomposeDate(LeParam1);

LeRetour = LaDate[2]+LeParam2+LaDate[1]+LeParam2+LaDate[0];
return LeRetour;
}

function ComparerDates(LeParam1,LeParam2)
{

var LeParam1 = DateAnglaise(LeParam1,"/");
var LeParam2 = DateAnglaise(LeParam2,"/");
LeParam1 = Date.parse(LeParam1);
LeParam2 = Date.parse(LeParam2);

if (LeParam1 == LeParam2) { return true; }

if (LeParam1 < LeParam2) { return true; }
else { return false; }
}

function UpdateCalendrier(name,element)
{
	var mois, annee, mois_suivant, mois_prec;
	var tableau = new Array();
	var tabmois = new Array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
	mois = document.getElementById("moisactuel_"+name).value;
	mois = RechercheValeur(tabmois,mois);
	annee = document.getElementById("anneeactuel_"+name).value;
	if(element == 'suivant_'+name) 
	{
	mois_suivant = mois + 1;
	if (mois_suivant == 13) { mois = 1; annee = parseInt(annee) + 1; }
	else { mois = mois + 1; } 
	}
	else if(element == 'precedent_'+name) 
	{ 
	mois_prec = mois - 1;
	if (mois_prec == 0) { mois = 12; annee = parseInt(annee) - 1; }	
	else { mois = mois - 1; }
	}
	else if(element == 'anneesuivante_'+name) { annee = parseInt(annee) + 1; }
	else if(element == 'anneeprec_'+name) {annee = parseInt(annee) - 1;}
	else 
	{	
	tableau = element.split('/');
	if(tableau.length == 3) 
	 { 
	  mois = tableau[1]; 
	  annee = tableau[2];
	  }
	else
	  {
	  mois = tableau[0];
	  annee = tableau[1];
	  }
	}
	document.getElementById('moisactuel_'+name).value = tabmois[parseInt(mois,10)]; 
	document.getElementById('anneeactuel_'+name).value = annee;
	joursemaine = new Date(annee,mois-1,1);
	premier_jour = joursemaine.getDay();
	if(premier_jour == 0) { premier_jour = 7; }
	dernier_jour = 28;
	while(isDate((dernier_jour+1)+'/'+mois+'/'+annee))
	{dernier_jour++; }
	jour_suiv = parseInt('1');
	rangee =0;
	i = 0;
    for (rangee = 0; rangee <= 4; rangee++)
      {
	  for (i = 1; i <= 7; i++)
       {
		id = 'btn_'+name+i+'_'+rangee;
		if ((i < premier_jour)&&(rangee == 0)) 
		{
		document.getElementById(id).value = ' ';
		}
		else  
		{ 
			if(jour_suiv > dernier_jour)
			{
			document.getElementById(id).value = ' ';
			}
			else 
			{
			document.getElementById(id).value = jour_suiv;
			jour_suiv = jour_suiv + 1;
			}   
		}
	   }
      }
}

function Show(element)
{
	var element1;
	
	if(element == 'calendrier_date_deb') { element1 = 'calendrier_date_fin'; }
	else 
	  { 
	  if(element == 'calendrier_date_fin') { element1 = 'calendrier_date_deb'; }
	  else { element1 = element; }
	  }
	if((document.getElementById(element1) != null)&&(document.getElementById(element1).style.display="inline"))
	  { document.getElementById(element1).style.display="none"; }
	if (document.getElementById(element) != null) { document.getElementById(element).style.display="inline"; }
}

function Hide(element)
{
   if (document.getElementById(element) != null)
      {
      document.getElementById(element).style.display="none";
      }
}

function getPosition(element)
{	
  var left = 0;	
  var top = 0;	
  var bottom = 0;
  var right = 0;
  /*On récupère l'élément*/
  /*Tant que l'on a un élément parent*/
  e = element;
  while (e.offsetParent != undefined && e.offsetParent != null)	
    {
	/*On ajoute la position de l'élément parent*/
	left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);	
	top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);	
	e = e.offsetParent;	
	}
  bottom = top + element.offsetHeight;
  right = left + element.offsetWidth;
  return new Array(left,top,right,bottom);
}

//remet en display inline tous les tagname qui ont un masque pattern
//affiche le menu element
function ShowMenu(parent,pattern,element,arrondi)
{
  color = getCssValue(parent,'color');
  background = getCssValue(parent,'backgroundColor');
  if(arrondi == null) { arrondi == 'non'; }
  
  var tab_tag = document.getElementsByTagName("div");
  id_element = RechercheId(tab_tag,pattern);
  for(var i=0;i<id_element.length;i++)
    { 
	HideInfo(id_element[i]);
    for(var i1=1;i1<=8;i1++)
	  {
	  id = "arrondi"+i1+'_'+id_element[i];
	  document.getElementById(id).style.backgroundColor = background;
	  }
	}
  
  if(document.getElementById(element) != null)
    { 
	taille = getPosition(parent);
	document.getElementById(element).style.top = taille[3]+'px'; 
	document.getElementById(element).style.display="block";
	}

  elements = RechercheElement(document.getElementsByTagName("a"),parent.className);
  for(var i=0;i<elements.length;i++)
    {
    elements[i].style.backgroundColor = background;
	elements[i].style.color = color;
	}
  if(document.getElementById(element) != null)
    {
    if(arrondi == 'oui')
	  {
	  for(i=1;i<=8;i++)
	    {
	    id = "arrondi"+i+'_'+element;
	    document.getElementById(id).style.backgroundColor = getCssValue(document.getElementById(element),'backgroundColor');
	    }
	  }

    parent.style.color = background;
    parent.style.backgroundColor = getCssValue(document.getElementById(element),'backgroundColor');
	}
}

function HideMenu(element,arrondi,event)
{
  if(arrondi == null) { arrondi = 'non'; }
  var evt=event || window.event; 
  if(evt !== element)
	{
    var e = evt;
	if(arrondi == 'oui')
    {
	id = element.id;
	for(i1=1;i1<=8;i1++)
	  {
	  code = 'arrondi'+i1+'_'+id;
	  document.getElementById(code).style.backgroundColor = background;
	  }
    }
    element.style.display = "none";
	elements = RechercheElement(document.getElementsByTagName("a"),'navbar');
	for(var i=0;i<elements.length;i++)
      { 
	  elements[i].style.backgroundColor = background;
	  elements[i].style.color = color;
	  }
	}
}

//envoie l'élément directement
function getCssValue(element,propriete) 
{  
  var value = element.style.propriete;
  if(value==null || value=='' || value=='undefined')
    {
    var aClass = element.className;
	//allant de 0 au nombre de fichiers existant
	for (var sSheet=0; sSheet < document.styleSheets.length; sSheet++)
	  {
	  //pour les lignes allant de 0 au nombre de lignes totales
	  var classes = document.styleSheets[0].rules;
	  for (var x=0; x < classes.length; x++) 
	    {
		var currentClass = classes[x].selectorText.substring(1);
		if (currentClass == aClass) 
		  { 	  
		  switch(propriete)
		    {
			case 'backgroundColor' :
			  value = classes[x].style.backgroundColor; 
			break;
			case 'color' :
			  value = classes[x].style.color; 
			break;
			}
		  }
	    }
	  }
	}
  return(value);
}			

function RechercheElement(tab,classname)
{
  resultat = new Array();
  indice = 0;
  for(var i= 0; i < tab.length; i++)
    {
	if(tab[i].className == classname)
	  { 
	  resultat[indice] = tab[i]; 
	  indice++;
	  }
	}
  return(resultat);
}

function RechercheId(tab,masque)
{
  resultat = new Array();
  indice = 0;
  for(var i= 0; i < tab.length; i++)
    {
	id = tab[i].id;
	if(id != "")
	  {
	  id = id.substr(0,masque.length);
	  if(id == masque)
	    {
		resultat[indice] = tab[i].id;
 		indice++; 
		}
	  }
	}
  return(resultat);
}

function ShowInfo(infobulle)
{
   if (document.getElementById(infobulle) != null)
      {
      document.getElementById(infobulle).style.display="inline";
      }
}

function HideInfo(infobulle)
{
   if (document.getElementById(infobulle) != null)
      {
      document.getElementById(infobulle).style.display="none";
      }
}

function isDate(d) {
// Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
// Par Romuald

if (d == "") // si la variable est vide on retourne faux
return false;

e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");

if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
return false; // Si pas bon, retourne faux

// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
j = parseInt(d.split("/")[0], 10); // jour
m = parseInt(d.split("/")[1], 10); // mois
a = parseInt(d.split("/")[2], 10); // année

// Si l'année n'est composée que de 2 chiffres on complète automatiquement
if (a < 1000) {
if (a < 89) a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
else a+=1900;
}

// Définition du dernier jour de février
// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
else fev = 28;

// Nombre de jours pour chaque mois
nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
} 



