
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - ++resource++collective.flowplayer.js/init.js - */
/*global jQuery, flowplayer, window */
(function($) {
function initialVolume() {
    var volume = window.collective_flowplayer.initialVolumePercentage;
    if (volume !== null) {
        this.setVolume(volume);
    }
}
function loop() {
    return !window.collective_flowplayer.loop;
}
$(function() {
    $('.autoFlowPlayer').each(function() {
        // Take a copy of the global config
        var config = jQuery.extend(true, {}, window.collective_flowplayer.config);
        var $self = $(this);
        if ($self.is('.minimal')) {
            config.plugins.controls = null;
        }
        var audio = $self.is('.audio');
        if (audio && !$self.is('.minimal')) {
            config.plugins.controls.all = false;
            config.plugins.controls.play = true;
            config.plugins.controls.scrubber = true;
            config.plugins.controls.mute = true;
            config.plugins.controls.volume = true;
            config.plugins.controls.time = true;
            config.plugins.controls.autoHide = false;
        }
        if ($self.is('div')) {
            // comming from Kupu, there are relative urls
            config.clip.baseUrl = $('base').attr('href');
            config.clip.url = $self.find('a').attr('href');
            if (audio) {
              // force .mp3 extension
              config.clip.url = config.clip.url + '?e=.mp3';
            }
            // Ignore global autoplay settings
            if ($self.find('img').length === 0) {
                // no image. Don't autoplay, remove all elements inside the div to show player directly.
                config.clip.autoPlay = false;
                $self.empty();
            } else {
                // Clip is probably linked as image, so autoplay the clip after image is clicked
                config.clip.autoPlay = true;
            }
        }
        flowplayer(this, window.collective_flowplayer.params, config).onLoad(initialVolume).onBeforeFinish(loop);
        $('.flowPlayerMessage').remove();
    });
    $('.playListFlowPlayer').each(function() {
        // Take a copy of the global config
        var config = jQuery.extend(true, {}, window.collective_flowplayer.config);
        var $self = $(this);
        var audio = $self.is('.audio');
        if (audio) { config.plugins.controls.fullscreen = false; }
        if ($self.is('.minimal')) { config.plugins.controls = null; }
        if ($self.find('img').length > 0) {
            // has splash
            config.clip.autoPlay = true;
        }
        var portlet_parents = $self.parents('.portlet');
        var playlist_selector = 'div#flowPlaylist';
        var portlet;
        if (portlet_parents.length > 0) {
            portlet = true;
            // playlist has to be bound to unique item
            var playlist_selector_id = portlet_parents.parent().attr('id')+'-playlist';
            $self.parent().find('.flowPlaylist-portlet-marker').attr('id', playlist_selector_id);
            playlist_selector = '#'+playlist_selector_id;
            if (audio && !$self.is('.minimal')) {
                config.plugins.controls.all = false;
                config.plugins.controls.play = true;
                config.plugins.controls.scrubber = true;
                config.plugins.controls.mute = true;
                config.plugins.controls.volume = false;
            }
        } else {
            portlet = false;
        }
        if (!portlet) {
            $("#pl").scrollable({items:playlist_selector, size:4, clickable:false, prev:'a.prevPage', next:'a.nextPage'});
        }
        // manual = playlist is setup using HTML tags, not using playlist array in config
        flowplayer(this, window.collective_flowplayer.params, config).playlist(playlist_selector, {loop: true, manual: true}).onLoad(initialVolume).onBeforeFinish(loop);
        $self.show();
        $('.flowPlayerMessage').remove();

    });
});
}(jQuery));


