//zmienne globalne
var ie = false, firefox= false, opera = false; //poczatkowe wartosci zmieniane przez JakiBrowser() (funkcje.js)

//dd, nn, st, zl, tworzone sa na podstawie przychodzacej bagietki np.
//Jakub||5BCcNw1SSU||en||ustawienia*1|wpisujesz*1|polskie*1|kolejno*0|powtarzanie*2|wielkosc*2|kolor*0||1*11:3:319486:7:8:10|2*7:2:319483:1:6|3*12:-:-||1*2*3||-|5

var dd;  //SŁOWNIK w ktorym  są dane z ciastka: 
//dd["login"] = "Jakub", 
//dd["hasloo"] = "5BCcNw1SSU", 
//dd["jezyk"] = "angielski",
//dd["ustawienia"] = "1",
//dd["wpisujesz"] = "1",
//dd["polskie"] = "1",
//dd["kolejne"] = "1",
//dd["powtarzanie"] = "2",
//dd["wielkosc"] = "2",
//dd["kolor"] = "0"

var nn; //TABLICA z numerami zestawów
//nn[0] = "1"
//nn[1] = "2"
//nn[2] = "3"
//jak pusta to nn = []

var st; //SŁOWNIK z TABLICAMI informacji o statystyce zestawów stworzony na podstawie bagietki
//"1", "2", "3" to numery zestawow, równie dobrze mogloby byc "12", "18", "23"
//st["1"] = ["11", "3", "319486"] 11 - slow, 3 - bledy, 319486 - info o czasie ostatniej nauki
//st["2"] = ["7", "-", "319494"]
//st["3"] = ["12", "-", "-"]

var zl; //SŁOWNIK z TABLICAMI informacji o błędnych odpowiedziach
//zl["1"] = ["7", "8", "10"]

var nl; //niezalogowany; tablica w której sa przechowywane bledy nauki zestawu osob niezalogowanych
var kk; //tablica przechowujaca indeksy koszykow np. kk[0]=5, kk[1]=21, ... podobna do tablicy nn
var kkmaxslow; //ile maxslow moze byc w koszyku (po przekroczeniu tworzony jest nowy koszyk)
var kkostatni;  //nr pliku ostatniego koszyka (jak równy "0" to znaczy, że nie ma zadnego koszyka)

var tt; //SŁOWNIK z tytułami zestawów
//tt["21"] = "kolory"
//tt["34"] = "dni tygodnia"
//jak nic nie ma to pusty


var xmlhttp = false;                 //  ajax.js
//var ajax ="";
var div; //chyba bylo w nowekonto.js

var 
all,     //liczba wszystkich slowek
nzostalo,// tyle zostalo slow do przerobienia (nie liczac, ze niektore po kilka razy)
nbledne,// dla tylu slow blednie zostala dana odpowiedz
ip,      // ile powtarzac, tablica w ktorej jest ile jeszcze razy pytac dane slowo, poczatkowa wartosc 3 max 5
nip,     // tyle jescze bedzie pytan (liczac te powtarzajace), nip = suma wartości elementów tablicy ip
ns=-1,   // numer wylosowanego slowa
np=-1,   // numer poprzednio wylosowanego slowa
bl;      // tablice w ktorej jest trzymane true - popelniono blad nad danym slowem, false - nie popelniono
//nastepne=true; //jeżeli true to nastepne slowo jest losowane, jak false to nie. Zmienna przydatna przy zmianie: wpisujesz <-> mowi
var a,p; //a - tablica slow angielskich, p - tablica slow polskich

var wzestawiehtml = ''; //html w <div id="wzestawie"></div> (razem z koszykami)
var czystatabela = ''; //zawartosc poczatkowa <table></table> (bez koszykow)
var czywszystkie= true;
var zestaw;        //numer aktualnie przerabianego zestawu ustalany w listaslow.js
var tytulzestawu;  //tytul aktulnie przerabianego zestawu

var klony = ''; // ciąg takich samych znaków np. ee do wyświetlenia é (alfabet.js)

var gdzie = 0; //aktualna pozycja kursora w input ze wzgledu na ie musi byc globalnie ustalana (alfabet.js)

var poprzedniadres; //referrer

var SekundyCzekania; //ile sekund czekania na zalogowanie, itd.

var IleNowychSlow; //przy zapisywaniu nowego lub edycji starego zestawu

var html;

var blednelogowania=0;

var url; //np. http://wordki.pl, http://localhost/wordki.pl, http://192.168.0.1/wordki.pl
function id(co){
    return document.getElementById(co);
}

function ZamienZnaki(tekst,znak,znakk){
    while (tekst.indexOf(znak) >= 0) tekst = tekst.replace(znak,znakk);
    return tekst;
}


function ZnakiInHtml(tekst){
    if (tekst){
	tekst = ZamienZnaki(tekst,'=','&#61;');
	tekst = ZamienZnaki(tekst,'<','&#60;');
	tekst = ZamienZnaki(tekst,'>','&#62;');
	tekst = ZamienZnaki(tekst,'"','&#34;');
	return tekst;
    }else{
	return 'brak'
    }
}

function ZnakiInPost(tekst){
    tekst = ZamienZnaki(tekst,'&','%26');
    tekst = ZamienZnaki(tekst,'=','%3D');
    tekst = ZamienZnaki(tekst,'+','%2B');
    tekst = ZamienZnaki(tekst,';','%3B');
    tekst = ZamienZnaki(tekst,'\\','%5C');
    tekst = ZamienZnaki(tekst,'?','%3F');
    return tekst;
}


function DelEndZnak(tekst){
    if (tekst.length>0){
	tekst = tekst.substring(0,tekst.length-1); //obciecie ostatniego znaku 
	return tekst
    }
}

function PodswietlenieButtona(){
    var buttony = document.getElementsByTagName("div");
    for (var n=0; n<buttony.length; n++){
	if ((buttony[n].className == 'przycisk') || (buttony[n].className == 'przycisklitery')){
	    buttony[n].onmouseover = function(){ this.style.backgroundColor = "#fadb79"; };
	    buttony[n].onmouseout = function(){ this.style.backgroundColor = "#ffeedd"; };
	}
    }
}

function JakiBrowser(){
    if ((i = navigator.userAgent.toLowerCase().indexOf('msie')) >= 0) {
	ie = true;
    } else if ((i = navigator.userAgent.toLowerCase().indexOf('firefox')) >= 0) {
	firefox = true;
    } else if ((i = navigator.userAgent.toLowerCase().indexOf('opera')) >= 0) {
	opera = true;
    }else{
	firefox = true; //pewnie jakas mozilla
    }
}

function JestKlucz(klucz){
    var jest = false;
    for (var k in lka){
	if (k == klucz) jest = true;
    }
    return jest;
}

function JakiJezykWadresie(){
    var adres = String(document.location);
    var jezyk = ['angielski', 'niemiecki', 'francuski', 'hiszpanski', 'wloski'];

    for(var n=0; n<jezyk.length; n++){
	if (adres.indexOf(jezyk[n]) >= 0) return jezyk[n];
    }
    return 'angielski';

//    var jezyk = adres.match(/.*wordki.pl\/(.*?)\/.*/);
 
//    if (jezyk != null){//jezyk to tablica zlozona z "calego adresu" i "jezyka" to co w nawiasie
//	return jezyk[1];
//    }else{
//	return "angielski";
//    }
}

function Skracaj(jezyk){
    if (jezyk == 'niemiecki'){
	return 'de';
    }else if (jezyk == 'francuski'){
	return 'fr';
    }else if (jezyk == 'hiszpanski'){
	return 'es';
    }else if (jezyk == 'wloski'){
	return 'it';
    }else{
	return 'en';
    }
}

function Rozwin(jezyk){
    if (jezyk == 'de'){
	return 'niemiecki';
    }else if (jezyk == 'fr'){
	return 'francuski';
    }else if (jezyk == 'es'){
	return 'hiszpanski';
    }else if (jezyk == 'it'){
	return 'wloski';
    }else{
	return 'angielski';
    }
}

function DelPlitery(jezyk){
    jezyk = ZamienZnaki(jezyk,'ń','n');
    jezyk = ZamienZnaki(jezyk,'ł','l');
    return jezyk;
}

function AddPlitery(jezyk){
    if (jezyk == 'hiszpanski'){
	return 'hiszpański';
    }else if (jezyk == 'wloski'){
	return 'włoski';
    }else{
	return jezyk;
    }
}

function GdzieJaJestem(){
    var adres = String(document.location);
    var jezyk = ['angielski', 'niemiecki', 'francuski', 'hiszpanski', 'wloski'];

    var re = new RegExp("^"+url+"/?(index.html)?$","i");         //? - zero lub jeden
    if (re.test(adres)) return 'wszystkiezestawy'; // .../wordki.pl

    for(var n=0; n<5; n++){

	var re = new RegExp("^"+url+'/'+jezyk[n]+"/dodaj.html$","i");
	if (re.test(adres)) return 'dodaj';

	var re = new RegExp("^"+url+'/'+jezyk[n]+"/\\d+\.html$","i");  //+ jeden lub wiecej \d - cyfra
	if (re.test(adres)) return 'zestaw';
    
	var re = new RegExp("^"+url+'/'+jezyk[n]+"/?(index.html)?$","i");
	if (re.test(adres)) return 'wszystkiezestawy';

	var re = new RegExp("^"+url+'/'+jezyk[n]+"/mojezestawy/.*\.html$","i");
	if (re.test(adres)) return 'mojezestawy';


    }


/*    if ((adres.indexOf('angielski')>0) ||
	(adres.indexOf('niemiecki')>0) ||
        (adres.indexOf('francuski')>0) ||
        (adres.indexOf('hiszpanski')>0) ||
        (adres.indexOf('wloski')>0)){

	if (adres.indexOf('zestawy')>0){
	    if (adres.indexOf('wszystkie.html')>0){
		return 'wszystkiezestawy';
	    }else{
		return 'zestaw';
	    }
	}else if(adres.indexOf('dodaj.html')>0){
	    return 'dodaj';
	}else{
	    return 'indexzestawu';
	}
    }else{
	return 'indexglowny';
    }*/
}

function ZalogowanyCzyNie(){
    if (dd['login']){
	if (dd['login'] != '_gosc'){
	    return true;
	}
    }
    return false;
}

function NumerZestawu(){
    var adres = String(document.location);
    var re = /.*\/(\d+)\.html$/i;
    var w = re.exec(adres);
    return w[1];
}

function UstawienieZestawu(jaki){ //zwraca ustawienie zestawu w nn czyli tez na liscie zestawów
    ii = -1;//sprawdzanie na której pozycji na liscie zestwow jest usuwany zestaw
    for(var i=0; i<nn.length; i++){
	if (nn[i] == jaki) ii=i;
    }
    return ii;
}

function UstawienieZestawuWkk(jaki){
    ii = -1;
    for(var i=0; i<kk.length; i++){
	if (kk[i] == jaki) ii=i;
    }
    return ii;
}


function CzyTenZestawJestDodany(){
    zestaw = NumerZestawu();
    if (UstawienieZestawu(zestaw) != -1){
	return true;
    }else{
	return false;
    }
}

function UstawUrl(){
    url = String(document.location);
    n = url.indexOf("wordki.pl");
    url = url.substring(0,n)+"wordki.pl";
}


function ObwodZielony(jakieid){
    id(jakieid).style.border = "2px solid #2aca6d";
}

function ObwodNormalny(jakieid){
    id(jakieid).style.border = "1px solid #999999";
}

function AktywnePodkreslenie(jakieid){
    id(jakieid).onmouseover = function(){this.style.textDecoration = "underline"};
    id(jakieid).onmouseout = function(){this.style.textDecoration = "none"};
}//_gosc||gosc6745||angielski||ustawienia*1|wpisujesz*1|polskie*1|kolejno*0|powtarzanie*2|wielkosc*2|kolor*0||
//1*11:-:-|2*7:-:-|3*12:-:-||1*2*3
//to co przyszło ze skryptu daje w całości do ciach bez wiekszego przetwarzania 
//login=_gosc
//hasloo=gosc6745
//jezyk=en
//ustawienia=ustawienia*1|wpisujesz*1|polskie*1|kolejno*0|powtarzanie*2|wielkosc*2|kolor*0
//st=1*11:-:-|2*7:-:-|3*12:-:-
//nn=1*2*3
function ProstoDoCiach(tekst){
    var data = new Date(2090,11,10,19,30,30);
    tekst = tekst.replace("\n",'');

    var prw = tekst.split('||');

    document.cookie = "login="+escape(prw[0])+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "hasloo="+prw[1]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "jezyk="+prw[2]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "ustawienia="+prw[3]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "st="+prw[4]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "nn="+prw[5]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "kk="+prw[6]+"; expires="+data.toGMTString()+"; path=/";
}

function ZnajdzCiastko(co){
    var ciacho = document.cookie;

    var p = ciacho.indexOf(co+'=');
    if (p>=0){
	var wycinek = ciacho.substring(p,ciacho.length);
	var p = wycinek.indexOf('=') + 1; //poczatek zawartosci dla np. ustawienia="...zawartosc .."
	var k = wycinek.indexOf(';');     //koniec
	if (k<0) k = wycinek.length;
	var wartosc = wycinek.substring(p,k);
	return wartosc;
    }else{
	return 'brak';
    }
}

function GetCiacho(){
    ddOdCiacha();
    stOdCiacha();
    nnOdCiacha();
    kkOdCiacha();
}

function PutCiacho(){
    ddDoCiacha();
    stDoCiacha();
    nnDoCiacha();
    kkDoCiacha();
}

function ddDoCiacha(){
    var data = new Date(2090,11,10,19,30,30);

    document.cookie = "login="+escape(dd["login"])+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "hasloo="+dd["hasloo"]+"; expires="+data.toGMTString()+"; path=/";
    document.cookie = "jezyk="+Skracaj(dd["jezyk"])+"; expires="+data.toGMTString()+"; path=/";

    var dociacha = '';
    for (var co in dd){  //przebiega po kluczach dd
	if ( (co!='login') && (co!='hasloo') && (co != 'jezyk') ){
	    dociacha = dociacha+co+'*'+dd[co]+'|';
	}
    }
    dociacha = DelEndZnak(dociacha);
    document.cookie = "ustawienia="+dociacha+"; expires="+data.toGMTString()+"; path=/";
}

function ddOdCiacha(){
    dd = new Object();

    if (document.cookie.indexOf('login=')<0) UtworzGoscia(); //tworzy konto _gosc
    dd["login"] = unescape(ZnajdzCiastko("login"));
    dd["hasloo"] = ZnajdzCiastko("hasloo");
    dd["jezyk"] = Rozwin(ZnajdzCiastko("jezyk"));//np dd["jezyk"] = angielski

    var ustawienia = ZnajdzCiastko("ustawienia");

    if (ustawienia != 'brak'){ //na wszelki wypadek ten if bo wczesniej jest UtworzGoscia
	var przyrownania = ustawienia.split('|');
	for (var n in przyrownania){
	    var prw = przyrownania[n].split('*');
	    dd[ prw[0] ] = prw[1]; //np. dd["kolejno"]=1
	}
    }
}


//st=1*11:-:-|2*7:-:-|3*12:-:-
function stDoCiacha(){   //cala tablice st zapisuje do ciacha (wszystkie klucze)
    var data = new Date(2090,11,10,19,30,30);
    var dociacha = '';
    for(var nr in st){//przebiega po kluczach st czyli numerach zestawów
	if ((st[nr]) && (UstawienieZestawu(nr)!=-1)){
	    var bledneslowa = '';
	    if (st[nr][1] != '-'){
		bledneslowa = ':';
		for (var i in zl[nr]){
		    bledneslowa = bledneslowa + zl[nr][i]+':';
		}
		bledneslowa = DelEndZnak(bledneslowa);
	    }
	    dociacha = dociacha+nr+'*'+st[nr][0]+':'+st[nr][1]+':'+st[nr][2]+bledneslowa+'|';
	}
    }

    if (dociacha.length > 0){
	dociacha = DelEndZnak(dociacha);
    }else{
	dociacha = 'puste';
    }

    document.cookie = "st="+dociacha+"; expires="+data.toGMTString()+"; path=/";
}

