// spis funkcji

//     otworz(url)			otwiera wskazana strone (url) w nowym oknie
//     otworzUPRP(url)			otwiera strone glowna urzedu
//     generuj(url, typek)		przygotowuje HTTP GET z wybranymi dokumentami PDF
//     wyczysc()			czysci wszystkie pola textowe formularza
//     ukryj_odkryj(wartosc)		ustawia poczatkowe zakresy dat
//     zaznacz_odznacz(wartosc)		zaznacza lub odznacza wszystkie checki
/**************************** WALIDACJA **************************************/
//     walidacja_formularza()
//     walidacja_pola_tekstowego(ktore_pole)
//     sprawdz_ciagi(tresc_pola, ktore_pole)
//     wyczysc_podciag(podciag)
//     walidacja_podciagu(podciag, ktore_pole)
//     walidacja_kodu_rodaju_dokumentu()
//     walidacja_daty_publikacji()


function otworz(url)
{
/* otwiera wskazana strone (url) w nowym oknie */
	pageTracker._trackPageview('downloads/pliki');
	window.open(url, '', 'width=800,height=650,top=30,left=10,resizable=yes,scrollbars=yes');
	return false;
}

function otworzUPRP(url)
{
/* otwiera strone glowna urzedu */
	window.open(url,'_parent');
	return false;
}

function generuj(url, typek)
{
/* przygotowuje HTTP GET z wybranymi dokumentami PDF */

	url = url + '?typek=' + typek + '&id=';

	var element = document.getElementsByTagName("input");
	var x = element.length;
	var i;
	for(i=0;i<x;i++)
	{
		if (element[i].type=="checkbox" && element[i].checked == true)
		{
			if(element[i].id != "all")
			{
				var str = element[i].value;
				url = url + str + "_";
			}
		}
	};
	window.open(url, '', 'location=no,titlebar=no,width=800,height=600,top=30,left=10,resizable=yes,scrollbars=yes');
	return false;
}

function wyczysc()
{
	// czysci wszystkie pola textowe formularza
	element = document.getElementsByTagName("input");
	x = element.length;
	for(i=0;i<x;i++)
	{
		if (element[i].className=="txt")
		{
			element[i].value="";
		}
	}
	zaznacz_odznacz(true);  // zaznacza/odznacza wszystkie checki
	ukryj_odkryj(1);	// przywraca ustawienia zakresom dat
}

function ukryj_odkryj(wartosc)
{
	// ustawia poczatkowe zakresy dat
	var i;
	if (wartosc==0)
	{
		var periodpokaz = "none";
		var monthpokaz = "inline";
	}
	else
	{
		var periodpokaz = "inline";
		var monthpokaz = "none";
	}

	var element = document.getElementsByTagName("label");
	var x = element.length;
	for(i=0;i<x;i++)
	{
		if (element[i].className=="monthSearch")
		{
			element[i].style.display = monthpokaz;
		}
		if (element[i].className=="periodSearch")
		{
			element[i].style.display = periodpokaz;
		}
	}
	element = document.getElementsByTagName("select");
	x = element.length;
	for(i=0;i<x;i++)
	{
		if (element[i].className=="monthSearch")
		{
			element[i].style.display = monthpokaz;
		}
		if (element[i].className=="periodSearch")
		{
			element[i].style.display = periodpokaz;
		}
		if (element[i].className=="codeSearch")
		{
			element[i].value = wartosc;
		}
	}
}

function zaznacz_odznacz(wartosc)
{
	// zaznacza lub odznacza wszystkie checki
	var element = document.getElementsByTagName("input");
	var x = element.length;
	var i;
	for(i=0;i<x;i++)
	{
		if (element[i].className=="check" || element[i].className=="check check2")
		{
			element[i].checked = wartosc;
		}
	}
}



/**************************** WALIDACJA **************************************/

function walidacja_formularza()
{
	var odp;
	
	odp = walidacja_pola_tekstowego("numer_publikacji");
	if (odp == false)
	{
		return false;
	}
	
	odp = walidacja_pola_tekstowego("numer_zgloszenia");
	if (odp == false)
	{
		return false;
	}
	
	odp = walidacja_pola_tekstowego("symbol_mkp");
	if (odp == false)
	{
		return false;
	}
	
	odp = walidacja_daty_publikacji();
	if (odp == false)
	{
		return false;
	}
	
	odp = walidacja_kodu_rodaju_dokumentu();
	if (odp == false)
	{
		return false;
	}
	
	return true;
}

