Bonsoir,

voici un code de calendrier, qui peut faire apparaître, sur onmouseover de certaines dates, un affichage comme celui-là :



(olympique nivernais, etc.)Là, c'est ce que ça donne sous FF et pas de problème, mais la même chose sous IE donne

Donc là, en plus des bordures moins bien (moyen), il y a un décalage. Peut-on l'éviter ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?php
date_default_timezone_set('Europe/Paris');
?>
<script type="text/javascript">
function csaffiche(txtaff)
{
   var cselemcspostit = document.getElementById("cspostit");
   var e = document.getElementById("cscalendrier")
   var decalagey = 150;
   var decalagex = 0;
 
   //cherche les coordonnées
   var leftcs=0;
   var topcs=0;
   //Tant que l'on a un élément parent
   while (e.offsetParent != undefined && e.offsetParent != null)
      {
      //On ajoute la position de l'élément parent
      leftcs += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
      topcs += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
      e = e.offsetParent;
      }
   //decalage et verification resultat >0
   topcs+=decalagey;
   if (topcs<0){topcs=0;}
   leftcs+=decalagex;
   if (leftcs<0){leftcs=0;}
   // ajout des unités
   topcs+="px";
   leftcs+="px";
   // affectations des valeurs
   cselemcspostit.innerHTML=txtaff;
   cselemcspostit.style.top=topcs;
   cselemcspostit.style.left=leftcs;
   cselemcspostit.style.visibility="visible";
 
}
function cscache()
{
var cselemcspostit = document.getElementById("cspostit");
cselemcspostit.style.visibility="hidden";
}
</script>
 
<div id="cspostit" style="border: thick solid #00FFFF; padding: 10px; 
position: absolute; top: 1px; left: 1px; 
background-color: #FFFFCC; font-family: Arial, Helvetica, sans-serif; 
text-align: center; visibility: hidden;">
 
A priori ce texte ne sera jamais vu, mais laissez un texte ici  
 
</div>
 
 
 
<?php
echo "<table id='cscalendrier' style='font-family: Arial; font-size: 13px; color: rgb(0,0,0); text-align: center; width: 260px;  height: 70px;' border='1' cellpadding='0' cellspacing='0'>";
 
//ICI SONT STOCKES les RV
 
 
$rv[1]="12/11";
$heure[1]="";
$texte[1]="Soirée jeu proposée par l\'ASPTT";
$lien[1]="";
 
$rv[2]="14/01";
$texte[2]="Organisé par ASPTT 3èmes 24h Chaud les jeux";
$heure[2]="-";
$lien[2]="";
 
$rv[3]="16/12";
$heure[3]="20h30";
$texte[3]="Soirée jeu organisé par le centre social de Chemillé à 20h30";
$lien[3]="";
 
$rv[4]="15/12";
$heure[4]="20h30";
$texte[4]="Soirée Battle Star Galactica au café des artistes";
$lien[4]="http://monsite.fr";
 
$rv[5]="22/12";
$heure[5]="20h30";
$texte[5]="Soirée NOVUS MUNDUS au café des artistes";
$lien[5]="";
 
$rv[6]="29/12";
$heure[6]="20h30";
$texte[6]="Soirée  café des artistes";
$lien[6]="";
 
 
 
$nb=0;
 
$decalage = date("w"); // Pour savoir quel jour de la semaine on est de 1 à 7
$decalage=$decalage-1;
if ($decalage==-1) {$decalage=6;}
 
 
 
echo"<td>Lu</td><td>Ma</td><td>Me</td><td>Je</td><td>Ve</td><td>Sa</td><td>Di</td>";
 
for ($j=1; $j<7 ;$j++)
{
   echo "<tr>";
   for ($i=1; $i<8 ;$i++)
   {
      $cellule = "<td>";
      if ($nb==$decalage) // pour entourer la date du jour
      {
         $cellule = "<td style='border: 2px solid #000000;'>";
      }
      if ($nb<$decalage) // pour mettre en gris les dates inf à la date du jour
      {
         $cellule = "<td style='color: rgb(190, 190, 190);'>";
      }
 
      $commentaire="";
      $liendate="";
      $correspondance=0;
      $compteur=0;
 
      $affiche = date("d/m" , mktime(0, 0, 0, date("m")  , date("d")+$nb-$decalage, date("Y")));
 
 
 
 
      for ($z=1; $z<20 ;$z++)
      {
         if (($rv[$z]==$affiche) and ($nb>=$decalage))
         {   
            $correspondance=1; //il existe un RV pour cette date
            if ($lien[$z]<>"")
            {
               $liendate = $lien[$z];
 
            }
            $compteur++;
            if ($compteur>1)
            {
               $commentaire = $commentaire ." *** "; //rajoute separateur
            }
            $commentaire = $commentaire .$heure[$z]." ". $texte[$z];
         }
      }
      if ($correspondance==1)
      {
         if ($liendate<>"")
         {
            $affiche = "<a href=\"".$liendate."\" >".$affiche."</a>";
         }
        // Version AMELIOREE
         $popup ="onmouseover=\"csaffiche('".$commentaire."' )\" ; onmouseout=\"cscache()\" >" ;
 
 
         $affiche = "<font style='background-color: rgb(186, 225, 140);' ".$popup . $affiche ."</font>";
      }
      echo $cellule;
      echo $affiche;
      $nb++;
      echo"</td>";
   }
   echo "</tr>";
}
echo "</table>";
 
 
 
?>