//Napok és hónapok nevei
var days = new Array('Hétfő','Kedd','Szerda','Csütörtök','Péntek','Szombat','Vasárnap');
var months = new Array('Január','Február','Március','Április','Május','Június','Július','Augusztus','Szeptember','Október','November','December');

function calendar(id, d, events){
	this.id = id;
	this.dateObject = d;
	this.events = events;

	this.write = writeCalendar;
	this.month = d.getMonth();
	this.date = d.getDate();
	this.day = d.getDay();
	this.year = d.getFullYear();
		
	//A hónap első napjának meghatározása
	d.setDate(1);
	this.firstDay = d.getDay();
	
	//Beállítás az aktuális dátumra
	d.setDate(this.date);	
	
	this.current = new Date();
	this.current_year = this.current.getFullYear();
	this.current_month = this.current.getMonth();
	this.current_day = this.current.getDate()-1;
	
}

//A hónap megváltozásakor újra elkészül a naptár az adott hónapra a popupokkal együtt
function changeMonth(mo, cal)
{
	//Új naptár készítése
	cal = eval(cal);
	cal.dateObject.setMonth(cal.dateObject.getMonth() + mo);
	cal = new calendar(cal.id,cal.dateObject, cal.events);

	document.getElementById('esemnynaptar-container').innerHTML = cal.write();
	//PopUp-ok megjelenítése
	showPopUp();
}

//A visszadott dátum formátuma
function makeDate(year, month, day)
{
	var result_date = '';
	
	if ( (month+1) < 10 )
	{
		month = '0' + (month+1); 
	}
	else
	{
		month = month+1; 
	}
	
	if ( (day+1) < 10  )
	{
		day = '0' + (day+1); 
	}
	else
	{
		day = day+1; 
	}
	
	result_date += year + '-' + month + '-' + day;
	
	return result_date;
}

