<!-- Free Date Picker : An easy plugin to add a date picker (calendar) in your web site (version 0.1 : state alpha) Copyright (C) 2004 Dany Milot
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
----------------------------------------------------------------------------------------
Look at http://sourceforge.net/projects/freedatepicker/ for updates and developpement
-->
<SCRIPT language="JavaScript" type="text/javascript"> <!--
function free_date_picker(obj_name, layer_name, text_to ,type, hide_self, language) { //////////////////////////////////////////////////////////////////////////////////// // IF str < lng, add leading 0 to complete the str function leading_zeros(str, lng) { // param validation if(lng == null) lng = 2;
var str = str.toString();
while(str.length < lng) str = '0' + str;
return str; }
//////////////////////////////////////////////////////////////////////////////////// // Nbr days for this month function returnDays(date) { var year = date.getFullYear(); var month = date.getMonth(); var days = 31;
if( month == 3 || month == 5 || month == 8 || month == 10 ){ days = 30; } else if(month == 1){ days = 28;
if(year % 4 == 0){ days = 29;
if(year % 100 == 0){ days = 28;
if(year % 400 == 0){ days = 29; } } } }
return(days); }
//////////////////////////////////////////////////////////////////////////////////// // Return last month function returnLastMonth(date) { var year = date.getFullYear(); var month = date.getMonth(); var dt = new Date();
month --;
if(month == -1){ month = 11; year --; }
dt.setYear(year); dt.setDate(1); dt.setMonth(month);
return dt; }
//////////////////////////////////////////////////////////////////////////////////// // Retourne le mois suivant function returnNextMonth(date) { var year = date.getFullYear(); var month = date.getMonth(); var dt = new Date();
month ++;
if(month == 12){ month = 0; year ++; }
dt.setYear(year); dt.setDate(1); dt.setMonth(month);
return dt; }
//////////////////////////////////////////////////////////////////////////////////// // Retourne le nom du mois
function return_month_name(date) { switch(language){ case("en"): var month = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); break; case("fr"): default: var month = new Array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'); }
return month[date.getMonth()]; }
//////////////////////////////////////////////////////////////////////////////////// this.setto = function(eng_date) { // input text if(type == 1) document.getElementById(text_to).value = eng_date; // span, div ... if(type == 2) document.getElementById(text_to).innerHTML = eng_date; }
//////////////////////////////////////////////////////////////////////////////////// this.write_calendar = function(date) { var nb_days_last_month = 0; var cnt_days = 0; var days_month = 0; var str = new String(); var style = new String(); var next_month = new Date(); var last_month = new Date(); var today = new Date();
var date = new Date(date); var last_year = new Date(date); var next_year = new Date(date);
date.setDate(1); // le premier du mois next_month = returnNextMonth(date); // le mois précédent last_month = returnLastMonth(date); // le mois suivant nb_days_last_month = returnDays(last_month); // nombre jours mois précédent cnt_days = -date.getDay()+1; // compteur de jours, part le dimanche du début du mois days_month = returnDays(date); // nombre de jours mois sélectionné str = ''; // forge la chaîne de caractères à mettre dans la div
next_year.setYear(date.getFullYear() + 1); // année précédente last_year.setYear(date.getFullYear() - 1); // année suivante
str += '<table cellspacing="0" cellpadding="0" border="1" width="250" bgcolor="white">';
str += '<tr>';
// année précédente str += ' <td colspan="1" align="left"><a href="' + "javascript:" + obj_name + ".write_calendar('" + eval(last_year) + "')" + ';"><--</a></td>'; // mois précédent str += ' <td colspan="1" align="left"><a href="' + "javascript:" + obj_name + ".write_calendar('" + eval(last_month) + "')" + '"><-</a></td>';
// libellé mois année str += ' <td colspan="3" align="center">' str += return_month_name(date) + ' ' + date.getFullYear(); str += ' </td>';
// mois suivant str += ' <td colspan="1" align="right"><a href="' + "javascript:" + obj_name + ".write_calendar('" + eval(next_month) + "')" + '">-></a></td>'; // année suivante str += ' <td colspan="1" align="right"><a href="' + "javascript:" + obj_name + ".write_calendar('" + eval(next_year) + "')" + '">--></a></td>'; str += '</tr>';
// pour tous les jours du mois var cnt_semaines = 0;
while(cnt_semaines < 6){ cnt_semaines ++; str += ' <tr>';
for(var cnt = 0; cnt < 7; cnt++){ // mois suivant if(cnt_days > days_month){ day = cnt_days - days_month; month = next_month.getMonth() + 1; year = next_month.getFullYear();
style = "font-size:10px;"; } // mois précédent else if(cnt_days < 1){ day = cnt_days + nb_days_last_month; month = last_month.getMonth() + 1; year = last_month.getFullYear();
style = "font-size:10px;";
} // mous sélectionné else{ var d1 = new Date(); var d2 = new Date();
d1.setMonth(date.getMonth()); d1.setYear(date.getFullYear()); d1.setDate(cnt_days);
day = cnt_days; month = date.getMonth() + 1; year = date.getFullYear();
// aujourd'hui ? if(d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate() ){ style = "font-size:18px;font-color:red"; } else{ style = "font-size:12px;"; } }
dstr = year + '/' + leading_zeros(month) + '/' + leading_zeros(day);
// inscrit la cellule str += ' <td width="14%">'; str += ' <span style="' + style + '">'; str += ' <a href="javascript:' + obj_name + '.setto('' + dstr + '')">'; str += day; str += ' </a>'; str += ' </font>'; str += ' </td>';
cnt_days ++; }
str += ' </tr>'; }
str += '</table>'; document.getElementById(layer_name).innerHTML = str; }
this.show = function() { if(hide_self) document.getElementById(layer_name).style.visibility = 'visible'; }
this.hide = function() { if(hide_self) document.getElementById(layer_name).style.visibility = 'hidden'; }
//////////////////////////////////////////////////////////////////////////////////// // create layer and show calendar document.write('<div id="' + layer_name + '" onmouseout="' + obj_name + '.hide();">...</div>'); this.write_calendar(new Date()); }
</SCRIPT>
<table border=1> <tr> <td width=33%>On a div</td> <td width=33%>On an input</td> <td width=33%>Layer</td> </tr> <tr> <td><div id='aaa'> </div></td> <td><input id='bbb'></td> </tr> <tr> <td><script>var a = new free_date_picker('a', 'date_picker_a', 'aaa', 2, false, 'fr');</script></td> <td><script>var b = new free_date_picker('b', 'date_picker_b', 'bbb', 1, false, 'en');</script></td> </tr> </table>
|