function set_js_active() {
    $$('body').addClass("js_active");
}

var createFacetLightbox = function(item, count) {
    var more = new Element('li', {'class' : 'open_lightbox'});

    var a = new Element('a', {href : '#', text : '+'});
    a.addEvent('click', function () {
        return hs.htmlExpand(this, {width: 250, wrapperClassName: 'titlebar', headingText : item.getPrevious().get('text')});
    });

    var hsContent = new Element('div', {'class' : 'highslide-maincontent'});
    hsContent.adopt(item.clone());

    // Cache les li n'étant pas dans les 6 premières
    item.getChildren(':not(:nth-child(-n+' + count + '))').setStyle('display', 'none');

    more.adopt(a).adopt(hsContent);
    item.adopt(more);
}

var advancedSearchToolbar = function () {

    var reduceFacet = function(element) {
        element.getElements('.col > ul').each(function (item, index) {
            if (item.getChildren('li').length > 8) createFacetLightbox(item, 8);
        });
    }

    return {
        fx : null,
        toggle : function () {
            if (this.fx) this.fx.toggle();
        },
        init : function () {
            var element = $('recherche_avancee');
            if (element) {
                this.fx = new Fx.Slide($('recherche_avancee'), {mode : 'vertical'});
                if ($$('.filtres .breadcrumbs').length == 0) this.fx.toggle();
                reduceFacet(element);
            }
        }
    }
}();

window.addEvent( 'domready', function() {
        
    skip_link();
    page_top($$('p.page_top'));

    if($("main_nav")){
        main_nav($$("#main_nav .niveau_1"));
    }
    /*if($$(".select_list").length>0){
        select_list($$(".select_list"));
    }*/
    if($$(".onglets").length>0){
        onglets();
    }
    //ajout de la fonction pour afficher le cv en highslide
   /*  $$(".cv_highslide").each(function (item, index) {
    	createHsCv(item, index);
    }); */
    
    // Cache la barre de recherche si aucun filtre n'est sélectionné
    advancedSearchToolbar.init();

    $$('.right .content_block ul').each(function (item, index) {
        if (item.getChildren('li').length > 20) createFacetLightbox(item, 20);
    });

    if($$('.flow').length>0) flow($('flow'));
    
    /** formulaire de contact */
    if($('contact')){
        
        $('link_fournisseur').set('href','javascript:void(0)');
        $('link_contact_form').set('href','javascript:void(0)');

        $('link_fournisseur').addEvent('click', function(event){
            $('fournisseur').show();
            $('contact').hide();
            $('infos_legales').hide();
            $('link_contact_form').removeClass('selected');
            this.addClass('selected');
        });

        $('link_contact_form').addEvent('click', function(event){  
            $('fournisseur').hide();
            $('contact').show();
            $('infos_legales').show();
            $('link_fournisseur').removeClass('selected');
            this.addClass('selected');
        });
    }
    
    if($('accordion')){
        //new Fx.Accordion($('accordion'), '#accordion h3', '#accordion ul');
        var myAccordion = new Fx.Accordion($$('#accordion > h3'), $$('#accordion > ul'), {
            onActive: function(toggler) {
                toggler.removeClass('closed');
            },
            onBackground: function(toggler) {
                toggler.addClass('closed');
            }
        });
    }

    if($("sommaire")){
        sommaire_automatique();
    }

    lien_blank();
    
    if($$(".carrousel").length>0){
        carrousel();
    }
    if($$(".service_on_cv").length>0){
        initCvServices();
    }
});

/** 
liens d'evitement
*/
function skip_link() {
    this.addEvent("keydown", function(event) {
        if (event.key == 'tab') {
            $$('.skiplink').addClass('tab_active');
        }
    });
}

/** 
lien retour au haut de page
*/
function page_top(element) {
    element.setStyle('display', 'none');
    window.addEvent('scroll', function() {
        if (window.getScrollTop() >= window.getHeight()) this.setStyle('display', 'block');
        else this.setStyle('display', 'none');
    }.bind(element));
}
    
    
/** 
menu principal
*/
function main_nav(div){
    
    var bg_voile_height = $$('.page').getHeight();
   
    div.each(function(el) {
        el.set("tabindex","0");

        var map = el.getChildren().getLast();
        map.getChildren()
            .addEvent('mouseout', function (e) {
                try{ e = new Event(e);
                e.stopPropagation();
                return false;}
                catch(e){}
            });

        var open = function () {
            if (!this.hasClass('open')) {
                this.addClass("open");
                this.getSiblings().removeClass('open');

                $$(".bg_voile").set('styles', {
                    'height': bg_voile_height,
                    'display':'block'
                });

                this.getSiblings().getElement('strong').set("style","opacity:0.5");
                this.getElement('strong').set("style","opacity:1;");
            }
        }

        var close = function () {
            if (this.hasClass('open')) {
                this.removeClass("open");
                $$(".bg_voile").set('style', '');
                $$('#header .top').set("style","opacity:1;");
                div.getElement('strong').set("style","opacity:1;");
            }
        }

        var openAction = function() {
            clearTimeout(el.get('close'));
            var openTimer = setTimeout(open.bind(el), 100);
            el.set('open', openTimer);
        }

        var closeAction = function() {
            clearTimeout(el.get('open'));
            var closeTimer = setTimeout(close.bind(el), 100);
            el.set('close', closeTimer);
        }

        el.addEvent("mouseover", openAction.bind(el));
        el.addEvent("focus", openAction.bind(el) );
        el.addEvent("mouseout", closeAction.bind(el));

        var last_a = el.getElements('a').getLast();
        if (last_a) last_a.addEvent("blur", closeAction.bind(el) );
    });

    $$(".bg_voile").addEvent('mouseover', function() {
        $$("#main_nav .niveau_1.open").fireEvent('mouseout');
    });
}