//st=1*11:-:-|2*7:-:-|3*12:-:-
//nn[0]=4, nn[1]=2, nn[2]=6    zestaw 4.html jest pierwszy, 2.html drugi, 6.html trzeci
function stOdCiacha(){
    st = new Object();
    zl = new Object();
    var p, k, n, przyrownania, prw, nr, stat;
    var stt = ZnajdzCiastko("st");
    if ( (stt != 'brak') && (stt != 'puste') ){
	przyrownania = stt.split('|');
	for (n in przyrownania){
	    prw = przyrownania[n].split('*');
	    nr = prw[0];
	    stat = prw[1].split(':');
	    st[nr] = new Array();
	    st[nr][0] = stat[0];
	    st[nr][1] = stat[1];
	    st[nr][2] = stat[2];
	    if (st[nr][1] != '-'){
		zl[nr] = new Array();
		for(var i=0; i<st[nr][1]; i++){
		    zl[nr][i] = stat[3+i]; // w tablicy zl znajda się numery slow na które padala zla odp.
		}
	    }
	}
    }
}

function nnOdCiacha(){
    nn = new Array();
    var nnt = ZnajdzCiastko("nn");
    if ( (nnt != 'brak') && (nnt != 'puste') ){
	prw = nnt.split('*');
	for (var n in prw){
	    nn[n] = prw[n];
	}
    }
}

//przykłady ciastek: 12*45*23|40 (12,45,23 - nr koszykow, 40 - maksymalna liczba slow) -|40 (nie ma ma koszykow, 40 maksymalna ...)
function kkOdCiacha(){
    kk = new Array();
    var kkt = ZnajdzCiastko("kk");
    if (kkt != 'brak'){
	prw = kkt.split('|'); 
	kkmaxslow = prw[1];
	if (prw[0] != '-'){ 
	    prww = prw[0].split('*');
	    for (var n in prww){
		kk[n] = prww[n];
	    }
	    kkostatni = kk[ kk.length - 1 ];
	}else{
	    kkostatni = "0"; //jak jest '-' to kk pozostaje puste (brak koszkow) "0" oznacza zerowy koszyk, czyli nie istniejacy
	}
    }else{
	kkostatni = "0";
	kkmaxslow = '30';
    }
}


//nn=4*2*6    zestaw 4.html jest pierwszy, 2.html drugi, 6.html trzeci
function nnDoCiacha(){
    var data = new Date(2090,11,10,19,30,30);
    var dociacha = '';
    for (var i=0; i<nn.length; i++){
	if (nn[i]){//sprawdza czy zestaw nie został usuniety false
	    if (st[nn[i]]){//dla bezpieczenstwa sprawdza czy jest info st dla zestawu
		dociacha = dociacha+nn[i]+'*';
	    }
	}
    }

    if (dociacha.length > 0){
	dociacha = DelEndZnak(dociacha);
    }else{
	dociacha = 'puste';
    }

    document.cookie = "nn="+dociacha+"; expires="+data.toGMTString()+"; path=/";
}

//przykłady ciastek: 12*45*23|40 (12,45,23 - nr koszykow, 40 - maksymalna liczba slow) -|40 (nie ma ma koszykow, 40 maksymalna ...)
function kkDoCiacha(){
    var data = new Date(2090,11,10,19,30,30);
    var dociacha = '';
    for (var i=0; i<kk.length; i++){
	if (kk[i]){//sprawdza czy koszyk nie został usuniety false
	    if (st[kk[i]]){//dla bezpieczenstwa sprawdza czy jest info st dla koszyka
		dociacha = dociacha+kk[i]+'*';
	    }
	}
    }

    if (dociacha.length > 0){
	dociacha = DelEndZnak(dociacha);
    }else{
	dociacha = '-';
    }

    if ( kkmaxslow.length > 0 ){//tak na wszelki wypadek, bo kkmaxslow (string) powinien byc zawsze
	dociacha += '|'+kkmaxslow;
    }else{
	dociacha += '|30'; 
    }

    document.cookie = "kk="+dociacha+"; expires="+data.toGMTString()+"; path=/";
}


function KillCiacho(){
    var data = new Date(2000,11,10,19,30,30);
    var ciacho = document.cookie;
    if ((ciacho.indexOf('login=') >= 0)) document.cookie = "login=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('hasloo=') >=0)) document.cookie = "hasloo=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('ustawienia=') >=0)) document.cookie = "ustawienia=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('jezyk=') >=0)) document.cookie = "jezyk=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('st=') >=0)) document.cookie = "st=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('nn=') >=0)) document.cookie = "nn=; expires="+data.toGMTString()+"; path=/";
    if ((ciacho.indexOf('kk=') >=0)) document.cookie = "nn=; expires="+data.toGMTString()+"; path=/";
}


function UtworzGoscia(){
    var jezyk = JakiJezykWadresie();
//    alert(jezyk);

//    var tekst='_gosc||gosc6745||'+Skracaj(jezyk)+'||ustawienia*1|wpisujesz*1|polskie*1|kolejno*0|powtarzanie*2|wielkosc*2|kolor*0||1*11:-:-|2*7:-:-|3*12:-:-||1*2*3||-|5';
    var tekst='_gosc||gosc6745||'+Skracaj(jezyk)+'||ustawienia*1|wpisujesz*1|polskie*1|kolejno*0|powtarzanie*2|wielkosc*2|kolor*0||puste||puste||-|30';

    ProstoDoCiach(tekst);
}

function PrzeladujTaStrone(){
    var data = new Date(2090,11,10,19,30,30);
    document.cookie = "przeladowac=tak; expires="+data.toGMTString()+"; path=/";
}

//przydatne przy tworzeniu nowych stron lub edycji
function CzyPrzeladowacTaStrone(){
    if (ZnajdzCiastko("przeladowac") == 'tak'){
	var data = new Date(2000,11,10,19,30,30);
	document.cookie = "przeladowac=; expires="+data.toGMTString()+"; path=/";
	window.location.reload();
    }
}

//przydatne do odswiezenia aktualnej strony
function PrzeladujRazStrone(){
    if (ZnajdzCiastko("przeladowana") == 'brak'){
	var data = new Date();
	data.setTime(data.getTime()+20000);//20s aktualne ciastko
	document.cookie = "przeladowana=tak; expires="+data.toGMTString()+"; path=/";
	window.location.reload();
    }else{
	var data = new Date(2000,11,10,19,30,30);
	document.cookie = "przeladowac=; expires="+data.toGMTString()+"; path=/";
    }
}

function UpieczCiacho(nazwa,zawartosc){
    var data = new Date(2090,11,10,19,30,30);
    document.cookie = nazwa+"="+escape(zawartosc)+"; expires="+data.toGMTString()+"; path=/";
}function Makexmlhttp(){
    if (window.XMLHttpRequest){
	xmlhttp = new XMLHttpRequest();
//	xmlhttp.overrideMimeType('text/xml');
    } else {
	try
	{
	    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
	    try
	    {
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    catch (e)
	    {
		xmlhttp = false;
	    }
	}
    }
}

function Pobierz(){
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	    try{
		ajax = xmlhttp.responseText;
	    }
	    catch (e){
		ajax ='';
	    }
    } else {
	ajax = '';
    }
}


function WczytajPlik(plik){
    if(xmlhttp){
	try{
	    xmlhttp.open("GET",plik,true);//ustaw parametry poloczenia
	    xmlhttp.onreadystatechange = Pobierz; //funkcja Pobierz jest przypisana do obslugi 
	    xmlhttp.send(null);                   //zmianu stanu żadania inicjalizowanego przez send 
	}
	catch (e){
	    ajax = '';
	}

    } else {
	ajax = ''
    }
}

function WyslijGet(url,klucz,wartosc){
    if(xmlhttp){
	try{
	    xmlhttp.open('GET',url+'?'+klucz+'='+wartosc,true); //ustaw parametry poloczenia
	    xmlhttp.onreadystatechange = Pobierz;
	    xmlhttp.send(null);
	}
	catch (e){
	    ajax = '';
	}

    } else {
	ajax = ''
    }
}

function ajaxWyslijPost(url,tekst){
    if(xmlhttp){
	try{
	    xmlhttp.open('POST',url,true);     //ustaw parametry poloczenia
	    xmlhttp.onreadystatechange = Pobierz;  //funkcja Pobierz jest przypisana do obslugi (4 - zakończenie)
	                                           //zmianu stanu żadania inicjalizowanego przez send 
	    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    var parametry = tekst;
	    xmlhttp.send(parametry);
	}
	catch (e){
	    ajax = '';
	}

    } else {
	ajax = ''
    }
    return ajax;
}

function ajaxPostFunkcja(url,parametry,funkcja){
    try{ //jak jest już utworzone jakies xmlhttp
	xmlhttp.onreadystatechange = null; //wyłącza obsluge przez funkcje zmiane stanu poprzedniego xmlhttp
    }catch(e){}

    Makexmlhttp();
    if(xmlhttp){
	try{
	    xmlhttp.open('POST',url,true);     //ustaw parametry poloczenia
	    xmlhttp.onreadystatechange = new Function(funkcja); //funkcja o kodzie "funkcja"
	                                                        //jest przypisana do obslugi (4 - zakończenie)
	                                                        //zmianu stanu żadania inicjalizowanego przez send 
	    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	    xmlhttp.send(parametry);
	    return true;

	}catch (e){
	    return false;
	}

    } else {
	return false;
    }
}

function ajaxGetFunkcja(url,parametry,funkcja){
    try{ //jak jest już utworzone jakies xmlhttp
	xmlhttp.onreadystatechange = null; //wyłącza obsluge przez funkcje zmiane stanu poprzedniego xmlhttp
    }catch(e){}

    Makexmlhttp();
    if(xmlhttp){
	try{
	    xmlhttp.open('GET',url+'?'+parametry,true); //ustaw parametry poloczenia
	    xmlhttp.onreadystatechange = new Function(funkcja);
	    xmlhttp.send(null);

	}catch (e){
	    return false;
	}

    } else {
	return false;
    }
}

function WczytajPlikFunkcja(plik,funkcja){
    try{ //jak jest już utworzone jakies xmlhttp
	xmlhttp.onreadystatechange = null; //wyłącza obsluge przez funkcje zmiane stanu poprzedniego xmlhttp
    }catch(e){}    
    Makexmlhttp();
    if(xmlhttp){
	try{
	    xmlhttp.open("GET",plik,true);
	    xmlhttp.onreadystatechange = new Function(funkcja);
	    xmlhttp.send(null);                   

	}catch (e){
	    return false;
	}

    } else {
	return false;
    }

}
//informacje z ciastek
//dd[login]=Jakub, dd[hasloo]=js93j9, dd[jezyk]=angielski, ...
//st[23][0]=15, st[23][1]=7, st[23]="8398598" w zestawie 23.html jest 15 slow, w tym 7 blednych odp. ostatnia nauka 8398598ms
//tt[23]=czasowniki


function OdpowiedzNaZaloguj(){
    var ajax;


    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	    try{

		ajax = xmlhttp.responseText;
		ajax = DelEndZnak(ajax);

//		ObwodNormalny("idz");
		if (ajax.indexOf('||')>=0){ //przyszło ostatnio uzywane ciacho
		    KillCiacho();
		    ProstoDoCiach(ajax);
		    GetCiacho();
		    var gdzie = GdzieJaJestem();
		    if (gdzie == 'wszystkiezestawy'){
			document.location = url+'/'+dd["jezyk"]+'/mojezestawy/'+dd["login"]+'.html'
		    }else{
			window.location.reload();
		    }
		}else if(ajax == 'bledne haslo'){
		    id("inputy").style.display = "none";
		    id('BladLogowania').innerHTML = 'Błędne hasło !!!';
		    id('BladLogowania').style.display = "block";
		    setTimeout('PokazBelkeNiezalogowana(); PodswietlenieButtona();',4000);

		}else if (ajax == "nie ma takiego uzytkownika"){
		    id('inputy').style.display = "none";
		    id('BladLogowania').style.fontSize = "12px";
		    id('BladLogowania').style.top = "8px";
		    id('BladLogowania').style.left = "710px";
		    id('BladLogowania').innerHTML = 'Nie ma takiego<br> użytkownika !!!';
		    id('BladLogowania').style.display = "block";
		    setTimeout('PokazBelkeNiezalogowana(); PodswietlenieButtona();',4000);
//		    DoTrzechRazySztuka();
		}else{ //np jak bedzie "nieOK"
		    PokazBelkeNiezalogowana();
		    PodswietlenieButtona();
		}
	    }
	    catch (e){
		ObwodNormalny("idz");
	    }
    }
}

function Zaloguj(){
    id("idz").style.border = "2px solid #2aca6d";
    Makexmlhttp();

    var login = id('login').value;
    login = escape(login);
    var haslo = id('haslo').value;
    haslo = escape(haslo);
    
    TextDlaSkryptu = 'co=logowanie&login='+login+'&haslo='+haslo;
    ajaxPostFunkcja(url+'/skrypt.py',TextDlaSkryptu,"OdpowiedzNaZaloguj()");
}


function OdpowiedzNaWyloguj(){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    if (ajax == "wylogowany\n"){
		UpieczCiacho('ostatnio',dd['login']);
		KillCiacho();
		WczytajWszystkieZestawy(''); //jezyk bierze ze sciezki
	    }
	}
	catch (e){}
    }    
}

function Wyloguj(){
    PutCiacho(); //dla bezpieczenstwa uaktualnia cookies, w koncu na serwerze sa zapisywane
    ObwodZielony('wyloguj');
    ajaxPostFunkcja(url+'/skrypt.py','co=wyloguj','OdpowiedzNaWyloguj()');
}

function EnterHasla(event){
    var klawisz = Klawisz(event);
    if  (klawisz == 13){
	Zaloguj();
    }
}

function WczytajNowyJezyk(nowyjezyk){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    ajax = DelEndZnak(ajax);
	    if (ajax.indexOf('||')>=0){             //przyszly ciacha
		KillCiacho();
		ProstoDoCiach(ajax);
		WczytajWszystkieZestawy(nowyjezyk);
	    }
	}
	catch (e){}
    }        
}

function ZmianaJezyka(nowyjezyk){
    if (dd['login'] != '_gosc'){
	//zmienia ciastka na te z nowego jezyka, jak to się stanie uruchamia funkcje WczytajNowyJezyk
	ajaxPostFunkcja(url+'/skrypt.py','co=WymienCiacha&nowyjezyk='+Skracaj(nowyjezyk),'WczytajNowyJezyk("'+nowyjezyk+'");')
    }else{
	WczytajWszystkieZestawy(nowyjezyk);
    }
}


function ListaJezykow(){
    var styl,y;
    var jezyk = ['angielski','niemiecki','francuski','hiszpanski','wloski'];
    var jezykwadresie = JakiJezykWadresie();
    var html = "";
    var ny = 0;
    for(var n=0;n<5;n++){
	if (jezykwadresie != jezyk[n]){
	    y = ny*28;
	    ny++;
	    var styl = 'style="position:absolute; left:10px; width:130px; height:22px; font-size:15px; '+
		'font-weight:normal; font-family:arial; top:' + y + 'px;"';
	    html += '<div onclick=\'ZmianaJezyka("'+jezyk[n]+'"); this.style.border="2px solid #2aca6d"\' class="przycisk" '+
		styl+'>'+AddPlitery(jezyk[n])+'</div>';
	}
    }
    return html;
}

function PokazListeJezykow(){
    id("ListaJezykow").style.display = "block";
    id("trojkat").style.display = "none";
    PodswietlenieButtona();
    id("AktualnyJezyk").onclick = function(){
	id("ListaJezykow").style.display = "none";
	id("trojkat").style.display = "block";
	id("AktualnyJezyk").onclick = PokazListeJezykow;
    }
}

function WczytajWszystkieZestawy(nowyjezyk){
    if (nowyjezyk.length > 0){
	jezyk = nowyjezyk;
    }else{
	jezyk = JakiJezykWadresie();
    }
    if (jezyk == 'angielski'){
	document.location = url
    }else{
	document.location = url+'/'+jezyk+'/'
    }
}

function WczytajMojeZestawy(){
    if (dd["login"]){ //tak na wszelki wypadek
	if (dd["login"] != "_gosc"){ //tak na wszelki wypadek
	    document.location = url+'/'+dd["jezyk"]+'/mojezestawy/'+dd["login"]+'.html';
	    return true;
	}
    }
    alert("Zaloguj się lub załóż konto.");
}

