// =========================================================
// ============== Klasy i funkcje kalendarza ===============
// =========================================================
// ===========================================================================================
/*
	idea główna 
	sprawdzać czy obiekt kalenadrza jest już zbudowany 
	
	budowąc ukryty i pokazać po zbudowaniu 
	jak nie to pokazać i wypełnić zawarotścią
	jak jest pokazany 
	to zmienić x i y oraz obiekt gdzie ma zwrócić wartość 
	
	po wybraniu dnia wyszczyścić obiekt i ukryuć go
	po wybraniu innego miesiąća albo roku przebudować kalendarz 
	ustalić style kalendarza od początku 

		function AddLink()
		{
			var links = new Array('http://dupa.pl', 'http://php.pl');	
			var container = document.getElementById('container');	
			for (var i = 0; i < links.length; i++)
			{
				var link = document.createElement('a');
				link.setAttribute('href', links[i]);
				link.innerHTML = links[i];
				container.appendChild(link);
			}
		}

*/
var Dzien;
var Miesiac;
var Rok;

// zmienne przechowujące oryginalne dane
var Day;
var Month;
var Year;

var OutputObjectName;
var CalDivObj;
var MonthName = new Array();
var DayName = new Array();
var ie = (document.getElementById && document.all);
var ns = (document.getElementById && !document.all);
// ===========================================================================================
function GetCalendar(ObjectName,Zdarzenie)
{
	Object = document.getElementById(ObjectName);
	OutputObjectName = ObjectName;
	//alert (Object.value);
	
	Data = Object.value;
	
	if (Data != "")
	{
		// data jest w formacie YYYY-MM-DD
		Day = Data.substring(8,10);
		Month = Data.substring(5,7);
		Year = Data.substring(0,4);		
	}
	else
	{
		Now = new Date();
		Day = Now.getDate();
		Day = "0" + Day;				
		Day = Day.substring(Day.length - 2,Day.length);
		
		
		Month = Now.getMonth() + 1;
		Month = "0" + Month;
		Month = Month.substring(Month.length - 2,Month.length);
		
		Year = Now.getYear() ;
		// różnice pomiędzy IE a FF 
		if(Year < 1901)
		{
			Year = Year + 1900;
		}	
		//alert(Day+"-"+ Month + "-"+Year); 
		
	}
	Dzien = Day;
	Miesiac = Month;
	Rok = Year;	
	CreateCalendarObject();
	CalendarBody(Zdarzenie);
	
}

// ===========================================================================================
function CreateCalendarObject()
{
	DayName[1] = "PN";
	DayName[2] = "WT";
	DayName[3] = "ŚR";
	DayName[4] = "CZ";
	DayName[5] = "PT";	
	DayName[6] = "SO";	
	DayName[7] = "NI";
	
	
	MonthName[0] = "Styczeń";
	MonthName[1] = "Luty";
	MonthName[2] = "Marzec";
	MonthName[3] = "Kwiecień";
	MonthName[4] = "Maj";
	MonthName[5] = "Czerwiec";
	MonthName[6] = "Lipiec";
	MonthName[7] = "Sierpień";
	MonthName[8] = "Wrzesień";
	MonthName[9] = "Październik";
	MonthName[10] = "Listopad";
	MonthName[11] = "Grudzień";
	
	
	CalDivObj = document.getElementById("Calendar");
	if (!CalDivObj)	
	{
		CalDivObj = document.createElement('div');	
		CalDivObj.setAttribute("id","Calendar");	
		CalDivObj.className = "ukryte";
		BodyObj = document.getElementsByTagName("body");
		BodyObj[0].appendChild(CalDivObj);		
	}	
	
}
// ===========================================================================================
function CalendarBody(Zdarzenie)
{
	
	//alert(Zdarzenie.clientY);
	CalDivObj.innerHTML = CalendarGetZawartosc();
	CalDivObj.className = "widoczne";
	//alert(Zdarzenie.pageY);
	
	//X = ev.clientX + (document.documentElement.scrollLeft ||
	//document.body.scrollLeft)- (CalDivObj.offsetWidth /2 );
	
	
	//Y = ev.clientY + (document.documentElement.scrollTop ||
	//document.body.scrollTop)
	
	//alert(Y);
	//Y = Zdarzenie.pageY;	
	//X = Zdarzenie.pageX - (CalDivObj.offsetWidth /2 );
		
	
	if (ie)
	{
		X = Zdarzenie.clientX + document.documentElement.scrollLeft;
		X = X - (CalDivObj.offsetWidth /2 );
		Y = Zdarzenie.clientY + document.documentElement.scrollTop;
		CalDivObj.style.top = Y;
		CalDivObj.style.left = X;
	}
	else
	{
		Y = Zdarzenie.pageY;	
		X = Zdarzenie.pageX - (CalDivObj.offsetWidth /2 );
		CalDivObj.setAttribute("style","top:"+Y+"px;left:"+X+"px;");
	}
}

