window.onload = init; // wywołanie funckji inicjalizującej skrypt

var rok = 2011; // rok końca szkoły
var miesiac = 5 // miesiąc końca szkoły. UWAGA! miesiące liczymy od 0, tj. 0 - styczeń, 1 - luty .. 11 - grudzień
var dzien = 22; // dzień końca szkoły
var div = 'dni' // nazwa diva w którym ma pojawić się informacja

// tablica z godzinami i minutami końca konkretnych lekcji

var konce_lekcji = new Array();
konce_lekcji[0] = {'godz' : 7, 'min': 50};
konce_lekcji[1] = {'godz' : 8, 'min': 45};
konce_lekcji[2] = {'godz' : 9, 'min': 40};
konce_lekcji[3] = {'godz' : 10, 'min': 35};
konce_lekcji[4] = {'godz' : 11, 'min': 40};
konce_lekcji[5] = {'godz' : 12, 'min': 35};
konce_lekcji[6] = {'godz' : 13, 'min': 30};
konce_lekcji[7] = {'godz' : 14, 'min': 25};
konce_lekcji[8] = {'godz' : 15, 'min': 20};
konce_lekcji[9] = {'godz' : 16, 'min': 15};

var tempX;
var tempY;
var tmpMonth;
var tmpYear;
var checkSum = 0 // suma kontrolna sprawdzająca czy jest wyświetlany aktualny miesiąc

//var div = document.getElementById('info');

var IE = (document.all)?true:false

// If NS -- that is, !IE -- then set up for mouse capture
if (!IE) document.captureEvents(Event.MOUSEMOVE);

var kalendarium_adres = 'http://zsp9.pl/index.php?mode=read_page&ppId=kalendarium'; // adres url do podstrony z pełnym kalendarium

function init() {
	czas();
	lekcje();
	printCalendar(0);
}


function czas() {
	var dzisiaj = new Date(); // zmienna przechowująca dzisiejszą datę	
	var koniec = new Date(rok, miesiac, dzien); // data końca szkoły
	
	var pozostalo = koniec.getTime() - dzisiaj.getTime(); // liczymy różnicę obu dat w milisekundach
	pozostalo = pozostalo / 1000 / 60 / 60 / 24 // z milisekund trza wyliczyć dni
	pozostalo = Math.floor(pozostalo) // i wypadaloby to zaokraglic. Zaokraglamy w dol zeby skrypt nie zmienial ilosci pozostalych dni w trakcie bierzacego dnia
	
	// poniżej komunikaty wedle uznania
	
	if (pozostalo > 0)
		{
			var tekst = 'Do końca roku szkolnego pozostało <strong>' + pozostalo + '</strong> dni.';
		}
	else if (pozostalo == -1)
		{
			var tekst = '<strong>Koniec roku jest już dzisiaj!</strong>';
		}
	else if(pozostalo == 0)
		{
			var tekst = 'Koniec roku jest już <strong>jutro</strong>!';
		}
	else
		{
			var tekst = '<strong>WAKACJE!</strong>';
		}
	
	document.getElementById(div).innerHTML = tekst; // przekazanie informacji do odpowiedniego diva
}


function lekcje() {
	var allLi = document.getElementsByTagName('span'); // wszystkie lelementy <span>
	
	for (var i = 0; i < allLi.length; i++)
		{
			if (allLi[i].className == 'lekcje') 
				{
					allLi[i].parentNode.onmouseover = function() {pokaz_info(this.id)}; //przez parentNode odwołujemy się do otaczającego dany <span> <li> i dodajemy funkcję obsługujące zdarzenie po najechaniu myszką
					allLi[i].parentNode.onmouseout = function() {document.getElementById('lekcja'+this.id).innerHTML = ''};
					// po "zdjęciu" myszki z elementu kasujemy wszelkie wyświetlone elementy
				}
		}
	
	//document.getElementById('info').innerHTML = konce_lekcji[0]['godz'] + ':' + konce_lekcji[0]['min']; 
}

