/*
Script: BarackSlideshow.js
Lightweight slideshow script, based on Fx.MorphList

License:
MIT-style license.

Authors:
Guillermo Rauch
*/



var BarackSlideshow = new Class({
  Extends: Fx.MorphList,

  options: {
    // onShow: $empty,
    auto: false,
    autostart: false,
    autointerval: 2000,
    transition: 'fade',
    tween: { duration: 700 }
  },

  initialize: function (menu, images, loader, options) {
    this.parent(menu, options);
    this.images = $(images);
    if (BrowserDetect.isIE8)
      this.imagesitems = this.images.getChildren().setStyle('display', 'none');
    else
      this.imagesitems = this.images.getChildren().fade('hide');

    $(loader).fade('in');

    new Asset.images(this.images.getElements('img').map(function (el) { return el/*.setStyle('display', 'none')*/.get('src'); }), { onComplete: function () {
      this.loaded = true;
      $(loader).fade('out');
      if (this.current) this.show(this.items.indexOf(this.current));
      else if (this.options.auto && this.options.autostart) this.progress();
    } .bind(this)
    });

    if ($type(this.options.transition) != 'function') this.options.transition = $lambda(this.options.transition);

  },

  auto: function () {
    if (!this.options.auto) return false;
    $clear(this.autotimer);
    this.autotimer = this.progress.delay(this.options.autointerval, this);
  },

  onClick: function (event, item) {
    if ($(event.target).hasClass("image-link")) {
      this.parent(event, item);
      event.stop();
      this.show(this.items.indexOf(item));
      $clear(this.autotimer);
    }
  },

  show: function (index) {

    if (!this.loaded) return;
    var image = this.imagesitems[index];
    if (image == this.curimage) return;
    if (image.getParent().getElements("li").length > 1) {
      if (BrowserDetect.isIE8)
        image.set('tween', this.options.tween).dispose().inject(this.curimage || this.images.getFirst(), this.curimage ? 'after' : 'before').setStyle('display', 'none');
      else
        image.set('tween', this.options.tween).dispose().inject(this.curimage || this.images.getFirst(), this.curimage ? 'after' : 'before').fade('hide');
    }

    if (this.curimage) {
      if (BrowserDetect.isIE8)
        this.curimage.setStyle('display','none');
      else
        this.curimage.fade('hide');
    }

    //image.getElement('img').setStyle('display', 'block');

    var trans = this.options.transition.run(null, this).split('-');
    switch (trans[0]) {
      case 'slide':
        var dir = $pick(trans[1], 'left');
        var prop = (dir == 'left' || dir == 'right') ? 'left' : 'top';
        image.fade('show').setStyle(prop, image['offset' + (prop == 'left' ? 'Width' : 'Height')] * ((dir == 'bottom' || dir == 'right') ? 1 : -1)).tween(prop, 0);
        break;
      case 'fade':
        if (BrowserDetect.isIE8)
          image.setStyle('display', 'block');
        else
          image.fade('in');
        break;

    }

    image.get('tween').chain(function () {
      this.auto();
      this.fireEvent('show', image);
    } .bind(this));

    this.curimage = image;
    this.setCurrent(this.items[index]);
    this.morphTo(this.items[index]);
    return this;
  },

  progress: function () {
    var curindex = this.imagesitems.indexOf(this.curimage);
    this.show((this.curimage && (curindex + 1 < this.imagesitems.length)) ? curindex + 1 : 0);
  }
});

//ja dit heb ik van ppk gepakt. Nou en. Mootools werkt niet. :p
var BrowserDetect = {
  init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
    this.isIE8 = BrowserDetect.browser + BrowserDetect.version == "Explorer8";
  },
  searchString: function (data) {
    for (var i = 0; i < data.length; i++) {
      var dataString = data[i].string;
      var dataProp = data[i].prop;
      this.versionSearchString = data[i].versionSearch || data[i].identity;
      if (dataString) {
        if (dataString.indexOf(data[i].subString) != -1)
          return data[i].identity;
      }
      else if (dataProp)
        return data[i].identity;
    }
  },
  searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) return;
    return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
  },
  dataBrowser: [
		{
		  string: navigator.userAgent,
		  subString: "Chrome",
		  identity: "Chrome"
		},
		{ string: navigator.userAgent,
		  subString: "OmniWeb",
		  versionSearch: "OmniWeb/",
		  identity: "OmniWeb"
		},
		{
		  string: navigator.vendor,
		  subString: "Apple",
		  identity: "Safari",
		  versionSearch: "Version"
		},
		{
		  prop: window.opera,
		  identity: "Opera"
		},
		{
		  string: navigator.vendor,
		  subString: "iCab",
		  identity: "iCab"
		},
		{
		  string: navigator.vendor,
		  subString: "KDE",
		  identity: "Konqueror"
		},
		{
		  string: navigator.userAgent,
		  subString: "Firefox",
		  identity: "Firefox"
		},
		{
		  string: navigator.vendor,
		  subString: "Camino",
		  identity: "Camino"
		},
		{		// for newer Netscapes (6+)
		  string: navigator.userAgent,
		  subString: "Netscape",
		  identity: "Netscape"
		},
		{
		  string: navigator.userAgent,
		  subString: "MSIE",
		  identity: "Explorer",
		  versionSearch: "MSIE"
		},
		{
		  string: navigator.userAgent,
		  subString: "Gecko",
		  identity: "Mozilla",
		  versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
		  string: navigator.userAgent,
		  subString: "Mozilla",
		  identity: "Netscape",
		  versionSearch: "Mozilla"
		}
	],
  dataOS: [
		{
		  string: navigator.platform,
		  subString: "Win",
		  identity: "Windows"
		},
		{
		  string: navigator.platform,
		  subString: "Mac",
		  identity: "Mac"
		},
		{
		  string: navigator.userAgent,
		  subString: "iPhone",
		  identity: "iPhone/iPod"
		},
		{
		  string: navigator.platform,
		  subString: "Linux",
		  identity: "Linux"
		}
	]

};

BrowserDetect.init();