/* - ++resource++flowplayer_toolbar_js/flowplayer.controls-3.0.2-fixed.js - */
// http://www.fe.camcom.it/portal_javascripts/++resource++flowplayer_toolbar_js/flowplayer.controls-3.0.2-fixed.js?original=1
$f.addPlugin("controls", function(wrap,options){
function fixE(e){if(typeof e=='undefined'){e=window.event}
if(typeof e.layerX=='undefined'){e.layerX=e.offsetX}
if(typeof e.layerY=='undefined'){e.layerY=e.offsetY}
return e}
function w(e){return e.clientWidth}
function offset(e){return e.offsetLeft}
function Draggable(o,min,max,offset){var dragging=false;
function foo(){}
o.onDragStart=o.onDragStart||foo;o.onDragEnd=o.onDragEnd||foo;o.onDrag=o.onDrag||foo;
function move(x){if(x>max){return false}
if(x<min){return false}
o.style.left=x+"px";return true}
function end(){document.onmousemove=null;document.onmouseup=null;o.onDragEnd(parseInt(o.style.left,10));dragging=false}
function drag(e){e=fixE(e);var x=e.clientX-offset;if(move(x)){dragging=true;o.onDrag(x)}
return false}
o.onmousedown=function(e){e=fixE(e);o.onDragStart(parseInt(o.style.left,10));document.onmousemove=drag;document.onmouseup=end;return false};this.dragTo=function(x){if(move(x)){o.onDragEnd(x)}};this.setMax=function(val){max=val};this.isDragging=function(){return dragging};return this}
function extend(to,from){if(from){for(key in from){if(key){to[key]=from[key]}}}}
function byClass(name){var els=wrap.getElementsByTagName("*");var re=new RegExp("(^|\\s)"+name+"(\\s|$)");for(var i=0;i<els.length;i++){if(re.test(els[i].className)){return els[i]}}}
function pad(val){val=parseInt(val,10);return val>=10?val:"0"+val}
function toTime(sec){var h=Math.floor(sec/3600);var min=Math.floor(sec/60);sec=sec-(min * 60);if(h>=1){min-=h * 60;return pad(h)+":"+pad(min)+":"+pad(sec)}
return pad(min)+":"+pad(sec)}
function getTime(time,duration){return "<span>"+toTime(time)+"</span> <strong>"+toTime(duration)+"</strong>"}
var self=this;var opts={playHeadClass:'playhead',trackClass:'track',playClass:'play',pauseClass:'pause',bufferClass:'buffer',progressClass:'progress',sliderClass:'slider',timeClass:'time',muteClass:'mute',unmuteClass:'unmute',duration:0,template:'<a class="play" href="javascript:;" title="play" role="button">play pause</a>'+'<div class="track">'+'<div class="buffer"></div>'+'<div class="progress"></div>'+'<div class="playhead"><button role="slider" class="slider">&nbsp;</button></div>'+'</div>'+'<div class="time"></div>'+'<a class="mute" href="javascript:;" title="mute" role="button">mute unmute</a>'};extend(opts,options);if(typeof wrap=='string'){wrap=document.getElementById(wrap)}
if(!wrap){return}
if(!wrap.innerHTML.replace(/\s/g,'')){wrap.innerHTML=opts.template}
var ball=byClass(opts.playHeadClass);var bufferBar=byClass(opts.bufferClass);var progressBar=byClass(opts.progressClass);var track=byClass(opts.trackClass);var time=byClass(opts.timeClass);var mute=byClass(opts.muteClass);var slider=byClass(opts.sliderClass);time.innerHTML=getTime(0,opts.duration);var trackWidth=w(track);var ballWidth=w(ball);var head=new Draggable(ball,0,0,offset(wrap)+offset(track)+(ballWidth/2));track.onclick=function(e){e=fixE(e);if(e.target==ball){return false}
head.dragTo(e.layerX-ballWidth/2)};slider.onkeydown=function(event){var event=event||window.event;var t=self.getTime();var totalDuration=self.getClip().fullDuration;switch(event.keyCode){case 37:t-=5;break;case 39:t+=5;break;case 33:t-=60;break;case 34:t+=60;break;case 36:t=0;break;case 35:t=totalDuration-1;break};if(t<0) t=0;var newPos=t*trackWidth/totalDuration;var to=parseInt(newPos/trackWidth * 100,10)+"%";progressBar.style.width=Math.floor(newPos)+"px";ball.style.left=(Math.floor(newPos)-ballWidth/2)+"px";self.seek(to)}
var play=byClass(opts.playClass);play.onclick=function(){if(self.isLoaded()){self.toggle()} else{self.play()}};mute.onclick=function(){if(self.getStatus().muted){self.unmute()} else{self.mute()}};var timer=null;
function getMax(len,total){return parseInt(Math.min(len/ total * trackWidth, trackWidth - ballWidth / 2),10)}
self.onStart(function(clip){var duration=clip.duration||0;clearInterval(timer);timer=setInterval(function(){var status=self.getStatus();if(status.time){time.innerHTML=getTime(status.time,clip.duration)}
if(status.time===undefined){clearInterval(timer);return}
var x=getMax(status.bufferEnd,duration);bufferBar.style.width=x+"px";head.setMax(x);if(!self.isPaused()&&!head.isDragging()){x=getMax(status.time,duration);progressBar.style.width=x+"px";ball.style.left=(x-ballWidth/2)+"px"}},500)});self.onBegin(function(){play.className=opts.pauseClass;play.title=opts.pauseClass});self.onPause(function(){play.className=opts.playClass;play.title=opts.playClass});self.onResume(function(){play.className=opts.pauseClass;play.title=opts.pauseClass});self.onMute(function(){mute.className=opts.unmuteClass;mute.title=opts.unmuteClass});self.onUnmute(function(){mute.className=opts.muteClass;mute.title=opts.muteClass});self.onFinish(function(clip){clearInterval(timer);play.className=opts.playClass;play.title=opts.playClass});self.onUnload(function(){time.innerHTML=getTime(0,opts.duration)});ball.onDragEnd=function(x){var to=parseInt(x/trackWidth * 100,10)+"%";progressBar.style.width=x+"px";if(self.isLoaded()){self.seek(to)}};ball.onDrag=function(x){progressBar.style.width=x+"px"};return self});

