/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

var FotoBrowser = new Class({
	Implements: [Events, Options],


	options:
	{
		id:''
	},

        initialize: function(el, options)
        {
            this.setOptions(options);
            
            var query = document.location.href.split('#');
            this.url = query[0];
            if (query.length>1)
            {
                this.query = query[1].split('_');
            }
            else this.query = false;
            this.init(el, 0);
        },

	init: function(el, liv)
	{
                var obj = this;
		el = $(el);

                this.lastCnt = el;

                el.getElements('div').each(function(folder){
                    
                    folder.addEvent('mouseover', function(){
                       this.addClass('over');
                    });
                    folder.addEvent('mouseout', function(){
                       this.removeClass('over');
                    });

                    if (folder.getChildren('a').length==0 && folder.getElements('.fgFolder a').length==0 )
                    {
                        folder.addEvent('click', function(){
                           el.getElements('div.selected').each(function(sel)
                           {
                               sel.removeEvent('click');
                               sel.removeClass('selected');
                               obj.close(sel);
                           });
                           this.addClass('selected');

                           obj.open(this, liv);
                        });
                        if (obj.query && folder.get('html').contains(obj.query[liv]))
                        {
                            obj.query[liv] = '######';
                             folder.fireEvent('click');
                        }
                    }
                    else
                    {
                            var arr = folder.getChildren('a');
                            if (arr.length==0)
                            {
                                 arr = folder.getElements('.fgFolder a');
                            }
                            var a = arr[0];
                            a.getParent().addEvent('click', function(ev){
                               ev.stop();
                               window.location.href=a.href;
                            });
                    }
                });
	},

        
        open: function(el, liv)
        {
            var obj = this;
            var cnt = new Element('div', {'class':'folderCnt'});
            cnt.inject(this.lastCnt, 'after');
            this.lastCnt = cnt;

            el.store('cnt', cnt);

            el.getChildren().each(function(child){
               if (child.hasClass('fgFolder')) return;
               if (child.hasClass('bgFolder')) return;
               var clone = child.clone();
               clone.setStyle('display', 'block');
               clone.getChildren('a').each(function(link){
                  clone.setStyle('cursor','pointer');
                  clone.addEvent('click', function(){
                  var hash = link.get('href');
                     hash = hash.split('/');
                     hash = hash.pop();
                     
                     window.location.hash = hash;
                     window.location.href = link.get('href');
                  });
               });
               cnt.grab(clone);
            });

            this.init(cnt, liv+1);

            
            /*if ($('fotoBrowser').getSize().y<cnt.getSize().y)
            {
                $('fotoBrowser').tween('height', cnt.getSize().y);
            }*/

            //this.fireEvent('resize');

        },

        close: function(el)
        {
            var obj = this;
            var cnt = el.retrieve('cnt');
            cnt.getElements('div.selected').each(function(sel){obj.close(sel)});
            this.lastCnt = cnt.getPrevious();
            cnt.empty();
            cnt.destroy();
            el.store('cnt', null);
            //this.fireEvent('resize');
        }



});



