_DN = new Array
("Niedziela","Poniedziałek", "Wtorek", "Środa", "Czwartek", "Pi±tek", "Sobota", "Niedziela");

_SDN = new Array
("N","Pn", "Wt", "¦r", "Cz", "Pt", "So", "N");

_MN = new Array
("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "PaĽdziernik", "Listopad", "Grudzień");

_SMN = new Array
("Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru");

var initYear = 0;
var initMonth = 0;
var initDay = 0;
var targetObj;
var calendarStarted = false;

function getDaysInMonth(month,year) {
	var dd = new Date(year, month+1, 0);
	return dd.getDate();
}
// function daysInMonth(month,year) {
// var m = [31,28,31,30,31,30,31,31,30,31,30,31];
// if (month != 2) return m[month - 1];
// if (year%4 != 0) return m[1];
// if (year%100 == 0 && year%400 != 0) return m[1];
// return m[1] + 1;
// }
function getFirsDay(month,year) {
	var dd = new Date(year, month, 1);
	return dd.getDay();
}
function makeCalendar(year,month,day) {
	
	var calDiv = document.getElementById('calendar');
	calDiv.style.display = '';
	var istart=0;
	var iend = 0;
	var selDate = new Date(year,month,day);
	var dispDate = new Date(year,month,1);
	var nowDate = new Date();
	year = dispDate.getFullYear();
	month = dispDate.getMonth();
	var daysInMonth = getDaysInMonth(dispDate.getMonth(),dispDate.getFullYear());
	var firstDayOfMonth = getFirsDay(dispDate.getMonth(),dispDate.getFullYear());
	firstDayOfMonth = (firstDayOfMonth==0)? 7 : firstDayOfMonth;
	var t='';
	
	iend = istart+firstDayOfMonth + daysInMonth;
	
	if ((iend%7)!=0) {
		iend = iend + (7-iend%7);
	}

	
	t+='<table width="217" border="0" cellspacing="0" cellpadding="0" class="bcl">'
	//t+= '<tr><td colspan=7><span style="cursor:pointer;" onclick="makeCalendar(' + (year-1) + ',' + (month) + ',' + 1 + ')">py</span> ' + dispDate.getFullYear()  +  ' <span style="cursor:pointer;" onclick="makeCalendar(' + (year+1) + ',' + (month) + ',' + 1 + ')">ny</span></td></tr>';
	t+= '<tr><td colspan=7 class="b"><table width="100%" cellspacing="0" cellpadding="0"><tr><td width="10" align="center"><span style="cursor:pointer;" onclick="makeCalendar(' + (year-1) + ',' + (month) + ',' + 1 + ')" title="poprzedni rok"><b>&laquo;</b></span></td><td align="center"> ' + dispDate.getFullYear()  +  '</td><td width="10" align="center"<span style="cursor:pointer;" onclick="makeCalendar(' + (year+1)  + ',' + (month) + ',' + 1 + ')" title="następny rok"><b>&raquo;</b></span></td></table></td></tr>';
	t+= '<tr><td colspan=7 class="b"><table width="100%" cellspacing="0" cellpadding="0"><tr><td width="10" align="center"><span style="cursor:pointer;" onclick="makeCalendar(' + year + ',' + (month-1) + ',' + 1 + ')" title="poprzedni miesiąc"><b>&laquo;</b></span></td><td align="center"> ' + _MN[dispDate.getMonth()]  +  '</td><td width="10" align="center"<span style="cursor:pointer;" onclick="makeCalendar(' + year  + ',' + (month +1) + ',' + 1 + ')" title="następny miesiąc"><b>&raquo;</b></span></td></table></td></tr>';
	t+='<tr>';
	for (i=0; i<7; i++) {
		t+= '<td align=center class="t">' + _SDN[i+1] + '</td>';
	}
	d=0;
	t+='</tr>';
	for (i=istart;i<iend;i++) {
		if (i%7==0) {t+='<tr>';};
		if (i>=(firstDayOfMonth-1) && d<daysInMonth) {
			d+=1;
			tdstyle='';
			tdOverStyle= '#ff6666';
			tdOutStyle='';
			if (((initDay==d) && (initMonth==month) && (initYear==year))) {
				tdstyle='background-color:#ff9900;';
				tdOverStyle= '#ccff00';
				tdOutStyle='#ff9900';
			};
			if (((nowDate.getDate()==d) && (nowDate.getMonth()==month) && (nowDate.getFullYear()==year))) {
				tdstyle='background-color:#ff9900;';
				tdOverStyle= '#ccff00';
				tdOutStyle='#ff9900';
			};
			t+='<td style="text-align:center;' + tdstyle + '" onmouseover="setStyle(this,\'' + tdOverStyle + '\',\'\',\'pointer\');" onmouseout="setStyle(this,\'' + tdOutStyle + '\',\'\',\'\');"';
			t+=' onclick="setValue(\'' + targetObj + '\',\'' + year + '-' + (month+1) + '-' + d + '\')"';
			t+='>' + d + '</td>';	
		}
		else {
			t+='<td>&nbsp;</td>';	
		}
	
	}
	
	
	t+='</tr>';
	
	t+='</table>'
	calDiv.innerHTML = t;
	calendarStarted = true;
}
function setStyle(obj,bgcolor,fcolor,cusorType) {
	obj.style.backgroundColor = bgcolor;
	obj.style.color = fcolor;	
	obj.style.cursor = cusorType;	
}
function setValue(objId, val) {
	var obj = document.getElementById(objId);
	obj.value = val;	
	hideCalendar();
}
function startCalendar(btnObj,objId) {
	var obj = document.getElementById(objId);
	var calObj = document.getElementById('calendar');
	var dateObj;
	
	if (calendarStarted) {
		hideCalendar();
	}
	else {
		//ustalenie pozycji kalendarza
		calObj.style.left = getLeft(btnObj) + 53;
		calObj.style.top = getTop(btnObj);
		targetObj = objId;
		var initDate = convertDate(obj.value);
		initYear = initDate.getFullYear();
		initMonth = initDate.getMonth();
		initDay = initDate.getDate();
		makeCalendar(initYear,initMonth,initDay);
	}
};
function hideCalendar() {
	var calDiv = document.getElementById('calendar');
	calDiv.style.display = 'none';
	calDiv.innerHTML = '';
	calendarStarted = false;
};

function convertDate(sDate) { // yyyy(/-.)m[m](/-.)d[d](/-.)   m[m]/d[d]/yyyy format
	var r = /^(\d{4})[-\.\\](\d\d?)[-\.\\](\d\d?)$/
	re = new RegExp(r) 
	var test = re.test(sDate);
	if (test) { 
		var match = sDate.match(r);
		var yr = Number(match[1]);
		var mt = Number(match[2]);
		var da = Number(match[3]);
		var d = new Date(yr,mt-1,da);
		if (d.getFullYear() == yr && d.getMonth()+1 == mt && d.getDate() == da) {
			return d;	
		};
	}
	return new Date();
};
function getLeft(Obj){
	var CurrObj=Obj;
	var wynik=0;
	while(CurrObj.tagName!="BODY"){
		wynik+=CurrObj.offsetLeft; CurrObj=CurrObj.offsetParent;}
	return wynik;}
function getTop(Obj){
	var CurrObj=Obj;
	var wynik=0;
	var tags=""
	while(CurrObj.tagName!="BODY"){
		wynik+=CurrObj.offsetTop;
		CurrObj=CurrObj.offsetParent;
	};
	return wynik;}
function initCalendar() {
	document.writeln ('<div id="calendar" style="position:absolute; display:none; left:100px; right:100px; top:250px;"></div>');
	var currDate = new Date()
	//startCalendar('datestring',currDate.getFullYear(),currDate.getMonth(), currDate.getDate());
};