function pokaz_info(nr) {
	var teraz = new Date();
	var koniec_lekcji = new Date(teraz.getFullYear(), teraz.getMonth(), teraz.getDate(), konce_lekcji[nr]['godz'], konce_lekcji[nr]['min']); // ustawiamy zmienną czasu na dzisiaj i od razu na koniec lekcji
	
	var pozostalo = koniec_lekcji.getTime() - teraz.getTime(); // obliczamy w milisekundach ile pozostało do końca lekcji
	pozostalo = pozostalo / 1000 / 60; // i zamieniamy to na minuty
	
	// w zależności od tego ile zostało mamy odpowiedni komunikat
	
	if (pozostalo < -10)
		{
			var tekst = 'Lekcja już minęła.';
		}
	else if (pozostalo <= 0)
		{
			var tekst = '<strong>Przerwa!</strong>';
		}
	else
		{
			var tekst = 'Przerwa za '; 
			
			if (pozostalo == 60)
				{
					tekst += '<strong>godzinę</strong>.';
				}
			else if (pozostalo < 60)
				{
					tekst += '<strong>' + Math.floor(pozostalo) + 'min</strong>.'
				}
			else
				{
					var godziny = Math.floor(pozostalo/60); // obliczamy z minut ile godzin jeszcze pozostało
					var minuty = Math.floor(pozostalo) - (godziny * 60); // wyliczamy minuty
					
					tekst += '<strong>' + godziny + 'h ' + minuty + 'min</strong>.';
					
				}
		}
	
	document.getElementById('lekcja'+nr).innerHTML = tekst; // wyświetlamy informacje w odpowiednim <span>
}

function rokPrzestepny(rok)
{
  return ((rok % 4 == 0) && ((rok % 100 != 0) || (rok % 400 == 0)));
}

function wydarzenia(dzien, miesiac, rok)
{  
	for (var i = 0; i < wydarzenia_dni.length; i++)
		{
			var rokWydarzenia = wydarzenia_dni[i]['rok'];
			var miesiacWydarzenia = wydarzenia_dni[i]['miesiac'];
			var dzienWydarzenia = wydarzenia_dni[i]['dzien'];
			
			//var wydarzenie = new Date(rokWydarzenia, miesiacWydarzenia, dzienWydarzenia);
			
			//alert(dzien);
			
			
			//var dzienWydarzenia = wydarzenie.getDate();
			
			if ((dzienWydarzenia == dzien) && (miesiacWydarzenia == miesiac) && (rokWydarzenia == rok))
				return i+1;
			
		}
		
	return false;
	
	
}

function readHappenings()
{
	var allA = document.getElementsByTagName('a');
	
	for (var i = 0; i < allA.length; i++)
		{
			var id = allA[i].id;
			
			switch (id) {
				case 'monthBack' : allA[i].onclick = function() {switchMonth(-1); return false;};
					break;
				case 'monthForward' : allA[i].onclick = function() {switchMonth(1); return false;};
					break;
				case 'curMonth' : allA[i].onclick = function() {switchMonth(0); return false;};
			}	
		}
	
	var allTd = document.getElementsByTagName('td');
	
	for (var i = 0; i < allTd.length; i++)
		{
			var klasa = allTd[i].className;
			
			if (klasa == 'happening')
				{
					allTd[i].onmouseover = getMouseXY;
					allTd[i].onmousemove = getMouseXY;
					allTd[i].onmouseout = hide_info;
					allTd[i].onclick = function () {document.location.href = kalendarium_adres;}
				}
		}
}

function show_info(id)
{
	
	var opis = wydarzenia_dni[id-1]['opis'];
	var div = document.getElementById('info');
	
	div.innerHTML = opis;
	div.style.display = 'block';
	div.style.position = 'absolute';
	//div.style.z-index = 100;
	
	
	div.style.top = tempY - 15 + 'px';
	div.style.left = tempX - 160 + 'px';
	
	
}

function hide_info()
{
	document.getElementById('info').style.display = 'none';
}

function getMouseXY(e) {
	
  
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft;
    tempY = event.clientY + document.body.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX;
    tempY = e.pageY;
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  
  show_info(this.id);
  
  return true
}

