// przechowuje obiekt XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// tworzy obiekt XMLHttpRequest
function createXmlHttpRequestObject() 
{
	//przechowa odwołanie do obiektu XMLHttpRequest
	var xmlHttp;
	// powinno działać dla wszystkich przeglądarek z wyjątkiem IE6 i starszych
	try
	{
		// próbuje stworzyć obiekt XMLHttpRequest
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		// zakładając, że IE6 lub starsza
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
			"MSXML2.XMLHTTP.5.0",
			"MSXML2.XMLHTTP.4.0",
			"MSXML2.XMLHTTP.3.0",
			"MSXML2.XMLHTTP",
			"Microsoft.XMLHTTP");
	// sprawdza każdy prog id aż któryś zadziała
	for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
	{
		try 
		{ 
			// próbuje stworzyć obiekt XMLHttpRequest
			xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
		} 
		catch (e) {}
	}
}
// zwraca stworzony obiekt albo wyświetla komunikat o błędzie
if (!xmlHttp)
	alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
else 
	return xmlHttp;
}

 
// czyta plik na serwerze
function process()
{
	document.forms[0].rodzaj.disabled = document.forms[0].rodzaj.checked;

	// kontynuuje, jeśli xmlHttp nie jest pusty
	if (xmlHttp)
	{
		// próbuje połączyć się z serwerem
		try
		{
			// pobiera imię wpisane przez użytkownika w formularzu
			name = encodeURIComponent(document.getElementById("przeznaczenie").value);
			// rozpoczyna asynchroniczne żądanie wysłane do serwera
			xmlHttp.open("GET", "rozbuduj_formularz.php5?P=" + name, true);
			xmlHttp.onreadystatechange = handleRequestStateChange;
			xmlHttp.send(null);
		}
		// w razie niepowodzenia wyświetla komunikat o błędzie
		catch (e)
		{
			alert("Nie mogę nawiązać połączenia z serwerem:\n" + e.toString());
		}
	}
}

// funkcja wywoływana przy zmianie statusu żądania HTTP
function handleRequestStateChange() 
{
	// kiedy readyState ma wartość 4, jesteśmy gotowi do odebrania odpowiedzi z serwera
	if (xmlHttp.readyState == 4) 
	{
    // kontynuuje tylko, gdy status HTTP ma wartość "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // przetwarza wiadomość z serwera
        handleServerResponse();
      }
      catch(e)
      {
        // komunikat o błędzie
        alert("Błąd odczytu odpowiedzi: " + e.toString());
      }
    } 
    else
    {
      // wyświetla wiadomość o statusie
      alert("Pojawił się problem przy pobieraniu danych:\n" + xmlHttp.statusText);
    }
  }
}

// obsługuje odpowiedź otrzymaną z serwera
function handleServerResponse()
{
	// pobiera odpowiedź serwera podaną jako obiekt DOM XML
	var xmlResponse = xmlHttp.responseXML;
	// przechwycenie potencjalnych błędów przez IE i Operę
	if (!xmlResponse || !xmlResponse.documentElement)
		throw("Przepraszamy. Wystąpił Błąd.");
 
	// przechwycenie potencjalnych błędów przez Firefox
	var rootNodeName = xmlResponse.documentElement.nodeName;
	if (rootNodeName == "parsererror") 
		throw("Przepraszamy. Wystąpił Błąd.");

	// pobiera element nadrzędny (element document)
	xmlRoot = xmlResponse.documentElement;
	// sprawdzanie, czy otrzymaliśmy taki dokument XML, jakiego się spodziewaliśmy
	var html = "";
	if (xmlRoot.firstChild)
	{
		// pobieranie tablic z tytułami prac i id
		idArray = xmlRoot.getElementsByTagName("pracaID");
		tytulArray = xmlRoot.getElementsByTagName("tytul");
		typArray = xmlRoot.getElementsByTagName("typ");
		// wygenerowanie danych wyjsciowych w postaci HTML
		for (var i=0; i<tytulArray.length; i++){
			if(i == 0)
				html += '<input type="radio" name="praca" value="nowa" onclick="this.form.elements[\'rodzaj\'].disabled = !this.checked" /><b>Rozpocznij nową pracę</b><br />';
			id = idArray.item(i).firstChild.data;
			tytul = tytulArray.item(i).firstChild.data;
			typ = typArray.item(i).firstChild.data;
			html += '<input type="radio" name="praca" value="' + id + '" onclick="this.form.elements[\'rodzaj\'].disabled = this.checked" /><b>Kontynuuj</b> - ' + tytul + ' (' + typ + ")<br />";
		}
		// aktualizuje dane wywietlane klientowi informacjami otrzymanymi z serwera
	}
	document.getElementById("divMessage").innerHTML = html;
}