function PokazBelkeNiezalogowana(){
    var aktualnyjezyk = JakiJezykWadresie();
    var aktualnyjezykpl = AddPlitery(aktualnyjezyk);
    var slownikhtml = "";
    if (aktualnyjezyk == 'angielski') { 
	var slownikhtml = '<div id="tslownik">słownik angielsko-polski</div>'+
	    '<input id="slownik">'+
	    '<div id="tlumaczenia"></div>'
    }

    var poprzednilogin = unescape(ZnajdzCiastko('ostatnio'));
    if (poprzednilogin == 'brak') poprzednilogin = ""; //niestety ewentualny uzytkownik "brak" 
                                                       //nie bedzie mial zapamietanego loginu
    id("belka").innerHTML = '<div id="TloSlownika"></div>'+
	slownikhtml+
	'<div id="tAktualnyJezyk">wybierz język nauki</div>'+
	'<div id="AktualnyJezyk" class="przycisk">'+aktualnyjezykpl+'</div>'+
	'<div id="trojkat">▼</div>'+
	'<div id="WszystkieZestawy" class="przycisk">wszystkie zestawy</div>'+
	'<div id="MojeZestawy" class="przycisk">moje zestawy</div>'+
	'<div id="pomoc" class="przycisk">pomoc</div>'+
//	'<div id="forum" class="przycisk">forum</div>'+
	'<div id="inputy">'+
	'<div id="tlogin">login:</div>'+
	'<input id="login" value="'+poprzednilogin+'"  type="text" autocomplete="off">'+
	'<div id="thaslo">hasło:</div>'+
	'<input id="haslo" type="password" value="" autocomplete="off">'+
	'</div>'+
	'<div id="BladLogowania"></div>'+
//	'<div id="ZapomnianeHaslo">zapomniałeś hasła?</div>'+
	'<div id="ZalozKonto">załóż konto</div>'+
	'<div id="idz" class="przycisk"></div><img id="pngidz" src="'+url+'/loguj.png">'+
	'<div id="ListaJezykow" style="display:none"></div>';


    if ((GdzieJaJestem() == 'wszystkiezestawy') && (poprzednilogin == "")){
	id("belka").innerHTML += '<div id="InfoOstronie"></div>';
	id("ZalozKonto").className = "przycisk";
	id("calosc").style.paddingTop = "240px";
	id("ZalozKonto").style.left = "630px";
	id("ZalozKonto").style.top = "120px";
	id("ZalozKonto").style.fontSize = "18px";
	id("ZalozKonto").style.fontWeight = "normal";
	id("ZalozKonto").style.height = "25px";
	id("ZalozKonto").style.width = "200px";
	id("ZalozKonto").style.color = "#444444";
	id("ZalozKonto").style.paddingTop = "3px";

	id("InfoOstronie").innerHTML = '<b>Wordki.pl</b> to progam który pomaga:<br>'+
	    '1. w bezbłędnym nauczeniu się słówek na kartkówkę, sprawdzian<br>'+
	    '2. w utrwaleniu słówek, które wypisałeś/aś czytając obcojęzyczne teksty<br>'+
	    '3. w znalezieniu nowych zestawów do nauki'+
	    '<div style="text-align: left; font-weight: normal;font-family:verdana, sans-serif; font-size:13px; margin-top:10px;">'+
	    'Nie musisz nic instalować. Działa w przeglądarce. Kliknij dowolny zestaw i wybierz "Nauka".</div>';

	id("ZalozKonto").onclick = new Function('PoczatekRejestracji("doMoichZestawow");');
    }else{
	AktywnePodkreslenie("ZalozKonto");
	id("ZalozKonto").onclick = new Function('PoczatekRejestracji("aktualnaStrona");');
    }

    if ((aktualnyjezyk == 'angielski') && (slownikhtml.length > 0)) { PoczatekSlownika(); }    

    id("ListaJezykow").innerHTML = ListaJezykow();
    id("AktualnyJezyk").onclick = PokazListeJezykow;
    id("pngidz").onmouseover = function(){ id("idz").style.backgroundColor = "#fadb79"; };

    id("idz").onclick = Zaloguj;
    id("pngidz").onclick = Zaloguj;


    id("haslo").onfocus = new Function('id("haslo").onkeydown=EnterHasla;');

    id("WszystkieZestawy").onclick = function(){ WczytajWszystkieZestawy('') };
    id("MojeZestawy").onclick = WczytajMojeZestawy;

    id("pomoc").onclick = function(){ UstawUrl(); document.location = url + '/pomoc.html'; }
}

//dd["login"] = "Jakub";
function PokazBelkeZalogowana(){
//    dd["login"] = "Jakub";
    var aktualnyjezyk = JakiJezykWadresie();
    var aktualnyjezykpl = AddPlitery(aktualnyjezyk);
    var slownikhtml = "";
    if (aktualnyjezyk == 'angielski') { 
	var slownikhtml = '<div id="tslownik">słownik angielsko-polski</div>'+
	    '<input id="slownik">'+
	    '<div id="tlumaczenia"></div>';
    }

    id("belka").innerHTML = '<div id="TloSlownika"></div>'+
	slownikhtml+
	'<div id="tAktualnyJezyk">wybierz język nauki</div>'+
	'<div id="AktualnyJezyk" class="przycisk">'+aktualnyjezykpl+'</div>'+
	'<div id="trojkat">▼</div>'+
	'<div id="WszystkieZestawy" class="przycisk">wszystkie zestawy</div>'+
	'<div id="MojeZestawy" class="przycisk">moje zestawy</div>'+
//	'<div id="pomoc" class="przycisk">pomoc</div>'+
//	'<div id="forum" class="przycisk">forum</div>'+
	'<div id="witaj">'+
	'<div id="powitanie">Witaj <b>'+dd["login"]+'</b></div>'+
	'<div id="wyloguj" class="przycisk">wyloguj</div>'+
	'</div>'+
	'<div id="ListaJezykow" style="display:none"></div>';

    if ((aktualnyjezyk == 'angielski') && (slownikhtml.length > 0)) { PoczatekSlownika(); }    

    id("ListaJezykow").innerHTML = ListaJezykow();
    id("AktualnyJezyk").onclick = PokazListeJezykow;
    id("wyloguj").onclick = Wyloguj;

    id("WszystkieZestawy").onclick = function(){ WczytajWszystkieZestawy('') }
    id("MojeZestawy").onclick = WczytajMojeZestawy;
}

function jestdd(klucz){
    if ( (typeof(dd[klucz]) == 'undefined') || (dd[klucz] == '') ){
	return false;
    }else{
	return true;
    }
}


function CzyPolaPelne(login,haslo,hasloo){
    var pelne = true;
    if (login.length == 0) { id('blogin').innerHTML = "Wpisz login."; pelne = false; }
    if (haslo.length == 0) { id('bhaslo').innerHTML = "Wpisz hasło."; pelne = false; }
    if (hasloo.length == 0) { id('bhaslo').innerHTML = "Wpisz drugi raz hasło."; pelne = false; }
    if (pelne) {
	return true;
    }else{
	return false;
    }
}

function OczekiwanieNaRejestracje(){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    if (ajax.indexOf("nieOk")>=0){
		document.location.reload();
	    }else if(ajax.indexOf("ten login jest w bazie")>=0){
		id('blogin').innerHTML = "Taki login już istnieje! Wybierz inny.";
		id("rejestruj").onclick = SprawdzFormularzNowegoKonta;
		ObwodNormalny("rejestruj");
		PodswietlenieButtona();

	    }else if(ajax.indexOf('||')>=0){     //ciacho uzytkownika zostalo wyslane i przychodzi zmodyfikowane 
		KillCiacho();                    // nowy login i hasloo
		ProstoDoCiach(ajax);
		GetCiacho();
		id("drejestruj").innerHTML = 
		    '<b style="color:green; font-family:verdana; size:15px;">Konto zostało założone :-)</b>';

		if (przekierowanieDoMoichZestawow){
		    UstawUrl();
		    setTimeout('document.location = "'+url+'/'+dd["jezyk"]+'/mojezestawy/'+dd["login"]+'.html"',2000);
		}else{
		    setTimeout('document.location.reload();',2000);
		}
	    }
	}catch (e){
	    document.location.reload();
	}
    }
}

function SprawdzFormularzNowegoKonta(event){

    var Ok = true;
    id('blogin').innerHTML = "";
    id('bhaslo').innerHTML = "";


    var login = document.rejestracja.login.value;
    var haslo = document.rejestracja.haslo.value;    
    var hasloo = document.rejestracja.hasloo.value;

    if (!(CzyPolaPelne(login,haslo,hasloo))) return false;

    var re =/^[a-zA-Z0-9]*$/;
    if (!(re.test(login))){
	id('blogin').innerHTML = "Login może składać się tylko z liter (bez polskich) i cyfr!";
	Ok = false;
    }

    var re =/^[0-9]*$/;
    if (re.test(login)){
	id('blogin').innerHTML = "Login nie może się składać tylko z cyfr!";
	Ok = false;
    }


    if (haslo != hasloo){
	id("bhaslo").innerHTML = "Hasła się różnią! Wpisz dwa razy to samo.";
	Ok = false;
    }

    login = ZnakiInPost(login);
    haslo = ZnakiInPost(haslo);
    hasloo = ZnakiInPost(hasloo);

    if (Ok){
	ObwodZielony('rejestruj');
	ajaxPostFunkcja(url+'/skrypt.py','co=nowekonto&login='+login+'&haslo='+haslo+'&hasloo='+hasloo,"OczekiwanieNaRejestracje()");
    }
}


var przekierowanieDoMoichZestawow = false;
function PoczatekRejestracji(gdzie){
    if (gdzie == 'doMoichZestawow'){
	id("calosc").style.paddingTop = "110px";
	przekierowanieDoMoichZestawow = true;
    }
    
    html = id("calosc").innerHTML;
    id("calosc").innerHTML = "\n"+
	'<div id="informacja">Zakładanie nowego konta.</div>'+
	'<div id="a"><div id="b">'+
	'<img id="krzyz" src="'+url+'/krzyz.png">'+
	'<div class="napisy" style="top:30px;">login:</div>'+
	'<div class="bledy" id="blogin"></div>'+
	'<form name="rejestracja">'+
	'<input class="rejest" style="top:30px;" name="login" type="text" maxlength="20" autocomplete="off">'+
	'<div class="napisy" style="top:80px;">hasło:</div>'+
	'<input class="rejest" style="top:80px;" name="haslo" maxlength="60" type="password">'+
	'<div class="bledy" id="bhaslo"></div>'+
	'<div class="napisy" style="top:130px;">potwierdź hasło:</div>'+
	'<input class="rejest" style="top:130px;" maxlength="60" name="hasloo" type="password">'+
	'</form>'+
	'<div style="position: absolute; left:160px; top:200px;" id="drejestruj">'+
	'<div id="rejestruj" class="przycisk">załóż konto</div>'+
	'</div>'+
	'</div></div>';
    id("calosc").style.height = "300px";
    id("krzyz").onclick = new Function('document.location.reload();');
    id("rejestruj").onclick = SprawdzFormularzNowegoKonta;
    document.rejestracja.login.focus();
    PodswietlenieButtona();
}


function JuzMoznaPokazacZestawy(){
    var html='';
    
    for (var n in nn){ // nn to tabela z numerami kolejnych zestawow np. 1,3,100
	var nr = nn[n];
	if (st[nr][2] != '-'){
	    var czas = PrzeliczCzas(nr);
	}else{
	    czas = '-';
	}
	
	html = html + 
	    '<a id="z'+nr+'" class="zestaw" href="zestawy/'+nr+'.html"><span class="tytul">'+ZnakiInHtml(tt[nr])+'</span>'+
	    '<span id="sa'+nr+'" class="sall">'+st[nr][0]+'</span>'+
	    '<span id="sb'+nr+'" class="sbledy">'+st[nr][1]+'</span>'+
	    '<span id="sk'+nr+'" class="skiedy">'+czas+'</span></a>';
    }

    id("zestawy").innerHTML = html;

    for (var n in nn){
	nr = nn[n];
	id('z'+nr).onmouseover = new Function('AktualizujStatystyke('+nr+')');
    }
}

function AktualizujStatystyke(n){
    stOdCiacha();
//    id("sb"+n).innerHTML = st[n][1];
    if (st[n][2] != '-') id("uczas"+n).innerHTML = PrzeliczCzas(n); else id("uczas"+n).innerHTML = '-';
}

function PrzeliczCzas(n){
    if (st[n][2] == '-') return '-';

    var dataodniesienia = new Date(2008,0,1);
    var data = new Date();
    var milisekundy = data - dataodniesienia; 
    var minuty = (milisekundy/60000) - st[n][2];

    if ( minuty > 1 ){

	if ( minuty > 60 ){

	    godziny = minuty / 60;
	    if ( godziny > 1 ){

		dni = godziny / 24;
		if (dni < 1){
		    return parseInt(godziny)+" godz.";
		}else if ( (dni >= 1) && (dni < 2) ){
		    return "1 dzień";
		}else{
		    return parseInt(dni)+" dni";
		}

	    }else{
		return "1 godz.";
	    }
	    
	}else{
	    return parseInt(minuty)+" min.";
	}

    }else{
	return "1 min.";
    }
}

function MojeZestawyCoDrugieNaSzaro(){
    var div = document.getElementsByTagName("div");
    var szary = true;
    for(var n=0; n<div.length; n++){
	if (div[n].className == "uwiersz"){
	    if (szary){
		div[n].style.backgroundColor = "#f5f5f5";
		szary = false;
	    }else{
		szary = true;
	    }
	}
    }
}

function AutorMojeZestawy(){
    var adres = String(document.location);
    var re = /.*\/mojezestawy\/(.+)\.html$/i;
    var w = re.exec(adres);
    return w[1];
}

function CzyToMojeZestawy(){
    if (AutorMojeZestawy() == dd["login"]){
	return true;
    }else{
	return false;
    }
}


function WypiszZestawy(){
    var     html = '<div id="belkaa">' +
	'<div id="tzestawy">zestawy</div>' +
	'<div id="twszystkich">wszystkich</div>' +
	'<div id="tbledy">błędy</div>' +
	'<div id="tjakdawno">jak dawno</div>' +
	'<div id="tautor">autor</div>' +
	'</div>';

    tt = new Object();
    // 6|zwierzeta|15|Jakub\n10|ludzie|23|Jakub (format: nr pliku, tytul, ile slow, autor)
    var tekst = id("ListaZestawow").innerHTML;
    if (tekst.length != 0){
	var tzestawy = tekst.split("||");
    }else{
	var tzestawy = [];
    }

    if (CzyToMojeZestawy()){
	for(var n=0; n<tzestawy.length; n++){
	    var inf = tzestawy[n].split("|"); //np. 1|kolory|11|Jakub
	    var nr = inf[0];
	    var tytul = inf[1];
	    var ileSlow = inf[2];
	    var autor = inf[3];
	    tt[nr] = tytul;
	    
	    ikk = UstawienieZestawuWkk(nr); 
	    if ( ikk != -1  ){  ikk++; var tytul = "koszyk "+ikk; }
	    
	    html += '<div class="uwiersz" onmouseover="AktualizujStatystyke('+nr+')">' +
		'<input class="ukwadrat" type="checkbox">' +
		'<a href="../' + nr + '.html" class="uzestaw">' + tytul + '</a>' +
		'<div class="uwszystkich">' + st[nr][0] + '</div>' +
		'<div class="ubledy">' + st[nr][1] + '</div>' +
		'<div class="ujakdawno" id="uczas'+nr+'">' + PrzeliczCzas(nr) + '</div>' +
		'<div class="divuautor"><a href="' + autor + '.html" class="uautor">' + autor + '</a></div>' +
		'</div>';
	}
	html += '<div id="DolneMenu">' +
	    '<div id="NowyZestaw" class="przycisk">utwórz nowy zestaw</div>' +
	    '</div>';    

	id("ListaZestawow").innerHTML = html;
	MojeZestawyCoDrugieNaSzaro();
	id("NowyZestaw").onclick = function(){ document.location = "../dodaj.html"; };

    }else{
	var ikk = 1;
	for(var n=0; n<tzestawy.length; n++){
	    var inf = tzestawy[n].split("|"); 
	    var nr = inf[0];
	    var tytul = inf[1];
	    var ileSlow = inf[2];
	    var autor = inf[3];
	    tt[nr] = tytul;

	    //ochrona przed tym jak autor "moich zestawow" ma cudze koszyki (rozwiazanie troche kulawe, ale sie sprawdza)
	    if ((AutorMojeZestawy() == autor) && (tytul == "koszyk")){  
		var tytul = "koszyk "+ikk; 
		ikk++; 
	    }

	    html += '<div class="uwiersz">' +
		'<input class="ukwadrat" type="checkbox">' +
		'<a href="../' + nr + '.html" class="uzestaw">' + tytul + '</a>' +
		'<div class="uwszystkich">' + ileSlow + '</div>' +
		'<div class="ubledy">-</div>' +
		'<div class="ujakdawno">-</div>' +
		'<div class="divuautor"><a href="' + autor + '.html" class="uautor">' + autor + '</a></div>' +
		'</div>';


	}
	id("ListaZestawow").innerHTML = html;
	MojeZestawyCoDrugieNaSzaro();
    }


    id("ListaZestawow").style.display = "block";


}
function Czuwaj(){

    if (dd["wpisujesz"] == 1){
	document.wpisz.style.display = "block";
	document.wpisz.wpiss.focus();
	id('buttony').style.top="120px";
    }else{
	document.wpisz.style.display = "none";
	id("alfabet").style.display = "none";
	id('buttony').style.top="100px";
    }

    if (CzySaLiterki){
	if ( (dd["wpisujesz"] == 1) && (dd["polskie"] == 1) ){
	    id("alfabet").style.display = "block";
	} else {
	    id("alfabet").style.display = "none";
	}
	Alfabet();
	JakiBrowser();
        if (ie || firefox){ //funkcja w funkcje.js
	    if (document.wpisz.addEventListener) {
		document.addEventListener("keyup",DajKlawisz,false);
	    } else if (document.wpisz.attachEvent) {
		document.attachEvent("onkeyup",DajKlawisz);
	    } else {
		document.onkeyup=DajKlawisz;
	    }
	}
    }

    NoweSlowo();
    
    if (document.wpisz.addEventListener) {//zostawiam jezeli zamiast na link ktos nacisnie enter
	document.wpisz.addEventListener("submit",AnulujSubmit,false);
	document.addEventListener("keydown",PoKlawiszu,false);
    } else if (document.wpisz.attachEvent) {
	document.wpisz.attachEvent("onsubmit", AnulujSubmit);
	document.attachEvent("onkeydown", PoKlawiszu);
    } else {
	document.wpisz.onsubmit=AnulujSubmit;
	document.onkeydown=PoKlawiszu;
    }


    id('sprawdz').onclick = KlikSprawdz;
    id("nieumiem").onclick = NieUmiem;
    id("umiem").onclick = Umiem;

}

