/***********************************
* playlist.js
*
*  For adds in playlist functionality.
*
*  Dependency: flowplayer, mootools
*
*  Author: CrypticSwarm
*
*  Company: iClips.net
*
*  Options:
* 
* window.addEvent('domready', function() {
*   var abc=new PlayList('.plist', {plist_item: '.plist_item'});
* });
*
*
***********************************/


var PlayList = new Class({

  Implements: [Options, Events],

  options:{
    plist_item: '.plist_item'
  },

  initialize: function(elem, options){
    this.setOptions(options);
    this.elem = $$(elem)[0];
    this.indexLookup = [];
    this.plist = this.elem.getChildren(this.options.plist_item);
    this.start();
  },

  setupLookup: function() {
    this.indexLookup = [];
    this.f.getPlaylist().forEach(function(item, count) {
      if (!item.ovaAd) this.indexLookup.push(count)
    }, this)
  },
  
  start: function(){
    var self = this;
    if (!(this.f = $f())) return;

    self.setupLookup();
    this.plist.each(function(plist_item, pindex){
      plist_item.addEvent('click', function(e){
        e.preventDefault();
        if (self.f) self.f.play(self.indexLookup[pindex]);
      });
    });
    if (self.f) self.f.onStart(this.start_it.bind(this));
  },

  show: function() {
    this.elem.setStyle('display', 'block')
  },

  hide: function() {
    this.elem.setStyle('display', 'none')
  },

  start_it: function(a, clip){
    if (!clip || clip.index == null) return;
    if (clip.ovaAd) this.fireEvent('advertisement')
      , this.setupLookup()
    else this.fireEvent('clip')
    this.plist.each(function(el, ind){
      var func = (this.indexLookup[ind]===clip.index?'addClass':'removeClass');
      el[func]('nowplaying');
    }, this);
  }

});


