var Gallery = new Class({
    
    //implements
    Implements: [Options],
    
    //options
    options: {
        container: $$('body')[0],
        callback: null,
        path: './',
        shadowbox: null
    },
    
    //initialization
    initialize: function(options) {
            //set options
            this.setOptions(options);
            this.images = [];
            this.fullPathImages = [];
            this.ulElement = new Element('ul',{ id:'imglist'}).inject(this.options.container);
    } 
    ,
    preload: function(){
       // var options = { "method": "get", "onComplete": onCompleteRetrieval };
        var req = new Request({
            url: 'file_retriever.php?p='+this.options.path,
            onSuccess: function(response) {
               // alert(response);
                var ret = JSON.decode(response);
                
                
                if (ret.code == 1){
                    this.images = ret.files;
                    //alert('recebeu ok');
                    ret.files.each(function(im){
                        this.fullPathImages.include(this.options.path + '/' + im); 
                    }.bind(this));
                    
                    this.load();
                }
            }.bind(this),
            onFailure: function(){
		//alert("falhou");
	    }
        });
        
        req.send();
        
       /*  var ajaxReq = new Ajax("file_retriever.php", options);
        var onCompleteRetrieval = function(response) {
            var ret = JSON.decode(response);
            
            if (ret.code == 1){
                this.images = ret.images;
                
                ret.images.each(function(im){
                    this.fullPathImages.include(this.options.path + '/' + im); 
                });
                
                this.load();
            }
        }.bind(this); */
    } 
    ,
   
    load: function() {
        var shadowbox = this.options.shadowbox;
        var ulElement = this.ulElement;
        var imgs = this.images;
        var path = this.options.images; 
        
        var loadOptions = {
            
            onProgress: function(counter, index) {
               var liElement = new Element('li').inject(ulElement);
               var aElement = new Element('a',
                            {href: this.options.path + "/zoom/" +
                                   this.images[index]}).inject(liElement);
               new Element('img',{src: this.fullPathImages[index]}).inject(aElement);
               shadowbox.setup(aElement);
               this.options.callback.run();
            }.bind(this),
            
            onComplete: function() {
               this.options.callback.run();
            }.bind(this)
        };
        
        loader = new Asset.images(this.fullPathImages, loadOptions);
         
    }
    
    /* ,
    
    isLoaded: function(){
        return this.loaded;
    }*/

});