/** 
listes deroulantes
*/
function select_list(div){
    div.each(function(el, index) {
        el.set("tabindex","0");
        var open = function (){
            el.addClass("open");
        }
        var close = function (){
            el.removeClass("open");
        }
        el.addEvent("mouseover", open );
        el.addEvent("focus", open );
        el.addEvent("mouseout", close );
        var last_a = el.getElements('a').getLast();
        last_a.addEvent("blur",close ); 
    });
}


/** 
Onglets
*/
function onglets() {                                         
    
    var onglet = $$(".onglet li");
    onglet.each(function(el, index) {
        var lien = el.getElement("a");
        var action_lien = lien.get('href');
        action_lien=action_lien.substr(1);
        el.addClass(action_lien);
        lien.set('href','javascript:void(0)');
        if (index==0){
            el.addClass("open");
        }
        el.addEvent("click", function() {
            $$(".onglets li").removeClass("selected");
            el.addClass("selected");
            $$(".content_onglet").removeClass("open");
            $(action_lien).addClass("open");
        });
    });
}

/** 
Blocs toggle pour la calculatrice
*/
function toggle_calculatrice(bloc_etape) {
    if (bloc_etape) {
        bloc_etape.getElement('h2').addEvent("click", function() {
            bloc_etape.toggleClass('closed');
        });
    }
}


/** 
Liens dans une nouvelle fenêtre
*/
function lien_blank() {
	
    var liens = $$("a");
    liens.each(function(lien) {
        var href = lien.get("href");
        if(null != href && (href.contains('http://')||href.contains('https://')))
        {
            lien.addEvent("click", function() {
                window.open(href);
                return false;
            });
            var titre_lien = lien.get('title');
            var intitule_lien = "";

            lien.getChildren().each(function (item, index) {
                if (item.get('tag') == 'img') {
                    intitule_lien += item.get('alt');
                } else {
                    intitule_lien += item.get('text');
                }
            });
                        
            if(titre_lien){
                lien.set("title", titre_lien+" (nouvelle fenêtre)");
            }else{
                lien.set("title", intitule_lien+"(nouvelle fenêtre)");
            }
        }
    });
	
}

var Visionneuse = new Class({
    initialize: function(elements, selectors, delay) {
        this.delay = delay;
        this.showing = 0;
        this.elements = elements;
        this.selectors = selectors;
        this.timer = null;

        // Cache tous les elements sauf le premier
        elements.each(function(item, index) {
            item.set('index', index);
            if (index != 0) { item.removeClass('open').setStyle('opacity', 0); item.setStyle('visibility', 'hidden'); }
            //ajout du setstyle visible pour la compatibilite avec mootools 1.4
            else { item.addClass('open').setStyle('opacity', 1); item.setStyle('visibility', 'visible'); }
        });

        // Selectionne le premier élément
        
        selectors.each(function(item, index) {
            item.set('index', index);
            if (index != 0) item.removeClass('selected');
            else item.addClass('selected');
        });
        
        // Sur le click des elements on arrete le defilement
        elements.addEvent('click', (function (visionneuse) {
            return function() {
                visionneuse.stopLoop();
            } 
        })(this));

        // Sur le click d'un selecteur on arrete le defilement et on affiche l'élement choisi
        selectors.addEvent('click', (function (visionneuse) {
            return function() {
                visionneuse.stopLoop();
                visionneuse.transition(this.get('index'));
                return false;
            }
        })(this));
    },
    nextToShow: function() {
        if (this.showing + 2 > this.elements.length) return 0;
        else return this.showing + 1;
    },
    transition: function(show) {
        if (isNaN(show)) show = this.nextToShow();

        var currentElement = this.elements[this.showing];
        var nextElement = this.elements[show];
        var nextSelector = this.selectors[show];

        this.showing = show;

        // Affichage
        var sfx = new Fx.Tween(nextElement, {
            property: 'opacity'
        });

        sfx.addEvent('start', function () {
            this.addClass('open');
        }.bind(nextElement));

        sfx.addEvent('start', function () {
            this.selectors.removeClass('selected');
        }.bind(this));

        sfx.addEvent('complete', function() {
            this.addClass('selected');
            this.getSiblings(this.tagName).removeClass('selected');
        }.bind(nextSelector));

        // Masquage
        var hfx = new Fx.Tween(currentElement, {
            property: 'opacity'
        });
        hfx.addEvent('complete', function () {
            this.removeClass('open');
        }.bind(currentElement));
        
        sfx.start(1);
        hfx.start(0);

        // Force le changement de visibility pour IE8
        nextElement.setStyle('visibility', 'visible');
        currentElement.setStyle('visibility', 'hidden');
    },
    loop: function() {
        this.timer = setInterval((function(visionneuse) {
            return function() {
                visionneuse.transition();
            }
        })(this), this.delay);
    },
    stopLoop: function() {
        clearInterval(this.timer);
    }
});