function PoKlawiszu(event){
    var klawisz = Klawisz(event);
    if  (klawisz == 13){
	if ( document.wpisz.style.display=="block" ){   //widoczny input
	    AnulujZdarzenie(event);
	    KlikSprawdz();
	    return false;
	}else if ( id('umiem').style.display == "block" ) {  //widoczny "umiem"
	    Umiem();
	    AnulujZdarzenie(event);
	    return false;
	}else if ( ( dd["wpisujesz"]==0 ) && ( id('sprawdz').style.display == "block" ) ) { //widoczny "sprawdz" w trybie "mowisz"
	    KlikSprawdz();
	    AnulujZdarzenie(event);
	    return false; 
	}
    }else if ((klawisz == 78) && ( id('nieumiem').style.display == "block" )) {  //widoczny "nieumiem" i klawisz "n"
	NieUmiem();
	AnulujZdarzenie(event);
	return false;
    }
    if ((opera)&&(CzySaLiterki)) DajKlawisz(event);
}

function AnulujSubmit(event) {
    AnulujZdarzenie(event);
    return false; //to tez przerywa
}

function AnulujZdarzenie(event){
    if (event.preventDefault) { //przerywa wysylanie formularza
	event.preventDefault();
    } else if (event.cancelBubble != null) {
	event.cancelBubble = true;
    }
}

function KlikSprawdz(){
    var wpisane = document.wpisz.wpis.value;
    if (dd["wpisujesz"]==1){
	if ( TakieSame(ns,wpisane) ){ // porownywanie wlasciwej odpowiedzi z wpisana
	    Aktualizacja_ip_bl('umiem');
	    NoweSlowo();
	}else{
	    document.wpisz.style.display = "none";
	    id("alfabet").style.display = "none";
	    PokazCoWpisane(wpisane);
	    PokazPoprawna(ns);
	    UkryjButtonS();
	    PokazButtonUN();
	}
    }else{
	PokazPoprawna(ns);
	UkryjButtonS();
	PokazButtonUN();
    }
}

function NieUmiem(){
    UkryjCoWpisane();
    UkryjPoprawna();
    Aktualizacja_ip_bl('nieumiem');
    NoweSlowo();
}

function Umiem(){
    UkryjCoWpisane();
    UkryjPoprawna();
    Aktualizacja_ip_bl('umiem');
    NoweSlowo();
}

function NoweSlowo(){
    if (dd["kolejno"]==0){
	ns = Losuj();
    }else{
	ns = Kolejny();
    }

    if (nip > 0){
	PokazPytanie(ns);
	if (dd["wpisujesz"]==1){
	    document.wpisz.wpis.value = "";
	    document.wpisz.style.display = "block";
	    if (dd["polskie"] == 1) id("alfabet").style.display = "block";
	    document.wpisz.wpiss.focus(); //ustawia w belce formularza migajacy kursor
	}
	PokazButtonS();
    }
    UkryjButtonUN();
}
//-------------------------------------------------------------------------------------------------
function PokazCoWpisane(wpisane){
    if (wpisane == ""){
	id('cowpisane').innerHTML = '&nbsp;';
    }else{
	id('cowpisane').innerHTML = wpisane;
    }
    id('cowpisane').style.display = "block";
}

function UkryjCoWpisane(){
    id('cowpisane').style.display = "none";
}

function PokazButtonS(){
    id('Enter').style.display = "block";
    id('sprawdz').style.display = "block";
}

function PokazButtonUN(){
    id('N').style.display = "block";
    id('nieumiem').style.display = "block";
    id('U').style.display = "block";
    id('umiem').style.display = "block";
}

function UkryjButtonS(){
    id('Enter').style.display = "none";
    id('sprawdz').style.display = "none";
}

function UkryjButtonUN(){
    id('N').style.display = "none";
    id('nieumiem').style.display = "none";
    id('U').style.display = "none";
    id('umiem').style.display = "none";
}

function PokazPoprawna(ns){
    if (dd["polskie"]==1) id('poprawna').innerHTML = a[ns]; else id('poprawna').innerHTML = p[ns];
    id('poprawna').style.display = "block";
}

function UkryjPoprawna(){
    id('poprawna').style.display = "none";
}

function PokazPytanie(ns){
    if (dd["polskie"]==1) id('pytanie').innerHTML = p[ns]; else id('pytanie').innerHTML = a[ns];
}


function UsunTakieZnaki(znak,tekst){
    while (tekst.indexOf(znak) >= 0) tekst = tekst.replace(znak,'');
    return tekst;
}

function PorownajSlowa(pierwsze,drugie){
    pierwsze = UsunTakieZnaki(' ',pierwsze);
    drugie =   UsunTakieZnaki(' ',drugie);
    pierwsze = UsunTakieZnaki("\n",pierwsze);
    drugie =   UsunTakieZnaki("\n",drugie);

    pierwsze = pierwsze.toLowerCase();
    drugie = drugie.toLowerCase();
    if (pierwsze == drugie){
	return true;
    }else{
	return false;
    }
}

function TakieSame(ns,wpisane){
    if (dd["polskie"]==1){
	if ( PorownajSlowa(a[ns],wpisane) ){
	    return true;
	}else{
	    return false
	}
    }else{
	if ( PorownajSlowa(p[ns],wpisane) ){
	    return true;
	}else{
	    return false
	}
    }
}


//z nauka.js----------------------------------------------------------------------------------
function Losuj(){
    var n, nst, dalej=1;

    if (nip > 0){

	while(dalej){   //dbanie aby wylosowane slowo (ns) nie bylo takie samo jak poprzednie np
	    dalej = 0;  // oczywiscie jezeli jest to mozliwe nip > ip[ns]

	    n = Math.random(); 
	    n *= nip;
	    n = Math.floor(n) + 1; //tyle mam do przejscia w ip | n jest w przedziale <1,ni>

	    nst = -1;
	    while (n > 0){
		nst++;
		n -= ip[nst];
	    }

	    if ( (nip > ip[nst]) && (np == nst) ){//jezeli jest z czego wybierac i npoprzedni == nastepny to losuj dalej
		dalej = 1;
	    }

	}
	np = nst;
	return nst;


    }else{
	KoniecNauki();
    }
}

function Kolejny(){
    if (nip > 0){

	do{
	    ns++;
	    if ( ns == all ) { ns = 0; }
	}while (ip[ns] == 0);
	return ns;
    }else{
	KoniecNauki();
    }
}

//funkcja uzywana przy zmianie ilosci ile razy powtarzac blad w trakcie nauki zestawu
//pb - tyle powtarzania bylo ustawione
//pj - tyle powtarzania jest ustawione
function ResetujIP(pb,pj){
    if (pj>pb){
	var tyledokladam = pj-pb;
	for(var n=0;n<all;n++){
	    if (bl[n]==false) ip[n] += tyledokladam; //bledy uznane za nauczone moga byc ponownie uczone
	}
    }else{
	for(var n=0;n<all;n++){
	    if (bl[n]==false){
		var tylezrobilem = pb-ip[n];
		if (tylezrobilem>=pj){
		    ip[n]=0;
		}else{
		    ip[n] = pj-tylezrobilem;
		}
	    }	
	}
    }

    nzostalo = 0;
    nip = 0;
    for(n=0;n<all;n++){
	if (ip[n]>0){
	    nzostalo++;
	    nip += ip[n];
	}
    }
    id('nzostalo').innerHTML = nzostalo;
}

function Aktualizacja_ip_bl(jak){
    if ( jak == 'umiem') {
	ip[ns] -= 1;
	nip--;
	if (ip[ns] == 0) nzostalo -= 1;        // zostalo do zrobienia o jeden mniej
    }else{
	if (dd["powtarzanie"]==0){ //jak jest test
	    ip[ns] = 0;
	    nip--;
	    nzostalo--;
	    nbledne++;
	    bl[ns] = false;
	}else{
	    nip += dd["powtarzanie"] - ip[ns]; //tyle dodaje
	    ip[ns]=dd["powtarzanie"];
	    if (bl[ns]){
		bl[ns] = false; //slowo jest oznaczane jako blednie odpowiedziane
		nbledne++;
	    }
	}
    }
    id('nbledne').innerHTML = nbledne;
    id('nzostalo').innerHTML = nzostalo;
}

function Klawisz(event){
    if (typeof(window.event) == "undefined"){
	return event.keyCode;
    }else{
	return window.event.keyCode;
    }
}


function KoniecNauki(){
    if (document.removeEventListener){                            //jak tego nie zwolnie to np. Enter dalej dziala
	document.removeEventListener("keydown",PoKlawiszu,false); //to powoduje bledy
    } else if (document.detachEvent) {
	document.detachEvent("onkeydown", PoKlawiszu);
    }else{
	document.onkeydown = null;
    }

    id('pytanie').style.display = "none";
    document.wpisz.style.display = "none";
    id("alfabet").style.display = "none";
    id("sprawdz").style.display = "none";
    id('Enter').style.display = "none";
    id('poprawna').style.display = "none";
    id("koniecnauki").style.display = "none";
    id("Koniec").innerHTML = 
//	'<tt id="N"></tt><tt id="U"></tt>'+//konieczne bo bład wyskakuje
	'<div style="font-family: arial; font-size:30px; position: absolute; left:200px; top:10px;">koniec</div>'+
	'<div id="NaPoczatek" class="przycisk">ok</div>';
    id("NaPoczatek").onclick = PrzerwijNauke;
    PodswietlenieButtona();
    id('N').style.display = "none";
    id('U').style.display = "none";
    
    if ( (czywszystkie) && (CzyTenZestawJestDodany()) ){
	if (nbledne>0){
	    st[zestaw][1] = nbledne;
	    zl[zestaw] = new Array();
	    var i=0;
	    for (var n in bl){
		if ((bl[n] == false) && (n<all)){ //na wszelki wypadek ta nierownosc
			zl[zestaw][i] = n;
			i++;
		}
	    }
	}else{
	    st[zestaw][1] = '-';
	}
	
	var dataodniesienia = new Date(2008,0,1);
	var data = new Date();
	var milisekundy = parseInt(data - dataodniesienia);
	milisekundy = parseInt(milisekundy / 60000);
	st[zestaw][2] = String(milisekundy); // liczba minut od data odniesienia

	stDoCiacha();
    }

    //dla osób które nie są zalogowane a uczą się zestawow, aby im bledy na czerowno byly wyswietlane
    if ( (czywszystkie) && (CzyTenZestawJestDodany() == false) ){
	if (nbledne>0){
	    nl = new Array();
	    var i=0;
	    for (var n in bl){
		if ((bl[n] == false) && (n<all)){//na wszelki wypadek ta nierownosc
			nl[i] = n;
			i++;
		}
	    }
	}else{
	    nl = null;
	}
    }

}







function Nauka(){
    id("ObszarNauki").innerHTML = 
	'<div id="pytanie"></div>'+
	'<form name="wpisz"><input id="wpis" type="text" name="wpiss" autocomplete="off"></form>'+
	'<div id="alfabet"></div>'+
	'<div id="cowpisane"></div>'+
	'<div id="poprawna"></div>'+
	'<div id="buttony"></div>'+
	'<div id="Koniec"></div>';

    id("buttony").innerHTML = 
	'<div id="sprawdz" class="przycisk">sprawdź</div><div id="Enter">[ Enter ]</div>'+
	'<div id="koniecnauki" class="przycisk">przerwij naukę</div>'+
	'<div id="nieumiem" class="przycisk">nie umiem</div><div id="umiem" class="przycisk">umiem</div>'+
	'<div id="N">[n]</div><div id="U">[Enter]</div>';

    id("koniecnauki").onclick = PrzerwijNauke;

    nzostalo = all;  // n zostalo slow do przerobienia
    nbledne = 0; //n falsow popełniono
    nip = all; //n w ip tablicy, tyle jest slow w tablicy ip

    ip = new Array(); //ile powtarzac (ile razy powtarzac poczatkowa wartosc 1)
    bl = new Array(); 
    for(var n=0; n<all; n++){
	ip[n] = 1; //wyswietlane slowa ile razy jeszcze wyswietalac slowa
	bl[n] = true; // true - slowo jest "umiem" false - slowo jest "nie umiem"
    }
  
    id('nall').innerHTML = all;
    id('nzostalo').innerHTML = all;
    id('nbledne').innerHTML = nbledne;
    
    Czuwaj();

UstawRozmiarFonta();
PodswietlenieButtona();
}

function PrzerwijNauke(){

    if (czywszystkie) stOdCiacha(); //zl[zestaw] zostal zniszczony w PoczatekNauki();

    id("wzestawie").style.height = "auto";
    id("wzestawie").innerHTML = wzestawiehtml;

    PoczatekNadTabela();


    BledyNaCzerwono();//jak byly bledy (czerwone) i po nauce ich nie ma to ta funkcja czysci czerwone napisy
                      // dlatego musi byc czy sa bledy czy nie
    PodswietlenieButtona();


    if (document.removeEventListener){                          //jak tego nie zwolnie to np. Enter dalej dziala
	document.removeEventListener("keyup",DajKlawisz,false); //to powoduje bledy
	document.removeEventListener("keydown",PoKlawiszu,false);
    }else if (document.detachEvent) {
	document.detachEvent("onkeyup",DajKlawisz);
	document.detachEvent("onkeydown", PoKlawiszu);
    }else{
	document.onkeyup = null;
	document.onkeydown = null;
    }
}


function UstawRozmiarFonta(){
    id("ObszarNauki").style.fontSize = String(13+(2*dd["wielkosc"]))+"px";
//    id("wpis").style.fontSize = String(13+(2*dd["wielkosc"]))+"px";
    document.wpisz.wpiss.style.fontSize =  String(13+(2*dd["wielkosc"]))+"px";
    if( dd["wpisujesz"]==1 ) document.wpisz.wpiss.focus();
}


//ustawienia ---------------------------------------------------------------------------------
function ZielonyNormalny(NaZielono,NaNormalnie){
    ObwodNormalny(NaNormalnie);
    ObwodZielony(NaZielono);
}

function ZmianaNaPolskie(){
    dd["polskie"]=1; 
    PokazPytanie(ns);
    if (dd["wpisujesz"] == 1) document.wpisz.wpiss.focus();
    if ( (CzySaLiterki) && (dd["wpisujesz"] == 1) ) id("alfabet").style.display = "block";
    ddDoCiacha();
}

function ZmianaNaAngielskie(){
    dd["polskie"]=0; 
    PokazPytanie(ns);
    if (dd["wpisujesz"] == 1) document.wpisz.wpiss.focus();
    if (CzySaLiterki) id("alfabet").style.display = "none";
    ddDoCiacha();
}