function writeCalendar(){

	//Ha évet is váltani kell
	var year = 0;
	
	if (this.month == 0)
	{
		year = this.year-1;
	}
	else
	{
		year = this.year;
	}
	
	//A mostani és az elmúlt hónap napszámának lekérése
	daysInMonth = 32 - new Date(this.year, this.month, 32).getDate();
	daysInLastMonth = 32 - new Date(year, this.month-1, 32).getDate();
	
	//Az aktuális hónapnak megfelelő naptár elkészítése
	
	var calString = '<div id="esemnynaptar-container">';
	
	//Hónap és lapozó gombok kirakása
	
	calString += '<div id="esemenynaptar-honap">';
	calString += '<div id="esemenynaptar-honap-left"><a name="#" onfocus="blur()" onClick="changeMonth(-1,\'' + this.id + '\')"></a></div>';
	calString += '<div id="esemenynaptar-honap-neve">' + months[this.month] + ', ' + this.year + ' </div>';
	calString += '<div id="esemenynaptar-honap-right"><a name="#" onfocus="blur()" onClick="changeMonth(1,\'' + this.id + '\')"></a></div>';
	calString += '</div>';
	
	//Napok neveinek kiirása
	
	calString += '<div id="esemenynaptar-napok-felirat"></div>';

	calString += '<div id="esemenynaptar-napok">';
	
	//Ha vasárnappal kezdődik a hónap 0 az értéke
	
	//Naptár sorok száma maximum 6 lehet
	var week_row = 6;

	//Ha vasárnap az első nap
	if(this.firstDay == 0)
	{
		
		for ( z=0; z<6; z++ )
		{
			calString += '<div class="esemenynaptar-elmult-nap">' + (daysInLastMonth-this.firstDay+z-5) + '</div>';
		}
		
		var isEvent = false;
		
		for ( j=0; j<this.events.length; j++ )
		{

			if (this.events[j].start_time == makeDate(this.year, this.month, 0 ) )
			{
				isEvent = true;	
			}

		}
		
		if (isEvent)
		{
			
			calString += ' <div id="' + this.id +'selected" class="esemenynaptar-kiemelt-nap">';
			calString += ' <a href="esemenynaptar/' + makeDate(this.year, this.month, 0) + '" onfocus="blur()">1</a>';
			calString += ' <div class="events">';
			calString += ' <ul>';
			
			for ( j=0; j<this.events.length; j++ )
			{

				if (this.events[j].start_time == makeDate(this.year, this.month, 0 ) )
				{

					calString += '<li>';
					calString += '<span class="name">' + this.events[j].title + '</span>';
					calString += '<span class="desc">' + this.events[j].telepules;
					
					if (this.events[j].location)
					{
						calString += ', ' + this.events[j].location;
					}
					  
					if (this.events[j].end_time != '0000-00-00')
					{
						calString += '<br/>' + this.events[j].start_time + ' - ' + this.events[j].end_time;
					}
					
					if (this.events[j].date_text)
					{
						calString += '<br/>' + this.events[j].date_text;
					}
					
					calString += '</span>';
					calString += '</li>';
				}
			}

			calString += ' </ul>';
			calString += ' </div>';
			calString += ' </div>';
				
		}
		else if( makeDate(this.current_year, this.current_month, this.current_day) == makeDate(this.year, this.month, 0 ) )
		{
			calString += ' <div class="esemenynaptar-aktualis-nap">1</div>';		
		}
		else
		{
			calString += '<div class="esemenynaptar-sima-nap">1</div>';
		}
		
		calString += '<div class="clearer"></div>';
		
		week_row = 5;
		
	}
	//Ha hétfővel kezdődik vagy 28 napos a hónap az első sort kitöltjük az elmúlt hónap napjaival - így szebb;)
	else if( (this.firstDay == 1) || (daysInMonth == 28) )
	{
	
		for ( z=0; z<7; z++ )
		{
			calString += '<div class="esemenynaptar-elmult-nap">' + (daysInLastMonth-this.firstDay+z-5) + '</div>';
		}
		
		calString += '<div class="clearer"></div>';
		
		week_row = 5;
		
	}
	
	for(i=0; i<this.firstDay+daysInMonth-1; i++)
	{

		//Ha nem hétfővel kezdődik a hónap kiiratjuk az elmúlt hónap utolsó napjait
		if(i+1<this.firstDay)
		{
			calString += '<div class="esemenynaptar-elmult-nap">' + (daysInLastMonth-this.firstDay+i+2) + '</div>';
		}
		else
		{

			var isEvent = false;
			
			for ( j=0; j<this.events.length; j++ )
			{
				if (this.events[j].start_time == makeDate(this.year, this.month, (i-this.firstDay+1) ) )
				{
					isEvent = true;
				}
			}
			
			//Ha tartozik esemény az adott dátumhoz
			if (isEvent)
			{	
				calString += ' <div id="' + this.id +'selected" class="esemenynaptar-kiemelt-nap">';
				calString += ' <a href="esemenynaptar/' + makeDate(this.year, this.month, (i-this.firstDay+1)) + '" onfocus="blur()">' + ((i-this.firstDay)+2 ) + '</a>';
				calString += ' <div class="events">';
				calString += ' <ul>';
				
				for ( j=0; j<this.events.length; j++ )
				{
		
					//PopUp ablak feltöltése eseményekkel
					if (this.events[j].start_time == makeDate(this.year, this.month, (i-this.firstDay+1) ) )
					{
						
						calString += '<li>';
						calString += '<span class="name">' + this.events[j].title + '</span>';
						calString += '<span class="desc">' + this.events[j].telepules;
						
						if (this.events[j].location)
						{
							calString += ', ' + this.events[j].location;
						}
						  
						if (this.events[j].end_time != '0000-00-00')
						{
							calString += '<br/>' + this.events[j].start_time + ' - ' + this.events[j].end_time;
						}
						
						if (this.events[j].date_text)
						{
							calString += '<br/>' + this.events[j].date_text;
						}
						
						calString += '</span>';
						calString += '</li>';
					}
				}

				calString += ' </ul>';
				calString += ' </div>';
				calString += ' </div>';
				
			}
			else if( makeDate(this.current_year, this.current_month, this.current_day) == makeDate(this.year, this.month, (i-this.firstDay+1) ) )
			{
				calString += ' <div class="esemenynaptar-aktualis-nap">' + ((i-this.firstDay)+2 ) + '</div>';		
			}
			else
			{
				calString += '<div class="esemenynaptar-sima-nap">' + ((i-this.firstDay)+2 ) + '</div>';
			}
		}
		
		//Sorok utánai clearer
		
		if(i%7==6)
		{
			calString += '<div class="clearer"></div>';
		}
		
	}

	//A következő hónap napjainak a kiirása
	
	for (i=0; i<( (week_row*7) - (this.firstDay+daysInMonth-1) ); i++)
	{
		calString += '<div class="esemenynaptar-elmult-nap">' + (i+1) + '</div>';
	}
	
	calString += '<div class="clearer"></div>';
	
	//Napok kiiratásának a lezárása
	
	calString += '</div>';

	//Naptár lezárása
	
	calString += '</div>';
	
	//Kész naptár 
	
	return calString;

}
