// Donne un element a partir de l'id de la balise de l'objet
function ds_getel(id) {
return document.getElementById(id);
}
// Met un espace a gauche de l'element
function ds_getleft(el) {
var tmp = el.offsetLeft;
el = el.offsetParent
while(el) {
tmp += el.offsetLeft;
el = el.offsetParent;
}
return tmp;
}
// Element de sortie
var ds_oe = ds_getel('ds_calclass');
// Container
var ds_ce = ds_getel('ds_conclass');
// Buffer de sortie
var ds_ob = '';
//Vide le buffer
function ds_ob_clean() {
ds_ob = '';
}
//
function ds_ob_flush() {
ds_oe.innerHTML = ds_ob;
ds_ob_clean();
}
//Affichage de l'element
function ds_echo(t) {
ds_ob += t;
}
var ds_element; // Element texte
var ds_monthnames = ['Janvier', 'Fevrier', 'Mars', 'Avril', 'Mai', 'Juin','Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Decembre']; // Mois de l'annee.
var ds_daynames = ['Dim','Lun', 'Mar', 'Me', 'Jeu', 'Ven', 'Sam']; // Jours de la semaine.
// En-tete du calendrier avec les boutons annuler, valider, changement d'annee et changement de mois
function ds_template_main_above(t) {
return '<table cellpadding="3" cellspacing="1" class="ds_tbl">'
+ '<tr>'
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_py();"><<</td>'//<
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_pm();"><</td>'//<<
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_cancel();" colspan="2">Annuler</td>'
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_hi();" colspan="2">Valider</td>'
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_nm();">></td>'//>
+ '<td class="ds_head" style="cursor: pointer" onclick="ds_ny();">>></td>'//>>
+ '</tr>'
+ '<tr>'
+ '<td colspan="8" class="ds_head">' + t + '</td>'
+ '</tr>'
+ '<tr>';
}
// Affichage
function ds_template_day_row(t) {
return '<td class="ds_subhead">' + t + '</td>';
// Define width in CSS, XHTML 1.0 Strict doesn't have width property for it.
}
//Passage d'une semaine à l'autre ==> retour à la ligne
function ds_template_new_week() {
return '</tr><tr>';
}
// Espace au debut du mois
function ds_template_blank_cell(colspan) {
return '<td colspan="' + colspan + '"></td>'
}
// Fonction qui affiche les cellules des chiffres sur calendrier
function ds_template_day(d, m, y) {
var cellule;
var existe=0;
var i=0;
var date = new Date();
//Si la date en question a deja ete selectionee==>DECLIQUER
if(existe==1)
{
cellule = '<td class="ds_cell1" onclick="ds_onclick(' + d + ',' + m + ',' + y + ')">' + d + '</td>';
}
if(d<=date.getDate() && m==( date.getMonth()+1 ) && y==date.getFullYear())
cellule = '<td class="ds_cell" onclick="ds_onclick(' + d + ',' + m + ',' + y + ')">' + d + '</td>';
if(m<( date.getMonth()+1 ) && y==date.getFullYear())
cellule = '<td class="ds_cell" onclick="ds_onclick(' + d + ',' + m + ',' + y + ')">' + d + '</td>';
if( y<date.getFullYear() )
cellule = '<td class="ds_cell" onclick="ds_onclick(' + d + ',' + m + ',' + y + ')">' + d + '</td>';
}
return cellule;
}
function ds_template_main_below() {
return '</tr>'
+ '</table>';
}
// Fonction qui dessine le calendrier entier en fonction du mois et de l'annee
function ds_draw_calendar(m, y) {
// vider le buffer
ds_ob_clean();
ds_echo (ds_template_main_above(ds_monthnames[m - 1] + ' ' + y));
for (i = 0; i < 7; i ++) {
ds_echo (ds_template_day_row(ds_daynames[i]));
}
// Cree un objet date
var ds_dc_date = new Date();
ds_dc_date.setMonth(m - 1);
ds_dc_date.setFullYear(y);
ds_dc_date.setDate(1);
//Si le mois en question contient 31 jours
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
days = 31;
}
//Si le mois en question contient 30 jours
else if (m == 4 || m == 6 || m == 9 || m == 11) {
days = 30;
}
//Si c'est le mois de fevrier
else {
days = (y % 4 == 0) ? 29 : 28;
}
var first_day = ds_dc_date.getDay();
var first_loop = 1;
// Commencer par la 1ere semaine
ds_echo (ds_template_new_week());
// Si dimanche n'est pas le premier jour du mois mettre une cellule blanche
if (first_day != 0) {
ds_echo (ds_template_blank_cell(first_day));
}
var j = first_day;
for (i = 0; i < days; i ++) {
// Aujourd'hui est un dimanche donc passer a la ligne.
// If this sunday is the first day of the month,
// we've made a new row for you already.
if (j == 0 && !first_loop) {
// Nouvelle semaine
ds_echo (ds_template_new_week());
}
ds_echo (ds_template_day(i + 1, m, y));
first_loop = 0;
// Passage au prochain jour
j ++;
j %= 7;
}
ds_echo (ds_template_main_below());
// And let's display..
ds_ob_flush();
// Scroll it into view.
ds_ce.scrollIntoView();
}
//Afficher le calendrier
// Quand l'utilisateur clique sur un jour , il initialise l'element t a cette cellule
function ds_sh(t) {
ds_element = t;
// Initialise avec le mois et l'annee actuelle
var ds_sh_date = new Date();
ds_c_month = ds_sh_date.getMonth() + 1;
ds_c_year = ds_sh_date.getFullYear();
ds_draw_calendar(ds_c_month, ds_c_year);
// To change the position properly, we must show it first.
ds_ce.style.display = '';
// Deplace le calendrier
the_left = ds_getleft(t);
the_top = ds_gettop(t) + t.offsetHeight;
ds_ce.style.left = the_left + 'px';
ds_ce.style.top = the_top + 'px';
ds_ce.scrollIntoView();
}
// Ferme le calendrier
function ds_hi() {
ds_ce.style.display = 'none';
}
//Annuler la selection
function ds_cancel()
{
ds_element.value="";
ds_element.innerHTML="";
tabDates=new Array();
ds_draw_calendar(ds_i_date.getMonth() + 1, ds_i_date.getFullYear());
}
// Passer au prochain mois
function ds_nm() {
ds_c_month ++;
// Nous avons passer decembre donc on passe a une nouvelle annee.
if (ds_c_month > 12) {
ds_c_month = 1;
ds_c_year++;
}
// Rafraichir le calendrier
ds_draw_calendar(ds_c_month, ds_c_year);
}
//Fonction de verification 2eme page
function validationDates(formulaire)
{
//Si l'utilisateur n'a pas choisi de dates
if(formulaire.date.value=="")
{
alert ('Veuillez entrer au moins une date');
formulaire.date.focus();
return false;
}
}
//Fonction de verfication 3éme page
function validationHeures(saisie)
{
var s= "Liste des erreurs :\n";
var bool = true;
var heures;
//Si la taille de la saisie n'est pas correcte
if(saisie.length>11)
{
s = s + "- les arguments ne sont pas valides.\n";
bool = false;
}
//Si la taille de la saisie n'est pas correcte
if(saisie.length!=5 && saisie.length!=11)
{
s = s + "- les arguments ne sont pas valides.\n";
bool = false;
}
//Si la taille de la saisie est correcte pour une horaire
if(saisie.length==5)
{
var heure = saisie.substring(0,2);
var minute = saisie.substring(3);
var delimiteur = saisie.substring(2,3);
if(saisie.search(/^([0-1][0-9]|[0-2][0-3])h[0-5][0-9]$/) == -1)
{
s = s + "- attention , mauvais format.\n ";
bool = false;
}
//Si l'heure depasse le cadre des heures
if(heure<0||heure>23)
{
s = s + "- attention a ce que l'heure soit valide.\n";
bool = false;
}
//Si les minutes depassent le cadre des minutes
if(minute<0||minute>59)
{
s = s + "- attention a ce que les minutes soient valides.\n";
bool = false;
}
//Si le delimiteur heur-minute n'est pas correct
if(delimiteur != 'h')
{
s = s + "- mettre un h entre les heures et les minutes.\n";
bool = false;
}
}
//Si la taille de la saisie est correcte pour une intervalle d'heures
if(saisie.length==11)
{
var heure1 = saisie.substring(0,2);
var heure2 = saisie.substring(6,8);
var minute1 = saisie.substring(3,5);
var minute2 = saisie.substring(9);
var delimiteur1 = saisie.substring(2,3);
var delimiteur2 = saisie.substring(5,6);
var delimiteur3 = saisie.substring(8,9);
if(saisie.search(/^([0-1][0-9]|[0-2][0-3])h[0-5][0-9]-([0-1][0-9]|[0-2][0-3])h[0-5][0-9]$/) == -1)
{
s = s + "- attention , mauvais format.\n ";
bool = false;
}
//Si la 1ere heure est superieure a la 2eme
if(heure1>heure2)
{
s = s + "- attention , la premiere heure est plus grande que la deuxieme";
bool = false;
}
//Si la 1ere heure est la meme que la 2eme
if(heure1==heure2)
{
//Et que les minutes de la 1ere heure sont superieures a celles de la 2eme
if(minute1>minute2)
{
s = s + "- attention , la premiere heure est plus grande que la deuxieme";
bool = false;
}
}
//Si une des 2 horaires depasse le cadre des heures
if(heure1<0||heure1>23 || heure2<0||heure2>23)
{
s = s + "- attention a ce que l'heure soit valide.\n";
bool = false;
}
//Si une des deux horaires depasse le cadre des minutes
if(minute1<0||minute1>59 || minute2<0||minute2>59)
{
s = s + "- attention a ce que les minutes soient valides.\n";
bool = false;
}
//Si les delimiteurs date-heure ne sont pas corrects
if(delimiteur1!='h' || delimiteur3!='h')
{
s = s + "- mettre un h entre les heures et les minutes.\n";
bool = false;
}
//Si le delimiteur d'intervalle n'est pas correct
if(delimiteur2!='-')
{
s = s + "- mettre un - entre les 2 horaires.\n";
bool = false;
}
}
if(saisie=="")
bool=true;
if(bool==false)
//Affichage des erreurs
alert(s);
return bool;
}
function verifierHeures()
{
var dates = getget("date");
var nbDates = (dates.length+1)/11;
var i=0;
var id;
var bool=true;
if(bool == false)
alert("Il faut choisir une horaire minimum par date ou ecrire d'abord dans la case Heure 1");
return bool;
}
//fonction de recuperation des parametres de l'URL
function getget(name)
{
//variable qui correspond a la partie parametres de l'URL
var q = document.location.search;
var i = q.indexOf(name + '=');
//Si il n'y a pas de parametres
if (i == -1) {
return "";
}
//variable qui contient la donnee du parametre recherche
var r = q.substr(i + name.length + 1, q.length - i - name.length - 1);
i = r.indexOf('&');
if (i != -1) {
r = r.substr(0, i);
}
return r.replace(/\+/g, ' ');
}
//Fonction d'affichage de la 3eme page
function choixHeures()
{
tabDates = new Array();
var aff = new Array();
var dates = getget("date");
var nbDates = (dates.length+1)/11;
var i ;
var d;
var m;
var y;
//Affichage des intitules heure
for(i=0;i<5;i++)
{
document.write("<td>Heure "+(i+1)+"<td/>");
}
document.write("<tr/>");
for(i=0 ; i<nbDates ; i++)
{
//Si ce n'est pas la derniere date
if(i<(nbDates-1))
{
tabDates[i] = dates.substring(11*i,10+11*i);
}
else
{
tabDates[i] = dates.substring(11*i);
}
// le tableau aff contient des dates triees mais pas au bon format d affichage
for(i=0 ; i<nbDates ; i++)
{
y = tabDates[i].substring(0,4);
m = tabDates[i].substring(5,7);
d = tabDates[i].substring(8);
// modification du format pour l'etape 3
aff[i]= format_date_affichage(d,m,y) ;
//Creation des input texte ou l'on pourra saisir nos horaires
for(j=0;j<5;j++)
{
if(j==0)
document.write("<tr><td >"+aff[i]+"</td><td><td/><td><td/><td><input type=\"text\" id=\"date"+i+lettres[j]+"\" onmouseout=\"if(validationHeures(this.value)==false){this.value='';}\" value=\"\"/> <td/>");
else
document.write("<td><input type=\"text\" id=\"date"+i+lettres[j]+"\" onchange=\"if(validationHeures(this.value)==false){this.value='';}\" value=\"\" /> <td/>");
}
}
}
var dates = getget("date");
var nbDates = (dates.length+1)/11;
var s = "";
var i =0;
var j=0;
for( i=0 ; i<nbDates ; i++ )
{
//Si c'est la premiere date
if(i==0)
s = s + tabDates[i];
else
s = s + "_" +tabDates[i];
for(j=0;j<5;j++)
{
var id=i+lettres[j];
//Si le contenu de l'input texte en question n'est pas vide
if(document.getElementById("date"+id).value!="")
{
//Si il n'ya q'une seule horaire dans cette saisie
if(document.getElementById("date"+id).value.length==5)
s= s + "d" + document.getElementById("date"+id).value+"d0";
else
s= s + "d"+document.getElementById("date"+id).value.substring(0,5)+"d"+document.getElementById("date"+id).value.substring(6);
}
}
}
return s;
}
merci de maider svp!!!!!!! je doi juste reussir a selectionner une date sur I.E.
Dans ce cas merci de poster la solution et de l'expliquer (des fois qu'une personne dans le futur ai fait quelque chose de similaire à ton truc, ou soit intéressé par ton code)
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.