function ZmianaNaKolejno(){
    dd["kolejno"]=1;
    ns=0;
    while( (ip[ns]==0) && (ns<all) ){ //szuka pierwszego w kolejności pytania do zadania
	ns++;
    }
    if (ns==all){ //tak na wszelki wypadek, gdyby nie wykrył, żadnego pytania do zadania (raczej niemożliwe)
	ns=0;
    }
    PokazPytanie(ns);
    if (dd["wpisujesz"] == 1) document.wpisz.wpiss.focus();
    ddDoCiacha();
}

function ZmianaNaLosowo(){
    dd["kolejno"]=0;
    if (dd["wpisujesz"] == 1) document.wpisz.wpiss.focus();
    ddDoCiacha();
}

function ZmianaPowtarzania(n){
    if (dd["powtarzanie"] != n){
	ResetujIP(dd["powtarzanie"],n);
	dd["powtarzanie"] = n;
	ddDoCiacha();
    }
    if (dd["wpisujesz"] == 1) document.wpisz.wpiss.focus();
}

function ZmianaNaWpisywanie(){
    dd["wpisujesz"] = 1;
    if ( id('sprawdz').style.display == "block"){
	document.wpisz.style.display = "block";
	if ( (CzySaLiterki) && ( dd["polskie"] == 1 ) ) id("alfabet").style.display = "block";
	document.wpisz.wpiss.focus();
	id('buttony').style.top="120px";
    }
    ddDoCiacha();
}

function ZmianaNaMowienie(){
    dd["wpisujesz"] = 0;
    document.wpisz.style.display = "none";
    id("alfabet").style.display = "none";
    id('buttony').style.top="100px";
    ddDoCiacha();
}



function PokazUstawienia(){
    var jezyk = "angielskie";  
    if (dd["jezyk"] == "niemiecki"){
	jezyk = "niemieckie";
    }else if(dd["jezyk"] == "francuski"){
	jezyk = "francuskie";
    }else if(dd["jezyk"] == "wloski"){
	jezyk = "włoskie";
    }else if(dd["jezyk"] == "hiszpanski"){
	jezyk = "hiszpańskie";
    }

    var WygladUstawien = '<div id="n7">Ustawienia:</div>'+
	'<div id="wpisujesz" class="przycisk">wpisujesz</div>'+
	'<div id="mowisz" class="przycisk">mówisz</div>'+
	'<div id="polskie" class="przycisk">polskie</div>'+
	'<div id="angielskie" class="przycisk">'+jezyk+'</div>'+
	'<div id="kolejno" class="przycisk">kolejno</div>'+
	'<div id="losowo" class="przycisk">losowo</div>'+
	'<div id="p0" class="przycisk">0</div>'+
	'<div id="p1" class="przycisk">1</div>'+
	'<div id="p2" class="przycisk">2</div>'+
	'<div id="p3" class="przycisk">3</div>'+
	'<div id="p4" class="przycisk">4</div>'+
	'<div id="p5" class="przycisk">5</div>'+
	'<div id="n8">powtarzanie błędu</div>'+
	'<div id="a0" class="przycisk">a</div>'+
	'<div id="a1" class="przycisk">a</div>'+
	'<div id="a2" class="przycisk">a</div>'+
	'<div id="a3" class="przycisk">a</div>'+
	'<div id="a4" class="przycisk">a</div>'+
	'<div id="k0" style="cursor:pointer"></div>'+
	'<div id="k1" style="cursor:pointer"></div>'+
	'<div id="k2" style="cursor:pointer"></div>'+
	'<div id="k3" style="cursor:pointer"></div>'+
	'<div id="k4" style="cursor:pointer"></div>'+
	'<div id="ukryj" class="przycisk">ukryj ustawienia</div>';

    id("ustawienia").innerHTML = WygladUstawien;
    if (dd["wpisujesz"] == 1) ObwodZielony("wpisujesz"); else ObwodZielony("mowisz");
    if (dd["polskie"] == 1) ObwodZielony("polskie"); else ObwodZielony("angielskie");
    if (dd["kolejno"] == 1) ObwodZielony("kolejno"); else ObwodZielony("losowo");

    ObwodZielony("p"+dd["powtarzanie"]);
    ObwodZielony("a"+dd["wielkosc"]);

    for (var n=0; n<5; n++) ObwodNormalny("k"+n);

    ObwodZielony("k"+dd["kolor"]);
    id("calosc").style.backgroundColor=kk[dd["kolor"]];

    id("wpisujesz").onclick = new Function('ZielonyNormalny("wpisujesz","mowisz"); ZmianaNaWpisywanie();');

    id("mowisz").onclick = new Function('ZielonyNormalny("mowisz","wpisujesz"); ZmianaNaMowienie();');

    id("polskie").onclick = new Function('ZielonyNormalny("polskie","angielskie"); ZmianaNaPolskie();');

    id("angielskie").onclick = new Function('ZielonyNormalny("angielskie","polskie"); ZmianaNaAngielskie();');

    id("kolejno").onclick = new Function('ZielonyNormalny("kolejno","losowo"); ZmianaNaKolejno(); ');

    id("losowo").onclick = new Function('ZielonyNormalny("losowo","kolejno"); ZmianaNaLosowo(); ');

    for (var n=0; n<6; n++){
	id("p"+n).onclick = new Function('ZielonyNormalny("p'+n+'","p"+dd["powtarzanie"]); ZmianaPowtarzania('+n+'); ');
    }

    for (var n=0; n<5; n++){
	id("a"+n).onclick = new Function('ZielonyNormalny("a'+n+'","a"+dd["wielkosc"]);  dd["wielkosc"]='+n+'; ddDoCiacha(); UstawRozmiarFonta();');
    }

    for (var n=0; n<5; n++){
	id("k"+n).onclick = new Function('ZielonyNormalny("k'+n+'","k"+dd["kolor"]); dd["kolor"]='+n+'; ddDoCiacha(); id("calosc").style.backgroundColor=kk['+n+']; if( dd["wpisujesz"]==1 ) document.wpisz.wpiss.focus();');
    }

    id("ukryj").onclick = new Function('PokazZwinieteUstawienia(); dd["ustawienia"]=0; ddDoCiacha();');
    PodswietlenieButtona();
}

function PokazZwinieteUstawienia(){
    id("ustawienia").innerHTML = '<div id="ukryj" class="przycisk">pokaż ustawienia</div>';
    id("ukryj").onclick = new Function('PokazUstawienia(); dd["ustawienia"]=1; ddDoCiacha();');
    PodswietlenieButtona();
}


function PoczatekNauki(){
    kk = new Array(); /* kolory tła */
    kk[0] = '#ffffff';
    kk[1] = '#fcfcef';
    kk[2] = '#f0f0e3';
    kk[3] = '#e8e8db';
    kk[4] = '#deded2';


    
    tytulzestawu = OdczytajTytul();
    
    SlowaDoaip();
    if (czywszystkie) zl[zestaw] = new Object(); //jak sie zaczyna nauka wszystkich to tworzona jest tablica nowych bledow
    ns=-1;//początkowe wartosci
    np=-1;


    var WygladNauki = '<div id="n1">'+
	'wszystkich: <span id="nall">12</span>'+
	'<span id="n3">zostało: <span id="nzostalo">4</span></span>'+
	'<span id="n5">błędy: <span id="nbledne">3</span></span>'+
	'</div>'+
	'<div id="ObszarNauki"></div>'+
	'<div id="ustawienia">'+
	'</div>';


//    id("wzestawie").className = "wygladnauki";
    //niestety trzeba tak zamiast classname bo ie sie sypie
    id("wzestawie").style.position = "relative";
    id("wzestawie").style.height = "250px";
    id("wzestawie").style.width = "900px";
    id("wzestawie").style.fontFamily = "arial";
    id("wzestawie").style.fontSize = "16px";

    id("wzestawie").innerHTML = WygladNauki;

//    id("wzestawie").style.height = "400px";
//    return 0;
//    alert("Jakub");
//    id("wzestawie").position = "absolute";
//    id("calosc").style.paddingTop = "110px";
//    alert("aa");
    
    if (dd["ustawienia"] == 1){
	PokazUstawienia();
    }else{
	PokazZwinieteUstawienia();
    }

    Nauka();
}function Aktualizujall(){
    var tr = document.getElementsByTagName("tr");
    all = tr.length;
}

function SlowaDoaip(){ //wywolywanie w PoczatekNauki
    var n = 0;
    var nn = 0;

    a = new Array(); //tworzone od nowa za kazdym wywolaniem tej funkcji
    p = new Array();

//    alert(czystatabela);
    var re = /<td(.*?)>(.*?)<\/td>/ig; //moze byc cos takiego: <td style="color: red;">
    do {                               //pomysl aby wzorzec zaczynal sie od > nie zadzialal, nie wiem dlaczego
	var w = re.exec(czystatabela);
//	alert(w);
	if (w){
	    if (czywszystkie){//bedzie nauka ze wszystkich slow
		a[n] = w[2];
		w = re.exec(czystatabela);
//		alert(w);
		p[n] = w[2];
		n++;
//		w = re.exec(wzestawiehtml); //nieważne <td>do koszyka</td>
//		alert(w);

	    }else{           //bedzie nauka tylko z bledow
		var czytoblad = false;
		if (CzyTenZestawJestDodany()){
		    for (var i in zl[zestaw]){
			if (zl[zestaw][i] == nn) czytoblad = true;
		    }
		}else{
		    for (var i in nl){
			if (nl[i] == nn) czytoblad = true;
		    }
		}
		if (czytoblad) a[n] = w[2];
		w = re.exec(czystatabela);
		if (czytoblad){
		    p[n] = w[2];
		    n++;
		}
		nn++;
//		w = re.exec(wzestawiehtml); //nieważne <td>do koszyka</td>
	    }
	}
    } while(w);
    all = a.length;

}


function BledyNaCzerwono(){//trzeba robic td a nie tr bo przy UkryjPokarz jest to konieczne
    var td = document.getElementsByTagName("td"); //początkowe wyzerowanie na czarno aby nie pokazywaly sie stare bledy
    for (var n in td){
	if (td[n].style){//nie wiem dlaczego obrocz tr z slowami wyskakuja inne ktore nie maja style trzeba sprawdzac
	    td[n].style.color = "black";
	}
    }

    if (CzyTenZestawJestDodany()){ //bezpieczniej
	for (var n in zl[zestaw]){
	    var nrblslowo = zl[zestaw][n]; //numer blednego slowa
	    td[3*nrblslowo].style.color = "red";   //poprzednio bylo 2 teraz jest 3
	    td[3*nrblslowo+1].style.color = "red"; //bo dochodzi <td>do koszyka</td>
	}
    }
    else{
	if (nl){
	    for (var n in nl){ //nl - tablice bledow niezalogowanych podczas nauki zestawu
		var nrblslowo = nl[n]; //numer blednego slowa
		td[3*nrblslowo].style.color = "red";
		td[3*nrblslowo+1].style.color = "red";
	    }
	}
    }
}

function CoDrugiWierszNaSzaro(){
    var tr = document.getElementsByTagName("tr");
    for(var n=0; n<tr.length; n += 2){
	tr[n].style.backgroundColor = "#f5f5f5";
    }
}

function OdpowiedzNaUsun(){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	    try{
		ajax = xmlhttp.responseText;
		if (ajax == "usuniety\n"){
		    WczytajMojeZestawy();
		}
	    }
	    catch (e){}
    }
}


function UsunZestaw(){
    var odp = confirm("Usuwasz ten zestaw ze swojej listy.");
    if (odp){

	st[zestaw] = false;
    
	var n = UstawienieZestawu(zestaw);
	if (n != -1){         // tak na wszelki wypadek
	    nn[n]=false; 
	    nnDoCiacha();
	    stDoCiacha();
	}
	var n = UstawienieZestawuWkk(zestaw); //sprawdza czy to koszyk usera
	if (n != -1){
	    kk[n]= false;
	    kkDoCiacha();
	}
	ObwodZielony("dodajusun");
	ajaxPostFunkcja(url+'/skrypt.py','co=zapiszzeusuniety&numerzestawu='+zestaw,"OdpowiedzNaUsun();");
    }
}

function OdpowiedzNaDodajZestaw(){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	    try{
		ajax = xmlhttp.responseText;
		if (ajax == "zapisane\n"){
		    ObwodNormalny("dodajusun");
		    id("dodajusun").innerHTML = 'usuń z moich zestawów';
		    id("dodajusun").onclick = UsunZestaw;
		    id("edycja").onclick = EdycjaZestawu; //jak ktos bedzie chcial od razu po dodaniu edytowac
		    PodswietlenieButtona();
		}
	    }
	    catch (e){}
    }    
}

function DodajZestaw(){
    var zestaw = NumerZestawu();
    if (UstawienieZestawu(zestaw) == -1){//na wszelki wypadek
	ObwodZielony("dodajusun");
	st[zestaw] = new Array();
	czywszystkie = true; //jak poprzednio ktos sie uczyl bledow, to moglo zostac stare ustawienie "czywszystkie" na false
	SlowaDoaip();//tylko po to aby miec liczbe slow w all
	st[zestaw][0] = all;
	st[zestaw][1] = '-';
	st[zestaw][2] = '-';
	var n = nn.length;
	for(var i=n;i>0;i--){//robienie miejsca na poczatku tabeli nn
	    nn[i]=nn[i-1];
		
	}
	nn[0] = zestaw;      //dodawany zestaw umieszczony na samej gorze zestawow

	stDoCiacha();
	nnDoCiacha();
    }
    ajaxPostFunkcja(url+'/skrypt.py','co=zapiszzedodany&numerzestawu='+zestaw,"OdpowiedzNaDodajZestaw()");
}

function OdczytajTytul(){
    var htmltytul = id("TytulZestawu").innerHTML;
    var n = htmltytul.indexOf('<div');
    return htmltytul.substring(0,n);
}

function PoczatekSlow(){
    czystatabela = id("Slowa").innerHTML; //początkowa (bez koszykow) zawartosc tabeli

    zestaw = NumerZestawu();
    CoDrugiWierszNaSzaro();
    PokazButtonyKoszykow();


    PoczatekNadTabela(); // w pliku nadtabela.js

    if ((zl[zestaw]) || (nl)) BledyNaCzerwono();
    PodswietlenieButtona();

    wzestawiehtml = id("wzestawie").innerHTML;
//    EdycjaZestawu();
}
function ZnajdzKoszyki(){
    var re = new RegExp("^koszyk ๏ \d*$");
    var k = 0;
    for(var n=0; n<nn.length; n++){
	if (re.test(tt[n])){
	    kk[k] = n;
	    k++;
	}
    }
}

function OdpowiedzNaZapiszZawartoscKoszyka(dozapisania,nr){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    if (ajax.indexOf('koszyk') == 0){ //np. koszyk5
		ajaxnr = ajax.replace('koszyk','').replace("\n",''); //np. 5
		if (nr == 'nowy'){ //utworzony zostal nowy plik koszyka (pierwszy koszyk lub kolejny)
		    nr = ajaxnr;
		    st[nr] = new Array();
		    st[nr][0] = "1";
		    st[nr][1] = '-';
		    st[nr][2] = '-';

		    var n = nn.length; //nr koszyka dodaje na koncu tablicy nn i kk
		    nn[n] = nr;       
		    var n = kk.length; 
		    kk[n] = nr;       

		    kkostatni = nr;

		}else{
		    if (ajaxnr == nr){  //slowa zostaly dodane do ostatniego koszyka
			st[nr][0] = parseInt( st[nr][0] ) + 1; //info o bledach i czasie ostatniej nauki zostaje bez zmian

		    }else{ //ostatni koszyk miał innych uzytkownikow. Numer nowego koszyka jest w ajaxnr
			st[ajaxnr] = new Array();
			st[ajaxnr][0] = parseInt( st[nr][0] )+1;
			st[ajaxnr][1] = st[nr][1];
			st[ajaxnr][2] = st[nr][2];
			var n = UstawienieZestawu(nr); //jaki indeks w nn
			if (n != -1) nn[n] = ajaxnr;
			var n = UstawienieZestawuWkk(nr); //jaki indeks w kk
			if (n != -1) kk[n] = ajaxnr;
			st[nr] = false;
			kkostatni = ajaxnr;
		    }
		}

		stDoCiacha();
		nnDoCiacha();
		kkDoCiacha();

		koszyk[dozapisania] = null;
		id('doK'+dozapisania).innerHTML = "dodane";    
		id("doK"+dozapisania).style.color = "black";
		ZapiszZawartoscKoszyka();
	    }
	}catch (e){
//	    setTimeout('ZapiszZawartoscKoszyka()',2000); //jak sa bledy to lepiej nie meczyc za czesto serwera
	}
    }
}

