// ../javascript/dates.js
// calcule le nombre de jour contenu dans un mois, en prenant en compte les années bissextiles
function nbjours_mois(mois, annee) {
    nb_jours = 0;    
    switch (mois) {
        case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : 
            nb_jours = 31;
            break;
        case 2 :
            // cas special pour le mois de fevrier...
            if (annee%4 == 0) {
                // cas des années bissextiles
                nb_jours = 29;
            } else {
                // cas normal
                nb_jours = 28;
            }
            break;
        default:
            nb_jours = 30;
            break;
    }
    return nb_jours;
}

// renvoie true si la date est valide
function date_valide(jour,mois,annee) {
    
    // on commence par verifier qu'il s'agit bien d'entiers
    if (!date_isset(jour, mois, annee)) {
        return false;
    }
    if ((isNaN(jour)) || (isNaN(mois)) || (isNaN(annee))) {
        return false;
    }

    // convertion des chaines en entiers
    jour = parseInt(jour,10);
    mois = parseInt(mois,10);
    annee = parseInt(annee,10);

    // faux si le mois est superieur à 12
    if ((mois < 1) || (mois > 12)) {
        return false;
    }

    // faux si la date n'est pas superieur à 1500
    if (annee < 1500) {
        return false;
    }

    // faux si le jour n'est pas compris entre 1 et le nombre de jour dans le mois
    if ((jour < 1) || (jour > nbjours_mois(mois, annee))) {
        return false;
    }

    return true;
}

// renvoie vrai si la date 1 est anterieur à la date 2
// si l'une des deux dates n'existe pas, renvoie true... sans faire de verif
function date_anterieur(j1, m1, a1, j2, m2, a2) {
    if ((date_isset(j1, m1, a1)) & (date_isset(j2, m2, a2))) {
		j1=parseInt(j1,10);	m1=parseInt(m1,10);	a1=parseInt(a1,10);	
		j2=parseInt(j2,10);	m2=parseInt(m2,10);	a2=parseInt(a2,10);
		if(a1 == a2){ // meme annee, on verifie le mois		
			if(m1 == m2){ // meme mois, on verifie le jour				
			  	if (j1 <= j2)
			  		return true;
			  	else
			  		return false;				
			} else if(m1 < m2) 
				return true; // mois m1 plus petite, date anterieur
			else 
				return false; // mois m2 plus grand, date superieur
		}
		else if(a1 < a2){//annee a2 plus petite, date anterieur		 
			return true;
		}
		else
			return false; //annee a2 plus grande, date superieur
    } else {
        return true;
    }
}

// verifie que la date a bien été rentré dans le formulaire
// cad que les trois choix ont une valeur
function date_isset(jour, mois, annee) {
    //return (jour+mois+annee != "");
    return ((jour != "") && (mois != "") && (annee != ""));
}

// renvoie faux si la date n'est pas valide, est affiche un message d'alert
// on ne fait la verification que si la date à été reellement inseré par l'utilisateur
function alert_date(msg, jour, mois, annee) {
    if ((jour+mois+annee == "") || (date_valide(jour, mois, annee))) {
        // renvoie true si la date est valide, ou non definie
        return true;
    } else {
        alert(msg);
        return false;
    }
}
