﻿/**
* flowplayer.playlist.js 3.0.1. Flowplayer JavaScript plugin.
* 
* This file is part of Flowplayer, http://flowplayer.org
*
* Author: Tero Piirainen, <support@flowplayer.org>
* Copyright (c) 2008 Flowplayer Ltd
*
* Dual licensed under MIT and GPL 2+ licenses
* SEE: http://www.opensource.org/licenses
* 
* Version: 3.0.1 - Mon Dec 15 2008 14:01:38 GMT-0000 (GMT+00:00)
*/
(function($) { $f.addPlugin("playlist", function(wrap, options) { var self = this; var opts = { playingClass: 'playing', pausedClass: 'paused', progressClass: 'progress', template: '<a href="${url}">${title}</a>', loop: false, playOnClick: true }; $.extend(opts, options); wrap = $(wrap); var manual = self.getPlaylist().length < 2; var els = null; if (!manual) { var template = wrap.is(":empty") ? opts.template : wrap.html(); wrap.empty(); $.each(self.getPlaylist(), function() { var clip = this; var el = template; $.each(clip, function(key, val) { el = el.replace("$\{" + key + "\}", val).replace("$%7B" + key + "%7D", val); }); el = $(el); el.click(function() { return play(el, clip.index); }); wrap.append(el); }); els = wrap.children(); } else { els = wrap.children(); if (els.eq(0).hasClass("__scrollable")) { els = els.children(); } els.each(function() { var el = $(this); el.click(function() { return play(el, el.attr("href")); }); }); var clip = self.getClip(0); if (!clip.url && opts.playOnClick) { clip.update({ url: els.eq(0).attr("href") }); } } function play(el, clip) { if (el.hasClass(opts.playingClass) || el.hasClass(opts.pausedClass)) { self.toggle(); } else { el.addClass(opts.progressClass); self.play(clip); } return false; } function clearCSS() { els.removeClass(opts.playingClass); els.removeClass(opts.pausedClass); els.removeClass(opts.progressClass); } function getEl(clip) { return (manual) ? els.filter("[@href=" + clip.url + "]") : els.eq(clip.index); } self.onBegin(function(clip) { clearCSS(); getEl(clip).addClass(opts.playingClass); }); self.onPause(function(clip) { getEl(clip).removeClass(opts.playingClass).addClass(opts.pausedClass); }); self.onResume(function(clip) { getEl(clip).removeClass(opts.pausedClass).addClass(opts.playingClass); }); if (!opts.loop && !manual) { self.onBeforeFinish(function(clip) { if (clip.index < els.length - 1) { return false; } }); } if (manual && opts.loop) { self.onBeforeFinish(function(clip) { var el = getEl(clip); if (el.next().length) { el.next().click(); } else { els.eq(0).click(); } return false; }); } self.onUnload(function() { clearCSS(); }); return self; }); })(jQuery);
