/*
* PRZESUWALNA LISTA ELEMENTOW
* W oparciu o jCarousel.
* @param o Object Lista opcji listy. Dostepne opcje opisane sa ponizej, wewnatrz opisu klasy (id, src, ...).
*/
ScrollList = function(o) {
 
 this.id = o.id; // Identyfikator bloku nadrzednego dla elementu UL, ktory ma zawierac liste. Identyfikator rozpoczyna sie od znaku '#'.
 this.src = o.src; // Adres wzgledem dokumentu XHTML do zrodla danych  dla listy.
 this.scroll = o.scroll != undefined ? o.scroll : 3; // Adres wzgledem dokumentu XHTML do zrodla danych  dla listy.
 this.nextName = o.nextName; // Nazwa klasy elementu, ktory ma sluzyc do przesuwania listy do przodu. Element ten musi miec wspolnego rodzica z UL.
 this.prevName = o.prevName; // Nazwa klasy elementu, ktory ma sluzyc do przesuwania listy do tylu. Element ten musi miec wspolnego rodzica z UL.
 this.vertical = (o.vertical != undefined && o.vertical) ? true : false; // Czy lista przesuwa sie w pionie, a nie w poziomie?
 
 /*
 * INICJALIZACJA KARUZELI
 * Przypisanie akcji do elementow przesuwajacych liste.
 */
 this.init = function(carousel) {
  
  $(carousel.options.listObject.id + ' .' + carousel.options.listObject.prevName).bind('click', function() {
   carousel.prev();
   return false;
  });

  $(carousel.options.listObject.id + ' .' + carousel.options.listObject.nextName).bind('click', function() {
   carousel.next();
   return false;
  });
  
 }
 
 if (this.src != '') {
  
  $(this.id + ' ul').text('');
  
  /*
  * LADOWANIE NOWEGO ELEMENTU
  * Sprawdzenie, czy pozadane elementy sa juz zaladowane oraz ich doladowanie, jesli to konieczne.
  */
  this.itemLoad = function(carousel, state) {
   
   if (carousel.has(carousel.first, carousel.last)) { // Czy pozadane elementy juz istnieja w drzewie DOM?
    return;
   }
   $.get(carousel.options.listObject.src, function(data) { // Pobierz dane i obrob je przy pomocy funkcji
    carousel.options.listObject.processOutput(carousel, carousel.first, carousel.last, data);
   });
   
  }
  
  /*
  * OBROBKA DANYCH ZRODLOWYCH
  * Przykladowa funkcja realizujaca ten proces - otrzymuje dane odczytane z pliku i wyciaga z nich wiersze, ktore maja zostac dodane do listy. Do zmiany wedle upodoban.
  */
  this.processOutput = function(carousel, first, last, data) {
   
   var items = data.split('|');
   for (i = first - 1; (i < last) && (i < items.length); i++) {
       carousel.add(i+1, items[i]);
   }
   carousel.size(items.length);
   
   updateTooltips();
   
  }
  
 }
 
 // WYWOLANIE PROCEDURY TWORZENIA JCAROUSEL
 var carousel = $(this.id).jcarousel({
  initCallback: this.init,
  vertical: this.vertical,
  scroll: this.scroll,
  itemLoadCallback: {
   onBeforeAnimation: this.itemLoad,
   onAfterAnimation: null
  },
  buttonNextHTML: null,
  buttonPrevHTML: null,
  listObject : this
 });
 
}