function flow(element) {
    if (element.getElements('a img').length == 0) return;
    
    var mf = new MooFlow(element, {
        startIndex: 0,
        useSlider: false,
        useAutoPlay: false,
        useCaption: true,
        useResize: true,
        useWindowResize: true,
        useMouseWheel: true,
        useKeyInput: true,
        heightRatio: 0.9,
        factor: 210,
        offsetY: 80,
        'onClickView': function(object) {
            window.location.href = object.href;
        }
    });

    var nav = element.getParent().getChildren('a');

    if (nav.length == 2) {
        nav[0].addEvent('click', function() {
            this.prev();
            return false;
        }.bind(mf));

        nav.getLast().addEvent('click', function() {
            this.next();
            return false;
        }.bind(mf));
    }
}

/* Création d'un sommaire à partir des balise h3 pour les page éditorial */
function sommaire_automatique() {

    var mark = 'h2';
    var list_items = [];

    var article = $$('#content .text')[0];
    var blocs = article.getElements(mark);

    if(blocs.length > 0) {
        blocs.each(function(item, i) {
            i = i + 1;
            var li = new Element('li');

            a = new Element('a', {
                'href' : '#section' + i,
                'html' : item.get('text')
            });
            a.inject(li);


            item.set('id', 'section' + i);

            // Création du second niveau
            var element = item.getNext();
            var h3_list_items = [];
            var x = 1;
            while(element && element.get('tag') != 'h2') {
                if (element.get('tag') == 'h3') {
                    var h3_li = new Element('li');
                    element.set('id', 'section' + i + '_' + x);
                    h3_a = new Element('a', {
                        'href' : '#section' + i + '_' + x,
                        'html' : element.get('text')
                        });
                    h3_a.inject(h3_li);
                    h3_list_items.push(h3_li);
                    x++;
                }
                element = element.getNext();
            }
            var li_ul = new Element('ul');
            li_ul.adopt(h3_list_items);
            li.adopt(li_ul);

            list_items.push(li);
        });

        var p = new Element('p', {
            "class": 'top'
        });
        p.inject(article);

        var ul = new Element('ul');
        ul.adopt(list_items);

        $('sommaire')
        .adopt(ul);

    }else{
        $('sommaire').destroy();
    }
}

/* fonction carrousel recuperer de linria */
function carrousel() {
	// On ajoute les ID ou il faut 
	var all_caroussel = $$('.carrousel');
	all_caroussel.each(function(item, index){
			item.setProperty('id', 'carrousel_'+index);	
	});
	
	var all_caroussel_mask = $$('.carrousel_mask');
	all_caroussel_mask.each(function(item, index){
			item.setProperty('id', 'carrousel_mask_'+index);	
	});
	var all_caroussel_content = $$('.carrousel_content');
	all_caroussel_content.each(function(item, index){
			item.setProperty('id', 'carrousel_content_'+index);	
	});

	 // On creer le constructeur pour chaque carroussel
	all_caroussel.each(function(item, index){
			var class_presente = item.get('class').split(' ');
			nbr_elements = 0;
			class_presente.forEach(function(value){
				if (!(isNaN(value))){
					nbr_elements = value;
				}	
			});
			//valeur par defaut du nombre delements a affciher pour eviter les erreurs
			if (nbr_elements == 0){
				nbr_elements =  3;
			}
			new SlideItMoo({
				overallContainer: 'carrousel_'+index,
				elementScrolled: 'carrousel_mask_'+index,
				thumbsContainer: 'carrousel_content_'+index,
				itemsVisible:nbr_elements,
				elemsSlide:1,
				duration:300,
				itemsSelector: '.vue',
				itemWidth: 165,
                continousNavigation: false
			}); 
	});


}

//permet les appel ajax depuis les  vues bloc des cv
function initCvServices(){
		// recuperation de tous les liens specifique des cv bloc
		var all_sevices = $$('.service_on_cv');
		all_sevices.each(function(item, index){
			//separation des classe pour recuperer les infos
			var all_classes = item.get('class').split(' ');
			var id_service = 0;
			// on recupere lid qui a ete mis en classe
			all_classes.forEach(function(value){
				if (!(isNaN(value))){
					id_service = value;
				}
			}); 	
			//recuperation de lurl de base definie dans le lien
			href = item.get('href');	
			//ajout de lid recuperer et injection de lurl 
			item.set('href',href+'/'+id_service);
			//ajout de levenement au clic puor declencher lappel ajax tout en definissant au passage la cible de l output
			item.addEvent('click', function () {
					return hs.htmlExpand(this, { contentId: 'my-content',objectType: 'ajax',align: 'center'});
			});
			});
}



