
/* 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++snowjamboree.theme.javascript/snow.js - */
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";
    },
    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();

jQuery(function($) {
    
    var os = BrowserDetect.OS.toLowerCase(), 
        browser = BrowserDetect.browser.toLowerCase(), 
        version = BrowserDetect.version;

    $("body").addClass(os + " " + browser + " " + browser + version);

    var reload_fb = function(data) {
        // reload facebook FBML
        var div = $('#viewlet-nouvelles .viewer');
        FB.XFBML.parse(div[0]);
    };
    LOCK_NOUVELLE = false;

    /* navigation next/prev des nouvelles */

    var clickNav = function(action, index) {
        if (LOCK_NOUVELLE) {
            // door is locked. try another key.
            return;
        }

        // metre a jour l'index global de la nouvelle courante
        NOUVELLES_INDEX = index;
        if (NOUVELLES_INDEX > NOUVELLES.length-1) NOUVELLES_INDEX = 0;
        if (NOUVELLES_INDEX < 0) NOUVELLES_INDEX = NOUVELLES.length-1;

        var $next_main = $('#viewlet-nouvelles .viewer .inner2 > div > .main .main-' + action);
        var $cur_main = $('#viewlet-nouvelles .viewer .inner2 > div > .main .main-current');
        var $text = $('#viewlet-nouvelles .viewer .inner2 > div > .text .text-wrapper');
        var $nav_items = $('#viewlet-nouvelles .viewer .nav a.vignette');

        // transition du texte
        $text.fadeOut(function() {
            $text.html(NOUVELLES[NOUVELLES_INDEX]['html_text']).fadeIn();
        });
        // transition de l'image
        // mouvement css (animate) à faire selon la direction
        var destination = {'prev' : [{'left' : '0px'}, {'left' : '656px'}],
                           'next' : [{'right' : '0px'}, {'left' : '-656px'}]
        }
        if (action == 'vignette') {
            // click vignette, effet fade
            $cur_main.fadeOut(function() {
                $cur_main.html(NOUVELLES[NOUVELLES_INDEX]['html_image']).fadeIn();
                vimeoHandler();
                reload_fb();
            });
        } else {
            // click next/previous, effet slide

            // vérouiller pour empêcher deux transitions en même temps
            LOCK_NOUVELLE = true;

            $next_main.html(NOUVELLES[NOUVELLES_INDEX]['html_image']);
            vimeoHandler();
            $next_main.animate(destination[action][0]);
            $cur_main.animate(destination[action][1], function() {
                // on supprime les anciens éléments next/prev
                $('#viewlet-nouvelles .viewer .inner2 > div > .main > div').not('.main-' + action).
                    remove();
                // et le next devient le nouvel élément courant
                $next_main.removeClass('main-next main-prev').addClass('main-current');
                // on remet des nouveaux éléments next/prev tous neufs
                $('#viewlet-nouvelles .viewer .inner2 > div > .main > div.main-current').
                    before('<div class="main-prev"></div>').
                    after('<div class="main-next"></div>');
                reload_fb();

                // retirer la lock
                LOCK_NOUVELLE = false;
            });
        }

        // mettre à jour la navigation
        $nav_items.removeClass('active');
        $($nav_items[NOUVELLES_INDEX]).addClass('active');
    };
    $('#viewlet-nouvelles').delegate('.nav a', 'click', function(e) {
        e.preventDefault();

        // déterminer l'action et l'index à partir de l'événement
        var $link = $(this);
        var index = 0;
        var action = '';
        if ($link.hasClass('next')) {
            action = 'next';
            index = NOUVELLES_INDEX + 1;
        } else if ($link.hasClass('prev')) {
            action = 'prev';
            index = NOUVELLES_INDEX - 1;
        } else {
            // nav par vignette
            action = 'vignette';
            index = $link.attr('data-index');
        }

        // on donne le travail à la fonction clickNav
        clickNav(action, index);

    /* navigation nouvelles */
    }).delegate('.viewer .main', 'mouseenter', function(e) {
        $('.nav', this).stop().animate({'height' : '27px'}, function() {
            $(this).addClass('nav-open');
        });
    }).delegate('.viewer .main', 'mouseleave', function(e) {
        $('.nav', this).stop().animate({'height' : '7px'}, function() {
            $(this).removeClass('nav-open');
        });
    }).click(function() {
        // stop the timer as soon as a click is made
        resetSlideTimer();
    });

    var resetSlideTimer = function() {
        clearInterval(slideTimer);
    }
    /* ajouter le timer pour le slide automatique */
    var slideTimer = setInterval(function() {
            clickNav('next', NOUVELLES_INDEX + 1);
        }, 
        6000
    );

    // événement play sur le lecteur vimeo : arrêter le slideshow
    var vimeoHandler = function() {
        $('#vimeo_player').load(function() {
            var player = document.getElementById('vimeo_player');
            var ready = function(player_id) {
                var p = $f(player_id);
                p.addEvent('play', function() {
                    resetSlideTimer();
                });
            };
            $f(player).addEvent('ready', ready);
        });
    };

    /* socialisons */
    var $socializer_lis = $("#socializer ul.nav li");
    $("#socializer ul.nav li a").click(
        function(e){
            if ( $(this).parent().attr("data-social") == "rss" ) {
                return true;
            }
            e.preventDefault();

            $socializer_lis.removeClass("active");
            $("#socializer .container .social").hide();
            
            var $this = $(this);
            var $parent = $($this.parent());
            $parent.addClass("active");
            $("#socializer .container ." + $parent.attr("data-social")).show();
        }
    );
    $("#socializer ul.nav li.facebook a").click();

    /* colorbox */
    $('.communiques ul li a').each(function(i) {
        var $e = $(this);
        var href = $e.attr('href') + '/@@communique_ajax';
        $e.colorbox({'width' : '800px', 'height' : '600px', 'href' : href});
    });

    $("body.template-fg_base_view_p3 .pfg-form .field .fieldErrorBox").each(
        function(){
            if($(this).html().trim().length == 0){
                $(this).hide();
            }
        }
    );
    
    /* module de compétitions à l'accueil */
    $all_lis = $("#module-competitions ul li");
    $all_lis.filter(".first-a").addClass("active");

    $("#module-competitions ul li").click(function(e){
        var $li = $(this);
        
        if ($li.hasClass("active")) {
            href = $("a", $li).attr("href");
            window.location.href = href;
        }else{
            $active = $all_lis.filter(".active");
            $active.animate(
                {width: '89'}
                , 200
                , function(){
                    $active.removeClass("active").removeClass("first-a");
            });
            $li.animate(
                {width: '320'}
                , 200
                , function(){
                    $li.addClass("active");
                }
            );
            
            e.stopPropagation();
            e.preventDefault();
            return false;
        }
    });

    /* Horaires et résultats. copier de accueil.pt */
    $("#horaire-resultats ul.nav a.menu").click(
        function(e){
            e.preventDefault();
            $("#horaire-resultats ul li").removeClass("active");
            $parent = $($(this).parent());
            $parent.addClass("active");

            $parent = $(this).parent();

            if($parent.attr("id") == "hor"){
                $("#horaire-resultats .container.horaire").show();
                $("#horaire-resultats .container.resultats").hide();
            }else{
                $("#horaire-resultats .container.horaire").hide();
                $("#horaire-resultats .container.resultats").show();
            }
        }
    );


    $("#horaire-resultats ul li select").change(
        function(e){
            var val = $(this).val();

            if ( !$("#horaire-resultats .container.horaire").is("visible") ) {
                $("#horaire-resultats ul.nav li#hor a.menu").trigger("click");
            };

            $("#horaire-resultats .container.horaire ul:visible").fadeOut(
                function(){
                    $("#horaire-resultats .container.horaire ul." + val).fadeIn();    
                }
            );
        }
    );
    
    var first = $("#horaire-resultats ul li select option:selected");    
    $("#horaire-resultats .container.horaire ul." + first.attr("value")).show();    
});