function ZapiszZawartoscKoszyka(){
    var k, dozapisania = -1;
    for(k in koszyk){
	if ((koszyk[k] != null) && (dozapisania == -1)) dozapisania = k;
    }

//    alert(dozapisania);
    if (dozapisania >= 0) {
	if ((kkostatni == "0") || (parseInt(st[kkostatni][0]) >= parseInt(kkmaxslow))){
	    var TextDlaSkryptu = "co=dokoszyka&nr=nowy&ang="+koszyk[dozapisania].sang+"&pol="+koszyk[dozapisania].spol;
	    ajaxPostFunkcja(url+'/skrypt.py',TextDlaSkryptu,'OdpowiedzNaZapiszZawartoscKoszyka('+dozapisania+',"nowy")');
	}else{
	    var TextDlaSkryptu = "co=dokoszyka&nr="+kkostatni+"&ang="+koszyk[dozapisania].sang+"&pol="+koszyk[dozapisania].spol;
	    ajaxPostFunkcja(url+'/skrypt.py',TextDlaSkryptu,"OdpowiedzNaZapiszZawartoscKoszyka("+dozapisania+","+kkostatni+")");
	}
    }else{
	trwazapisywanie = false;
    }
}


var koszyk = new Object();
var trwazapisywanie = false;
function DoKoszyka(ang,pol,n){
    if (dd["login"] != '_gosc'){
	id("doK"+n).style.color = "green";
	koszyk[n] = new Object();
	koszyk[n].sang = encodeURIComponent(ang);
	koszyk[n].spol = encodeURIComponent(pol);
	if (trwazapisywanie == false){
	    trwazapisywanie = true;
	    ZapiszZawartoscKoszyka();
	}
    }else{
	alert("Zaloguj się lub załóż konto.");
    }
}

function PokazButtonyKoszykow(){
//    CzyMojKoszykCzyPrzeladowac();    
    var nr = NumerZestawu();

    if (UstawienieZestawuWkk(nr) == -1){
	var czytomojkoszyk = false; 
    }else{ 
	var czytomojkoszyk = true; 
    }

    var sang,spol,td;
    var tr = document.getElementsByTagName("tr");
    for(var n=0; n<tr.length; n++){
	td = tr[n].getElementsByTagName("td");
	sang = td[0].innerHTML;
	spol = td[1].innerHTML;
	var nowytd = document.createElement("td");

	if (czytomojkoszyk){
	    nowytd.innerHTML = "";
	}else{
	    nowytd.innerHTML = '<div class="koszyk" id="doK'+n+'" '+
		'onclick=\'DoKoszyka("'+sang+'","'+spol+'","'+n+'")\' '+
		'>do koszyka</div>';
	}
	
	nowytd.style.width = "120px";
	nowytd.style.backgroundColor = "white";
	nowytd.style.verticalAlign = "middle";
	tr[n].appendChild(nowytd);
    }

    if (czytomojkoszyk){//plik jest koszykiem usera, sprawdza poprawnosc liczby slowek
	Aktualizujall();
	var ileslow = st[nr][0];
	if (all != ileslow){ //różna liczba slow w html i w statystykach świadczy o tym, że html jest z cache
	    PrzeladujRazStrone();
	}
    }
}



function UkryjSlowkaNaLiscie(lewa){
    var td = document.getElementsByTagName("td");
    var szary = true;
    var cotrzeci = 1; //co trzeci <td> musi byc pominiety bo to <td>do koszyka</td>
    for (var n in td){
	if (td[n].style){//nie wiem dlaczego obrocz td z slowami wyskakuja inne ktore nie maja style trzeba sprawdzac
	    if (cotrzeci == 3){
		cotrzeci =1;
	    }else{
		if (lewa){
		    if (szary){//slowka po lewej stronie znikaja
			var kolor = td[n].style.color;
			td[n].style.color = '#f5f5f5';
			td[n].onmouseover = new Function('this.style.color = "'+kolor+'"'); 
			td[n].onmouseout = new Function('this.style.color = "#f5f5f5"');
			szary = false;
		    }else{
			var kolor = td[n].style.color;
			td[n].style.color = 'white';			
			td[n].onmouseover = new Function('this.style.color = "'+kolor+'"'); 
			td[n].onmouseout = new Function('this.style.color = "white"');
			szary = true;
		    }
		    lewa = false;
		}else{
		    lewa = true;
		}
		cotrzeci++;
	    }
	}
    }
}

function PokazSlowkaNaLiscie(lewa){
    var td = document.getElementsByTagName("td");
    for (var n in td){
	if (td[n].style){//nie wiem dlaczego obrocz tr z slowami wyskakuja inne ktore nie maja style trzeba sprawdzac
	    td[n].onmouseover = null;
	    td[n].onmouseout = null;
	}
    }
    BledyNaCzerwono();//pokaze wszystko i czarne i czerwone

}

function UPlewo(){
    tekst = id("UPlewo").innerHTML;
    if ( tekst.indexOf("ukryj")>=0 ){
	id("UPlewo").innerHTML = "pokaż";
	UkryjSlowkaNaLiscie(true);
    }else{
	id("UPlewo").innerHTML = "ukryj"; //trzeba obydwa bo pokazywanie czyli BledyNaCzerwono działa na cale wiersze
	id("UPprawo").innerHTML = "ukryj";
	PokazSlowkaNaLiscie(true);
    }
}

function UPprawo(){
    tekst = id("UPprawo").innerHTML;
    if ( tekst.indexOf("ukryj")>=0 ){
	id("UPprawo").innerHTML = "pokaż";
	UkryjSlowkaNaLiscie(false);
    }else{
	id("UPlewo").innerHTML = "ukryj";
	id("UPprawo").innerHTML = "ukryj";
	PokazSlowkaNaLiscie(false);
    }
}



function Drukowanie(){
    okno = window.open("","drukowanie","status=no,width=720,height=700,left=1,top=1,scrollbars=yes");
    okno.document.write(HTMLpoczatek());
    okno.document.body.innerHTML += '<table cellspacing="0" id="Slowa">' + //tekst tabeli
	id("Slowa").innerHTML +
	'</table>';
	
    okno.document.body.innerHTML += '<div style="margin-top:5mm; font-family: times,serif; font-size:14px; font-style:italic;">wordki.pl</div></body></html>';
    okno.document.close();
}

function HTMLpoczatek(){
    return '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'+
'<html>'+
'<head>'+
'<title>Drukowanie</title>'+
'<meta http-equiv="content-type" content="text/html; charset=utf-8">'+
'<style type="text/css">'+
//'td{width:8cm; font-size:14px; font-family:verdana, sans-serif; vertical-align:top;}'+
'td{width:8cm; font-size:10pt; font-family:times, sans-serif; vertical-align:top;}'+
'div#printinf{width: 17cm; height: 90px; background-color: #ebebe1; font-family:verdana, sans-serif; font-size:14px; position: relative;}'+
'hr{width:3cm; margin-bottom:2px; border-style:solid; }'+
'</style>'+
'</head>'+
'<body>'+
'<script type="text/javascript">'+
'var td;'+
'function poczatek(){'+
'td = document.getElementsByTagName("td");'+
'var jakietdwtr = 1;'+
'for (var n in td) if (td[n].style){'+
'td[n].style.backgroundColor = "white";'+
'td[n].style.color = "black";'+
'if (jakietdwtr == 1){td[n].style.paddingRight = "5mm"; }'+
'if (jakietdwtr == 3){td[n].innerHTML = ""; jakietdwtr = 0;}'+ //tak aby koszykow nie bylo widac
'jakietdwtr++;'+
'}}'+
''+
'function ZmienSzerokosc(){'+
'var d = document.getElementById("szerokosc").value;'+
'for (var n in td) if (td[n].style) td[n].style.width = d;'+
'}'+
''+
'function ZmienRozmiar(){'+
'var d = document.getElementById("rozmiar").value;'+
'if ((d=="6pt")||(d=="8pt")){'+
'for (var n in td) if (td[n].style) td[n].style.fontFamily = "verdana, sans-serif";'+
'}else{'+
'for (var n in td) if (td[n].style) td[n].style.fontFamily = "times, sans-serif";'+
'}'+
'for (var n in td) if (td[n].style) td[n].style.fontSize = d;'+
'}'+
''+
'function Drukuj(){ document.getElementById("printinf").style.display="none"; window.print(); }'+
''+
'window.onload = poczatek;'+
'</script>'+
''+
'<div id="printinf">'+
'<div style="position: absolute; top:15px; left:30px;">Jak ustawisz wygląd tekstu, kliknij drukarkę:</div>'+
'<img style="position: absolute; top:8px; left:360px; cursor:pointer;" src="'+url+'/drukarka.gif" onclick = "Drukuj()">'+
'<div style="position: absolute; top:60px; left:30px;">'+
'szerokość kolumn: <select id="szerokosc" onchange="ZmienSzerokosc()">'+
'<option value="1cm">1cm</option>'+
'<option value="2cm">2cm</option>'+
'<option value="4cm">4cm</option>'+
'<option value="6cm">6cm</option>'+
'<option value="8cm" selected="selected">8cm</option>'+
'</select>'+
'</div>'+
'<div style="position: absolute; top:60px; left:260px;">'+
'rozmiar czcionki: <select id="rozmiar" onchange="ZmienRozmiar()">'+
'<option value="6pt">6</option>'+
'<option value="8pt">8</option>'+
'<option value="10pt" selected="selected">10</option>'+
'<option value="12pt">12</option>'+
'</select>'+
'</div>'+
'</div>';
}

function PoczatekNadTabela(){
//    id("wzestawie").style.marginTop = "110px";
    if ((zl[zestaw]) || (nl)){  //sa błedy  (poprawić tak jak w else)

	id("ButtonyNadTabela").innerHTML = 
	    '<div id="ButtonyNadTabela">'+

	    '<div id="wszystkie" class="przycisk">wszystkie</div>'+
	    '<div id="bledyy" class="przycisk" style="color:#883333">błędy</div>'+


	    '<div id="UPlewo" class="przycisk">ukryj</div>'+
	    '<div id="UPprawo" class="przycisk">ukryj</div>'+
	    '<div id="edycja" class="przycisk">edycja</div>'+
	    '<div id="dodajusun" class="przycisk"></div>'+
	    '<div id="drukowanie" class="przycisk">drukowanie</div>'+
	    '</div>';

/*	id("buttonynauki").innerHTML = 
	    '<div id="naukaa">NAUKA</div>'+
	    '<div id="wszystkie" class="przycisk">wszystkie</div>'+
	    '<div id="bledyy" class="przycisk">błędy</div>'+
	    '<div id="edycja" class="przycisk">edycja</div>'+
	    '<div id="Pdodajusun"><div id="dodajusun" class="przycisk"></div></div>';*/

	id("wszystkie").onclick = function(){ czywszystkie=true; PoczatekNauki(); };
	id("bledyy").onclick = function(){ czywszystkie=false; PoczatekNauki(); };

    }else{ //nie ma błędów
	
	id("ButtonyNadTabela").innerHTML = 
	    '<div id="ButtonyNadTabela">'+
	    '<div id="nauka" class="przycisk">NAUKA</div>'+
	    '<div id="UPlewo" class="przycisk">ukryj</div>'+
	    '<div id="UPprawo" class="przycisk">ukryj</div>'+
	    '<div id="edycja" class="przycisk">edycja</div>'+
	    '<div id="dodajusun" class="przycisk"></div>'+
	    '<div id="drukowanie" class="przycisk">drukowanie</div>'+
	    '</div>';

	id("nauka").onclick = function(){ czywszystkie=true; PoczatekNauki(); };    
    }

    id("UPlewo").onclick = UPlewo;  
    id("UPprawo").onclick = UPprawo;
    id("drukowanie").onclick = Drukowanie;	


    if (ZalogowanyCzyNie()){
	if (CzyTenZestawJestDodany()){
	    id("edycja").onclick = EdycjaZestawu;
	    id("dodajusun").innerHTML = 'usuń z moich zestawów';
	    id("dodajusun").onclick = UsunZestaw;
	}else{
	    id("edycja").onclick = new Function('alert("Ten zestaw nie jest na liście twoich zestawów.");');
	    id("dodajusun").innerHTML = 'dodaj do moich zestawów';
	    id("dodajusun").onclick = DodajZestaw;
	}
    }else{
	id("edycja").onclick = new Function('alert("Zaloguj się lub załóż konto.");');
	id("dodajusun").innerHTML = 'dodaj do moich zestawów';
	id("dodajusun").onclick = new Function('alert("Zaloguj się lub załóż konto.");');
    }
}