function walidacja_pola_tekstowego(ktore_pole)
{
	var pole = document.getElementById(ktore_pole);
	var tresc_pola = pole.value;
	var tresc_pola = tresc_pola.replace(/ /g,"");
	var tresc_pola = tresc_pola.toUpperCase();

	if(tresc_pola.length == 0)  // jesli pole jest puste
	{
		return true;
	}
	
	if (sprawdz_ciagi(tresc_pola, ktore_pole) == false)
	{
		return false;
	}
	pole.focus();
	return true;
}

function sprawdz_ciagi(tresc_pola, ktore_pole)
{
	var pole = document.getElementById(ktore_pole);
	pole.value = "";
	var string = tresc_pola;
	var dlugosc = string.length;
	var i;
	var tablica = new Array(dlugosc);
	for(i=0;i<=dlugosc;i++)
	{
		tablica[i]="";
	}
	var j = 0;
	var pozycja = 0;
	var pierwszy = 1;
	while (pozycja != -1)
	{
		pozycja = string.indexOf("OR");
		if(pozycja !=- 1)
		{
			tablica[j]=wyczysc_podciag(string.substring(0,pozycja));
			if(tablica[j].length != 0)
			{
				if(pierwszy == 1)
				{
					pole.value = pole.value + tablica[j];
					pierwszy++;
				}
				else
				{
					pole.value = pole.value + " OR " + tablica[j];
				}
				j+=1;
			}
			string = string.slice(pozycja+2);
		}
		else
		{
			tablica[j]=wyczysc_podciag(string);
			if(tablica[j].length != 0)
			{
				if(pierwszy == 1)
				{
					pole.value = pole.value + tablica[j];
				}
				else
				{
					pole.value = pole.value + " OR " + tablica[j];
				}
				j++;
			}
		}
	}
	if(j==0)
	{
		return false;
	}
	for(i=0;i<=j;i++)
	{
		if (walidacja_podciagu(tablica[i], ktore_pole) == false)
		{
			return false;
		}
	}
	return true;
}

function wyczysc_podciag(podciag)
{
// jezeli podciag zaczyna sie od dwoch liter pozbywamy sie kolejnych zer
// jesli zaczyna sie od zer pozbywamy sie tych zer
	var litery = ""
	if(podciag.charAt(0) >= "A" && podciag.charAt(0) <= "Z")
	{
		if(podciag.charAt(1) >= "A" && podciag.charAt(1) <= "Z")
		{
			litery = podciag.charAt(0) + podciag.charAt(1);
			podciag = podciag.slice(2);
		}
	}

	while(podciag.charAt(0) == "0")
	{
		podciag = podciag.slice(1);
	}
	
	if(podciag.charAt(1) == "-" || podciag.charAt(2) == "-")
	{
		podciag = podciag.replace(/-/g,"/");
		litery = "L00K";
	}
	
	return litery + podciag;
}

