var dzis, pierwszy;

var miesiace = ['Styczeń', 'Luty', 'Marzec', 'Kwieceń', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'];
var ile_dni = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var dni = ['Pd','Wt','Śr','Cz','Pt','So','Nd'];

function SAOLCalendar(y,m,d,ys,ms,ds)
{
	this.opn_id = '';
	this.ins_id = '';

	dzis = new Date();

	d_rok = dzis.getFullYear();
	d_mc = dzis.getMonth();
	d_dzien = dzis.getDate();

	data = new Date();

	this.rok = (isNaN(y) || y == null) ? data.getFullYear() : parseInt(y);
	this.mc = (isNaN(m) || m == null) ? data.getMonth() : parseInt(m);
	this.dzien = (isNaN(d) || d == null) ? data.getDate() :parseInt(d);

	this.ys = (isNaN(y) || y == null) ? -1 : parseInt(ys);
	this.ms = (isNaN(m) || m == null) ? -1 : parseInt(ms);
	this.ds = (isNaN(d) || d == null) ? -1 :parseInt(ds);

	if(this.ys > 0 && this.ms > 0 && this.ds > 0)
		this.ss = 1;

	if(this.rok % 4 == 0)
		ile_dni[1] = 29;

	if(this.mc < 0)
	{
		this.mc = 12 + this.mc;
		this.rok = this.rok - 1;
	}
	else if(this.mc > 11)
	{
		this.mc = this.mc-12;
		this.rok = this.rok + 1;
	}

	data = new Date(this.rok, this.mc, this.dzien);

	pierwszy = new Date(this.rok, this.mc, 1);

	this.html = '';

	this.WeekNr = WeekNr;
	this.MakeCalendar = MakeCalendar;
}

function WeekNr()
{
	var tydzien = 0;
	var suma_dni = 0;

	for(var i = 0; i < this.mc; i++)
	{
		suma_dni += ile_dni[i];
	}

	return [Math.round(suma_dni / 7)];
}

function HideAll()
{
	if(document.getElementById('KalendarzCont'))
		document.getElementsByTagName('body')[0].removeChild(document.getElementById('KalendarzCont'));
	if(document.getElementById('MenuMR'))
		document.getElementsByTagName('body')[0].removeChild(document.getElementById('MenuMR'));
}

function MakeCalendar()
{
	if(document.getElementById('KalendarzCont'))
		document.getElementById('cal').removeChild(document.getElementById('KalendarzCont'));

	var nr_tygodnia = this.WeekNr();
	if(pierwszy.getDay() == 0)
		var pierwszy_mc = 7;
	else
		var pierwszy_mc = pierwszy.getDay();



	/* Nagłówek */
	var header = document.createElement('div');
	header = setStyleAttribute(header, 'background-image: url(site/interface/bg_kalendarz_top.jpg); text-align: center; font: bold 8pt Tahoma; color: #333333; width: 200px; padding: 2px 0px;');

	var rok_wstecz = document.createElement('input');
	rok_wstecz.setAttribute('type','button');
	rok_wstecz.setAttribute('value','««');
	rok_wstecz.setAttribute('id','rok_wstecz');
	rok_wstecz = setStyleAttribute(rok_wstecz, 'background-color: transparent; border: 0px solid transparent; height: 16px; font-size: 7pt; width: 20px;');
	rok_wstecz = setJSEvent(rok_wstecz,'click', 'Kalendarz(\''+this.opn_id+'\',\''+this.ins_id+'\','+(this.rok-1)+','+(this.mc)+', null);');
	rok_wstecz = setJSEvent(rok_wstecz,'mouseover', 'document.getElementById(\'rok_wstecz\').style.backgroundColor = \'#E3EAF0\'; document.getElementById(\'rok_wstecz\').style.cursor=\'pointer\';');
	rok_wstecz = setJSEvent(rok_wstecz,'mouseout', 'document.getElementById(\'rok_wstecz\').style.backgroundColor = \'#FFFFFF\';');

	var wstecz = document.createElement('input');
	wstecz.setAttribute('type','button');
	wstecz.setAttribute('value','«');
	wstecz.setAttribute('id','wstecz');
	wstecz = setStyleAttribute(wstecz, 'background-color: transparent; border: 0px solid transparent; height: 16px; font-size: 7pt; width: 20px;');
	wstecz = setJSEvent(wstecz,'click', 'Kalendarz(\''+this.opn_id+'\',\''+this.ins_id+'\','+(this.rok)+','+(this.mc-1)+', null);');
	wstecz = setJSEvent(wstecz,'mouseover', 'document.getElementById(\'wstecz\').style.backgroundColor = \'#E3EAF0\'; document.getElementById(\'wstecz\').style.cursor=\'pointer\';');
	wstecz = setJSEvent(wstecz,'mouseout', 'document.getElementById(\'wstecz\').style.backgroundColor = \'#FFFFFF\';');

	var info = document.createElement('input');
	info.setAttribute('type','button');
	info.setAttribute('value', miesiace[this.mc]+' '+this.rok);
	info.setAttribute('id','saolcal_info');
	info = setStyleAttribute(info, 'width: 100px; background-color: transparent; border: 0px solid transparent; height: 16px; font: bold 8pt Tahoma; ');
	info = setJSEvent(info,'click', 'ShowMenuMR(\''+this.opn_id+'\',\''+this.ins_id+'\',document.getElementById(\'saolcal_info\'), '+this.rok+','+this.mc+');');
	info = setJSEvent(info,'mouseover', 'document.getElementById(\'saolcal_info\').style.backgroundColor = \'#E3EAF0\'; document.getElementById(\'saolcal_info\').style.cursor=\'pointer\';');
	info = setJSEvent(info,'mouseout', 'document.getElementById(\'saolcal_info\').style.backgroundColor = \'#FFFFFF\';');

	var przod = document.createElement('input');
	przod.setAttribute('type','button');
	przod.setAttribute('value','»');
	przod.setAttribute('id','przod');
	przod = setStyleAttribute(przod, 'background-color: transparent; border: 0px solid transparent; height: 16px; font-size: 7pt; width: 20px;');
	przod = setJSEvent(przod,'click', 'Kalendarz(\''+this.opn_id+'\',\''+this.ins_id+'\','+(this.rok)+','+(this.mc+1)+', null);');
	przod = setJSEvent(przod,'mouseover', 'document.getElementById(\'przod\').style.backgroundColor = \'#E3EAF0\'; document.getElementById(\'przod\').style.cursor=\'pointer\';');
	przod = setJSEvent(przod,'mouseout', 'document.getElementById(\'przod\').style.backgroundColor = \'#FFFFFF\';');

	var rok_przod = document.createElement('input');
	rok_przod.setAttribute('type','button');
	rok_przod.setAttribute('value','»»');
	rok_przod.setAttribute('id','rok_przod');
	rok_przod = setStyleAttribute(rok_przod, 'background-color: transparent; border: 0px solid transparent; height: 16px; font-size: 7pt; width: 20px;');
	rok_przod = setJSEvent(rok_przod,'click', 'Kalendarz(\''+this.opn_id+'\',\''+this.ins_id+'\','+(this.rok+1)+','+(this.mc)+', null);');
	rok_przod = setJSEvent(rok_przod,'mouseover', 'document.getElementById(\'rok_przod\').style.backgroundColor = \'#E3EAF0\'; document.getElementById(\'rok_przod\').style.cursor=\'pointer\';');
	rok_przod = setJSEvent(rok_przod,'mouseout', 'document.getElementById(\'rok_przod\').style.backgroundColor = \'#FFFFFF\';');

	header.appendChild(rok_wstecz);
	header.appendChild(wstecz);
	header.appendChild(info);
	header.appendChild(przod);
	header.appendChild(rok_przod);

	/* Kalendarz */
	var kcont = document.createElement('div');
	kcont = setStyleAttribute(kcont, 'font: normal 8pt Tahoma; color: white; width: 196px;');

	var tableX = document.createElement('table');
	tableX = setStyleAttribute(tableX, 'width: 100%;');
	tableX.setAttribute('id','Kalendarz');
	tableX.setAttribute('cellSpacing','0');
	tableX.setAttribute('cellPadding','0');
	tableX.setAttribute('border','0');

	var tblBody = document.createElement("tbody");

	var trX = document.createElement('tr');

	/*var tdX = document.createElement('td');
	tdX = setStyleAttribute(tdX, 'border-bottom: 1px solid #666666; background-color: #ECECEC; height: 14px; color: #666666; width: 28px; font: normal 7pt Tahoma; text-align: center;');

	var tdXtxt = document.createTextNode('Nr t.');
	tdX.appendChild(tdXtxt);

	trX.appendChild(tdX);*/

	for(var i = 0; i < 7; i++)
	{
		var tdX = document.createElement('td');
		tdX = setStyleAttribute(tdX, 'border-bottom: 1px solid #666666; background-color: #F5F5F5; height: 14px; color: #666666; width: 24px; font: normal 7pt Tahoma; text-align: center;');

		var tdXtxt = document.createTextNode(dni[i]);
		tdX.appendChild(tdXtxt);

		trX.appendChild(tdX);
	}

	tblBody.appendChild(trX);

	var trX = document.createElement('tr');

	var tdX = document.createElement('td');
	tdX.setAttribute('colSpan', '7');

	trX.appendChild(tdX);
	tblBody.appendChild(trX);

	var d = 0;
	var color = '#333333';

	while(d < ile_dni[this.mc])
	{
		var trX = document.createElement('tr');

		/*var tdX = document.createElement('td');
		tdX = setStyleAttribute(tdX, 'border: 1px solid #F7F7F7; color: #AAAAAA; background-color: #F7F7F7; border-right: 1px solid #F5F5F5; width: 28px; height: 20px; max-width: 18px; max-height: 24px; font: normal 7pt Tahoma; text-align: center;');

		var tdXtxt = document.createTextNode(++nr_tygodnia);
		tdX.appendChild(tdXtxt);

		trX.appendChild(tdX);*/

		for(i = 1; i < 8; i++)
		{
			if(i < 6)
				color = '#666666';
			else if(i == 6)
				color = '#3B9041';
			else
				color = '#C44848';

			if(d + 1 == dzis.getDate() && this.mc == dzis.getMonth() && this.rok == dzis.getFullYear())
			{
				var tdX = document.createElement('td');
				tdX = setStyleAttribute(tdX, 'border: 1px solid white; color: '+color+'; width: 24px; height: 20px; max-width: 14px; max-height: 24px; background-color: #A5DAA0; border: 1px solid #7AA871; font: bold 8pt Tahoma; text-align: center;');
				tdX.setAttribute('id',i+'_'+d);
				tdX = setJSEvent(tdX,'mouseover', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#21CE11\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #188E01\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'pointer\';');
				tdX = setJSEvent(tdX,'mouseout', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#A5DAA0\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #7AA871\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'default\';');
				//tdX = setJSEvent(tdX,'click', 'document.getElementById(\''+this.ins_id+'\').value = "'+(d+1)+'.'+(this.mc+1)+'.'+this.rok+'"; HideAll();');

				var tdXtxt = document.createTextNode(++d);
				tdX.appendChild(tdXtxt);
			}
			else if(d + 1 == this.ds && this.mc == this.ms && this.rok == this.ys && this.ss == 1)
			{
				var tdX = document.createElement('td');
				tdX = setStyleAttribute(tdX, 'border: 1px solid white; color: #333333; width: 24px; height: 20px; max-width: 14px; max-height: 24px; background-color: #FFCCCC; border: 1px solid #FF6666; font: bold 8pt Tahoma; text-align: center;');
				tdX.setAttribute('id',i+'_'+d);
				tdX = setJSEvent(tdX,'mouseover', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#FF0000\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #CC0000\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'pointer\';');
				tdX = setJSEvent(tdX,'mouseout', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#FFCCCC\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #FF6666\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'default\';');
				//tdX = setJSEvent(tdX,'click', 'document.getElementById(\''+this.ins_id+'\').value = "'+(d+1)+'.'+(this.mc+1)+'.'+this.rok+'"; HideAll();');

				var tdXtxt = document.createTextNode(++d);
				tdX.appendChild(tdXtxt);
			}
			else
			{

				if(d == 0 && i < pierwszy_mc)
				{
					var tdX = document.createElement('td');
					tdX = setStyleAttribute(tdX, 'border: 1px solid #F2F3F7; color: #CCCCCC; width: 24px; height: 20px; max-width: 14px; max-height: 24px; font: normal 8pt Tahoma; text-align: center;');
					tdX.setAttribute('id',i+'_'+d);
					tdX = setJSEvent(tdX,'mouseover', 'document.getElementById(\''+i+'_'+d+'\').style.cursor=\'no-drop\';');
					tdX = setJSEvent(tdX,'mouseout', 'document.getElementById(\''+i+'_'+d+'\').style.cursor=\'default\';');

					if(pierwszy.getMonth() > 0)
						var tdXtxt = document.createTextNode(ile_dni[pierwszy.getMonth()-1] - pierwszy_mc + i + 1);
					else
						var tdXtxt = document.createTextNode(ile_dni[12-1] - pierwszy_mc + i + 1);

					tdX.appendChild(tdXtxt);
				}
				else
				{
					var tdX = document.createElement('td');
					tdX = setStyleAttribute(tdX, 'border: 1px solid #F2F3F7; color: '+color+'; width: 24px; height: 20px; max-width: 14px; max-height: 24px; font: bold 8pt Tahoma; text-align: center;');
					tdX.setAttribute('id',i+'_'+d);

					tdX = setJSEvent(tdX,'mouseover', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#B5C9D6\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #7191A8\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'pointer\';');
					tdX = setJSEvent(tdX,'mouseout', 'document.getElementById(\''+i+'_'+d+'\').style.backgroundColor = \'#F2F3F7\'; document.getElementById(\''+i+'_'+d+'\').style.border = \'1px solid #F2F3F7\'; document.getElementById(\''+i+'_'+d+'\').style.cursor=\'default\';');
					//tdX = setJSEvent(tdX,'click', 'document.getElementById(\''+this.ins_id+'\').value = "'+(d+1)+'.'+(this.mc+1)+'.'+this.rok+'"; HideAll();');

					var tdXtxt = document.createTextNode(++d);
					tdX.appendChild(tdXtxt);
				}
			}

			trX.appendChild(tdX);

			if(d == ile_dni[data.getMonth()])
				break;

		}

		if(d == ile_dni[data.getMonth()])
		{
			for(var f = i+1; f <8; f++)
			{
				var tdX = document.createElement('td');
				tdX = setStyleAttribute(tdX, 'border: 1px solid #F2F3F7; color: #CCCCCC; width: 24px; height: 20px; max-width: 14px; max-height: 24px; font: normal 8pt Tahoma; text-align: center;');
				tdX.setAttribute('id','a_'+f);
				tdX = setJSEvent(tdX,'mouseover', 'document.getElementById(\'a_'+f+'\').style.cursor=\'no-drop\';');
				tdX = setJSEvent(tdX,'mouseout', 'document.getElementById(\'a_'+f+'\').style.cursor=\'default\';');

				var tdXtxt = document.createTextNode(f-i);
				tdX.appendChild(tdXtxt);

				trX.appendChild(tdX);
			}

		}

		tblBody.appendChild(trX);

		var trX = document.createElement('tr');

		var tdX = document.createElement('td');
		tdX.setAttribute('colSpan', 8);
		tdX = setStyleAttribute(tdX, 'background-color: #F5F5F5');

		trX.appendChild(tdX);
		tblBody.appendChild(trX);
	}

		tableX.appendChild(tblBody);

	kcont.appendChild(tableX);

	var kc = document.createElement('div');

	//pos = SAOLGetPosition(document.getElementById(this.opn_id));

	kc.setAttribute('id', 'KalendarzCont');
	kc = setStyleAttribute(kc, "background-color: #F2F3F7; margin: 0px auto 3px auto;");

	kc.appendChild(header);
	kc.appendChild(kcont);

	var imgB = document.createElement('img');
	imgB.setAttribute('src','site/interface/bg_kalendarz_bottom.jpg');

	kc.appendChild(imgB);

	document.getElementById('cal').appendChild(kc);
}

function SAOLGetPosition(handler)
{
	var h_left = h_curtop = 0;
	if (handler.offsetParent)
	{
		h_left = handler.offsetLeft;
		h_top = handler.offsetTop;
		while (handler = handler.offsetParent)
		{
			h_left += handler.offsetLeft;
			h_top += handler.offsetTop;
		}
	}
	return [h_left,h_top];
}

function setStyleAttribute(handler, val)
{
	try
	{
		handler.style.setAttribute('cssText', val);
	}
	catch(e)
	{
		handler.setAttribute('style', val);
	}

	return handler;
}

function setJSEvent(handler,type,val)
{
	try
	{
		handler.attachEvent("on"+type, function(f) { eval(val); })
	}
	catch(e)
	{
		handler.addEventListener(type, function(f) { eval(val); }, false);
	}

	return handler;
}

function ShowMenuMR(oid, iid, handler, r, m)
{
	position = SAOLGetPosition(handler);

	rok = (isNaN(r) || r == null) ? data.getFullYear() : parseInt(r);
	mc = (isNaN(m) || m == null) ? data.getFullYear() : parseInt(m);

	var cont = document.createElement('DIV');
	cont.setAttribute('id','MenuMR');

	cont = setStyleAttribute(cont, 'position: absolute; z-index: 100; top: '+(position[1])+'px; left: '+(position[0]-45)+'px; background-color: #FFFFFF; width: 194px; text-align: center;');

	var selectM = document.createElement('select');
	selectM = setStyleAttribute(selectM, 'font: normal 7pt Tahoma');
	selectM.setAttribute("id", "msc");

	for(var m in miesiace)
	{
		cur = document.createElement('option');
		cur.setAttribute("value", m);
		curT = document.createTextNode(miesiace[m]);

		if(mc == m)
			cur.setAttribute("selected",'true');

		cur.appendChild(curT);
		selectM.appendChild(cur);
	}

	cont.appendChild(selectM);

	var selectY = document.createElement('select');
	selectY = setStyleAttribute(selectY, 'font: normal 7pt Tahoma');
	selectY.setAttribute("id", "rok");

	for(var i = dzis.getFullYear()-100; i < dzis.getFullYear()+100; i++)
	{
		cur = document.createElement('option');
		cur.setAttribute("value", i);
		curT = document.createTextNode(i);

		if(rok == i)
			cur.setAttribute("selected",'true');

		cur.appendChild(curT);
		selectY.appendChild(cur);
	}

	cont.appendChild(selectY);

	var btn_ok = document.createElement('input');
	btn_ok.setAttribute('type','button');
	btn_ok.setAttribute('value',' OK ');
	btn_ok.setAttribute('id','btn_ok');
	btn_ok = setStyleAttribute(btn_ok, 'background-color: #FFFFFF; height: 18px; font: normal 7pt Tahoma; width: 24px; border: 1px solid #FFFFFF;');
	btn_ok = setJSEvent(btn_ok,'click', 'Kalendarz(\''+oid+'\',\''+iid+'\', document.getElementById(\'rok\').options[document.getElementById(\'rok\').options.selectedIndex].value, document.getElementById(\'msc\').options[document.getElementById(\'msc\').options.selectedIndex].value,null,1); HideMenuMR();');
	btn_ok = setJSEvent(btn_ok,'mouseover', 'document.getElementById(\'btn_ok\').style.backgroundColor = \'#B5C9D6\'; document.getElementById(\'btn_ok\').style.cursor=\'pointer\';');
	btn_ok = setJSEvent(btn_ok,'mouseout', 'document.getElementById(\'btn_ok\').style.backgroundColor = \'#FFFFFF\';');

	cont.appendChild(btn_ok);

	document.getElementsByTagName('body')[0].appendChild(cont);
}

function HideMenuMR(handler)
{
	document.getElementsByTagName('body')[0].removeChild(document.getElementById('MenuMR'));
}

function Kalendarz(oid,iid,y,m,d)
{
	if(y == null && m  == null && d  == null)
	{
		var ddp = new String(document.getElementById(iid).value);
		var pl = ddp.split(".");
		var kalen = new SAOLCalendar(parseInt(pl[2]),parseInt(pl[1])-1,parseInt(pl[0]), parseInt(pl[2]),parseInt(pl[1])-1,parseInt(pl[0]));

		kalen.ins_id = iid;
		kalen.opn_id = oid;

		kalen.MakeCalendar();
		return;
	}

	var kalen = new SAOLCalendar(y,m,d);

	kalen.ins_id = iid;
	kalen.opn_id = oid;

	kalen.MakeCalendar();

}

