(function(b){$f.addPlugin("playlist",function(z,a){var p=this;var B={playingClass:"playing",pausedClass:"paused",progressClass:"progress",template:'<a href="${url}">${title}</a>',loop:false,playOnClick:true,manual:false};b.extend(B,a);z=b(z);var t=p.getPlaylist().length<=1||B.manual;var s=null;function y(c){var d=q;b.each(c,function(f,e){if(!b.isFunction(e)){d=d.replace("${"+f+"}",e).replace("$%7B"+f+"%7D",e)}});return d}function u(){s=z.children().unbind("click.playlist").bind("click.playlist",function(){return v(b(this),s.index(this))})}function A(){z.empty();b.each(p.getPlaylist(),function(){z.append(y(this))});u()}function v(d,c){if(d.hasClass(B.playingClass)||d.hasClass(B.pausedClass)){p.toggle()}else{d.addClass(B.progressClass);p.play(c)}return false}function r(){if(t){s=z.children()}s.removeClass(B.playingClass);s.removeClass(B.pausedClass);s.removeClass(B.progressClass)}function x(c){return(t)?s.filter("[href="+c.originalUrl+"]"):s.eq(c.index)}if(!t){var q=z.is(":empty")?B.template:z.html();A()}else{s=z.children();if(b.isFunction(s.live)){b(z.selector+"> *").live("click",function(){var c=b(this);return v(c,c.attr("href"))})}else{s.click(function(){var c=b(this);return v(c,c.attr("href"))})}var w=p.getClip(0);if(!w.url&&B.playOnClick){w.update({url:s.eq(0).attr("href")})}}p.onBegin(function(c){r();x(c).addClass(B.playingClass)});p.onPause(function(c){x(c).removeClass(B.playingClass).addClass(B.pausedClass)});p.onResume(function(c){x(c).removeClass(B.pausedClass).addClass(B.playingClass)});if(!B.loop&&!t){p.onBeforeFinish(function(c){if(!c.isInStream&&c.index<s.length-1){return false}})}if(t&&B.loop){p.onBeforeFinish(function(c){var d=x(c);if(d.next().length){d.next().click()}else{s.eq(0).click()}return false})}p.onUnload(function(){r()});if(!t){p.onPlaylistReplace(function(){A()})}p.onClipAdd(function(c,d){s.eq(d).before(y(c));u()});return p})})(jQuery);