﻿// JavaScript Document
// expressions régulières types
var REG_PSEUDO=/^\w{1,15}$/;
var REG_PASSWORD=/^\w{5,15}$/;
var REG_NOM=/^[a-zA-Zéèêàçùôîï\'\-]{1,25}$/;
var REG_NOMLONG=/^[a-zA-Zéèêàçùôîï\'\-\s]{1,25}$/;
var REG_BLANK=/^\s*$/;
var REG_EMAIL=/^[a-zA-Z0-9]+[a-zA-Z0-9\-\.\_]+[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4}$/;
var REG_CP=/\d{5}/;
var REG_DATE=/^[0-3][0-9]\/[01][0-9]\/20[0-9]{2}$/;
var REG_OBLIGATOIRE=/^.*\*$/;

// Ajout de méthodes utiles à l'objet Date
Date.prototype.JMA = function() {
// affiche un objet date au format jj/mm/aaaa
	var jour = this.getDate() < 10 ? '0' + this.getDate() : this.getDate();
	var mois = (this.getMonth() + 1) < 10 ? '0' + (this.getMonth() + 1) : this.getMonth() + 1;
	var annee = this.getFullYear();
	return jour + '/' + mois + '/' + annee;
}

Date.prototype.lastMonday = function(){
// retourne la date du 1er lundi <= date du jour si (lundi à vendredi) et du 1er lundi > date du jour (samedi à dimanche)
	var thisDay = this.getDay();
	var offset = Math.floor((thisDay + 1) / 7) * 7 + 2 - (thisDay + 1);
	var dateDeb = new Date(this.getFullYear(), this.getMonth(), this.getDate() + offset);
	return dateDeb;
}

Date.prototype.offsetN = function(n){
// retourne la date + n jours
	var thisDay = this.getDay();
	var offset = Math.floor((thisDay + 1) / 7) * 7 + 2 - (thisDay + 1);
	var dateDeb = new Date(this.getFullYear(), this.getMonth(), this.getDate() + offset);
	var dateFin = new Date(dateDeb.getFullYear(), dateDeb.getMonth(), dateDeb.getDate() + n);
	return dateFin;
}

Date.prototype.JJM = function(){
// Affiche nom jour + jour + mois (en lettres) de type jjjj j mmmm
	var thisDay = this.getDay();
	var thisMonth = this.getMonth();
	return dayName(thisDay) + ' ' + dayNumber(this.getDate()) + ' ' + monthName(thisMonth);
}

function afficheDatesPeriode(){
//affiche les dates de la semaine courante
	var aujourdhui = new Date();
	$('#periode').text('Semaine du ' + aujourdhui.lastMonday().JMA() + ' au ' + aujourdhui.offsetN(4).JMA());
}

function dayName(uneDate){
	switch(uneDate){
		case 0:
			return "dimanche";
			break;
		case 1:
			return "lundi";
			break;
		case 2:
			return "mardi";
			break;
		case 3:
			return "mercredi";
			break;
		case 4:
			return "jeudi";
			break;
		case 5:
			return "vendredi";
			break;
		case 6:
			return "samedi";
			break;
		default:
			return "inconnu";
			break;
	}
}

function monthName(unMois){
	switch(unMois){
		case 0:
			return "janvier";
			break;
		case 1:
			return "février";
			break;
		case 2:
			return "mars";
			break;
		case 3:
			return "avril";
			break;
		case 4:
			return "mai";
			break;
		case 5:
			return "juin";
			break;
		case 6:
			return "juillet";
			break;
		case 7:
			return "août";
			break;
		case 8:
			return "septembre";
			break;
		case 9:
			return "octobre";
			break;
		case 10:
			return "novembre";
			break;
		case 11:
			return "décembre";
			break;
		default:
			return "inconnu";
			break;
	}
}

function dayNumber(unJour){
	switch(unJour){
		case 1:
			return "1<sup>er</sup>";
			break;
		default:
			return unJour;
			break;
	}
}

// utilitaires
// ============

function showProperties(obj){
// renvoie les propriétés d'un objet
	var props = [];
	for (var prop in obj)
		props.push(prop);
		return (props.join(','));
}

function showProperty(obj){ // liste les propriétés d'un objet
	if(win==null || win.closed) var win=window.open("","debugWin","width=800, height=400, scrollbars=yes");
//win.document.open("text/plain");
	var noms = "";
	for (var nom in obj){
		noms += nom + "=" + obj[nom] + "<br />";		
	}
	win.document.write(noms);
	win.document.write("=============================");
}

function trace(str){ // trace les événements dans une fenêtre spécifique
	if(win==null || win.closed) var win=window.open("","debugWin","width=500, height=1000, scrollbars=yes");
	win.document.write(str+"<br />");
}


