/* in_array prototype */
Array.prototype.inArray = function(sSearch)
	{
	for (var i = 0; i < this.length; i++)
		if (this[i] === sSearch)
			return i;
	return false;
	}
/* unset prototype*/
Array.prototype.unset = function(iElement)
	{
	for (i = iElement + 1; i < this.length; i++)
		{
		this[i - 1] = this[i];
		}
	this.pop();
	}

/* lista zaznaczonych dni w kalendarzu */
var aZaznaczoneDni = Array();

/**
* funkcja z parametrow generuje date w formacie YYYY-MM-DD
*
* @param Integer Rok
* @param Integer Miesiac
* @param Integer Dzien
*/
function pelnaData(iRok, iMiesiac, iDzien)
	{
	var sData = iRok + '-';
	if (iMiesiac < 10)
		sData+= '0' + iMiesiac;
	else
      sData+= iMiesiac;
	sData+= '-';
	if (iDzien < 10)
		sData+= '0' + iDzien;
	else
		sData+= iDzien;
	return sData;
	}
/**
* funkcja wywolywana w momencie klikniecia na komorke kalendarza
*
* @return
* @param Integer Rok klknietej daty
* @param Integer Miesiac klknietej daty
* @param Integer Dzien klknietej daty
*/
function kalendarzKlik(iRok, iMiesiac, iDzien)
	{
	//przygotowanie zmiennej sData
	sData = pelnaData(iRok, iMiesiac, iDzien);
	//odpowiednie akcje w zaleznosci czy kliknieto w dzien zaznaczony lub niezaznaczony
	if ((iZaznaczonyDzien = aZaznaczoneDni.inArray(sData)) !== false)
		{
		//dzien jest w tablicy - odznaczenie i usuniecie
		aZaznaczoneDni.unset(iZaznaczonyDzien);
		document.getElementById('kalendarz_js_'+iDzien).className = 'cal_day';
		}
   else
		{
		//dnia nie ma w tablicy - zaznaczenie i dopisanie
		aZaznaczoneDni[aZaznaczoneDni.length] = sData;
		aZaznaczoneDni.sort();
      document.getElementById('kalendarz_js_'+iDzien).className = 'cal_day_zaznaczony';
		}
	//wpisanie zawartosci tablicy do formularza
	document.getElementById('daty_wydarzen').value = aZaznaczoneDni;
	}


/**
* funkcja wstawiajaca kalendarz na strone
*
* @param Integer Rok wyswietlanego kalendarza
* @param Integer Miesiac wyswietlanego kalendarza
* @param String Identyfikator elementu, w ktorym ma byc umieszczony kalendarz
*/
function kalendarzJs(iRok, iMiesiac, sElement)
	{
	if (iMiesiac < 1)
		{
		iMiesiac += 12;
		iRok --;
		}
	if (iMiesiac > 12)
		{
		iMiesiac -= 12;
		iRok ++;
		}
	var aMiesiace = new Array(12);
	aMiesiace[0] = 'Styczeń';
	aMiesiace[1] = 'Luty';
	aMiesiace[2] = 'Marzec';
	aMiesiace[3] = 'Kwiecień';
	aMiesiace[4] = 'Maj';
	aMiesiace[5] = 'Czerwiec';
	aMiesiace[6] = 'Lipiec';
	aMiesiace[7] = 'Sierpień';
	aMiesiace[8] = 'Wrzesień';
	aMiesiace[9] = 'Październik';
	aMiesiace[10] = 'Listopad';
	aMiesiace[11] = 'Grudzień';
	iMiesiac = iMiesiac -1;
	oData = new Date();
	oData.setFullYear(iRok);
	oData.setMonth(iMiesiac);
	oData.setDate(1);
	var sHtml;
	sHtml = '<table>';
	sHtml += '<tr><th style="cursor:pointer;" onclick="kalendarzJs('+iRok+','+iMiesiac+', \'' + sElement + '\');">&lt;</th>';
	sHtml += '<th colspan="5">'+aMiesiace[iMiesiac]+' '+iRok+'</th>';
	sHtml += '<th style="cursor:pointer;" onclick="kalendarzJs('+iRok+','+(iMiesiac+2)+', \'' + sElement + '\');">&gt;</th></tr>';
	sHtml += '<tr><th>Pon</th><th>Wt</th><th>Śro</th><th>Czw</th><th>Pią</th><th>Sob</th><th>Nie</th></tr>';
	for (i = 1; i <= 31; i++)
		{
		iDzienTygodnia = oData.getDay();
		if (iDzienTygodnia == 0)
			iDzienTygodnia = 7;
		if (oData.getDate() == i)
			{
			if (i == 1 || iDzienTygodnia == 1)
				sHtml += '<tr>';
			if (i == 1)
			for (j = 1; j < iDzienTygodnia; j++)
				sHtml += '<td></td>';
			sData = pelnaData(iRok, iMiesiac + 1, i);
			if ((aZaznaczoneDni.inArray(sData)) !== false)
            sClass = "cal_day_zaznaczony";
			else
            sClass = "cal_day";
			sHtml += '<td id="kalendarz_js_' + i + '" class="' + sClass + '" onclick="kalendarzKlik(' + iRok + ',' + (iMiesiac + 1) + ',' + i + ')">';
			sHtml += i;
			sHtml += '</td>';
			if (iDzienTygodnia == 7)
				sHtml += '</tr>';
			}
		oData.setDate(oData.getDate() + 1);
		}
	sHtml += '</table>';
	document.getElementById('kalendarz_js').innerHTML = sHtml;
	}