// funkcje zwiazane z nominowaniem

function uaktualnij_przyciski()
{
	document.getElementById('zatwierdzacz').innerHTML = "";
	
	for(var miejsce=1; miejsce<5; miejsce++)
	{
		var przyciski_kod = '';
		poprzednie_miejsce = miejsce - 1;
		nastepne_miejsce = miejsce + 1;
		ukryte_miejsce = 'ukryte_miejsce' + miejsce;
		nastepne_ukryte_miejsce = 'ukryte_miejsce' + nastepne_miejsce;
		
		if(document.getElementById(ukryte_miejsce).innerHTML != ""){
			if(miejsce != 1){
				przyciski_kod += '<input type="button" value="&lt;" style="margin-top: 5px;" onclick="w_prawo(' + poprzednie_miejsce + ')" />';
			}
			przyciski_kod += '<input type="button" value="usuń" style="margin-top: 5px;" onclick="usun_nominacje(' + document.getElementById(ukryte_miejsce).innerHTML + ')" />';
			if(document.getElementById(nastepne_ukryte_miejsce).innerHTML != "" && miejsce != '4'){
				przyciski_kod += '<input type="button" value="&gt;" style="margin-top: 5px;" onclick="w_prawo(' + miejsce + ')" />';
			}
		}
		przyciski = 'przyciski' + miejsce;
		document.getElementById(przyciski).innerHTML = przyciski_kod;
	}
	
	if(document.getElementById('ukryte_miejsce1').innerHTML != 0 && document.getElementById('ukryte_miejsce2').innerHTML != 0 && document.getElementById('ukryte_miejsce3').innerHTML != 0 && document.getElementById('ukryte_miejsce4').innerHTML != 0){
		document.getElementById('zatwierdzacz').innerHTML = '<a href="#" onclick="glosuj()"><img src="./gfx/glosuj.gif" /></a>';
	}
}

function nominuj(nazwa_pliku, pracaID, place)
{
	if(place != "galeria" && place != "biblioteka")
		return false;
	
	// sprawdzamy czy taka praca jest juz dodana
	for(var liczba=1; liczba<5; liczba++){
		ukryte_miejsce = 'ukryte_miejsce' + liczba;
		if(document.getElementById(ukryte_miejsce).innerHTML == pracaID){
			alert("Ta praca już raz została wybrana");
			return false;
		}
	}
	
	//szukamy wolnego miejsca
	for(var liczba=1; liczba<5; liczba++){
		ukryte_miejsce = 'ukryte_miejsce' + liczba;
		if(document.getElementById(ukryte_miejsce).innerHTML == ""){
			miejsce = 'miejsce' + liczba;
			ukryte_miejsce = 'ukryte_' + miejsce;
			liczba = 5;
		}
	}
	
	if(document.getElementById(ukryte_miejsce).innerHTML != 0){
		alert("Liczba wybranych prac jest juz wystarczajaca. Jeśli chcesz dodać kolejną, musisz wpierw usunąć którąś z wcześniej wybranych.");
		return false;
	}
	
	if(place == "galeria")
		kod = '<img src="./kreator_miniatur/150.php5?Name=' + nazwa_pliku + '" width="120" height="120" />';
	if(place == "biblioteka")
		kod = '<div class="wybrana">' + nazwa_pliku + '</div>';
	document.getElementById(miejsce).innerHTML = kod;
	document.getElementById(ukryte_miejsce).innerHTML = pracaID;
	
	uaktualnij_przyciski();
}