/* - ++resource++flowplayer_toolbar_js/flowplayer.accessible-controls.js - */
// http://www.fe.camcom.it/portal_javascripts/++resource++flowplayer_toolbar_js/flowplayer.accessible-controls.js?original=1
jQuery.flowplayer_toolbar={show_flash_controlsbar:false,slider_guide:{en:{intro:'How to control the slider',left_arrow_label:'Left arrow',left_arrow_help:'backward 5 seconds',right_arrow_label:'Right arrow',right_arrow_help:'forward 5 seconds',page_up_label:'Page up',page_up_help:'backward 1 minute',page_down_label:'Page down',page_down_help:'forward 1 minute',home_label:'Home key',home_help:'go to beginning of clip',end_label:'End key',end_help:'go to end of clip'},it:{intro:'Come controllare l\'avanzamento',left_arrow_label:'Freccia sinistra',left_arrow_help:'indietro 5 secondi',right_arrow_label:'Freccia destra',right_arrow_help:'avanti 5 secondi',page_up_label:'Pagina su',page_up_help:'indietro 1 minuto',page_down_label:'Pagina giù',page_down_help:'Avanti 1 minuto',home_label:'Tasto HOME',home_help:'vai all\'inizio del filmato',end_label:'Tasto FINE',end_help:'vai alla fine del filmato'},da:{intro:'Sådan spoler du',left_arrow_label:'venstre pil',left_arrow_help:'spol 5 sekunder tilbage',right_arrow_label:'højre pil',right_arrow_help:'spol 5 sekunder frem',page_up_label:'Side op',page_up_help:'spol 1 minut tilbage',page_down_label:'Side ned',page_down_help:'spol 1 minut frem',home_label:'Tasten Home',home_help:'gå til klippets start',end_label:'Tasten End',end_help:'gå til klippets slutning'}}};jq(document).ready(function(event){
function pad(val){val=parseInt(val,10);return val>=10?val:"0"+val}
var toTime=function(sec){var h=Math.floor(sec/3600);var min=Math.floor(sec/60);sec=sec-(min * 60);if(h>=1){min-=h * 60;return pad(h)+":"+pad(min)+":"+pad(sec)}
return pad(min)+":"+pad(sec)};var lang=jq("html").attr('lang')||'en';var help_info=jq.flowplayer_toolbar.slider_guide[lang]||jq.flowplayer_toolbar.slider_guide['en'];var help=jq('<div></div>').text(help_info.intro);var help_instr=jq('<dl></dl>').append('<dt>'+help_info.left_arrow_label+'</dt>\n').append('<dd>'+help_info.left_arrow_help+'</dd>\n').append('<dt>'+help_info.right_arrow_label+'</dt>\n').append('<dd>'+help_info.right_arrow_help+'</dd>\n').append('<dt>'+help_info.page_up_label+'</dt>\n').append('<dd>'+help_info.page_up_help+'</dd>\n').append('<dt>'+help_info.page_down_label+'</dt>\n').append('<dd>'+help_info.page_down_help+'</dd>\n').append('<dt>'+help_info.home_label+'</dt>\n').append('<dd>'+help_info.home_help+'</dd>\n').append('<dt>'+help_info.end_label+'</dt>\n').append('<dd>'+help_info.end_help+'</dd>\n');help.append(help_instr);$f("*").each(function(index){var player_index=index;this.onLoad(function(event){if(!this.getPlugin("controls")){return}
var intervalID=null;var hulu_id=null;this.getCommonClip().onBegin(function(event){var player=this;intervalID=setInterval(function(){var playingTime=Math.floor(player.getTime());var fullTime=Math.floor(player.getClip().fullDuration);jq('#'+hulu_id+' div[role=progressbar]').attr('aria-valuenow',playingTime).attr('aria-valuemin',0).attr('aria-valuemax',fullTime).attr('aria-valuetext',Math.round(playingTime * 100/fullTime)+"%");jq('#'+hulu_id+' .slider').attr('aria-valuenow',playingTime).attr('aria-valuemin',0).attr('aria-valuemax',fullTime).attr('aria-valuetext',toTime(playingTime))},500)}).onFinish(function(event){clearInterval(intervalID);jq('#'+hulu_id+' div[role=progressbar]').removeAttr('aria-valuenow').removeAttr('aria-valuemin').removeAttr('aria-valuemax').removeAttr('aria-valuetext');jq('#'+hulu_id+' .slider').removeAttr('aria-valuenow').removeAttr('aria-valuemin').removeAttr('aria-valuemax').removeAttr('aria-valuetext')});var p=jq(this.getParent());if(!jq.flowplayer_toolbar.show_flash_controlsbar){var flashControls=this.getPlugin("controls");flashControls.hide();if(p.hasClass('audio')){p.css('height','0px')}}
var p_width=p.width();var time_width=(p_width<400?99:129);hulu_id="hulu-"+player_index;p.after('<div id="'+hulu_id+'" style="width:'+p_width+'px" class="hulu">\n'+'<a class="play" href="javascript:;" role="button">Play</a>\n'+'<div class="track" role="progressbar" style="width:'+(p_width-46-46-time_width)+'px">\n'+'    <div class="buffer"></div>\n'+'    <div class="progress"></div>\n'+'    <div class="playhead"><button role="slider" class="slider">&nbsp;</button></div>\n'+'</div>\n'+'<div class="time" style="width:'+time_width+'px"></div>\n'+'<a class="mute" href="javascript:;" role="button">Mute</a>\n'+'</div>\n');this.controls(hulu_id);jq("#"+hulu_id+" a.mute").css('left',p_width-46);jq("#"+hulu_id+" div.time").css('left',p_width-46-time_width);var slider=jq(".slider",jq('#'+hulu_id));slider.append(help.clone().addClass("hiddenStructure")).focus(function(){slider.parent().addClass('focus').find("div").addClass("sliderHelp")}).blur(function(){slider.parent().removeClass('focus').find("div").removeClass("sliderHelp")});if(p.hasClass('playListFlowPlayer')){p.removeClass('playListFlowPlayer').addClass('playListFlowPlayerWithControls');jq("#"+hulu_id).addClass("forPlayList");p.nextAll('.playlist_wrap').addClass('playlistSpace')}})})});

