/*
----------------------------------------------------------------------------------
    AJAXGallery v.1
    ToDo: obsluga kilka galerii, obsluzenie liczby obrazkow nie bedacych wielokrotnoscia numVisibleElements 
    by Radek N.
----------------------------------------------------------------------------------
*/

/*
var galleries = [ 
{ 
	'url' : 'GetGallery.php',
	'container' : 'sideGallery',
	'numOfElem' : 18,
	'numVisibleElem' : 3,
	'elements' : [
	   {
		"id":"1",
		"image":"snow-small.gif",
		"description":"Snieg"
		},
		{
		"id":"2",
		"image":"test-small.jpg",
		"description":"Nic ciekawego"
		},
		{
		"id":"3",
		"image":"sea-small.gif",
		"description":"Morze"
		}
	]
 }
];
*/

var galleries = [ 
{ 
	'url' : 'GetGallery.php',
	'container' : 'sideGallery',
	'numOfElem' : 18,
	'numVisibleElem' : 3
 }
];
new Galleries(galleries);

var debug = false; // wylaczenie komunikatow zglaszanych do konsoli firebug

// kolekcja galerii
function Galleries(galleries)
{
    addLoadEvent(initGallery);
    
    // tworzenie obiektow Gallery zgodnie z obiektem konfiguracyjnym
    var arrGalleries = galleries;   
    function initGallery() { 
        for (var i = 0; i < arrGalleries.length; i++) {
            new Gallery(arrGalleries[i]);
        }
    }
}

// galeria
function Gallery(options)
{
    this.ajaxHelper = new net.ContentLoader( 
        this, 
        options.url, 
        "POST", 
        [] 
    );
    this.elements = Array(); // tablica elementow
	
	this.elements[0] = new Object();
	this.elements[0].id = '1';
	this.elements[0].image = 'snow-small.gif';
	this.elements[0].description = 'Snieg';
	
	this.elements[1] = new Object();
	this.elements[1].id = '2';
	this.elements[1].image = 'test-small.jpg';
	this.elements[1].description = 'Nic ciekawego';
	
	this.elements[2] = new Object();
	this.elements[2].id = '3';
	this.elements[2].image = 'sea-small.gif';
	this.elements[2].description = 'Morze';
	
	
	/*
	
    this.flagBusy = false; // zabezpiecza przed klinkaniem podczas ladowania
    
    var that = this;
    var numVisibleElem = options.numVisibleElem; // ilosc wyswietlanych elementow 
    var startElem = 0; // element poczatkowy
    var numOfElem = options.numOfElem; // liczba elementow galerii 
    var container = document.getElementById(options.container);
    var listItems = container.getElementsByTagName('li');
    var descriptions = container.getElementsByTagName('span');
    var images = container.getElementsByTagName('img');
    var loaders = Array(); // warstwy z animowanym loaderem
    var prev; // przycisk
    var next; // przycisk
               
    createNavigation();
            
    function createNavigation() 
    {
        // loaders layers
        for (var i = 0; i < listItems.length; i++) {
            var layer = document.createElement('div');
            layer.className = 'loaderLayer';
            listItems[i].appendChild(layer);
            loaders.push(layer);
            layer.style.display = 'none';
        }
    
        // create prev & next buttons
        prev = document.createElement('a');
        prev.className = 'buttonPrev';
        var txt = document.createTextNode('Poprzednie');
        prev.appendChild(txt);
        container.appendChild(prev);
        next = document.createElement('a');
        next.className = 'buttonNext';
        var txt = document.createTextNode('Nastepne');
        next.appendChild(txt);
        container.appendChild(next);
        prev.style.display = 'none';
        
        next.onclick = function() {
            if (startElem + numVisibleElem <= numOfElem - numVisibleElem && !that.flagBusy) {
                startElem = startElem + numVisibleElem;
                getElements();   
            } else {
                if (window.console && console.firebug && debug) console.log('max');
            }
            return false;
        }
        
        prev.onclick = function() {
            if (startElem - numVisibleElem >= 0  && !that.flagBusy) {
                startElem = startElem - numVisibleElem;
                getElements();
            } else {
                if (window.console && console.firebug && debug) console.log('min');    
            }
            return false;   
        }
    }
    
    // wlacza i wylacza warstwy z animowanym loaderem
    function loadersVisibility(option) 
    {
        if (option) {
            for (var i = 0; i < loaders.length; i++) {
                loaders[i].style.display = 'block';
            }      
        } else {
            for (var i = 0; i < loaders.length; i++) {
                loaders[i].style.display = 'none';
            }   
        }
    }
    
    // pobranie elementow o ile tablica nie jest juz wypelniona
    function getElements()
    { 
        if (that.elements.length <= startElem) {       
            loadersVisibility(true);
            that.flagBusy = true; 
            that.ajaxHelper.sendRequest('num=' + numVisibleElem + '&start=' + startElem);
        } else {
            updateView();
        }
    }
    
    // warstwa widoku
    function updateView()
    {        
         for (var i = 0; i < descriptions.length; i++) {
            descriptions[i].innerHTML = that.elements[startElem+i].description;
         }
		 for (var i = 0; i < images.length; i++) {
		 	images[i].src = 'photos/' + that.elements[startElem+i].image;
		 }
         if (startElem <= 0) {
            prev.style.display = 'none';
         } else {
            prev.style.display = 'block';
         }
         if (startElem >= numOfElem - numVisibleElem) {
            next.style.display = 'none';
         } else {
            next.style.display = 'block';
         }
    }
    
    // dodanie nowych elementow do tablicy
    this.ajaxUpdate = function(request)
    {
        var obj = eval('(' + request.responseText + ')');
        for (var i = 0; i < obj.length; i++) {
            this.elements.push(obj[i]);   
        }
        if (window.console && console.firebug && debug) console.log('pobralem'); 
        loadersVisibility(false);
        this.flagBusy = false;
        updateView();
    }
    
    this.handleError = function(request)
    {
        // do nothing
    }
    */
}

/* end */
