var Lightbox = new Class({
    cur_node: null,
    initialize: function() {
      var self = this;
      this.closed = true;
      window.addEvent('domready',function(){
        self.lightbox = $('lightbox') || null;
        self.lightbox.setStyles({
          'height': '0',
          'overflow': 'hidden',
          'display': 'block'
        });
        if($('lightbox-close')) {
          $('lightbox-close').addEvent('click',function(e){
            new Event(e).stop();
            self.close();
          })
        }
        if($('prev-client')) {
          $('prev-client').addEvent('click',function(e){
            new Event(e).stop();
            self.prev();
          })
        }
        if($('next-client')) {
          $('next-client').addEvent('click',function(e){
            new Event(e).stop();
            self.next();
          })
        }
      });
    },
    load: function(node,style) {
      this.cur_node = node;
      if (!style) {
        style = 'open';
      }
      var self = this;
      var req = null;
      if ('open' == style) {
        req = new Request.HTML({
          update: $('lightbox-inner-wrap'),
          onSuccess: function() {
						if (Browser.Engine.trident4 && $('lightbox-inner-wrap').getElement('img')) {
              var n = new Element('div');
              var img = $('lightbox-inner-wrap').getElement('img');
              n.setStyles({
                width: 147,
                height: 74
              });
              n.setStyle('filter','progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + img.get('src') + '",sizingMethod="crop")');
              
              n.replaces(img);
            }
            self.open();
          }
        });
      } else {
        req = new Request.HTML({
          onComplete: function(nodes) {
            var new_node = (nodes[0].nodeType == 3 ? nodes[1] : nodes[0]);
            if (Browser.Engine.trident4 && new_node.getElement('img')) {
              var n = new Element('div');
              var img = new_node.getElement('img');
              n.setStyle('filter','progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + img.get('src') + '",sizingMethod="crop")');
              n.setStyles({
                width: 147,
                height: 74
              });
              n.replaces(img);
            }
            var old_node = $('lightbox-inner-wrap').getFirst();
            var fx_node = null;
            if ('right' == style) {
              new_node.setStyle('margin-left','-810px');
              new_node.inject($('lightbox-inner-wrap'),'top');
              fx_node = new_node;
            } else {
              new_node.inject($('lightbox-inner-wrap'),'bottom');
              fx_node = old_node;
            }
            var fx = new Fx.Elements([fx_node,$('lightbox-inner'),$('lightbox')],{
              onComplete: function(){
                old_node.destroy();
              }
            }).start({
              '0': {
                'margin-left' : ('right' == style ? 0 : -810 )
              },
              '1': {
                'height': new_node.getSize().y
              },
              '2': {
                'height': new_node.getSize().y
                  + $('lightbox-wrap').getStyle('padding-top').toInt()
                  + $('lightbox-wrap').getStyle('padding-bottom').toInt()
                  + $('light-bottom').getSize().y
              }
            });
          }
        });      
      } 
      req.get(node.get('href'));
    },
    open: function() {
      var self = this;
      if (this.closed) {
        $('lightbox-inner').setStyle('height',$('lightbox-inner').getElement('.lightbox-entry').getSize().y);
        this.lightbox.tween('height',$('lbContent').getStyle('height').toInt());
        this.closed = false;
        $$('body').addEvent('click',function(){
          self.close();
        });
        $('lbContent').addEvent('click',function(e){
          var ev = new Event(e);
          if (!($(ev.target).get('tag') == 'a' && $(ev.target).get('href') != '#')) {
            ev.stop();
          }
        })
      }
    },
    close: function() {
      if (!this.closed) {
        this.lightbox.tween('height',0);
        this.closed = true;
        $$('body, #lbContent').removeEvents('click');
      }
    },
    next: function() {
      var next_node = this.cur_node.getParent().getNext('li') ? this.cur_node.getParent().getNext('li').getFirst() : false;
      if (!next_node) {
        next_node = ( this.cur_node.getParent('div').getNext('div') ? this.cur_node.getParent('div').getNext('div').getElement('a') : false );
      }
      if (!next_node) {
        next_node = this.cur_node.getParent('div.sub-columns').getElement('a');
      }
      this.load(next_node,'left');
    },
    prev: function() {
      var next_node = this.cur_node.getParent().getPrevious('li') ? this.cur_node.getParent().getPrevious('li').getFirst() : false;
      if (!next_node) {
        next_node = ( this.cur_node.getParent('div').getPrevious('div') ? this.cur_node.getParent('div').getPrevious('div').getElement('li:last-child a') : false );
      }
      if (!next_node) {
        next_node = this.cur_node.getParent('div.sub-columns').getElements('a').getLast();
      }
      this.load(next_node,'right');    
    }
  })

  var lb = new Lightbox();

  window.addEvent('domready',function(){

    $$('a[rel=lightbox]').each(function(node){
      node.addEvent('click',function(e){
        e = new Event(e);
        e.preventDefault();
        lb.load(node);
        new Fx.Scroll(window).toElement('lbContent');
      })
    });
  })