/* Fonction : isDate
	Verifie si la string passé en paramètre
	est une date valide.
	Est valide une string sous la forme dd/mm/yyyy
   Retour : Tableau de String
			a[0]==dd/mm/yyyy
			a[1]==dd
			a[2]==mm
			a[3]==yyyy
*/	
function isDate(dateString)
{
	var re=/^\s*(\d\d)\/(\d\d)\/(\d\d\d\d)\s*$/g
	var result = re.exec(dateString);
	if(result)
	{
		var dd = parseInt(result[1]);
		var mm = parseInt(result[2]);
		var yy = parseInt(result[3]);
		if(( mm<1 || mm>12) || (dd<1 || dd>31))
			return null;
		if(((mm == 4) || (mm == 6) || (mm == 9) || (mm == 11)) && (mm == 31))
			return null;
		if((mm == 2) && (dd == 29) && !( (yy%400 == 0) || ( (yy%4 == 0) && yy%100 ) ))
			return null;
		if((mm == 2) && (dd > 29))
			return null;
		return result;
	}
	return null;	
}
/*	Fonction :CompareDate
	Compare 2 dates en vérifiant qu'il s'agit de dates valides.
	date1 et date2 sont des strings sous la forme dd/mm/yyyy
	Retour : Boolean, True si les 2 dates sont égales
					  False autrement ou que les dates ne sont pas valides.
*/
function CompareDate(date1,date2)
{
	var d1 = isDate(date1);
	var d2 = isDate(date2);
	if(d1!=null)
		if(d2!=null)
		{ if(d1[0]==d2[0])
			return true;
		}
	return false;
}
/* Retourne True si la date est invalide */
function BadDate(d)
{
	return (isDate(d)==null)
}
/* Retourne la référence de l'objet à partir de son id, null si
   aucun node ne possède l'id correspondant. La recherche s'effectue
   par défaut sur le document en cours mais peut aussi etre appliqué
   sur le document d'une autre frame. 
   name_object?name_frame cherchera un objet nommé name_object
   dans la frame nommée name_frame.
   */
function getObj(id,d)
{
	return MM_findObj(id);
}

//Fonctions utilitaires
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.0
  var p,i,x;  
  if(!d) 
  	d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
    	d=parent.frames[n.substring(p+1)].document; 
		n=n.substring(0,p);
	}
  if(!(x=d[n])&&d.all) 
  	x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) 
  	x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
  	x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) 
  	x=document.getElementById(n); 
  return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}