window.addEvent('domready', function() {
  $$('.rotate').each(function(el) {
    rotator(el, 8000);
  });
  $$('.expand').each(function(el) {
    expander(el);
  });
  $$('.slideshow').each(function(el) {
    slideshow(el, 8000);
  });
});


function rotator(el, delay) {
  if(el.get('delay')) delay = el.get('delay');
  var height = 0;
  var width = el.getSize().x - (parseInt(el.getStyle('padding-left')) + parseInt(el.getStyle('padding-right')));

  el.set('pauzed', 0);

  var i = 0; 
  var layers = el.getChildren();
  delay = (delay == undefined)? 6000:delay;
  layers.each(function(layer, i) {
    layer.setStyle('position', 'absolute');
    layer.setStyle('width', width+'px');
    layer.addEvent('mouseover', function() {
      el.set('pauzed', 1);
    });
    layer.addEvent('mouseout', function() {
      el.set('pauzed', 0);
    });
    if(i > 0) layer.fade('hide');
    else layer.fade('show');
    layer_height = layer.getSize().y;
    if(layer_height > height) height = layer_height;
  });
  el.setStyle('height', height);
  setInterval(function(){
    if(el.get('pauzed') == 0) {
      layers[i].fade('out'); 
      i = (i == layers.length-1)? 0 : i+1; 
      layers[i].fade('in');
    }
  },delay); 
}


function slideshow(el, delay) {
  if(el.get('delay')) delay = el.get('delay');
  var height = 0;
  var width = el.getSize().x - (parseInt(el.getStyle('padding-left')) + parseInt(el.getStyle('padding-right')));

  var i = 0;

  var layers = el.getChildren();
  delay = (delay == undefined)? 6000:delay;
  layers.each(function(layer, i) {
    layer.setStyle('position', 'absolute');
    layer.setStyle('width', width+'px');
    if(i > 0) layer.fade('hide');
    layer_height = layer.getSize().y;
    if(layer_height > height) height = layer_height;
  });
  el.setStyle('height', height);

   var counter = new Element('div', {html: '1 / '+layers.length, 'class': 'slideshow_counter'});
   counter.inject(el, 'before');

   var prev = new Element('div', {html: '&nbsp;', 'class': 'slideshow_prev'});
   prev.inject(el, 'before');

   prev.addEvent('click', function() {
      layers[i].fade('out'); 
      i = (i == 0)? layers.length-1 : i-1; 
      layers[i].fade('in');
      current_slide = i+1;
      counter.set('html', current_slide+' / '+layers.length);
   });

   var next = new Element('div', {html: '&nbsp;', 'class': 'slideshow_next'});
   next.inject(el, 'after');

   next.addEvent('click', function() {
      layers[i].fade('out'); 
      i = (i == layers.length-1)? 0 : i+1; 
      layers[i].fade('in');
      current_slide = i+1;
      counter.set('html', current_slide+' / '+layers.length);
   });

}






function expander(el) {
   var more = new Element('div', {html: 'Show details', 'class': 'show'});



   more.inject(el, 'after');
   var slide = new Fx.Slide(el); 
   more.addEvent('click', function(e) {         
     slide.toggle();
     if(slide.open) {
more.set('text', 'Show details');
       more.set('class', 'show');
     }
     else {
more.set('text', 'Hide details');
       more.set('class', 'hide');
     }
   });

   slide.hide();
}
