var odkaz = null;
var rok, mesic, den, rok1, mesic1, den1;
var mesice = new Array ('leden','únor','březen','duben','květen','červen','červenec','srpen','září','říjen','listopad','prosinec');
var dny  = new Array (31,28,31,30,31,30,31,31,30,31,30,31);
var dnyP = new Array (31,29,31,30,31,30,31,31,30,31,30,31);

document.write('<table id="kalendar" cellpadding="1" border="1" cellspacing="1">');
document.write('<tr class="aktualni"><td onclick="PosunMesic(-1)" title="Předchozí měsíc">&laquo;</td><td colspan="4" id="kalendarmesic" class="empty"></td><td onclick="PosunMesic(1)" title="Následující měsíc">&raquo;</td><td onclick="Kalendar(null)" title="Zavře tento kalendář">&times;</td></tr>');
document.write('<tr><td class="empty">Po</td><td class="empty">Út</td><td class="empty">St</td><td class="empty">Čt</td><td class="empty">Pá</td><td class="empty">So</td><td class="empty">Ne</td></tr>');
for (var i = 0; i < 42; i++) {document.write ((i % 7 == 0 ? '<tr>' : '') + '<td id="kalendar' + i + '" onclick="Nastav(this)"></td>');};
document.write('</table>');

var GetObj = function (e) {
	return document.getElementById(e);
	}

var Prestupny = function (rok) {
	return ((rok % 4 == 0) && (rok % 100 > 0))
	}

var PosunMesic = function (posun) {
	mesic = mesic + posun;
	if (mesic > 12) {rok++;} else if (mesic < 1) {rok--;};
	mesic = ((mesic + 11) % 12) + 1;
	if (den > (Prestupny (rok) ? dnyP[mesic-1] : dny[mesic-1])) {den = (Prestupny (rok) ? dnyP[mesic-1] : dny[mesic-1]);};
	Prekresli ();
	}

var SpravneDatum = function () {
	if (rok < 2008) {return false;};
	if ((mesic < 1) || (mesic > 12)) {return false;};
	if ((den < 1) || (den > (Prestupny (rok) ? dnyP[mesic-1] : dny[mesic-1]))) return false;
	return true;
	}

var NactiDatum = function (t) {
	var b;
	den = 0; mesic = 0; rok = 0;
	if (t.indexOf('-') >= 0) {b = t.split('-'); rok = parseInt(b[0]); mesic = parseInt(b[1]); den = parseInt(b[2]);}
	else if (t.indexOf('.') >= 0) {b = t.split('.'); den = parseInt(b[0]); mesic = parseInt(b[1]); rok = parseInt(b[2]);}
	else if (t.indexOf('/') >= 0) {b = t.split('/'); den = parseInt(b[0]); mesic = parseInt(b[1]); rok = parseInt(b[2]);};
	if (!SpravneDatum()) {a = new Date(); den = a.getDate(); mesic = a.getMonth() + 1; rok = a.getFyllYear();};
	rok1 = rok; mesic1 = mesic; den1 = den;
	return true;
	}

var Kalendar = function (e) {
	if (e == null) {GetObj('kalendar').style.display = 'none'; return false;}
	odkaz = e;
	GetObj('kalendar').style.display = 'block';
	NactiDatum (e.value);
	Prekresli ();
	}

var Prekresli = function () {
	var a, prvni, p, q;
	a = new Date (rok, mesic - 1, 1);
	prvni = (a.getDay() + 6) % 7;
	p = (Prestupny (rok) ? dnyP[mesic-1] : dny[mesic-1]);
	q = 6 - ((prvni + p - 1) % 7);
	GetObj('kalendarmesic').innerHTML = mesice[mesic-1] + ' ' + rok;
	for (var i = 0; i < prvni; i++) {GetObj('kalendar'+i).innerHTML = ''; GetObj('kalendar'+i).className = 'empty';};
	for (var i = 0; i < p; i++) {GetObj('kalendar'+(prvni+i)).innerHTML = (i+1); GetObj('kalendar'+(prvni+i)).className = (((rok1 == rok) && (mesic1 == mesic) && (den1 == i+1)) ? 'aktualni' : '');};
	if (q > 0) {for (var i = 0; i < q; i++) {GetObj('kalendar'+(prvni+p+i)).innerHTML = ''; GetObj('kalendar'+(prvni+p+i)).className = 'empty';};};
	if ((prvni + p + q) < 42) {for (var i = 0; i < 42 - (prvni + p + q); i++) {GetObj('kalendar'+(prvni+p+q+i)).innerHTML = ''; GetObj('kalendar'+(prvni+p+q+i)).className = 'invisible';};};
	}

var Nastav = function (d) {
	var a = d.innerHTML;
	if (a == '') {return false;};
	a = parseInt (a);
	odkaz.value = (a < 10 ? '0' : '') + a + (mesic < 10 ? '.0' : '.') + mesic + '.' + rok;
	Kalendar (null);
	}

