/* ======================== */
/* = Carousel voor DNB.nl = */
/* ======================== */

/* ======================= */
/* = Versie : 1.0rc2     = */
/* = Datum  : 2010-11-22 = */
/* ======================= */

/*
  Deze carousel is alleen bedoeld voor de homepage en dient daarom niet
  op alle onderliggende pagina's geladen te worden.
  
  Requires:
    mootools.js (see general.js for specs)
*/  

/*
  Based on: BarackSlideshow.js
  Lightweight slideshow script, based on Fx.MorphList
  License: MIT-style license.
  Authors: Guillermo Rauch
  Modified by: Flurin Egger
*/

DNB.Carousel=(function(){var b=new Class({Implements:[Events,Options],options:{auto:false,autostart:false,autointerval:2000,transition:"fade",tween:{duration:700},bg:{"class":"background",html:'<div class="inner"></div>',morph:{link:"cancel"}}},initialize:function(g,f,c,e){var d=this;
this.setOptions(e);this.menu=$(g);this.menuItems=this.menu.getChildren().addEvents({mouseenter:function(h){d.options.auto=false;
d.onClick(h,this)},mouseleave:function(h){d.options.auto=true;d.auto()}});this.slides=$(f);
this.slideItems=this.slides.getChildren().addEvents({mouseenter:function(h){d.options.auto=false;
$clear(d.autotimer)},mouseleave:function(h){d.options.auto=true;d.auto()}}).fade("hide");
$(c).fade("in");this.bg=new Element("li",this.options.bg).inject(this.menu).fade("hide");
this.setCurrent(this.menu.getElement(".current"));new Asset.images(this.slides.getElements("img").map(function(h){return h.setStyle("display","none").get("src")
}),{onComplete:function(){this.loaded=true;$(c).fade("out");if(this.current){this.show(this.menuItems.indexOf(this.current))
}else{if(this.options.auto&&this.options.autostart){this.progress(true)}}}.bind(this)});
if($type(this.options.transition)!="function"){this.options.transition=$lambda(this.options.transition)
}},setCurrent:function(e,d){if(e&&!this.current){var f=e.getCoordinates(this.menu);
delete f.right;delete f.bottom;delete f.width;this.bg.set("styles",f);(d)?this.bg.fade("in"):this.bg.fade("show");
(d)?e.fade("in"):e.fade("show")}if(this.current){this.current.removeClass("current")
}if(e){this.current=e.addClass("current")}return this},auto:function(){if(!this.options.auto){return false
}$clear(this.autotimer);this.autotimer=this.progress.delay(this.options.autointerval,this)
},onClick:function(d,c){this.setCurrent(c,true).fireEvent("click",[d,c]);d.stop();
this.show(this.menuItems.indexOf(c));$clear(this.autotimer)},show:function(f,e){if(!this.loaded){return
}var c=this.slideItems[f];if(c==this.curSlide){return}c.set("tween",this.options.tween).dispose().inject(this.curSlide||this.slides.getFirst(),this.curSlide?"after":"before").fade("hide");
c.getElement("img").setStyle("display","block");var h=this.options.transition.run(null,this).split("-");
switch(h[0]){case"slide":var d=$pick(h[1],"left");var i=(d=="left"||d=="right")?"left":"top";
if(e){c.fade("in")}else{c.fade("show").setStyle(i,c["offset"+(i=="left"?"Width":"Height")]*((d=="bottom"||d=="right")?1:-1)).tween(i,0)
}break;case"fade":c.fade("in");break}this.fireEvent("beforeShow",[c,this.menuItems[f]]);
var g=c.get("tween");g.chain(function(){this.auto();this.fireEvent("show",[c,this.menuItems[f]])
}.bind(this));this.curSlide=c;this.setCurrent(this.menuItems[f]);this.morphTo(this.menuItems[f]);
return this},progress:function(c){var d=this.slideItems.indexOf(this.curSlide);this.show((this.curSlide&&(d+1<this.slideItems.length))?d+1:0,c)
},morphTo:function(e){if(e){var d=e.getCoordinates(this.menu);delete d.right;delete d.bottom;
delete d.width;this.bg.morph(d);this.fireEvent("morph",e)}return this}});var a=new Class({Extends:b,initialize:function(c){var c=$(c);
this.parent(c.getElement(".menu ul"),c.getElement(".pictures"),c.getElement(".loading"),{auto:true,autostart:true,autointerval:4000,transition:"slide-right"})
}});return a})();