//funkcje dla nauks.js n.js----------------------------------------------------------------------------------------
function JakiePolozenie() {
    var CaretPos = 0;
    // IE Support
    if (document.selection) {
	document.wpisz.wpis.focus ();
	var Sel = document.selection.createRange ();
	Sel.moveStart ('character', -document.wpisz.wpis.value.length);
	CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (document.wpisz.wpis.selectionStart || document.wpisz.wpis.selectionStart == '0')
	CaretPos = document.wpisz.wpis.selectionStart;

    return (CaretPos);
}

function KursorNaPozycje(pos){
    if(document.wpisz.wpis.setSelectionRange){
	document.wpisz.wpis.focus();
	document.wpisz.wpis.setSelectionRange(pos,pos);
    }else if (document.wpisz.wpis.createTextRange) {
	var range = document.wpisz.wpis.createTextRange();
	range.collapse(true);
	range.moveEnd('character', pos);
	range.moveStart('character', pos);
	range.select();
    }
}

function DodajLitere(jaka){
    document.wpisz.wpis.focus();
    //    gdzie = JakiePolozenie(); <- w ie to daje ciagle 0 dlatego trzeba to wylaczyc i poslugiwac się "gdzie" globalnym :(
    var tekst = document.wpisz.wpis.value;
    var poczatek = tekst.slice(0,gdzie);
    var koniec = tekst.slice(gdzie);
    document.wpisz.wpis.value = poczatek+jaka+koniec;
    gdzie++;
    KursorNaPozycje(gdzie);
}

function DajKlawisz(event){
    if ((document.wpisz.style.display == "block") && (dd["polskie"] == 1)){//dd - aby nie było zamiany liter gdy wpisuje polskie wyrazy
	gdzie = JakiePolozenie(); //"gdzie" jest globalne dlatego to jest wazne tez poza tą funkcją
	if (gdzie>0){
	    var tekst = document.wpisz.wpis.value;
	    var litera = tekst.slice(gdzie-1,gdzie);

	    if (JestKlucz(litera)){
		if ( (klony.indexOf(litera)>=0) && (JestKlucz(litera+litera)) ) {//ten ostatni warunek aby ograniczyć się tylko
		    klony += litera;                                             //do takich znaków Alt+e, Alt+ee, Alt+eee
		    if (JestKlucz(klony) == false) klony = litera;

		    var poczatek = tekst.slice(0,gdzie-2);
		    var koniec = tekst.slice(gdzie);

		    document.wpisz.wpis.value = poczatek+lka[klony]+koniec;
		    gdzie--;
		    KursorNaPozycje(gdzie);
		}else{
		    var poczatek = tekst.slice(0,gdzie-1);
		    var koniec = tekst.slice(gdzie);
		    document.wpisz.wpis.value = poczatek+lka[litera]+koniec;
		    KursorNaPozycje(gdzie);
		    klony = litera;
		}
	    }else{
		klony = '';
	    }
	}
    }
}

function Alfabet(){
    literki();
//    id("alfabet").style.display = "block";

    id("wpis").onclick = new Function('gdzie = JakiePolozenie();');

    var litery = '';
    for (k in lka){
	litery = litery + '<div onclick = \'DodajLitere("'+lka[k]+'")\' class="przycisklitery">'+lka[k]+'</div>';
    }

    litery = litery+SkrotyLiterek();

    id("alfabet").innerHTML = litery;

    id("skroty").style.display = "block";
    id("skrotyopis").style.display = "none";
    
    id("skroty").onmouseover = new Function('id("skrotyopis").style.display = "block";');
    id("skroty").onmouseout = new Function('id("skrotyopis").style.display = "none";');
}



//funkcje dla dodaj.js -------------------------------------------------------------------------------------------
//problem jest z ie podczas klikania obcych literek nie dziale funkcja GetPozycja i gdzie=0 czyli litera wyswietla
//sie na poczatku, dlatego wprowadzielem globalne "gdzie" i do każdego input jest dodane zdarzenie onclick (deklaracja w dodaj.js)
//ktore podczas kliniecia na input wywyluje GetPozycja. To akurat dziala w ie.

function GetPozycja(ctrl) {
	var CaretPos = 0;
	// IE Support
	if (document.selection) {
		ctrl.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -ctrl.value.length);
		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')
		CaretPos = ctrl.selectionStart;

	return (CaretPos);
}

function SetPozycja(ctrl, pos){
	if(ctrl.setSelectionRange){
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

function Litera(jaka){
    if ( (AktywnyInput % 2) == 0 ){
	var input = Input[AktywnyInput];
	var tekst = input.value;
//	var gdzie = GetPozycja(input);<- w ie to daje ciagle 0 dlatego trzeba to wylaczyc i poslugiwac się "gdzie" globalnym :(
	var poczatek = tekst.slice(0,gdzie);
	var koniec = tekst.slice(gdzie);
	input.value = poczatek+jaka+koniec;
	gdzie++;
	SetPozycja(input,gdzie);
    }
}

function DodajZnak(event){
    if (opera){//z ie nie dziala pierwszy input próbowałem różnych sposobów i nic
	if (Klawisz(event) == 9){
	    AnulujZdarzenie(event);
	    return false;
	}
    }

    if (( (AktywnyInput % 2) == 0 ) && (WTytule == false)){
	var input = Input[AktywnyInput];

	gdzie = GetPozycja(input);
	if (gdzie>0){
	    var tekst = input.value;
	    var litera = tekst.slice(gdzie-1,gdzie);

	    if (JestKlucz(litera)){
		if ( (klony.indexOf(litera)>=0) && (JestKlucz(litera+litera)) ) {//ten ostatni warunek aby ograniczyć się tylko
		    klony += litera;                                             //do takich znaków Alt+e, Alt+ee, Alt+eee
		    if (JestKlucz(klony) == false) klony = litera;

		    var poczatek = tekst.slice(0,gdzie-2);
		    var koniec = tekst.slice(gdzie);

		    input.value = poczatek+lka[klony]+koniec;
		    gdzie--;
		    SetPozycja(input,gdzie);
		}else{
		    var poczatek = tekst.slice(0,gdzie-1);
		    var koniec = tekst.slice(gdzie);
		    input.value = poczatek+lka[litera]+koniec;
		    SetPozycja(input,gdzie);
		    klony = litera;
		}
	    }else{
		klony = '';
	    }
	}
    }
}



function WypiszLitery(){
    var litery = '';

    litery = SkrotyLiterekWdodaj();
    litery = litery + '<div id="WypisaneLitery" style="margin-left:40px; display:block;">';
    for (k in lka){
	litery = litery + '<div onclick = \'Litera("'+lka[k]+'")\' class="przycisklitery">'+lka[k]+'</div>';
    }
    litery = litery + '</div>';
//    alert(litery);

    return litery;
}var AktywnyInput=-1; //na poczatku kursor jest w pole "Tytul zestawu"
var WTytule=true,Litery;
var PokarzSkroty = false;
var poczatkowyhtml = '<form id="ed" name="slowka">'+
    '<div class="ButtonyEdycji">'+
    '  <div id="ZapiszZestaw" class="przycisk">zapisz zestaw</div>'+
    '  <div id="PrzerwijEdycje" class="przycisk">przerwij edycję</div>'+
    '</div>'+
    '<span id="TZestawu">Tytuł zestawu:</span>'+
    '<input id="TytulZestawu" maxlength="70" autocomplete="off">'+
    '     <div id="edytor">'+
    '      <div class="Npara" >'+
    '        <div class="Nlitery"></div><br>'+
    '	<input class="Ninput" type="text" value="" autocomplete="off" maxlength="100">'+
    '        <input class="Ninputt" type="text" value="" autocomplete="off"  maxlength="100">'+
    '<div class="usundodajI NusunI">usuń</div><div class="usundodajI NdodajI">dodaj</div>'+
    '      </div>'+
    '     </div>'+
    '  </form>'+
    '<div class="ButtonyEdycji">'+
    '  <div id="DodajWiersze" class="przycisk">dodaj nowe wiersze</div>'+
    '  <div id="ZapiszZestaww" class="przycisk">zapisz zestaw</div>'+
    '  <div id="PrzerwijEdycjee" class="przycisk">przerwij edycję</div>'+
    '</div>';

function PrzygotujDoPisania(poprzedni, aktualny){
    PoprzedniaPara = poprzedni % 2 ? (poprzedni-1)/2 : poprzedni/2;
    AktualnaPara =  aktualny % 2 ? (aktualny-1)/2 : aktualny/2;
    
    if ((PoprzedniaPara != AktualnaPara) && (CzySaLiterki)){

	if (poprzedni != -1){
	    Div[PoprzedniaPara][0].className = "Npara";
	    Div[PoprzedniaPara][1].className = "Nlitery";
	    Div[PoprzedniaPara][1].innerHTML = "";
	    Div[PoprzedniaPara][2].className = "usundodajI NusunI";
	    Div[PoprzedniaPara][3].className = "usundodajI NdodajI";
	    Input[PoprzedniaPara*2].className = "Ninput";
	    Input[PoprzedniaPara*2+1].className = "Ninputt";
	}

	Div[AktualnaPara][0].className = "Apara";
	if (!CzySaLiterki){ Div[AktualnaPara][0].style.height = "23px";	}

	Div[AktualnaPara][1].className = "Alitery";
	Div[AktualnaPara][1].innerHTML = WypiszLitery();
	id("skroty").style.display = "block";
	id("skrotyopis").style.display = "none";
	id("skroty").onmouseover = function(){
	    PokarzSkroty = true;
	    setTimeout('if (PokarzSkroty){'+//gdy ktos przypadkowo przesunie nad buttonem "skroty" nic sie nie stanie
		       'id("skrotyopis").style.display = "block"; '+
		       'id("WypisaneLitery").style.display = "none";}',400);
	}
	id("skroty").onmouseout = function(){
	    PokarzSkroty = false;
	    id("skrotyopis").style.display = "none"; 
	    id("WypisaneLitery").style.display = "block";
	}

	Div[AktualnaPara][2].className = "usundodajI AusunI";
	Div[AktualnaPara][3].className = "usundodajI AdodajI";

	Input[AktualnaPara*2].className = "Ainput";
	Input[AktualnaPara*2+1].className = "Ainputt";


	if (ie){
	    for (var i=AktualnaPara;i<allDiv;i++){
		Div[i][0].style.marginBottom = "5px";
	    }
	}
	PodswietlenieButtona();
    }
}

//ustawienie numeru akutalnego nowego inputa w AktywnyInput
function NowyAktywnyInput(NowyInput){
    if ( AktywnyInput != NowyInput ){
	if (AktywnyInput != -1){//poprzedni zaczyna wygladac focusa
	    Input[AktywnyInput].onfocus = new Function('NowyAktywnyInput('+AktywnyInput+')'); 
	}
	Input[NowyInput].onfocus=null;
	PrzygotujDoPisania(AktywnyInput,NowyInput);
	AktywnyInput = NowyInput;
    }
}


var Div = new Array();
var Input = new Array();
var allInput=0,allDiv=0;

function ListaDivInput(){
    Div = new Array();
    Input = new Array();
    allInput=0,allDiv=0;

    ile = id('edytor').childNodes.length;
    for(var n = 0; n < ile; n++){
	if ( id('edytor').childNodes[n].nodeName == 'DIV'){ //jezeli div
	    Div[allDiv] = new Array();
	    Div[allDiv][0] = id('edytor').childNodes[n];
	    var div = Div[allDiv][0];
	    ilee = div.childNodes.length;
	    var p = 1;
	    for(var k = 0; k < ilee; k++){
		if ( div.childNodes[k].nodeName == 'DIV'){
		    Div[allDiv][p] = div.childNodes[k];
		    p++;
		}else if (div.childNodes[k].nodeName == 'INPUT'){
		    Input[allInput]=div.childNodes[k];
		    Input[allInput].onfocus = new Function('NowyAktywnyInput('+(allInput)+')');
		    Input[allInput].onclick = new Function('gdzie = GetPozycja(Input['+allInput+'])');//ze wzgledu na ie
		    allInput++;		    
		}
	    }
	    allDiv++;
	}
    }
    for(var n=0; n<allDiv; n++){
	Div[n][2].onclick = new Function('id("edytor").removeChild(Div['+n+'][0])');
	Div[n][2].onmouseover = function(){this.style.textDecoration = "underline"};
	Div[n][2].onmouseout = function(){this.style.textDecoration = "none"};
	Div[n][3].onclick = new Function('DodajPustyWiersz("'+n+'")');
	Div[n][3].onmouseover = function(){this.style.textDecoration = "underline"};
	Div[n][3].onmouseout = function(){this.style.textDecoration = "none"};
    }
}



function DodajPustyWiersz(gdzie){
    var div = document.createElement("div");
    div.className = "Npara";
    div.innerHTML = DivHtml;
    if (gdzie == 'nakoncu'){
	id('edytor').appendChild(div);
    }else{
	id('edytor').insertBefore(div,Div[gdzie][0]);
    }
    ListaDivInput();
}


function DodajPusteWiersze(){
    for(var i=0; i<5; i++) DodajPustyWiersz('nakoncu'); 
    if (WTytule = false){
	Input[AktywnyInput].onfocus=null;
	Input[AktywnyInput].focus();   //ustawia w belce formularza migajacy kursor
    }
}


function GdzieAngielskieGdziePolskie(){
    if (dd["jezyk"] == "angielski"){
	Input[0].value = "w tej kolumnie po angielsku";
    }else if (dd["jezyk"] == "niemiecki"){
	Input[0].value = "w tej kolumnie po niemiecku";
    }else if (dd["jezyk"] == "francuski"){
	Input[0].value = "w tej kolumnie po francusku";
    }else if (dd["jezyk"] == "hiszpanski"){
	Input[0].value = "w tej kolumnie po hiszpańsku";
    }else if (dd["jezyk"] == "wloski"){
	Input[0].value = "w tej kolumnie po włosku";
    }

    Input[1].value = "w tej kolumnie tłumaczenia polskie";

}


function PoczatekDodaj(){
    id("wzestawie").style.marginTop = "-10px";
    id("wzestawie").innerHTML = poczatkowyhtml;

    literki();
    JakiBrowser();
    ListaDivInput();
    DivHtml = Div[0][0].innerHTML;

    if ( ie || firefox ){
	document.onkeyup=DodajZnak;
    }else{
	document.onkeydown=DodajZnak;
    }
    
    id('ZapiszZestaw').onclick = function(){ ZapiszZestaw("nowyzestaw"); };
    id('ZapiszZestaww').onclick = function(){ ZapiszZestaw("nowyzestaw"); };
    id("PrzerwijEdycje").onclick = WczytajMojeZestawy;
    id("PrzerwijEdycjee").onclick = WczytajMojeZestawy;
    id('DodajWiersze').onclick = DodajPusteWiersze;

    for(var i=0; i<5; i++) DodajPustyWiersz('nakoncu'); 

//    if(ie) id("DodajWiersze").style.marginLeft="90px";//cholerny ie 

    GdzieAngielskieGdziePolskie();

    id("TytulZestawu").onfocus = new Function('WTytule = true;');
    id("TytulZestawu").onblur = new Function(
	'if (Input[1].value == "w tej kolumnie tłumaczenia polskie") {'+
	    'Input[0].value = ""; Input[1].value = ""; }'+
	    'WTytule = false;');

    id("TytulZestawu").focus();


}



//zapisywanie-------------------------------------------------------------------------------------
var IleNowychSlow;
function OdpowiedzNaZapiszZestaw(nrstary,co){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    if (ajax.indexOf('dobrze')==0){ //w odpowiedzi powinien przyjsc numer zalozonego zestawu w tej formie "dobrze5"
		nr = ajax.replace("\n",'');
		nr = nr.replace('dobrze','');

		if (co == "edycjazestawu"){
		    if (nrstary == nr){
			zl[zestaw] = null;   //gdyby tego nie bylo to po edycji problemy w wyswietlaniu czerwonych
			st[nr][0] = IleNowychSlow;
			st[nr][1] = '-'; //nie wiadomo które slowa przeszyły edycję więc lepiej wykasować bledy
			st[nr][2] = '-'; //jak nie ma błędu to lepiej nie pokazywac kiedy ostatnio bylo sprawdzane
			stDoCiacha();
			window.location.reload();
		    }else{
			st[nr] = new Array();
			st[nr][0] = IleNowychSlow;
			st[nr][1] = '-';
			st[nr][2] = '-';
			var n = UstawienieZestawu(nrstary); //jaki indeks w nn
			if (n != -1) nn[n] = nr;
			var n = UstawienieZestawuWkk(nrstary); //sprawdza czy to koszyk usera
			if (n != -1) kk[n] = nr;
			st[nrstary] = false;
			stDoCiacha();
			nnDoCiacha();
			kkDoCiacha();
			document.location = url+'/'+dd["jezyk"]+'/'+nr+'.html';
		    }

		}else if(co == "nowyzestaw"){
		    st[nr] = new Array();
		    st[nr][0] = IleNowychSlow;
		    st[nr][1] = '-';
		    st[nr][2] = '-';
		    var n = nn.length;
		    for(var i=n;i>0;i--){ //robienie miejsca na poczatku tabeli nn
			nn[i]=nn[i-1];
		    }
		    nn[0] = nr;           //dodawany zestaw umieszczony na samej gorze zestawow

		    stDoCiacha();
		    nnDoCiacha();
		    WczytajMojeZestawy();
		}



	    }else{//jezeli nie ma slowka "dobrze" to przyszly bledy ze skryptu py
//		alert(ajax);
		ObwodNormalny("ZapiszZestaw"); //moze jak jeszcze raz kliknie to sie uda
		ObwodNormalny("ZapiszZestaww");
	    }
	}catch (e){}
    }
}

function ZapiszZestaw(co){
    ListaDivInput(); //dodany-----------------
    NowyTytul = id("TytulZestawu").value;

    if (NowyTytul.length == 0){
	alert("Uzupełnij tytuł zestawu!");
	return false;
    }

    var TextDlaSkryptu = 'co='+co;

    if (co == "edycjazestawu"){ TextDlaSkryptu += '&numerzestawu='+zestaw; }

    TextDlaSkryptu += '&tytul='+ZnakiInPost(NowyTytul);

    var k=0, n=0;
    IleNowychSlow=0;
    while(n<allInput){
	if ( (Input[n].value.length>0) && (Input[n+1].value.length>0) ){
	    TextDlaSkryptu += '&a'+k+'='+ZnakiInPost(Input[n].value);
	    n++;
	    TextDlaSkryptu += '&p'+k+'='+ZnakiInPost(Input[n].value);
	    IleNowychSlow++;
	    k++;
	}
	n++;
    }
    ObwodZielony("ZapiszZestaw");
    ObwodZielony("ZapiszZestaww");
    ajaxPostFunkcja(url+'/skrypt.py',TextDlaSkryptu,'OdpowiedzNaZapiszZestaw("'+zestaw+'","'+co+'")');

}


//edycja -----------------------------------------------------------------------------------------------------------------



function EdycjaZestawu(){
    czywszystkie = true; //jak poprzednio ktos sie uczyl bledow, to moglo zostac stare ustawienie "czywszystkie" na false
    SlowaDoaip();        //a wtedy pokazuje do edycji tylko bledy

    tytulzestawu = id("TytulZestawu").innerHTML;
    var n = tytulzestawu.search(/<div/i);
    tytulzestawu = tytulzestawu.substring(0,n);

    id("wzestawie").style.marginTop = "-10px";

    if (UstawienieZestawuWkk( NumerZestawu() ) != -1){ //to jest koszyk
	poczatkowyhtml = poczatkowyhtml.replace('<input id="TytulZestawu" maxlength="70" autocomplete="off">',
	    '<input id="TytulZestawu" maxlength="70" autocomplete="off" style="background:#eeeeee;" readonly>');
    }


    id("wzestawie").innerHTML = poczatkowyhtml;
 //   if (!CzySaLiterki) id("edytor").style.marginTop = "-6px";

    id("PrzerwijEdycje").onclick = CzyszczenieIkoniecEdycji;
    id("PrzerwijEdycjee").onclick = CzyszczenieIkoniecEdycji;
    PodswietlenieButtona();

    id("TytulZestawu").value = tytulzestawu;

    literki();
    JakiBrowser();
    ListaDivInput();                // po to tylko aby załadować DivHtml
    DivHtml = Div[0][0].innerHTML;

    Input[0].onfocus=null;
//    Input[0].focus();   //ustawia w belce formularza migajacy kursor

    if ( ie || firefox ){
	document.onkeyup=DodajZnak;
    }else{
	document.onkeydown=DodajZnak;
    }

    id('DodajWiersze').onclick = DodajPusteWiersze;
    
    id('ZapiszZestaw').onclick = new Function('ZapiszZestaw("edycjazestawu")');
    id('ZapiszZestaww').onclick = new Function('ZapiszZestaw("edycjazestawu")');


    for(var n=0; n<all+1; n++) DodajPustyWiersz('nakoncu'); 
    ListaDivInput();

    setTimeout('for(var n=0; n<all; n++){Input[2*n].value = a[n]; Input[2*n+1].value = p[n];}',600);
    //osobno puste wiersze i osobno ich wypelnienie jest ładniejsze w ff


    id("TytulZestawu").onfocus = new Function('WTytule = true;');
    id("TytulZestawu").onblur = new Function('WTytule = false;');





    id("TytulZestawu").focus();
    WTytule = true;
}

function CzyszczenieIkoniecEdycji(){
    if ( ie || firefox ){
	document.onkeyup = null;
    }else{
	document.onkeydown = null;
    }
    PrzerwijNauke();
}function UtworzTabele(wang,wpol,nSlowo){
    var naZielono;
    var slowoang, slowopol;
    var szary = false;

    var html = '<table cellspacing="0" id="dodajgtranslate">';

    html += '<tr><td class="bialy"><div id="ta"><input id="dodajTlumAng"></div></td>'+
	'<td class="bialy"><div id="tp"><input id="dodajTlumPol"></div></td>'+
	'<td><div id="dodajTlumaczenie" onclick=\'dodajTlumaczenie()\' class="przycisk">dodaj tłumaczenie</div></td></tr>';

    html += '<tr valign="top"><td class="szary"><div style="color:green">' + nSlowo + '</div></td>' +
	'<td class="szary"><div id="googleslowo">...</div></td>' + 
	'<td><span style="color:black; margin-left:18px; font-size:10px;">google translate</span></td>' +
	'</tr>';

    html += '</table><table cellspacing="0" id="tabelaslownika">'

    for(var n=0; n<wang.length; n++){
	naZielono = wang[n];
	var reg = new RegExp("("+nSlowo+")",'ig');
	slowoang = naZielono.replace(reg,'<span class="nSlowo">$1</span>');
	slowopol = wpol[n];
	if (szary){
	    html += '<tr valign="top" id="tr'+n+'">'+
		'<td class="szary" id="tda'+n+'">' + slowoang + '</td>' +
		'<td class="szary" id="tdp'+n+'">' + slowopol + '</td>' + 
		'<td>'+
		'<div class="koszyk" id="doK'+n+'" '+
		'onclick=\'DoKoszyka("'+wang[n]+'","'+wpol[n]+'","'+n+'")\' '+
		'>do koszyka</div>'+
		'</td>'+
		'</tr>';
	    szary = false;
	}else{
	    html += '<tr valign="top"  id="tr'+n+'">'+
		'<td class="bialy" id="tda'+n+'">' + slowoang + '</td>' +
		'<td class="bialy" id="tdp'+n+'">' + slowopol + '</td>' + 
		'<td>'+
		'<div class="koszyk" id="doK'+n+'" '+
		'onclick=\'DoKoszyka("'+wang[n]+'","'+wpol[n]+'","'+n+'")\' '+
		'>do koszyka</div>'+
		'</td>'+
		'</tr>';
	    szary = true;
	}
    }
    html += '</table>';

    return html
}

function WyswietlSzlaban(){
    id("tlumaczenia").innerHTML = 
	'<div style="margin-top:20px; margin-left:425px; margin-bottom:20px;"><img src="szlaban.gif"></div>';
    id("tlumaczenia").style.display = "block";
}


function uaktywnijUsunBlad(ile){
    for(var n=0; n<ile; n++){
	nr = n+2; //piewszy wiersz to "dodawanie", drugi to google translate, tlumaczenia zaczynaja sie od trzeciego
	var  usunblad = "tdub"+nr;
//	id(popraw).onmouseover = new Function('this.style.backgroundColor = "#fadb79";');
//	id(popraw).onmouseout = new Function('this.style.backgroundColor = "#ffffff";');
//	id(usunblad).onclick = new Function('usunBlad('+nr+')');
    }
}

function WyswietlTlumaczenieGoogle(nSlowo){
    var aSlowo = id("slownik").value
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    if (aSlowo == nSlowo){ 
		eval("var odp = (" + xmlhttp.responseText + ")");
		id("googleslowo").innerHTML = odp.responseData.translatedText;
	    }
	    xmlhttp = null;
	}
	catch (e){}
    }
}
	    
