[ Index ] |
|
Code source de Horde 3.1.3 |
1 var currentDate, currentYear, curImgId, currentTarget; 2 3 function openCalendar(imgId, target, callback) 4 { 5 if (document.getElementById(target + '[year]').value && document.getElementById(target + '[month]').value && document.getElementById(target + '[day]').value) { 6 var d = new Date(document.getElementById(target + '[year]').value, 7 document.getElementById(target + '[month]').value - 1, 8 document.getElementById(target + '[day]').value); 9 } else { 10 var d = new Date(); 11 } 12 13 openGoto(d.getTime(), imgId, target, callback); 14 } 15 16 function openGoto(timestamp, imgId, target, callback) 17 { 18 var row, cell, img, link, days; 19 20 currentTarget = target; 21 22 var d = new Date(timestamp); 23 currentDate = d; 24 month = d.getMonth(); 25 currentYear = d.getYear(); 26 if (currentYear < 1900) { 27 currentYear += 1900; 28 } 29 var firstOfMonth = new Date(currentYear, month, 1); 30 var diff = firstOfMonth.getDay() - 1; 31 if (diff == -1) { 32 diff = 6; 33 } 34 switch (month) { 35 case 3: 36 case 5: 37 case 8: 38 case 10: 39 days = 30; 40 break; 41 42 case 1: 43 if (currentYear % 4 == 0 && (currentYear % 100 != 0 || currentYear % 400 == 0)) { 44 days = 29; 45 } else { 46 days = 28; 47 } 48 break; 49 50 default: 51 days = 31; 52 break; 53 } 54 55 var wdays = [ 56 '<?php echo _("Mo") ?>', 57 '<?php echo _("Tu") ?>', 58 '<?php echo _("We") ?>', 59 '<?php echo _("Th") ?>', 60 '<?php echo _("Fr") ?>', 61 '<?php echo _("Sa") ?>', 62 '<?php echo _("Su") ?>' 63 ]; 64 var months = [ 65 '<?php echo _("January") ?>', 66 '<?php echo _("February") ?>', 67 '<?php echo _("March") ?>', 68 '<?php echo _("April") ?>', 69 '<?php echo _("May") ?>', 70 '<?php echo _("June") ?>', 71 '<?php echo _("July") ?>', 72 '<?php echo _("August") ?>', 73 '<?php echo _("September") ?>', 74 '<?php echo _("October") ?>', 75 '<?php echo _("November") ?>', 76 '<?php echo _("December") ?>' 77 ]; 78 79 var layer = document.getElementById('goto'); 80 if (layer.firstChild) { 81 layer.removeChild(layer.firstChild); 82 } 83 84 var table = document.createElement('TABLE'); 85 var tbody = document.createElement('TBODY'); 86 table.appendChild(tbody); 87 table.className = 'item'; 88 table.cellSpacing = 0; 89 table.cellPadding = 2; 90 table.border = 0; 91 table.style.width = 'auto'; 92 93 // Title bar. 94 row = document.createElement('TR'); 95 cell = document.createElement('TD'); 96 cell.colSpan = 7; 97 cell.align = 'right'; 98 cell.className = 'header'; 99 link = document.createElement('A'); 100 link.href = '#'; 101 link.onclick = function() 102 { 103 var layer = document.getElementById('goto'); 104 layer.style.visibility = 'hidden'; 105 if (layer.firstChild) { 106 layer.removeChild(layer.firstChild); 107 } 108 return false; 109 } 110 img = document.createElement('IMG') 111 img.src = '<?php echo $GLOBALS['registry']->getImageDir('horde') ?>/close.png'; 112 img.border = 0; 113 link.appendChild(img); 114 cell.appendChild(link); 115 row.appendChild(cell); 116 tbody.appendChild(row); 117 118 // Year. 119 row = document.createElement('TR'); 120 cell = document.createElement('TD'); 121 cell.align = 'left'; 122 link = document.createElement('A'); 123 link.href = '#'; 124 link.onclick = function() 125 { 126 newDate = new Date(currentYear - 1, currentDate.getMonth(), 1); 127 openGoto(newDate.getTime(), imgId, currentTarget, callback); 128 return false; 129 } 130 cell.appendChild(link); 131 img = document.createElement('IMG') 132 img.src = '<?php echo $GLOBALS['registry']->getImageDir('horde') ?>/nav/left.png'; 133 img.align = 'middle'; 134 img.border = 0; 135 link.appendChild(img); 136 row.appendChild(cell); 137 138 cell = document.createElement('TD'); 139 cell.colSpan = 5; 140 cell.align = 'center'; 141 var y = document.createTextNode(currentYear); 142 cell.appendChild(y); 143 row.appendChild(cell); 144 145 cell = document.createElement('TD'); 146 cell.align = 'right'; 147 link = document.createElement('A'); 148 link.href = '#'; 149 link.onclick = function() 150 { 151 newDate = new Date(currentYear + 1, currentDate.getMonth(), 1); 152 openGoto(newDate.getTime(), imgId, currentTarget, callback); 153 return false; 154 } 155 cell.appendChild(link); 156 img = document.createElement('IMG') 157 img.src = '<?php echo $GLOBALS['registry']->getImageDir('horde') ?>/nav/right.png'; 158 img.align = 'middle'; 159 img.border = 0; 160 link.appendChild(img); 161 row.appendChild(cell); 162 tbody.appendChild(row); 163 164 // Month name. 165 row = document.createElement('TR'); 166 cell = document.createElement('TD'); 167 cell.align = 'left'; 168 link = document.createElement('A'); 169 link.href = '#'; 170 link.onclick = function() 171 { 172 var newMonth = currentDate.getMonth() - 1; 173 var newYear = currentYear; 174 if (newMonth == -1) { 175 newMonth = 11; 176 newYear -= 1; 177 } 178 newDate = new Date(newYear, newMonth, 1); 179 openGoto(newDate.getTime(), imgId, currentTarget, callback); 180 return false; 181 } 182 cell.appendChild(link); 183 img = document.createElement('IMG') 184 img.src = '<?php echo $GLOBALS['registry']->getImageDir('horde') ?>/nav/left.png'; 185 img.align = 'middle'; 186 img.border = 0; 187 link.appendChild(img); 188 row.appendChild(cell); 189 190 cell = document.createElement('TD'); 191 cell.colSpan = 5; 192 cell.align = 'center'; 193 var m = document.createTextNode(months[month]); 194 cell.appendChild(m); 195 row.appendChild(cell); 196 197 cell = document.createElement('TD'); 198 cell.align = 'right'; 199 link = document.createElement('A'); 200 link.href = '#'; 201 link.onclick = function() 202 { 203 newDate = new Date(currentYear, currentDate.getMonth() + 1, 1); 204 openGoto(newDate.getTime(), imgId, currentTarget, callback); 205 return false; 206 } 207 cell.appendChild(link); 208 img = document.createElement('IMG') 209 img.src = '<?php echo $GLOBALS['registry']->getImageDir('horde') ?>/nav/right.png'; 210 img.align = 'middle'; 211 img.border = 0; 212 link.appendChild(img); 213 row.appendChild(cell); 214 tbody.appendChild(row); 215 216 // Weekdays. 217 row = document.createElement('TR'); 218 for (var i = 0; i < 7; i++) { 219 cell = document.createElement('TD'); 220 weekday = document.createTextNode(wdays[i]); 221 cell.appendChild(weekday); 222 row.appendChild(cell); 223 } 224 tbody.appendChild(row); 225 226 // Rows. 227 var week, italic; 228 var count = 1; 229 var today = new Date(); 230 var thisYear = today.getYear(); 231 if (thisYear < 1900) { 232 thisYear += 1900; 233 } 234 235 var odd = true; 236 for (var i = 1; i <= days; i++) { 237 if (count == 1) { 238 row = document.createElement('TR'); 239 row.align = 'right'; 240 if (odd) { 241 row.className = 'item0'; 242 } else { 243 row.className = 'item1'; 244 } 245 odd = !odd; 246 } 247 if (i == 1) { 248 for (var j = 0; j < diff; j++) { 249 cell = document.createElement('TD'); 250 row.appendChild(cell); 251 count++; 252 } 253 } 254 cell = document.createElement('TD'); 255 if (thisYear == currentYear && 256 today.getMonth() == month && 257 today.getDate() == i) { 258 cell.style.border = '1px solid red'; 259 } 260 261 link = document.createElement('A'); 262 cell.appendChild(link); 263 264 link.href = i; 265 link.onclick = function() 266 { 267 var day = this.href; 268 while (day.indexOf('/') != -1) { 269 day = day.substring(day.indexOf('/') + 1); 270 } 271 272 setSelectValue(document.getElementById(currentTarget + '[year]'), currentYear); 273 setSelectValue(document.getElementById(currentTarget + '[month]'), currentDate.getMonth() + 1); 274 setSelectValue(document.getElementById(currentTarget + '[day]'), day); 275 276 var layer = document.getElementById('goto'); 277 layer.style.visibility = 'hidden'; 278 if (layer.firstChild) { 279 layer.removeChild(layer.firstChild); 280 } 281 282 if (callback) { 283 eval(callback); 284 } 285 286 return false; 287 } 288 289 day = document.createTextNode(i); 290 link.appendChild(day); 291 292 row.appendChild(cell); 293 if (count == 7) { 294 tbody.appendChild(row); 295 count = 0; 296 } 297 count++; 298 } 299 if (count > 1) { 300 for (i = count; i <= 7; i++) { 301 cell = document.createElement('TD'); 302 row.appendChild(cell); 303 } 304 tbody.appendChild(row); 305 } 306 307 if (curImgId != imgId) { 308 // We're showing this popup for the first time, so try to 309 // position it next to the image anchor. 310 var el = document.getElementById(imgId); 311 var p = getAbsolutePosition(el); 312 313 layer.style.left = p.x + 'px'; 314 layer.style.top = p.y + 'px'; 315 } 316 317 curImgId = imgId; 318 layer.appendChild(table); 319 320 layer.style.display = 'block'; 321 layer.style.visibility = 'visible'; 322 } 323 324 function getAbsolutePosition(el) 325 { 326 var r = {x: el.offsetLeft, y: el.offsetTop}; 327 if (el.offsetParent) { 328 var tmp = getAbsolutePosition(el.offsetParent); 329 r.x += tmp.x; 330 r.y += tmp.y; 331 } 332 return r; 333 } 334 335 function setSelectValue(select, value) 336 { 337 select.value = value; 338 if (select.value != value) { 339 for (i = 0; i < select.options.length; i++) { 340 if (select.options[i].value == value) { 341 select.selectedIndex = i; 342 return true; 343 } 344 } 345 } 346 347 return false; 348 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 18:01:28 2007 | par Balluche grâce à PHPXref 0.7 |