function usun_nominacje(pracaID)
{
	document.getElementById('zatwierdzacz').innerHTML = "";
	
	if(document.getElementById('ukryte_miejsce4').innerHTML == pracaID){
		document.getElementById('miejsce4').innerHTML = "";
		document.getElementById('ukryte_miejsce4').innerHTML = "";
	}
	
	if(document.getElementById('ukryte_miejsce3').innerHTML == pracaID){
		document.getElementById('miejsce3').innerHTML = document.getElementById('miejsce4').innerHTML;
		document.getElementById('ukryte_miejsce3').innerHTML = document.getElementById('ukryte_miejsce4').innerHTML;
		document.getElementById('miejsce4').innerHTML = "";
		document.getElementById('ukryte_miejsce4').innerHTML = "";
	}
	
	if(document.getElementById('ukryte_miejsce2').innerHTML == pracaID){
		document.getElementById('miejsce2').innerHTML = document.getElementById('miejsce3').innerHTML;
		document.getElementById('ukryte_miejsce2').innerHTML = document.getElementById('ukryte_miejsce3').innerHTML;
		document.getElementById('miejsce3').innerHTML = document.getElementById('miejsce4').innerHTML;
		document.getElementById('ukryte_miejsce3').innerHTML = document.getElementById('ukryte_miejsce4').innerHTML;
		document.getElementById('miejsce4').innerHTML = "";
		document.getElementById('ukryte_miejsce4').innerHTML = "";
	}
	
	if(document.getElementById('ukryte_miejsce1').innerHTML == pracaID){
		document.getElementById('miejsce1').innerHTML = document.getElementById('miejsce2').innerHTML;
		document.getElementById('ukryte_miejsce1').innerHTML = document.getElementById('ukryte_miejsce2').innerHTML;
		document.getElementById('miejsce2').innerHTML = document.getElementById('miejsce3').innerHTML;
		document.getElementById('ukryte_miejsce2').innerHTML = document.getElementById('ukryte_miejsce3').innerHTML;
		document.getElementById('miejsce3').innerHTML = document.getElementById('miejsce4').innerHTML;
		document.getElementById('ukryte_miejsce3').innerHTML = document.getElementById('ukryte_miejsce4').innerHTML;
		document.getElementById('miejsce4').innerHTML = "";
		document.getElementById('ukryte_miejsce4').innerHTML = "";
	}
	
	uaktualnij_przyciski();
}

// zamiana kolejnosci
function w_prawo(liczba)
{
	var nastepna = liczba + 1;
	var poprzednia = liczba - 1;
		
	miejsce = 'miejsce' + liczba;
	ukryte_miejsce = 'ukryte_' + miejsce;
	
	var n_miejsce = 'miejsce' + nastepna;
	var n_ukryte_miejsce = 'ukryte_' + n_miejsce;
		
	var pamiec1 = document.getElementById(miejsce).innerHTML;
	var pamiec2 = document.getElementById(ukryte_miejsce).innerHTML;
	
	document.getElementById(miejsce).innerHTML = document.getElementById(n_miejsce).innerHTML;
	document.getElementById(ukryte_miejsce).innerHTML = document.getElementById(n_ukryte_miejsce).innerHTML;
	document.getElementById(n_miejsce).innerHTML = pamiec1;
	document.getElementById(n_ukryte_miejsce).innerHTML = pamiec2;
	
	uaktualnij_przyciski();
}


// czyta plik z serwera
function glosuj()
{
	if(document.getElementById('ukryte_miejsce1').innerHTML == 0 || document.getElementById('ukryte_miejsce2').innerHTML == 0 || document.getElementById('ukryte_miejsce3').innerHTML == 0 || document.getElementById('ukryte_miejsce4').innerHTML == 0){
		alert('Nie można oddac głosu, ponieważ muszą zostać wybrane cztery prace.');
		return false
	}

	// kontynuuje, jeśli xmlHttp nie jest pusty
	if (xmlHttp)
	{
		// próbuje połączyć się z serwerem
		try
		{
			// pobiera imię wpisane przez użytkownika w formularzu
			pracaID1 = document.getElementById('ukryte_miejsce1').innerHTML;
			pracaID2 = document.getElementById('ukryte_miejsce2').innerHTML;
			pracaID3 = document.getElementById('ukryte_miejsce3').innerHTML;
			pracaID4 = document.getElementById('ukryte_miejsce4').innerHTML;
			konkursID = document.getElementById('ukryte_miejsce5').innerHTML;
			// rozpoczyna asynchroniczne żądanie wysłane do serwera
			var link = "arena_glosowanie.php5?A=" + pracaID1 + "&B=" + pracaID2 + "&C=" + pracaID3 + "&D=" + pracaID4 + "&E=" + konkursID;
			xmlHttp.open("GET", link, true);
			xmlHttp.send(null);
			document.getElementById('prace_konkursowe').innerHTML = "<div class=\"message\">Dziękujemy za oddanie głosu.</div>";
		}
		// w razie niepowodzenia wyświetla komunikat o błędzie
		catch (e)
		{
			alert("Nie mogę nawiązać połączenia z serwerem:\n" + e.toString());
		}
	}
}