/* - ++resource++snowjamboree.theme.javascript/froogaloop.js - */
// http://www.snowjamboree.com/portal_javascripts/++resource++snowjamboree.theme.javascript/froogaloop.js?original=1
var Froogaloop=(function(){
function Froogaloop(iframe){return new Froogaloop.fn.init(iframe)}
var eventCallbacks={},hasWindowEvent=false,isReady=false,slice=Array.prototype.slice,playerDomain='';Froogaloop.fn=Froogaloop.prototype={element:null,init: function(iframe){if(typeof iframe==="string"){iframe=document.getElementById(iframe)}
this.element=iframe;playerDomain=getDomainFromUrl(this.element.getAttribute('src'));return this},api: function(method,valueOrCallback){if(!this.element||!method){return false}
var self=this,element=self.element,target_id=element.id!==''?element.id:null,params=!isFunction(valueOrCallback)?valueOrCallback:null,callback=isFunction(valueOrCallback)?valueOrCallback:null;if(callback){storeCallback(method,callback,target_id)}
postMessage(method,params,element);return self},addEvent: function(eventName,callback){if(!this.element){return false}
var self=this,element=self.element,target_id=element.id!==''?element.id:null;storeCallback(eventName,callback,target_id);if(eventName!='ready'){postMessage('addEventListener',eventName,element)}
else if(eventName=='ready'&&isReady){callback.call(null,target_id)}
return self},removeEvent: function(eventName){if(!this.element){return false}
var self=this,element=self.element,target_id=element.id!==''?element.id:null,removed=removeCallback(eventName,target_id);if(eventName!='ready'&&removed){postMessage('removeEventListener',eventName,element)}}};
function postMessage(method,params,target){if(!target.contentWindow.postMessage){return false}
var url=target.getAttribute('src').split('?')[0],data=JSON.stringify({method:method,value:params});target.contentWindow.postMessage(data,url)}
function onMessageReceived(event){var data,method;try{data=JSON.parse(event.data);method=data.event||data.method}
catch(e){}
if(method=='ready'&&!isReady){isReady=true}
if(event.origin!=playerDomain){return false}
var value=data.value,eventData=data.data,target_id=target_id===''?null:data.player_id,callback=getCallback(method,target_id),params=[];if(!callback){return false}
if(value!==undefined){params.push(value)}
if(eventData){params.push(eventData)}
if(target_id){params.push(target_id)}
return params.length>0?callback.apply(null,params):callback.call()}
function storeCallback(eventName,callback,target_id){if(target_id){if(!eventCallbacks[target_id]){eventCallbacks[target_id]={}}
eventCallbacks[target_id][eventName]=callback}
else{eventCallbacks[eventName]=callback}}
function getCallback(eventName,target_id){if(target_id){return eventCallbacks[target_id][eventName]}
else{return eventCallbacks[eventName]}}
function removeCallback(eventName,target_id){if(target_id&&eventCallbacks[target_id]){if(!eventCallbacks[target_id][eventName]){return false}
eventCallbacks[target_id][eventName]=null}
else{if(!eventCallbacks[eventName]){return false}
eventCallbacks[eventName]=null}
return true}
function getDomainFromUrl(url){var url_pieces=url.split('/'),domain_str='';for(var i=0,length=url_pieces.length;i<length;i++){if(i<3){domain_str+=url_pieces[i]}
else{break}
if(i<2){domain_str+='/'}}
return domain_str}
function isFunction(obj){return!!(obj&&obj.constructor&&obj.call&&obj.apply)}
function isArray(obj){return toString.call(obj)==='[object Array]'}
Froogaloop.fn.init.prototype=Froogaloop.fn;if(window.addEventListener){window.addEventListener('message',onMessageReceived,false)}
else{window.attachEvent('onmessage',onMessageReceived,false)}
return(window.Froogaloop=window.$f=Froogaloop)})();

