* W polu tekstowym, do którego chcemy wstawiæ datê wpisujemy: onclick="showKal(this)"
*
* W kalendarzu mo¿na zmieniæ kolory, rok pocz¹tkowy, rok koñcowy, format
* wstawianej daty i dzieñ tygodnia od jakiego ma siê zaczynaæ kalendarz.
*
* Zmiany:
* 20.05.2008 - mo¿liwoœæ definiowania pierwszego dnia tygodnia w kalendarzu
* 22.07.2008 - poszerzona mo¿liwoœæ zmiany wygl¹du kalendarza
* 29.07.2008 - poprawka dla IE pozwalaj¹ca na pokazanie kalendarza nad polami
* typu select (dziêki Roman za znalezienie b³êdu)
* 29.11.2008 - poprawka obliczania roku przestêpnego dodana przez Micha³a Walczaka
* 23.10.2009 - poprawienie b³êdu w formacie daty, dziêki FOXIK
*/
var ie4, ns4, ns6;
var frmpole;
ie = document.all && !window.opera;
ns4 = document.layers;
ns6 = document.getElementById && !document.all;
// Aktualne data w kalendarzu
var data = new Date();
var amies = data.getMonth();
var arok = data.getFullYear();
var adzien = data.getDate();
var adzientyg = data.getDay();
// iloϾ dni w roku
var dni = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
// nazwy miesiêcy
var miesiac = new Array('Styczeñ','Luty','Marzec','Kwiecieñ', 'Maj','Czerwiec','Lipiec','Sierpieñ','Wrzesieñ','PaŸdziernik','Listopad','Grudzieñ');
// dni tygodnia
var dniTygodnia = new Array('Nd','Pn','Wt','Œr','Czw','Pt','So')
/************************* KONFIGURACJA *************************/
var pierwszyDzien = 0; // pierwszy dzieñ tygodnia pokazywany w kalendarzu: 0 - niedziela, 1 - poniedzia³ek, 2 - wtorek, itd..
var latWstecz = 0; // iloœæ lat wstecz jakie pokazuje kalendarz, gdy ustawiony na 0 brany jest pod uwagê rok pocz¹tkowy
var latWprzod = 0; // iloœæ lat wprzód jakie pokazuje kalendarz, gdy ustawiony na 0 brany jest pod uwagê rok koñcowy
var rokOd = 2006; // rok pocz¹tkowy pokazywany w polu wyboru lat
var rokDo = 2012; // rok koñcowy pokazywany w polu wyboru lat
var template0 = new Array(18)
template0[0] = '#3253c1'; // kolor czcionki w polu dnia - dzieñ tygodnia
template0[1] = '#888888'; // kolor czcionki w polu dnia - sobota
template0[2] = '#ff0000'; // kolor czcionki w polu dnia - niedziela
template0[3] = '#eeeeee'; // kolor t³a kalendarza
template0[4] = '#ffffff'; // kolor t³a dni kalendarza
template0[5] = '#ffffff'; // kolor czcionki w polu dnia - aktualny dzieñ
template0[6] = '#3253c1'; // kolor t³a aktualnego dnia
template0[7] = '#ffffff'; // kolor czcionki przycisku zamykaj¹cego kalendarz
template0[8] = '#ff0000'; // kolor t³a przycisku zamykaj¹cego kalendarz
template0[9] = '#dddddd'; // kolor ramki wokó³ kalendarza
template0[10] = '#333333'; // kolor czcionki w polu wyboru roku i miesi¹ca
template0[11] = '#333333'; // kolor czcionki nazw dni tygodnia
template0[12] = '#eeeeee'; // kolor t³a nazw dni tygodnia
template0[13] = 1; // GruboϾ ramki w pikselach
template0[14] = 11; // Rozmiar czcionki
template0[15] = false; // Pogrubienie czcionki w polu dni (true/false)
template0[16] = '#ff0000'; // kolor ramki wokó³ pola aktualnego dnia
template0[17] = 'negative'; // Sposób wyœwietlania aktualnego dnia (border/negative)
// Inne szablony kcd kcds kcdn ktk ktdk kcda ktda kcpz ktpz kr kcpw kcndt ktndt r c bold
var template1 = new Array('#3253c1','#888888','#ff0000','#eeeeee','#ffffff','#ffffff','#3253c1','#ffffff','#ff0000','#dddddd','#333333','#333333','#eeeeee',1,11,true,'#ff0000','border');
var template2 = new Array('#888888','#888888','#ff0000','#ffffff','#efefef','#ffffff','#888888','#ffffff','#888888','#888888','#888888','#ffffff','#888888',2,11,false,'#999999','negative');
// wybór szablonu kolorów
var config = template0;
/************************* KONIEC KONFIGURACJI *************************/
// iloœæ dni w Lutym - przeliczane po zmianie miesi¹ca lub roku
function dniMies() {
dni[1] = (((rok % 4 == 0) && (rok % 100 != 0)) || (rok % 400 == 0)) ? 29 : 28;
}
// pobieranie pozycji myszy
function mysz(e) {
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
} else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
x = posx;
y = posy;
}
// funkcja pokazujaca kalendarz pod kursorem myszy
function kalendarz(fp) {
data = new Date(arok, amies, 1);
mies = data.getMonth();
rok = data.getFullYear();
dzien = data.getDate();
dzientyg = data.getDay();
dniMies();
frmpole = fp;
pozx = x;
pozy = y;
rysujKal();
if(ns6 || ie) {
document.getElementById('container').style.left = pozx+'px';
document.getElementById('container').style.top = (pozy+10)+'px';
document.getElementById('container').style.visibility = 'visible';
}
}
// funkcja ukrywajaca kalendarz i wstawiajaca wybran¹ datê do pola formularza
function hideKal() {
if(ns6 || ie)
document.getElementById('container').style.visibility = 'hidden';
// uwzglêdnienie zer poprzedzaj¹cych w miesi¹cu i dniu
mies++;
if(mies < 10)
mies = '0' + mies;
if(selectday < 10)
selectday = '0' + selectday;
/************************* FORMAT DATY *************************/
// Przyk³ady:
// format = selectday + ' ' + miesiac[parseInt(mies-1)] + ' ' + rok;
// format = rok + '-' + miesiac[parseInt(mies-1)] + '-' + selectday;
format = rok + '-' + mies + '-' + selectday;
/********************* KONIEC FORMATU DATY *********************/
frmpole.value = format;
}
// ukrywanie kalendarza bez wstawiania daty
function exitKal() {
if(ns6 || ie)
document.getElementById('container').style.visibility = 'hidden';
}
// ustawianie nowej daty po zmianie miesiaca lub roku
function setData() {
mies = document.forms['sdata'].elements['month'].value;
rok = document.forms['sdata'].elements['year'].value;
data = new Date(rok, mies, 1);
mies = data.getMonth();
rok = data.getFullYear();
dzien = data.getDate();
dzientyg = data.getDay();
dniMies();
rysujKal();
}
// rysowanie kalendarza
function rysujKal() {
kaltxt = '
';
document.getElementById("kalendarz").innerHTML = kaltxt;
}
// style kalendarza i warstwa, na której siê znajduje
document.write('