function tlumaczenieGoogle(nSlowo){
    var aSlowo = id("slownik").value
    if (aSlowo == nSlowo){ 
	var parametry = "slowo="+encodeURIComponent(nSlowo)
	ajaxGetFunkcja(url+'/gtranslate.py',parametry,'WyswietlTlumaczenieGoogle("'+nSlowo+'");');
    }
}var wSlowo = "";     //wypisanie Slowo
var KursorWpolu = false;
var ajax = "";
var ang = new Object();
var pol = new Object();
var dodane;
var ajax = new Object();
var xmlhttp = new Object();
var nA = 0; //n-te połączenie Ajax
var zmienna,zmiennaa,zmiennaaa;
var wysylaj = true;
var nrDodanegoTlumaczenia = 1000; //zaczynam od 1000 aby sie nie pokrywala z numerami wyswietlonych slow czyli 0,1,2,...

function Szukaj(wzor,dodane,sang,spol,tang,tpol){

    var wzorr = new RegExp(wzor,'i');
    for(var n=0; n<sang.length; n++){
	if ( (dodane[n] != true) && (sang[n].search(wzorr) != -1) ){
	    tang.push( sang[n] );
	    tpol.push( spol[n] );
	    dodane[n] = true;
	}
    }

}

function DolaczNaKoniec(wang,wpol,tang,tpol){
    for(var n=0; n<tang.length; n++){
	wang.push( tang[n] );
	wpol.push( tpol[n] );
    }
}

function Alfabetycznie(tang,tpol){
    var stang = new Array();        //stara tang (pusta)
    stang = stang.concat(tang); //stang jest kopia tang
    var stpol = new Array();
    stpol = stpol.concat(tpol);
    var maleLitery = new Array();

    var ile = tang.length;
    for(var n=0; n<ile; n++){
	maleLitery[n] = stang[n].toLowerCase();
	maleLitery[n] += "\n"+n;
    }
    maleLitery.sort();
    var k;
    for(var n=0; n<ile; n++){
	k = maleLitery[n].split("\n")[1];
	tang[n]=stang[k];
	tpol[n]=stpol[k];
    }
}

function ZnajdzUporzadkuj(nSlowo,wang,wpol){
    var dodane = new Object();
    var dwieLitery = nSlowo.substr(0,2);
    var reguly = ["^"+nSlowo+"$", "^"+nSlowo+"\\b", "\\b"+nSlowo+"\\b", 
	"^"+nSlowo+"\\B", "\\b"+nSlowo+"\\B", "\\B"+nSlowo+"\\b"];

//    alert(nSlowo.length);
    if (nSlowo.length==2){ ile = 3; }else{ ile = 6; }
    
    for(var n=0; n<ile; n++){
	var tang = new Array();
	var tpol = new Array();
	Szukaj(reguly[n],dodane,ang[dwieLitery],pol[dwieLitery],tang,tpol);

	if (n==1) Alfabetycznie(tang,tpol); //"^"+nSlowo+"\\b"
	if (n==3) Alfabetycznie(tang,tpol); //"^"+nSlowo+"\\B"

	DolaczNaKoniec(wang,wpol,tang,tpol);//niestety concat z globalnego wang robi lokalne gdy dołączam lokalne tang
    }

}


function Wypisz(){
    var wang = new Array();
    var wpol = new Array();

    nSlowo = id("slownik").value
    var dwieLitery = nSlowo.substr(0,2);
    try{
	var ile = ang[dwieLitery].length; //jeśli się to powiedzie
    }catch (e){
	WyswietlSzlaban();
	wSlowo = "";
	return true;
    }

    id("tlumaczenia").style.display = "block";

    ZnajdzUporzadkuj(nSlowo,wang,wpol);

    html = UtworzTabele(wang,wpol,nSlowo);

    id("tlumaczenia").innerHTML = html;
    setTimeout("tlumaczenieGoogle(nSlowo);",700);

//    id("dodajTlumaczenie").onclick = dodajNoweSlowo;
//    uaktywnijUsunBlad(wang.length);
//    UaktywnijDoSzuflady(wang.length);
}

function PrzetworzPlik(dwieLitery){
    var angielskie = true;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    var ajax = xmlhttp.responseText;
	    var w = ajax.split("\n");
	    ang[dwieLitery] = new Array();
	    pol[dwieLitery] = new Array();
	    for(n=0; n<w.length; n++){
		if (angielskie){
		    ang[dwieLitery].push( w[n] );
		    angielskie = false;
		}else{
		    pol[dwieLitery].push( w[n] );
		    angielskie = true;
		}
	    }
	}
	catch (e){}
    }
}

function AktualizujAngPol(nSlowo){
    var dwieLitery = nSlowo.substr(0,2);
    try{
	var ile = ang[dwieLitery].length; //jeśli się to powiedzie
    }catch (e){
	if (wysylaj){ //tylko raz wysylam
	    WczytajPlikFunkcja(url+'/angielski/wycinki/' + dwieLitery.toLowerCase() + ".html",'PrzetworzPlik("'+dwieLitery+'")');
	    wysylaj = false
	}
    }
}

//sSlowo - stare slowo
function CzyPrzerwaWPisaniu(sSlowo){
    var aSlowo = id("slownik").value;
    if (aSlowo == sSlowo) Wypisz();
}

function Sprawdzaj(){
    if (KursorWpolu){
	var nSlowo = id("slownik").value;       //nowe słowo
	if (nSlowo != wSlowo){
	    if (nSlowo.length >= 2) {
		wSlowo = nSlowo;
		AktualizujAngPol(nSlowo);
		//opóżnienie, słowa się pojawiają jak przestanie się pisać przez 500ms
		//jak się słowa pojawiają w trakcie pisania jest to rozpraszajace
		setTimeout("CzyPrzerwaWPisaniu(\""+nSlowo+"\");",500); //po 500 z nSlowo robi sie sSlowo
//		Wypisz();

	    }else{
		wysylaj = true;//jak nie ma jeszcze liter lub jest jedna zezwala na ewentualny ajax
		id("tlumaczenia").innerHTML = ""
		id("tlumaczenia").style.display = "none";
		wSlowo = nSlowo;
	    }
	}
	setTimeout("Sprawdzaj()",10); 
    }
}

function odpDodajTlumaczenie(ang,pol){
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    var ajax = xmlhttp.responseText;
	    if (ajax == "Ok\n"){
		ObwodNormalny('dodajTlumaczenie');
		var wiersz = id('dodajgtranslate').insertRow(1);
		wiersz.innerHTML ='<td class="bialy">' + ang + '</td>' +
		    '<td class="bialy">' + pol + '</td>' + 
		    '<td>' +
		    '<div class="koszyk" id="doK'+nrDodanegoTlumaczenia+'" '+
		    'onclick=\'DoKoszyka("'+ang+'","'+pol+'","'+nrDodanegoTlumaczenia+'")\' '+
		    '>do koszyka</div>'+
		    '</td>';
		nrDodanegoTlumaczenia++;

		id("dodajTlumAng").value = "";
		id("dodajTlumPol").value = "";
	    }
	}catch (e){}
    }
}

function dodajTlumaczenie(){
    if (dd["login"]){ //tak na wszelki wypadek
	if (dd["login"] != "_gosc"){
	    ObwodZielony('dodajTlumaczenie');
	    var ang = id("dodajTlumAng").value;
	    var pol = id("dodajTlumPol").value;
	    if ((ang.length>0) && (pol.length>0)){
		eang = encodeURIComponent(ang);
		epol = encodeURIComponent(pol);
		var parametry = 'co=nowetlumaczenie&ang='+ eang +'&pol=' + epol + '&kto=' + dd["login"];
		ajaxGetFunkcja(url+'/skrypt.py',parametry,'odpDodajTlumaczenie("'+ang+'","'+pol+'")');
		return true;
	    }
	}
    }
    alert("Zaloguj się lub załóż konto.");
}


function PoczatekSlownika(){
    UstawUrl();
    id("slownik").value = "";
    id("slownik").setAttribute("autocomplete","off")
    id("slownik").onfocus = function(){ KursorWpolu = true; Sprawdzaj(); }
    id("slownik").onblur = function(){ KursorWpolu = false; }
}


function Stopka(){
    var nowydiv = document.createElement("div");    
    nowydiv.innerHTML = '<img style="padding-top:5px;"src="'+url+'/adres.png">'+
	'<span style="font-family:verdana; font-size:12px; margin-left:50px; color:#888888">β25</span>';
    document.body.appendChild(nowydiv);
}

function Blokada(){
    var odp = '';
    var ciacho = document.cookie;
    var data = new Date(2090,11,10,19,30,30);
    if (ciacho.indexOf('blokada=brak') == -1){
	odp = prompt("Haslo","");
	if (odp != 'delta'){
	    document.location="http://debian.org"
	}else{
            var data = new Date(2090,11,10,19,30,30);
	    document.cookie = "blokada=brak; expires="+data.toGMTString()+"; path=/";
	}
    }
    document.cookie = "blokada=brak; expires="+data.toGMTString()+"; path=/";
}

function PrzyszlyNoweCiacha(nowyjezyk){
    var ajax;
    if ( (xmlhttp.readyState == 4) && (xmlhttp.status == 200) ){
	try{
	    ajax = xmlhttp.responseText;
	    ajax = DelEndZnak(ajax);
	    if (ajax.indexOf('||')>=0){             //przyszly ciacha
		KillCiacho();
		ProstoDoCiach(ajax);
		GetCiacho();
		DalszaCzescPoczatku();		
	    }
	}
	catch(e){}
    }        
}

function Poczatek(){
    //sprawdzanie czy przegladarka ma aktualne ciastka
    if (ZnajdzCiastko("wersja") != '25'){ //np. 'brak' czyli nie ma ciastka o nazwie 'wersja'
	KillCiacho();
	UtworzGoscia();
	UpieczCiacho('wersja','25');
    }

    UstawUrl();
    JakiBrowser();
//    Blokada();
    CzyPrzeladowacTaStrone();
    Stopka();

    GetCiacho();
    if (dd["login"]=="undefined"){//na wszelki wypadek
	KillCiacho();
	GetCiacho();
    }

    if (dd["login"] != '_gosc'){
	var jezyk = JakiJezykWadresie(); //np. dd[jezyk]=angielski
	if (dd["jezyk"] != jezyk){   //jak jezyk bedzie sie roznil od tego w ciastku
            //co moze sie zdazyc (rzadko) gdy sie przechodzi ze stron w jednym jezyku na strony w innym nie poprzez liste
	    ajaxPostFunkcja(url+'/skrypt.py','co=WymienCiacha&nowyjezyk='+Skracaj(jezyk),'PrzyszlyNoweCiacha("'+jezyk+'");')
	}else{
	    id("calosc").style.display = "block";
	    DalszaCzescPoczatku();
	}
    }else{
//	id("wcalosc").style.display = "block";
	DalszaCzescPoczatku();
    }

}

function DalszaCzescPoczatku(){
    if (dd["login"] == "_gosc"){
	PokazBelkeNiezalogowana();
	var jezyk = JakiJezykWadresie();
	if (jezyk != dd["jezyk"]){//widocznie byla zmiana jezyka wtedy kasowanie wszystkich ustawien (dla goscia)
	    KillCiacho(); 
	    GetCiacho(); //utworzy ciacha goscia i zaladuje do pamieci
	}
    }else{
	PokazBelkeZalogowana();	
    }
    var gdzie = GdzieJaJestem();
    if (gdzie == 'zestaw'){        //uruchomi sie dla zestawu
	PoczatekSlow();            // w pliku listaslow.js

    }else if (gdzie == 'mojezestawy'){
	WypiszZestawy();          //uruchomi sie dla indeksu zestawu

    }else if (gdzie == 'dodaj'){//dodaj.html
	PoczatekDodaj();    
    }

    PodswietlenieButtona();
}

window.onload = Poczatek;
