/* funkcje js */
//------------------------------------------------------------------------------
//     CIĄGI ZNAKÓW, OPERACJE NA CIĄGACH
//------------------------------------------------------------------------------
/* ---- LICZBY ---- */
function IsLiczba(text)
{
	//var dopuszczalneZnaki = "0123456789.";
	var dopuszczalneZnaki = "0123456789";
   
	var jestLiczba=true;
	var Char;

	for (i = 0; i < text.length && jestLiczba == true; i++) 
	{ 
		Char = text.charAt(i); 
		if (dopuszczalneZnaki.indexOf(Char) == -1) 
		{
			jestLiczba = false;
		}
	}
	return jestLiczba;
}

/* ---- CZY ZAWIERA ZNAK ---- */
function inCharOnText(text,znaki)
{
	var jestZnak=false;
	var Char;

	for (i = 0; i < text.length && jestZnak == false; i++) 
	{ 
		Char = text.charAt(i); 
		if (znaki.indexOf(Char) != -1) 
		{
			jestZnak = true;
		}
	}
	return jestZnak;
}
function losujZnaki(dlugosc)
{
	var tablica = new Array();
	var text = '';
	tablica[0] = 'a';
	tablica[1] = 'b';
	tablica[2] = 'c';
	tablica[3] = 'd';
	tablica[4] = 'e';
	tablica[5] = 'f';
	tablica[6] = 'g';
	tablica[7] = 'h';
	tablica[8] = 'i';
	tablica[9] = 'j';
	tablica[10] = 'k';
	tablica[11] = 'l';
	tablica[12] = 'm';
	tablica[13] = 'n';
	tablica[14] = 'o';
	tablica[15] = 'p';
	tablica[16] = 'r';
	tablica[17] = 's';
	tablica[18] = 't';
	tablica[19] = 'u';
	tablica[20] = 'w';
	tablica[21] = 'z';
	tablica[22] = '1';
	tablica[23] = '2';
	tablica[24] = '3';
	tablica[25] = '4';
	tablica[26] = '5';
	tablica[27] = '6';
	tablica[28] = '7';
	tablica[29] = '8';
	tablica[30] = '9';
	tablica[31] = '0';
	var liczba;
	for (i=0;i<dlugosc;i++) 
	{ 
		liczba=Math.floor(Math.random()*31);
		text+=tablica[liczba];
	}
	return text;
}
/* ---- ZWIJANIE DIV ---- */
function zwin(id,rozwin)
{
	var doZwiniecia   = id.split(','); 
	var doRozwiniecia = rozwin.split(','); 
	for(i in doZwiniecia)
	{
		document.getElementById(doZwiniecia[i]).style.display='none';
	}
	if(rozwin!='false')
	{
		for(i in doRozwiniecia)
		{
			document.getElementById(doRozwiniecia[i]).style.display='block';
		}
	}
}
function rozwin(rozwin,zwin)
{
	var doRozwiniecia = rozwin.split(','); 
	var doZwiniecia   = zwin.split(','); 
	for(i in doRozwiniecia)
	{
		document.getElementById(doRozwiniecia[i]).style.display='block';
	}
	if(zwin!='false')
	{
		for(i in doZwiniecia)
		{
			document.getElementById(doZwiniecia[i]).style.display='none';
		}
	}
}
/* ---- GALERIA I WYSKAKUJĄCE OKNA ---- */
function pokazDuzyObraz(src,iwidth,iheight)
{
	document.getElementById('pokazobraz').innerHTML='<img src="'+src+'" alt="+" />';
	document.getElementById('pokazobraz').style.display='block';
	document.getElementById('pokazobraz').style.width=(iwidth+2)+'px';
	document.getElementById('pokazobraz').style.height=(iheight+2)+'px';
	// półprzeźroczyste tło
	var bodysite			= document.getElementById('bodysite');	
	bodysite.style.display  = 'block';
}
function schowajDuzyObraz()
{
	document.getElementById('pokazobraz').innerHTML='';
	document.getElementById('pokazobraz').style.display='none';
	document.getElementById('pokazobraz').style.width='0px';
	document.getElementById('pokazobraz').style.height='0px';
	// półprzeźroczyste tło
	var bodysite			= document.getElementById('bodysite');	
	bodysite.style.display  = 'none';
}
function pokazGalerie()
{
	var pozycjaGaleriaVar = parseInt(document.getElementById('pozycjaGaleria').value) % pozycjaGaleriaMAX;
	document.getElementById('pokazgalerie').style.display='block';
	document.getElementById('galeria_foto'+pozycjaGaleriaVar).style.display='block';
	//pozycjaGaleriaVar=pozycjaGaleriaVar+1;
	document.getElementById('pozycjaGaleria').value = pozycjaGaleriaVar;
}
function zamknijGalerie()
{
	document.getElementById('pokazgalerie').style.display='none';
	for(var i=0;i<pozycjaGaleriaMAX;i++)
	{
		document.getElementById('galeria_foto'+i).style.display='none';
	}
}
function galeriaNastepne()
{
	var pozycjaGaleriaVar = parseInt(document.getElementById('pozycjaGaleria').value+1) % pozycjaGaleriaMAX;	
	for(var i=0;i<pozycjaGaleriaMAX;i++)
	{
		if(i==pozycjaGaleriaVar)
		{
			document.getElementById('galeria_foto'+i).style.display='block';
		}
		else
		{
			document.getElementById('galeria_foto'+i).style.display='none';
		}
	}
	//pozycjaGaleriaVar=pozycjaGaleriaVar+1;
	document.getElementById('pozycjaGaleria').value = pozycjaGaleriaVar;
}
function galeriaPoprzednie()
{
	//var pozycjaGaleriaVar = Math.abs((parseInt(document.getElementById('pozycjaGaleria').value) % pozycjaGaleriaMAX)-1);
	var pozycjaGaleriaVar = (parseInt(document.getElementById('pozycjaGaleria').value) % pozycjaGaleriaMAX)-1;		
	if(pozycjaGaleriaVar<0)
	{
		pozycjaGaleriaVar = pozycjaGaleriaMAX-1;
	}
	for(var i=0;i<pozycjaGaleriaMAX;i++)
	{
		if(i==pozycjaGaleriaVar)
		{
			document.getElementById('galeria_foto'+i).style.display='block';
		}
		else
		{
			document.getElementById('galeria_foto'+i).style.display='none';
		}
	}
	document.getElementById('pozycjaGaleria').value = pozycjaGaleriaVar;
}
/* ---- REJESTRACJA ---- */
function sprawdzLogin(nazwaFormularza)
{
	var html    = document.getElementById('formRejLogin');
	var warunek = false;
	var login   = document.forms[nazwaFormularza].login.value;
	if((login.length>=3)&&(login.length<=16))
	{
		warunek = true;
	}
	if(inCharOnText(login,'ęóąśłżźć`~{}[];:\'\\",?/|'))
	{
		warunek = false;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzHaslo(nazwaFormularza)
{
	var html    = document.getElementById('formRejHaslo');
	var warunek = false;
	var haslo   = document.forms[nazwaFormularza].haslo.value;
	if((haslo.length>=8)&&(haslo.length<=16))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzHaslo2(nazwaFormularza)
{
	var html    = document.getElementById('formRejHaslo2');
	var warunek = false;
	var haslo   = document.forms[nazwaFormularza].haslo.value;
	var haslo2  = document.forms[nazwaFormularza].haslo2.value;
	if((haslo==haslo2)&&(haslo2.length>=3)&&(haslo2.length<=16))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzEmail(nazwaFormularza)
{
	var html    = document.getElementById('formRejEmail');
	var warunek = false;
	var email   = document.forms[nazwaFormularza].email.value;
	if(email.match(/^([a-z0-9]{1})([^\s\t\.@]*)((\.[^\s\t\.@]+)*)@([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)\.([a-z0-9]{2,6})$/))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzAkceptacjeReg(nazwaFormularza)
{
	var html    = document.getElementById('formRejAkceptacja');
	var warunek = false;
	var pole    = document.forms[nazwaFormularza].regulamin;
	if(pole.checked==true)
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzFormRejestracji(nazwaFormularza)
{
	var login = sprawdzLogin(nazwaFormularza);
	var haslo = sprawdzHaslo(nazwaFormularza);
	var haslo2= sprawdzHaslo2(nazwaFormularza);
	var email = sprawdzEmail(nazwaFormularza);
	var regulamin = sprawdzAkceptacjeReg(nazwaFormularza);
	if(login==false)
	{
		alert("Login ma niepoprawną formę. Minimalna długość loginu to 3 znaki, a maksymalna to 16 znaków. Login nie może zawierać ponadto polskich znaków i liter diakrytycznych (ęóąśłżźć`~{}[];:'\"\\,?/|)");
		return false;
	}
	if(haslo==false)
	{
		alert("Hasło ma niepoprawną formę. Minimalna długość hasła to 8 znaków, a maksymalna to 16 znaków.");
		return false;
	}
	if(haslo2==false)
	{
		alert("Hasło powtórzone nie zgadza się z oryginałem! Najłatwiej będzie wyczyścić oba pola haseł i wpisać je na nowo.");
		return false;
	}
	if(email==false)
	{
		alert("E-mail ma niepoprawną formę. Wymagamy podania poprawnego adresu poczty elektronicznej, ponieważ na ten adresy wysyłamy link aktywacyjny, który należy kliknąć by potwierdzić rejestrację i aktywować swoje konto. Ponadto powyższy adres będzie używany do kontaktu z Tobą w przypadku korzystania z interaktywnych usług naszego portalu.");
		return false;
	}
	if(regulamin==false)
	{
		alert("Wymagamy akceptacji regulaminu. Zaznacz odpowiednie pole potwierdzając, że znasz, akceptujesz i rozumiesz treść regulaminu naszego serwisu.");
		return false;
	}
	return true;
}
function sprawdzFormPrzypomnienia(nazwaFormularza)
{
	var email = sprawdzEmail(nazwaFormularza);
	var login = sprawdzLogin(nazwaFormularza);
	if(login==false)
	{
		alert("Login ma niepoprawną formę. Minimalna długość loginu to 3 znaki, a maksymalna to 16 znaków. Login nie może zawierać ponadto polskich znaków i liter diakrytycznych (ęóąśłżźć`~{}[];:'\"\\,?/|)");
		return false;
	}
	if(email==false)
	{
		alert("E-mail ma niepoprawną formę. Wymagamy podania poprawnego adresu poczty elektronicznej, ponieważ na ten adresy wysyłamy link, który należy kliknąć by przejść do ostatniego etapu przypominania hasła.");
		return false;
	}
	return true;
}
function sprawdzformZmienHaslo(nazwaFormularza)
{
	var haslo = sprawdzHaslo(nazwaFormularza);
	var haslo2= sprawdzHaslo2(nazwaFormularza);
	if(haslo==false)
	{
		alert("Hasło ma niepoprawną formę. Minimalna długość hasła to 8 znaków, a maksymalna to 16 znaków.");
		return false;
	}
	if(haslo2==false)
	{
		alert("Hasło powtórzone nie zgadza się z oryginałem! Najłatwiej będzie wyczyścić oba pola haseł i wpisać je na nowo.");
		return false;
	}
	return true;
}
function sprawdzFormPrzypomnieniaAktywacji(nazwaFormularza)
{
	var email = sprawdzEmail(nazwaFormularza);
	var login = sprawdzLogin(nazwaFormularza);
	if(login==false)
	{
		alert("Login ma niepoprawną formę. Minimalna długość loginu to 3 znaki, a maksymalna to 16 znaków. Login nie może zawierać ponadto polskich znaków i liter diakrytycznych (ęóąśłżźć`~{}[];:'\"\\,?/|)");
		return false;
	}
	if(email==false)
	{
		alert("E-mail ma niepoprawną formę. Wymagamy podania poprawnego adresu poczty elektronicznej, ponieważ na ten adresy wysyłamy link, który aktywuje Twoje konto.");
		return false;
	}
	return true;
}
function sprawdzFormLogowania(nazwaFormularza)
{
	var haslo = sprawdzHaslo(nazwaFormularza);
	var login = sprawdzLogin(nazwaFormularza);
	if(login==false)
	{
		alert("Login ma niepoprawną formę. Minimalna długość loginu to 3 znaki, a maksymalna to 16 znaków. Login nie może zawierać ponadto polskich znaków i liter diakrytycznych (ęóąśłżźć`~{}[];:'\"\\,?/|)");
		return false;
	}
	if(haslo==false)
	{
		alert("Hasło ma niepoprawną formę. Minimalna długość hasła to 8 znaków, a maksymalna to 16 znaków.");
		return false;
	}
	return true;
}
function sprawdzFormBiuletyn(nazwaFormularza)
{
	var email = sprawdzEmail(nazwaFormularza);
	var regulamin = sprawdzAkceptacjeReg(nazwaFormularza);
	if(email==false)
	{
		alert("E-mail ma niepoprawną formę. Wymagamy podania poprawnego adresu poczty elektronicznej, ponieważ na ten adresy wysyłamy link aktywacyjny, który należy kliknąć by potwierdzić rejestrację i aktywować swoje konto. Ponadto powyższy adres będzie używany do kontaktu z Tobą w przypadku korzystania z interaktywnych usług naszego portalu.");
		return false;
	}
	if(regulamin==false)
	{
		alert("Wymagamy akceptacji regulaminu. Zaznacz odpowiednie pole potwierdzając, że znasz, akceptujesz i rozumiesz treść regulaminu naszego serwisu.");
		return false;
	}
	return true;
}
/* ---- FORMULARZ KONTAKTOWY ----*/
function sprawdzTytulListu(nazwaFormularza)
{
	var html    = document.getElementById('formKontaktTytul');
	var warunek = false;
	var tytul   = document.forms[nazwaFormularza].tytul.value;
	if((tytul.length>=3)&&(tytul.length<=60))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	return warunek;
}
function sprawdzTrescListu(nazwaFormularza)
{
	var html    = document.getElementById('formKontaktTresc');
	var znaki   = document.getElementById('iloscZnakow');
	var warunek = false;
	var tresc   = document.forms[nazwaFormularza].tresc.value;
	if((tresc.length>=10)&&(tresc.length<=2000))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	znaki.innerHTML = 'Dotychczas treść wiadomości zkłada się z ' + tresc.length + ' znaków. Maksymalna długość wiadomości to 2000 znaków.';
	if(tresc.length>2000)
	{
		znaki.innerHTML+= ' <span style="color:red">Treść jest za długa.</span>';
	}
	return warunek;
}
function sprawdzFormKontakt(nazwaFormularza)
{
	var temat = sprawdzTytulListu(nazwaFormularza);
	var tresc = sprawdzTrescListu(nazwaFormularza);
	if(temat==false)
	{
		alert("Tytuł listu ma niepoprawną formę. Minimalna długość tytułu to 3 znaki, a maksymalna to 60 znaków.");
		return false;
	}
	if(tresc==false)
	{
		alert("Treść ma niepoprawną formę. Minimalna długość treści listu to 10 znaków, a maksymalna to 2000 znaków.");
		return false;
	}
	return true;
}
/* ------- TYPER */
function sprawdzFormTYPER(nazwaFormularza)
{
	
	var regulamin = sprawdzAkceptacjeReg(nazwaFormularza);
	if(regulamin==false)
	{
		alert("Wymagamy akceptacji regulaminu. Zaznacz odpowiednie pole potwierdzając, że znasz, akceptujesz i rozumiesz treść regulaminu ligi typera.");
		return false;
	}
	return true;
}
/* ---- KOMENTARZE ---- */

function sprawdzTrescKomentarz(nazwaFormularza,minLiczbaZnakow,maksLiczbaZnakow)
{
	var html    = document.getElementById('formKomentTresc');
	var znaki   = document.getElementById('iloscZnakow');
	var warunek = false;
	var tresc   = document.forms[nazwaFormularza].tresc.value;
	if((tresc.length>=minLiczbaZnakow)&&(tresc.length<=maksLiczbaZnakow))
	{
		warunek = true;
	}
	if(!warunek)
	{
		html.innerHTML = '<img src="gfx/ico/nie.png" alt="Niepoprawnie wypełnione" />';
	}
	else
	{
		html.innerHTML = '<img src="gfx/ico/tak.png" alt="Poprawnie wypełnione" />';
	}
	znaki.innerHTML = 'Treść wiadomości zkłada się z ' + tresc.length + ' znaków. Maksymalna długość wiadomości to ' + maksLiczbaZnakow + ' znaków (minimalna to ' + minLiczbaZnakow +' znaków).';
	if(tresc.length>maksLiczbaZnakow)
	{
		znaki.innerHTML+= ' <span style="color:red">Treść jest za długa.</span>';
	}
	return warunek;
}
function sprawdzFormKomentarz(nazwaFormularza,minLiczbaZnakow,maksLiczbaZnakow)
{
	var akcept = sprawdzAkceptacjeReg(nazwaFormularza);
	var tresc  = sprawdzTrescKomentarz(nazwaFormularza,minLiczbaZnakow,maksLiczbaZnakow);
	if(tresc==false)
	{
		alert("Treść ma niepoprawną formę. Minimalna długość treści komentarza to " + minLiczbaZnakow + " znaków, a maksymalna to  " + maksLiczbaZnakow + "  znaków.");
		return false;
	}
	if(akcept==false)
	{
		alert("Aby dodać komentarz musisz akceptować nasz regulamin i powierdzić, że masz świadomość ewentualnej odpowiedzialności karnej jeśli kogoś urazi Twój komentarz.");
		return false;
	}
	return true;
}
function zglosKomentarzDoUsuniecia(id,komentarz,url)
{
	// okienko z napisem proszę czekać
	var html 				= document.getElementById('pokazDodajKomentarz');
	html.innerHTML 			= '<p style="text-align:justify;font-size:95%;">W tym miejscu możesz zgłosić ten komentarz do usunięcia. Jeśli Twoim zdaniem narusza on <a href="portal-regulamin.html">regulamin naszego serwisu</a>, obraża kogoś, jest niezgodny z tematem, zawiera nieprawdziwe i powinien zostać zablokowany to wypełnij poniższy formularz i zgłoś komentarz do usunięcia. Redakcja naszego portalu stara się reagować możliwie szybko i na bieżąco blokuje komentarze. Proszę pamiętać, że w szczególnych przypadkach komentarz może zostać zablokowany nawet po 24 godzinach.</p>';
	html.innerHTML 			+= '<h1>Zgłaszanie komentarza do usunięcia</h1>';
	html.innerHTML 			+= '<p><b>Moim zdaniem komentarz o treści:</b></p>';
	html.innerHTML 			+= '<p style="padding-top:10px;padding-bottom:10px;font-style:italic;color:#777;border-top:1px solid #ddd;border-bottom:1px solid #ddd;">'+komentarz+'</p>';
	html.innerHTML 			+= '<p><b>(...) nadaje sie do usunięcia przez redakcję serwisu, ponieważ:</b></p>';
	html.innerHTML 			+= '<form action="'+url+'" method="post" name="usunKomentarz" onsubmit="return zglosKomentarzDoUsunieciaSprawdz()"><input type="hidden" name="usunKomentarz" value="1" /><p style="font-style:italic;font-size:95%;float:left;">Tutaj wpisz uzasadnienie - dlaczego komentarz my być usunięty?</p><textarea name="uzasadnienie" id="uzasadnienie" style="width:540px;height:70px;clear:both;border:1px solid #ccc;" rows="10" cols="20"></textarea><input type="hidden" name="idKomentarz" value="'+id+'" /><div style="margin:30px;"><input type="hidden" name="typ" id="typ" value="" /><input type="image" src="gfx/przyciski/wyslij.png" />&nbsp;&nbsp;&nbsp;&nbsp;<input type="image" src="gfx/przyciski/rezygnuje.png" onclick="document.getElementById(\'typ\').value=\'rezygnacja\';" /></div></form>';
	html.style.display 		= 'block';
	// półprzeźroczyste tło
	var bodysite			= document.getElementById('bodysite');	
	bodysite.style.display  = 'block';
}
function zglosKomentarzDoUsunieciaSprawdz()
{
	var typ = document.getElementById('typ').value;
	if(typ=='rezygnacja')
	{
		var html		= document.getElementById('pokazDodajKomentarz');
		html.innerHTML 	= '';
		var bodysite	= document.getElementById('bodysite');	
		bodysite.style.display	= 'none';
		return false;
	}
	else
	{
		var tresc   = document.getElementById('uzasadnienie').value;
		if((tresc.length<10)||(tresc.length>1000))
		{
			alert("Uzasadnienie konieczności usunięcia komentarza powinno zawierać co najmniej 10 znaków, maksymalnie 1000 znaków. Twoje uzasadnienie zawiera "+tresc.length+" znaków.");
			return false;
		}
	}
	return true;
}
/*SONDA*/
function sondaZaznacz(id,ilejest,idodp)
{
	for(var i=0;i<ilejest;i++)
	{
		if(i==id)
		{
			document.getElementById('pytanie'+i).innerHTML='<img src="gfx/form/tak.png" style="width:26px;" alt="Pole" />';
			document.getElementById('glosid').value=idodp;
		}
		else
		{
			document.getElementById('pytanie'+i).innerHTML='<img src="gfx/form/puste.png" style="width:26px;cursor:pointer;" alt="Pole" />';
		}
	}
}
function sprawdzGlosowanie()
{
	if(document.getElementById('glosid').value=='')
	{
		alert('Zanim zagłosujesz zaznacz jedną z proponowanych odpowiedzi. Po zaznaczeniu odpowiedzi pole powinno zostać odpowiednio wyróżnione.');
		return false;
	}
	return true;
}
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;
}

// asynchroniczne wywołanie serwera
function process()
{
  // kontynuuje, jeśli xmlHttp nie jest pusty
  if (xmlHttp)
  {
    // próbuje połączyć się z serwerem
    try
    {
      // rozpoczyna dostęp do serwera
      xmlHttp.open("GET", serverAddress + "?" + serverParams, true);
      xmlHttp.onreadystatechange = handleRequestStateChange;
      xmlHttp.send(null);
    }
    // w razie porażki wyświetla komunikat o błędzie
    catch (e)
    {
      alert("Nie można nawiązać połączenia z serwerem:\n" + e.toString());
    }
  }
}

// funkcja wywoływana przy zmianie statusu żądania HTTP
function createXmlHttpRequestObject() 
{
	var xmlhttp=false;
	try 
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) 
	{
		try 
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (E) 
		{
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
	{
		try 
		{
			xmlhttp = new XMLHttpRequest();
		}
		catch (e) 
		{
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest) 
	{
		try 
		{
			xmlhttp = window.createRequest();
		}
		catch (e) 
		{
			xmlhttp=false;
		}
	}
	return xmlhttp;
}