function printCalendar(count)
{ 
	
	var data;
	
	if (count === 0)
		{
			data = new Date();
			checkSum = 0;
		}
  	else
  		{
  			//var tmpDate = new Date(tmpYear, tmpMonth);
  			
  			
			if (count === -1 && tmpMonth == 0)
				{
					tmpMonth = 11;
					tmpYear--;
				}
			else if (count === 1 && tmpMonth == 11)
				{
					tmpMonth = 0;
					tmpYear++;
				}
			else
				{
					tmpMonth += count;
				}
				
			checkSum += count;
			
			data = new Date(tmpYear, tmpMonth);
  		}

  tmpMonth = data.getMonth();
  tmpYear = data.getFullYear();	
  
  /*alert(tmpMonth);
  alert(tmpYear);*/

  var rok = data.getFullYear();
  if (rok < 1000) rok = 2000 + rok - 100;

  var miesiac = data.getMonth() + 1;
  var dzienTygodnia = data.getDay();
  var dzienMiesiaca = data.getDate();

  var tempDate = new Date(rok, miesiac - 1, 1);
  var pierwszyDzienMiesiaca = tempDate.getDay();

  if(dzienTygodnia == 0) dzienTygodnia = 7;
  if(pierwszyDzienMiesiaca == 0) pierwszyDzienMiesiaca = 7;

  switch(miesiac){
    case 1 : nazwaMiesiaca = "Styczeń";
             dniWMiesiacu = 31;
             break;
    case 2 : nazwaMiesiaca = "Luty";
             dniWMiesiacu = rokPrzestepny(rok)?29:28;
             break;
    case 3 : nazwaMiesiaca = "Marzec";
             dniWMiesiacu = 31;
             break;
    case 4 : nazwaMiesiaca = "Kwiecień";
             dniWMiesiacu = 30;
             break;
    case 5 : nazwaMiesiaca = "Maj";
             dniWMiesiacu = 31;
             break;
    case 6 : nazwaMiesiaca = "Czerwiec";
             dniWMiesiacu = 30;
             break;
    case 7 : nazwaMiesiaca = "Lipiec";
             dniWMiesiacu = 31;
             break;
    case 8 : nazwaMiesiaca = "Sierpień";
             dniWMiesiacu = 31;
             break;
    case 9 : nazwaMiesiaca = "Wrzesień";
             dniWMiesiacu = 30;
             break;
    case 10 : nazwaMiesiaca = "Październik";
             dniWMiesiacu = 31;
             break;
    case 11 : nazwaMiesiaca = "Listopad";
             dniWMiesiacu = 30;
             break;
    case 12 : nazwaMiesiaca = "Grudzień";
             dniWMiesiacu = 31;
             break;
  }
  var kalendarz = '';
  kalendarz += "<TABLE class='kalendarz'>";
  kalendarz += "<caption><div>";
  kalendarz += "<span class='lewe'><a href='#' id='monthBack'><<</a></span><a href='#' id='curMonth'>";
  kalendarz += nazwaMiesiaca + " " + rok;
  kalendarz += "</a><span class='prawe'><a href='#' id='monthForward'>>></a></span>";

  kalendarz += "</div></caption><tbody><TR class='head'>";
  kalendarz += "<th>Pn</th>";
  kalendarz += "<th>Wt</th>";
  kalendarz += "<th>Śr</th>";
  kalendarz += "<th>Cz</th>";
  kalendarz += "<th>Pi</th>";
  kalendarz += "<th>So</th>";
  kalendarz += "<th>Nd</th>";
  kalendarz += "</TR>";

  var j = dniWMiesiacu + pierwszyDzienMiesiaca - 1;

  for(var i = 0; i < j; i++){
    
	var id_wyd = wydarzenia(i - pierwszyDzienMiesiaca + 2, miesiac-1, rok);
	
	if(i < pierwszyDzienMiesiaca - 1){
      kalendarz += "<TD></TD>";
      continue;
    }
    if((i % 7) == 0){
      kalendarz += "</TR><TR>";
    }
	if (id_wyd) {
		//alert(id_wyd);
		var klasa = "class='happening'";
		var id = "id='" + id_wyd + "'";
		
		kalendarz += "<TD " + klasa + " " + id + " " + ">";
	}
    else if(((i - pierwszyDzienMiesiaca + 2) == dzienMiesiaca) && !checkSum){
		kalendarz += "<TD class='currDay' >";
    }
    else{
		kalendarz += "<TD>";
    }
    kalendarz += i - pierwszyDzienMiesiaca + 2;
    kalendarz += "</TD>";
  }
  kalendarz += "</TR></tbody></TABLE>";
  kalendarz += "<a href='" + kalendarium_adres + "'>Kalendarium na cały rok</a>"
  
  document.getElementById('kalendarz').innerHTML = kalendarz;
  
  readHappenings();
}

function switchMonth(count)
	{
		printCalendar(count);
		return false;
		
	}