// ===========================================================================================
function CalendarGetZawartosc()
{

	
	retval = "<table id='CalTable'>";
	
	
	D = parseFloat(Dzien);
	M = parseFloat(Miesiac) - 1 ;
	Y = parseFloat(Rok);	
	
	//alert (MonthName[parseFloat(Miesiac)]);
	retval += "<tr>";
	retval += "<td colspan=5 class='MonthName'><p title='Kliknij tutaj aby zmienić miesiąc' class='CalDescActiv' OnClick='ChangeMonth(event)'>"+MonthName[M]+"</p></td>";
	retval += "<td colspan=2 class=YearName'><p title='Kliknij tutaj aby zmienić rok' class='CalDescActiv' OnClick='ChangeYear(event)'>"+Y+"</p></td>";
	retval += "</tr>";
	
	retval += "<tr>";
	for(a=1;a<8;a++)
	{
		retval += "<td class='CalDayName'><p class='CalDayName'>" + DayName[a] + "</p></td>";
	}	
	retval += "</tr>";
	
	//retval += "<tr>";
	//retval += "<td colspan=7 >" + Rok + "-" + Miesiac + "-" + Dzien + "</td>";
	//retval += "</tr>";
	
	
	Di = 1;
	for(a=1;a<7;a++)
	{
		// tygodnie 
		retval += "<tr>";
		for(b=1;b<8;b++)
		{
			// =========== dni tygodnia
			tmp = new Date(Y,M,Di);  // new Date(rok, miesiąc, dzień
			
			tmpDayNumber = tmp.getDay();
			//alert (tmpDayNumber + " === " +tmp);
			
			Dr = tmp.getDate();
			if (tmpDayNumber == 0)
			{
				 tmpDayNumber = 7;
			}
			if (tmpDayNumber == b && tmp.getMonth() == M)
			{
				
				Ma = M + 1;
				Ma = "0" + Ma;
				Ma = Ma.substring(Ma.length - 2,Ma.length); 
				
				Da = Dr;
				Da = "0" + Da;				
				Da = Da.substring(Da.length - 2,Da.length);
				
				// pokazanie ładnego dnia wybranego wcześniej
				
				classRamka = "";
				if (Year == Rok && Month == Ma && Day == Da)
				{
					classRamka = "CalWyroz";
				}
				
				action = "OnClick='CalSetDate(\"" + Y + "-" + Ma + "-" +Da + "\")'";
				// malowanie właściwego dnia
				if (b == 6)				{
				
					// sobota 
					retval += "<td class='CalDaySobota "+classRamka+"'><p  class='CalDaySobota' " + action + " >" + Dr + "</p></td>";
				}
				else if(b == 7)
				{
					// niedziela
					retval += "<td class='CalDayNiedziela "+classRamka+"'><p class='CalDayNiedziela' " + action + " >" + Dr + "</p></td>";
				}
				else
				{
					// dzien powszedni
					retval += "<td class='CalDayPowszedni "+classRamka+"'><p class='CalDayPowszedni' " + action + " >" + Dr + "</p></td>";
				}
				Di++; // kolejny dzień 
			}
			else 
			{
				// malowanie pustego pola 
				retval += "<td class='CalDayEmpty'><p class='CalDayEmpty'  ></p></td>";
			}
			
		}
		
		retval += "</tr>";
	}	
	
	retval += "</table>";
	return retval;
}
// ===========================================================================================
function CalSetDate(Dzien)
{
	Object = document.getElementById(OutputObjectName);
	Object.value = Dzien;
	Object.className = "tab";	
	CalDivObj.className = "ukryte";
	BodyObj = document.getElementsByTagName("body");
	BodyObj[0].removeChild(CalDivObj);
}
// ===========================================================================================
function ChangeMonth(Zdarzenie)
{
	MonthsObj = document.getElementById("CalMonths");
	if (!MonthsObj)	
	{
		MonthsObj = document.createElement('div');	
		MonthsObj.setAttribute("id","CalMonths");	
		MonthsObj.className = "ukryte";
		BodyObj = document.getElementsByTagName("body");
		BodyObj[0].appendChild(MonthsObj);
	}
	retval = "<table>";
	for(a=1;a<13;a++)
	{
		if (a == Miesiac)
			retval += "<tr><td class='MonthName'><p class='CalDescActiv' OnClick='CalSetMonth("+a+")'><span class='CalWyroz'>"+MonthName[a-1]+"</span></p></td></tr>";
		else
			retval += "<tr><td class='MonthName'><p class='CalDescActiv' OnClick='CalSetMonth("+a+")'>"+MonthName[a-1]+"</p></td></tr>";
	}
	retval += "</table>";
	
	MonthsObj.innerHTML = retval;	
	MonthsObj.className = "widoczne";
			
	if (ie)
	{
		X = Zdarzenie.clientX + document.documentElement.scrollLeft;
		X = X - (MonthsObj.offsetWidth /2 );
		Y = Zdarzenie.clientY + document.documentElement.scrollTop;
		MonthsObj.style.top = Y;
		MonthsObj.style.left = X;
	}
	else
	{
		Y = Zdarzenie.pageY;	
		X = Zdarzenie.pageX - (MonthsObj.offsetWidth /2 );
		MonthsObj.setAttribute("style","top:"+Y+"px;left:"+X+"px;");
	}
	
}
// ===========================================================================================
function CalSetMonth(v_Miesiac)
{
	Miesiac = v_Miesiac;	
	MonthsObj = document.getElementById("CalMonths");
	BodyObj = document.getElementsByTagName("body");
	BodyObj[0].removeChild(MonthsObj);
	CalDivObj.innerHTML = CalendarGetZawartosc();
	
}
// ===========================================================================================
function ChangeYear(Zdarzenie)
{
	YearsObj = document.getElementById("CalYears");
	if (!YearsObj)	
	{
		YearsObj = document.createElement('div');	
		YearsObj.setAttribute("id","CalYears");	
		YearsObj.className = "ukryte";
		BodyObj = document.getElementsByTagName("body");
		BodyObj[0].appendChild(YearsObj);
	}
	retval = "<table>";
	for(a=2005;a<2025;a+=5)
	{
		
		retval += "<tr>";
		for(b=0;b<5;b++)
		{
			v_rok = a + b;
			if (v_rok == Rok)
			{ 
				wyr1 = "<span class='CalWyroz'>";
				wyr2 = "</span>";
			}
			else
			{ 
				wyr1 = "";
				wyr2 = "";
			}
						
			if (b/2 == parseInt(b/2))						
				retval += "<td class='YearName ciemna'><p class='CalDescActiv' OnClick='CalSetYear("+v_rok+")'>"+wyr1+v_rok+wyr2+"</p></td>";
			else
				retval += "<td class='YearName '><p class='CalDescActiv' OnClick='CalSetYear("+v_rok+")'>"+wyr1+v_rok+wyr2+"</p></td>";
		}
		
		retval += "</tr>";		
	}
	retval += "</table>";
	
	YearsObj.innerHTML = retval;	
	YearsObj.className = "widoczne";
		
	if (ie)
	{
		X = Zdarzenie.clientX + document.documentElement.scrollLeft;
		X = X - (YearsObj.offsetWidth /2 );
		Y = Zdarzenie.clientY + document.documentElement.scrollTop;
		YearsObj.style.top = Y;
		YearsObj.style.left = X;
	}
	else
	{
		Y = Zdarzenie.pageY;	
		X = Zdarzenie.pageX - (YearsObj.offsetWidth /2 );
		YearsObj.setAttribute("style","top:"+Y+"px;left:"+X+"px;");
	}
	
}
// ===========================================================================================
function CalSetYear(v_Year)
{
	Rok = v_Year;	
	YearsObj = document.getElementById("CalYears");
	BodyObj = document.getElementsByTagName("body");
	BodyObj[0].removeChild(YearsObj);
	CalDivObj.innerHTML = CalendarGetZawartosc();
	
}
// ===========================================================================================
