/* -------------- ogolne -------------- */
var Requescik = null;
var AjaxDane = new Array();
if(navigator.userAgent.indexOf("Safari")> 0){isSafari=true;isMoz=false;isIE=false;}
else if(navigator.product=="Gecko"){isSafari=false;isMoz=true;isIE=false;}
else{isSafari=false;isMoz=false;isIE=true;}
/* -------------- ogolne -------------- */
/* ----------- focus, blur ------------ */
sfFocusBlur = function() {
  var sfEls = document.getElementsByTagName("input");
  if (sfEls.length > 0) {
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onfocus=function() {
        this.className+=" sffocus";
      }
      sfEls[i].onblur=function() {
        this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
    }
  }
  var sfEls = document.getElementsByTagName("textarea");
  if (sfEls.length > 0) {
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onfocus=function() {
        this.className+=" sffocus";
      }
      sfEls[i].onblur=function() {
        this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
    }
  }
  var sfEls = document.getElementsByTagName("select");
  if (sfEls.length > 0) {
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onfocus=function() {
        this.className+=" sffocus";
      }
      sfEls[i].onblur=function() {
        this.className=this.className.replace(new RegExp(" sffocus\\b"), "");
      }
    }
  }
}
if (window.attachEvent) window.attachEvent("onload", sfFocusBlur);
/* ----------- focus, blur ------------ */
/* ---------------- menu -------------- */
sfHover = function() {
  if (!document.getElementById("nav")) { return false; }
  var sfEls = document.getElementById("nav").getElementsByTagName("LI");
  if (sfEls.length > 1) {
    for (var i=0; i<sfEls.length; i++) {
      sfEls[i].onmouseover=function() {
        this.className+=" sfhover";
      }
      sfEls[i].onmouseout=function() {
        this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
      }
    }
  }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
/* ---------------- menu -------------- */
/* ------- wysylanie formularza ------- */
function WyslijFormsa (klik,nazwa,wartosc,pyt) {
  if (pyt) {
    var odp = confirm(pyt);
    if (odp) {
      var formularz = klik.form;
      var newBox = document.createElement('input');
      newBox.type = 'hidden';
      newBox.name = nazwa;
      newBox.value = wartosc;
      formularz.appendChild(newBox);
      formularz.submit();
    }
    else { return false; }
  } 
  else {
    var formularz = klik.form;
    var newBox = document.createElement('input');
    newBox.type = 'hidden';
    newBox.name = nazwa;
    newBox.value = wartosc;
    formularz.appendChild(newBox);
    formularz.submit();
  }
}
/* ------- wysylanie formularza ------- */
/* ------ zazn i odzn checkboxow ------ */
function ChecksyZaznacz(formularz,nazwaelementu,element) {
   if (element.checked) {
     for (var i = 0; i < formularz.length; i++) {
       if ((formularz.elements[i].name == nazwaelementu) && (!formularz.elements[i].checked)) {
          formularz.elements[i].click();
       }
     }
   }
   else {
     for (var i = 0; i < formularz.length; i++) {
       if ((formularz.elements[i].name == nazwaelementu) && (formularz.elements[i].checked)) {
          formularz.elements[i].click();
       }
     }
   }
}
/* ------ zazn i odzn checkboxow ------ */
/* ---------- pokaz zdjecie ----------- */
function PokazZdjecie (adres,szerokosc,wysokosc) {
  szerokosc += 18;
  wysokosc += 18;
  var args = 'width=' + szerokosc + ',height=' + wysokosc + ',menubar=no,location=no,resizable=yes,scrollbars=no,status=no';
  if (window.screen)  { 
    var xcen = (screen.availWidth - szerokosc) / 2;
    var ycen = (screen.availHeight - wysokosc) / 2;
    args += ',left=' + xcen + ',screenX=' + xcen;
    args += ',top=' + ycen + ',screenY=' + ycen;  
  }
  window.open(adres,'',args);
}
/* ---------- pokaz zdjecie ----------- */
/* -------- przesuwanie pion ---------- */
function ElementPrzesun (el,kierunek) {
  var rodzic = el.parentNode;
  var dzieci = rodzic.getElementsByTagName(el.nodeName);
  if (dzieci.length > 1) {
     for (var a=1; a < dzieci.length; a++) {
        if (dzieci[a] == el) {
           if ((kierunek == 'g') && (a > 1)) {
             rodzic.insertBefore(el, dzieci[(a - 1)]);
             return 1;
           }
           else if ((kierunek == 'd') && (a < dzieci.length)) {
             rodzic.insertBefore(dzieci[(a + 1)],el);
             return 1;
           }
        }
     }
  }
}
/* -------- przesuwanie pion ---------- */
/* ------------- zakladki ------------- */
function OtworzZakladke (przycisk,ktora) {
  przycisk.blur();
  var tagi = document.getElementById('ZakladkaMenu').getElementsByTagName('A');
  if (tagi.length > 0) {
    for (var i = 0 ; i < tagi.length; i++) {
      tagi.item(i).className = "Przycisk";
    }
  }
  var tagi = document.getElementsByTagName('DIV');
  if (tagi.length > 0) {
    for (var i = 0; i < tagi.length; i++) {
      if (tagi.item(i).className == 'DVZakladka') {
         tagi.item(i).style.display = "none"; 
      }
    }
  }
  przycisk.className = "PrzyciskAktywny";
  document.getElementById(ktora).style.display = "block";
  return false;
}
function OtworzZakladkeMala (przycisk,ktora,nazwarodzica) {
  przycisk.blur();
  var tagi = przycisk.parentNode.getElementsByTagName('A');
  if (tagi.length > 0) {
    for (var i = 0 ; i < tagi.length; i++) {
      if (tagi[i] == przycisk) { tagi[i].className = "PrzyciskAktywny"; }
      else { tagi[i].className = "Przycisk"; }
    }
  }
  var rodzic = document.getElementById(nazwarodzica);
  var tagi = rodzic.getElementsByTagName('DIV');
  if (tagi.length > 0) {
    for (var i = 0; i < tagi.length; i++) {
      if (tagi[i].id == (nazwarodzica + '_' + ktora)) {
         tagi[i].style.display = "block";
      }
      else {
         tagi[i].style.display = "none";
      }
    }
  }
  return false;
}
/* ------------- zakladki ------------- */
/* ---- okienka z podpowiedziami ------ */
function RamkaPokaz(event,tytul,trescramki) {
  var ramka = document.getElementById('Ramka');
  if (!ramka) { 
    ramka = document.createElement('div');
    ramka.setAttribute('id','Ramka');
    ramka.onmouseover = function() {
       if (typeof Requescik != 'undefined') { window.clearTimeout(Requescik); }
    }
    ramka.onmouseout = function() {
       if (typeof Requescik != 'undefined') { window.clearTimeout(Requescik); }
       Requescik = window.setTimeout("RamkaChowaj()",500);
    }
    document.body.appendChild(ramka);
  }
  else {
    ramka.style.left = 0 + 'px';
    ramka.style.top = 0 + 'px';
    while(ramka.hasChildNodes()){
      ramka.removeChild(ramka.lastChild);
    }
  }
  ramka.innerHTML = '<h1 class="Tytul">' + tytul + '</h1><div class="Tresc">' + trescramki + '</div>';
  if (document.all) {
    przyc = window.event.srcElement; 
    maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) + (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth);
    maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
  }
  else { 
    przyc = event.currentTarget 
    maxX = window.scrollX + window.innerWidth;
    maxY = window.scrollY + window.innerHeight;
  }
  var lewa = OdstepOdLewej(przyc);
  var gora = OdstepOdGory(przyc);
  if (lewa > (maxX - ramka.offsetWidth - 10)) {
    lewa -= ramka.offsetWidth;
  }
  else {
    lewa += 50;
  }
  if (gora > (maxY - ramka.offsetHeight - 10)) {
    gora -= ramka.offsetHeight;
  }
  else {
    gora -= 10;
  }
  ramka.style.left = lewa + 'px';
  ramka.style.top = gora + 'px';
  ramka.style.display = 'block';
  if (typeof Requescik != 'undefined') { window.clearTimeout(Requescik); }
  Requescik = window.setTimeout("RamkaChowaj()",4000);
}
function RamkaChowaj() {
  var ramka = document.getElementById('Ramka');
  if (ramka) { ramka.parentNode.removeChild(ramka); }
}
function OdstepOdLewej(el) {
  var x;
  x = el.offsetLeft;
  if (el.offsetParent != null) {
    x += OdstepOdLewej(el.offsetParent);
  }
  return x;
}
function OdstepOdGory(el) {
  var y;
  y = el.offsetTop;
  if (el.offsetParent != null)
    y += OdstepOdGory(el.offsetParent);
  return y;
}
/* ---- okienka z podpowiedziami ------ */
/* ---------------- ajax -------------- */
function PrzelecDOM(obiekt) {
   var tmpobiekt;
   if(obiekt.nodeType == 3) {
      tmpobiekt = document.createTextNode(obiekt.nodeValue);
   }
   else {
      tmpobiekt = document.createElement(obiekt.tagName);
   }
   if (isIE) {
      var atrybuty = obiekt.attributes;
      if (atrybuty && atrybuty.length > 0) {
         for (var a = 0; a < obiekt.attributes.length; a++) {
           tmpobiekt.setAttribute(obiekt.attributes[a].name, obiekt.attributes[a].value);
         }
      }
   }
   else {
      //jak obiekt ma argumenty to je dodaje do tmpobiekt
      if (obiekt.hasAttributes()) {
         var atrybuty = obiekt.attributes;
         for (var a = 0; a < atrybuty.length; a++) {
           tmpobiekt.setAttribute(atrybuty[a].name, atrybuty[a].value);
         }
      }
   }
   if (obiekt.hasChildNodes() > 0) {
      var dzieci = obiekt.childNodes;
      for (var a = 0; a < dzieci.length; a++) {
         tmpobiekt.appendChild(PrzelecDOM(dzieci[a]));
      }
   }
   return tmpobiekt;
}
function loadXMLDoc(url) {
  Requescik = null;
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send(null);
  }
  else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = processReqChange;
      req.open("GET", url, true);
      req.send();
    }
  }
}
function processReqChange() {
  if (req.readyState == 4) {
    if (req.status == 200) {
      response = req.responseXML.documentElement;
      if (response.getElementsByTagName('metoda').length == 0) { return false; }
      metoda = response.getElementsByTagName('metoda')[0].firstChild.data;
      eval(metoda + '(response)');
      return true;
    }
    else {
      return false;
    }
  }
}
function Uzupelnij(element,lista,adres,minliczzn,czas,e) {
  //weryfikacja
  if (!element) {
     return false;
  }
  var okno = document.getElementById(lista);
  if (!okno) {
     return false; //nie ma okna ??????
  }
  if (!adres) { return false; }
  if (!minliczzn) { var minliczzn = 2; }
  if (czas < 100) { var czas = 100; }
  if (!e)  { var e = window.event; }
  if (e.keyCode) { var klawisz = e.keyCode; }
  else if (e.which) { var klawisz = e.which; }
  //kod
  if((klawisz == 38) && (okno.style.display == 'block')) { //strzalka gora
    var lista = okno.getElementsByTagName('p');
    if (Wybrany == 0) {
      lista[Wybrany].className='';
      Wybrany = lista.length-1;
      lista[Wybrany].className='podswietlone';
    }
    else if (Wybrany > 0) {
      lista[Wybrany].className='';
      Wybrany--;
      lista[Wybrany].className='podswietlone';
    }
    return false;
  }
  else if ((klawisz == 40) && (okno.style.display == 'block')){ //strzalka dol
    var lista = okno.getElementsByTagName('p');
    if (Wybrany == lista.length-1) {
      lista[Wybrany].className='';
      Wybrany = 0;
      lista[Wybrany].className='podswietlone';
    }
    else if (Wybrany < lista.length-1) {
      lista[Wybrany].className='';
      Wybrany++;
      lista[Wybrany].className='podswietlone';
    }
    return false;
  }
  else if ((klawisz == 9) && (okno.style.display == 'block')) { //   tab
    okno.style.display='none';
    if (isIE) { e.returnValue = false; }
    else { e.preventDefault(); }
    element.focus();
    return false;
  }
  else if (klawisz == 13)  { //  enter 
    if (okno.style.display == 'block') {
      //wypelniamy i zamykamy okienko
      element.value=okno.getElementsByTagName('p')[Wybrany].innerHTML;
      okno.style.display='none';
    }
    if (isIE) { e.returnValue = false; }
    else { e.preventDefault(); }
    return false;
  }
  else if (klawisz == 37 || klawisz == 39) { //strzalki lewa i prawa
    return false;
  }
  else {
    //udajemy ze nam sie kod udal
    if(Requescik != null) {
        window.clearTimeout(Requescik);
    }
    Requescik = window.setTimeout(function () { UzupelnijPobierz(element,lista,adres,minliczzn); }, czas);
  }
}
function UzupelnijPobierz(element,lista,adres,minliczzn) {
  var ciag = element.value;
  var okno = document.getElementById(lista);
  if (ciag.length >= minliczzn) {
    //udajemy ze nam sie kod udal
    okno.style.display='none';
    element.onblur = function() {
      if (okno.style.display == 'block') {
        window.setTimeout(function () { okno.style.display='none'; }, 150);
      }
    }
    loadXMLDoc(adres + encodeURIComponent(ciag) + '&lista=' + lista + '&eldocelowy=' + element.id + '&Losowe=' + Math.random() * Date.parse(new Date()));
  }
  else {
    okno.style.display='none';
  }
}
function UzupelnijWyswietl(odpowiedz) {
  if (odpowiedz) {
    var elementy = odpowiedz.getElementsByTagName('nazwa');
    var lista = odpowiedz.getElementsByTagName('lista').item(0).firstChild.data;
    var eldocelowy = odpowiedz.getElementsByTagName('eldocelowy').item(0).firstChild.data;
    var IleSkladnikow = elementy.length;
    if (IleSkladnikow > 0) {
      Wybrany = 0;
      var okno = document.getElementById(lista);
      while(okno.hasChildNodes()) {
        okno.removeChild(okno.lastChild);
      }
      for (var a = 0; a < IleSkladnikow; a++) {
        var paragraf = document.createElement("p");
        var tekst = document.createTextNode(elementy[a].firstChild.data);
        paragraf.appendChild(tekst);
        if (a == 0) { paragraf.className = "podswietlone"; }
        okno.appendChild(paragraf);
        paragraf.onclick = function() {
          document.getElementById(eldocelowy).value = this.innerHTML;
        }
        paragraf.onmouseover = function() {
          var lista = okno.getElementsByTagName('p');
          lista[Wybrany].className='';
          for (var a = 0; a < lista.length; a++) {
            if (lista[a] == this) { this.className='podswietlone'; Wybrany = a; }
          }
        }
      }
      okno.style.display = 'block';
    }
  }
}
function ListaWyboru(element,lista,eldocelowy,adres,minliczzn,czas,e) {
  //weryfikacja
  if (!element) { return false; }
  var okno = document.getElementById(lista);
  if (!okno) { return false; }
  if (!adres) { return false; }
  if (!minliczzn) { var minliczzn = 2; }
  if (czas < 100) { var czas = 100; }
  if (!e)  { var e = window.event; }
  if (e.keyCode) { var klawisz = e.keyCode; }
  else if (e.which) { var klawisz = e.which; }
  //kod
  if((klawisz == 38) && (okno.style.display == 'block')) { //strzalka gora
    var lista = okno.getElementsByTagName('p');
    if (Wybrany == 0) {
      lista[Wybrany].className='';
      Wybrany = lista.length-1;
      lista[Wybrany].className='podswietlone';
    }
    else if (Wybrany > 0) {
      lista[Wybrany].className='';
      Wybrany--;
      lista[Wybrany].className='podswietlone';
    }
    return false;
  }
  else if ((klawisz == 40) && (okno.style.display == 'block')){ //strzalka dol
    var lista = okno.getElementsByTagName('p');
    if (Wybrany == lista.length-1) {
      lista[Wybrany].className='';
      Wybrany = 0;
      lista[Wybrany].className='podswietlone';
    }
    else if (Wybrany < lista.length-1) {
      lista[Wybrany].className='';
      Wybrany++;
      lista[Wybrany].className='podswietlone';
    }
    return false;
  }
  else if ((klawisz == 9) && (okno.style.display == 'block')) { //   tab
    okno.style.display='none';
    if (isIE) { e.returnValue = false; }
    else { e.preventDefault(); }
    element.focus();
    return false;
  }
  else if (klawisz == 13)  { //  enter 
    if (okno.style.display == 'block') {
      //wypelniamy i zamykamy okienko
      ListaWyboruDodaj(document.getElementById(eldocelowy),okno.getElementsByTagName('p')[Wybrany]);
      okno.style.display='none';
    }
    if (isIE) { e.returnValue = false; }
    else { e.preventDefault(); }
    return false;
  }
  else if (klawisz == 37 || klawisz == 39) {
    return false;
  }
  else {
    if(Requescik != null) {
      window.clearTimeout(Requescik);
    }
    Requescik = window.setTimeout(function () { ListaWyboruPobierz(element,lista,eldocelowy,adres,minliczzn); }, czas);
  }
}
function ListaWyboruPobierz(element,lista,eldocelowy,adres,minliczzn) {
  var ciag = element.value;
  var okno = document.getElementById(lista);
  if (ciag.length >= minliczzn) {
    //udajemy ze nam sie kod udal
    element.onblur = function() {
      if (okno.style.display == 'block') {
        window.setTimeout(function () { okno.style.display='none'; }, 150);
      }
    }
    loadXMLDoc(adres + encodeURIComponent(ciag) + '&lista=' + lista + '&eldocelowy=' + eldocelowy + '&Losowe=' + Math.random() * Date.parse(new Date()));
  }
  else {
    okno.style.display='none';
  }
}
function ListaWyboruWyswietl(odpowiedz) {
  if (odpowiedz) {
    AjaxDane = new Array();
    var elementy = odpowiedz.getElementsByTagName('elementy');
    if (elementy.length > 0) {
      Wybrany = 0;
      var lista = odpowiedz.getElementsByTagName('lista').item(0).firstChild.data;
      var eldocelowy = odpowiedz.getElementsByTagName('eldocelowy').item(0).firstChild.data;
      var okno = document.getElementById(lista);
      while(okno.hasChildNodes()) { okno.removeChild(okno.lastChild); }
      for (var a = 0; a < elementy.length; a++) {
        var idelementu = elementy[a].getElementsByTagName('id')[0].firstChild.nodeValue;
        var nazwaelementu = elementy[a].getElementsByTagName('nazwa')[0].firstChild.nodeValue
        AjaxDane[idelementu] = new Array();
        AjaxDane[idelementu]['dane'] = elementy[a].getElementsByTagName('dane')[0].firstChild;
        var paragraf = document.createElement("p");
        var tekst = document.createTextNode(nazwaelementu);
        paragraf.appendChild(tekst);
        paragraf.setAttribute("id", idelementu);
        okno.appendChild(paragraf);
        if (a == 0) { paragraf.className = "podswietlone";  }
        paragraf.onclick = function() {
          ListaWyboruDodaj(document.getElementById(eldocelowy),this);
        }
        paragraf.onmouseover = function() {
          var lista = okno.getElementsByTagName('p');
          lista[Wybrany].className='';
          for (var a = 0; a < lista.length; a++) {
            if (lista[a] == this) { this.className='podswietlone'; Wybrany = a; }
          }
        }
      }
      okno.style.display = 'block';
    }
  }
}
function ListaWyboruDodaj(wybrane,element) {
  var elementydodane = wybrane.getElementsByTagName('input');
  if (elementydodane.length > 0) {
     for (var a = 0; a < elementydodane.length; a++) {
       if (elementydodane[a].value == element.id) {
          return 0;
       }
     }
  }
  wybrane.appendChild(PrzelecDOM(AjaxDane[element.id]['dane']));
}
function Wypelnij(elzrodlowy,eldocelowy,adres,minliczzn) {
  if (!document.getElementById(elzrodlowy)) { return false; }
  if (!adres) { return false; }
  if (!minliczzn) { var minliczzn = 1; }
  var nazwa = document.getElementById(elzrodlowy).value;
  if (nazwa.length >= minliczzn) {
     loadXMLDoc(adres + encodeURIComponent(nazwa) + '&elzrodlowy=' + elzrodlowy + '&eldocelowy=' + eldocelowy + '&Losowe=' + Math.random() * Date.parse(new Date()));
  }
  else {
    return false;
  }
}
function WypelnijDodaj(odpowiedz) {
  if (odpowiedz) {
     var elzrodlowy = odpowiedz.getElementsByTagName('elzrodlowy').item(0).firstChild.data;
     var eldocelowy = odpowiedz.getElementsByTagName('eldocelowy').item(0).firstChild.data;
     var elementy = odpowiedz.getElementsByTagName('elementy');
     if (elementy.length > 0) {
       for (var a = 0; a < elementy.length; a++) {
         document.getElementById(eldocelowy).appendChild(PrzelecDOM(elementy[a].getElementsByTagName('dane')[0].firstChild));
       }
     }
     //czyscimy inputa
     document.getElementById(elzrodlowy).value = '';
  }
}
function KodHTML(adres,id) {
  loadXMLDoc(adres + id + '&Losowe=' + Math.random() * Date.parse(new Date()));
}
function KodHTMLWyswietl(odpowiedz) {
  if (odpowiedz) {
     var szerokosc = odpowiedz.getElementsByTagName('szerokosc').item(0).firstChild.data;
     var wysokosc = odpowiedz.getElementsByTagName('wysokosc').item(0).firstChild.data;
     var dane = odpowiedz.getElementsByTagName('dane');
     if (dane.length > 0) {
        var ramka = document.getElementById('RamkaZdjecia');
        if (!ramka) {
          ramka = document.createElement('div');
          ramka.setAttribute('id','RamkaZdjecia');
          ramka.setAttribute('id','RamkaZdjecia');
          document.body.appendChild(ramka);
        }
        else {
          while(ramka.hasChildNodes()){
            ramka.removeChild(ramka.lastChild);
          }
          ramka.style.display = "block";
        }
        ramka.style.position = 'absolute';
        ramka.style.zIndex = 100;
        ramka.style.width = szerokosc + 'px';
        ramka.style.height = wysokosc + 'px';
        ramka.style.left = ((screen.availWidth - szerokosc) / 2) + 'px';
        if (document.documentElement && document.documentElement.scrollTop) {
           ramka.style.top = (document.documentElement.scrollTop + 100) + 'px';
        }
        else if (document.body) {
           ramka.style.top = (document.body.scrollTop + 100) + 'px';
        }
        else { ramka.style.top = 100 + 'px'; }
        ramka.appendChild(PrzelecDOM(dane[0]));
     }
  }
}
/* ---------------- ajax -------------- */
/* ----- wylaczanie obiektow --------- */
function WylaczanieObiektow(rodzic,rodzaj) {
  var obiekt = document.getElementById(rodzic);
  var rodzaje = new Array('INPUT','TEXTAREA','BUTTON','SELECT');
  for (var x = 0; x < rodzaje.length; x++) {
    var dzieci = obiekt.getElementsByTagName(rodzaje[x]);
    if (dzieci.length > 0) {
      for (var a = 0; a < dzieci.length; a++) {
        if (rodzaj == 1) {
          dzieci[a].disabled = false;
          dzieci[a].className = dzieci[a].className.replace(new RegExp(" wylaczone\\b"), "");
        }
        else {
          dzieci[a].disabled = true;
          dzieci[a].className = dzieci[a].className.replace(new RegExp(" wylaczone\\b"), "");
          dzieci[a].className += " wylaczone";
        }
      }
    }
  }
  if (rodzaj == 1) { obiekt.style.display = 'block'; }
  else { obiekt.style.display = 'none'; }
}
/* ----- wylaczanie obiektow --------- */