function walidacja_podciagu(podciag, ktore_pole)
{
	var i;
	var litera;
	var dlugosc = podciag.length;
	var komunikat1 = "W polu " + ktore_pole + " wprowadzono niepoprawny ";  // tu dostawiamy działu, klasy, podklasy itp
	var komunikat2 = "\nlub zapoznać się z pomocą związaną z polem " + ktore_pole;
	var komunikat2a = ".\nProszę wprowadzić dane w formacie \"196995\" lub \"PL 196995\"";
	var komunikat2b = ".\nProszę wprowadzić dane w formacie \"324447\" lub \"PL 324447\"";
	var komunikat2c = ".\nProszę wprowadzić dane w formacie \"A61P\" lub \"A61P 35\" lub \"A61P 35 \/ 00\"";

	var fragment;
	if (ktore_pole == "numer_zgloszenia" || ktore_pole == "numer_publikacji")
	{
		if(dlugosc > 0) //pierwsza jest litera czy cyfra
		{
			fragment = podciag.substr(0,1);
			if (fragment < "A" || fragment > "Z")  // chyba mamy same cyfry
			{
				fragment = podciag.substr(0, dlugosc);
			}
			else  // pierwsze dwie powinny byc litery, sprawdzam drugą
			{
				fragment = podciag.substr(1,1);
				if (fragment < "A" || fragment > "Z")
				{
					alert(komunikat1 + "kod kraju" + komunikat2a + komunikat2);
					return false;
				}
				fragment = podciag.substr(2,dlugosc);
			}
			for(i=0;i<fragment.length;i++)
			{
				if(fragment.charAt(i) < "0" || fragment.charAt(i) > "9")
				{
					alert(komunikat1 + "ciąg numeryczny" + komunikat2b + komunikat2);
					return false;
				}
			}
		}
	}

	if (ktore_pole == "symbol_mkp")
	{
		if(dlugosc > 0) //kontrola działu = litera
		{
			fragment = podciag.substr(0,1); 
			if (fragment < "A" || fragment > "Z")
			{
				alert(komunikat1 + "symbol działu" + komunikat2c + komunikat2);
				return false;
			}
		}
		if(dlugosc > 1)  //kontrola klasy = dwie cyfry
		{
			fragment = podciag.substr(1,2);
			for(i=0;i<2;i++)
			{
				if (fragment.charAt(i) < "0" || fragment.charAt(i) > "9")
				{
					alert(komunikat1 + "symbol klasy" + komunikat2c + komunikat2);
					return false;
				}
			}
		}
		if(dlugosc > 3) //kontrola podklasy - musi byc litera
		{
			fragment = podciag.substr(3,1);
			if (fragment < "A" || fragment > "Z")
			{
				alert(komunikat1 + "symbol podklasy" + komunikat2c + komunikat2);
				return false;
			}
		}
		if(dlugosc > 4) // kontrola grup i podgrup
		{
			var pozycja_slasha = podciag.indexOf("/");
			if(pozycja_slasha == -1) // slasha nie ma - to moze jest dwukropek?
			{
				pozycja_slasha = podciag.indexOf(":");
			}
			if(pozycja_slasha == -1) // slasha nie ma, dwukropka nie - to moze jest myslnik?
			{
				pozycja_slasha = podciag.indexOf("-");
			}
			
			if(pozycja_slasha == -1) // nie ma ani slasha ani dwukropka, ani myslnika mamy wiec tylko grupe, wiec kontrola grupy = liczba
			{	
				fragment = podciag.substring(4, dlugosc);
				for(i=0;i<dlugosc-4;i++)
				{
					if(fragment.charAt(i) < "0" || fragment.charAt(i) > "9")
					{
						if(fragment.charAt(i) != " ")
						{
							alert(komunikat1 + "symbol grupy" + komunikat2c + komunikat2);
							return false;
						}
					}
				}
			}
			else  // mamy grupe i podgrupe oddzielone slashem
			{
				fragment = podciag.substring(4, pozycja_slasha);
				for(i=0;i<pozycja_slasha-4;i++)
				{
					if(fragment.charAt(i) < "0" || fragment.charAt(i) > "9")
					{
						if(fragment.charAt(i) != " ")
						{
							alert(komunikat1 + "grupy" + komunikat2c + komunikat2);
							return false;
						}
					}
				}
				fragment = podciag.substring(pozycja_slasha+1, dlugosc);
				for(i=0;i<dlugosc-pozycja_slasha-1;i++)
				{
					if(fragment.charAt(i) < "0" || fragment.charAt(i) > "9")
					{
						if(fragment.charAt(i) != " ")
						{
							alert(komunikat1 + "symbol podgrupy" + komunikat2c + komunikat2);
							return false;
						}
					}
				}

			}
		}
	}
	return true;
}

function walidacja_kodu_rodaju_dokumentu()
{
	var czy_check = 0;
	var typ = "";
	var i;
	var dlugosc;
	var element = document.getElementsByTagName("input");
	var x = element.length;
	for(i=0;i<x;i++)
	{
		if (element[i].type=="checkbox" && element[i].checked == true)
		{
			if(element[i].id != "all")
			{
				czy_check += 1;
				typ += "'";
				typ += element[i].id;
				typ += "', ";
			}
		}
	}
	if (czy_check == 0)
	{
		alert ("Nie zaznaczono żadnego rodzaju dokumentu");
		return false;
	}
	else
	{
		dlugosc = (typ.length) - 2;
		var typy = document.getElementById("typy_publikacji");
		typy.value = typ.substring(0,dlugosc);
	}
	return true;
}

function walidacja_daty_publikacji()
{
	var rok_od = document.getElementById("rok_publikacji_od");
	var rok_do = document.getElementById("rok_publikacji_do");
	var msc_od = document.getElementById("msc_publikacji_od");
	var msc_do = document.getElementById("msc_publikacji_do");

	if (rok_do.value < rok_od.value)
	{
		alert("Wartość [Od roku] nie może być większa niż wartość [Do roku]");
		return false;
	}
	if (rok_do.value == rok_od.value)
	{
		if (msc_do.value < msc_od.value)
		{
			alert("Wartość [Od miesiąca] nie może być większa niż wartość [Do miesiąca]");
			return false;
		}
	}
	return true;
}
