( function () {
    if( document.getElementById && document.createElement ) {
        var h= document.getElementsByTagName("html")[0];
        h.className= (h.className+ ' js');
    }
} )();

BOX.setConfig('scroll', {
    container: '<div class="scrollContent">%content%</div>',
    simpleBar: '<div class="scrollBar" style="visibility:hidden;"><span class="face"></span></div>',
    fullBar: '<div class="scrollBar" style="visibility:hidden;"><span class="up"></span><span class="face"></span><span class="down"></span></div>'
}).setConfig('fauxFields', {
    checked: 'checked',
    focus: 'focus',
    checkedFocus: 'checkedFocus',
    selected: 'selected',
    hover: 'hover'
}).setConfig('fauxSelect', {
    container: '<div id="fauxSelect" style="left:-10000px;"></div>',
    mask: '<div id="fauxSelectMask" style="display:none;"></div>'
});

( function($) {
	var W = self;
    
    /** navigation au clavier *********************************************** */
	function initKeyboardMenuNavigation () {
		$("#menu>ul>li>dl>dt>a").focus( function () {
			$(this).parent().parent().parent().addClass("ieWin6hover");
		});
		$("#menu>ul>li>dl>dd>ul>li>a").focus( function () {
			$(this).parent().parent().parent().parent().parent().addClass("ieWin6hover");
		});
		$("#menu>ul>li>dl>dt>a").blur( function () {
			$(this).parent().parent().parent().removeClass("ieWin6hover");
		});
		$("#menu>ul>li>dl>dd>ul>li>a").blur( function () {
			$(this).parent().parent().parent().parent().parent().removeClass("ieWin6hover");
		});
		$("#menu>ul>li>dl>dd>ul>li>span>a").focus( function () {
			$(this).parent().parent().parent().parent().parent().parent().addClass("ieWin6hover");
		});
		$("#menu>ul>li>dl>dd>ul>li>span>a").blur( function () {
			$(this).parent().parent().parent().parent().parent().parent().removeClass("ieWin6hover");
		});
	}
	
    /** pagination ********************************************************** */
	/*
	var NOMBRE_DE_FOLIOS_AFFICHES= 5;
	function nombreDePages(){
		return $("#content > #contentWrapper > .content").size();
	}
	function currentPage(){
		return parseInt( W.location.href.replace( /(^.*#)(.*$)/i, "$2" ) )|| 1;
	}
	function ilFautLePager (nombreDePages) {
		return ( nombreDePages> 1 );
	}
	function previousLinkContent(currentPage){
		if(currentPage>1){
			return '<span class="previous"><a href="#'+ (currentPage- 1) + '">Previous</a><span class="invisible"> |</span></span>'
		}
		
		return '';
	}
	function nextLinkContent(currentPage,nombreDePages){
		if(currentPage<nombreDePages){
			return '<span class="next"><a href="#'+ (currentPage+ 1) + '">Next</a></span>'
		}
		
		return '';
	}
	function folioLinkContent(currentPage, nombreDePages, p){
		if( p== currentPage ){
			return '<span><span>'+ p+'</span><span class="invisible"> |</span></span>';
		}
		
		var t= "";
		if( p== nombreDePages) {
			t= '<span class="invisible"> |</span>';
		}
		return '<span><a href="#'+ p+ '">'+ p +'</a>'+ t+ '</span>';
	}
	function foliosToDisplay ( currentPage, nombreDePages ) {
		var firstFolio= 1;
		var lastFolio= 1;
		
		if(nombreDePages<= NOMBRE_DE_FOLIOS_AFFICHES){
			firstFolio= 1;
			lastFolio= nombreDePages;
		} else {
			var ecart= Math.floor(NOMBRE_DE_FOLIOS_AFFICHES/ 2);
			if(currentPage-ecart< 1){
				firstFolio= 1;
				lastFolio= NOMBRE_DE_FOLIOS_AFFICHES;
			} else if ( (currentPage+ ecart) >= nombreDePages){
				firstFolio= nombreDePages- NOMBRE_DE_FOLIOS_AFFICHES +1;
				lastFolio= nombreDePages;
			} else {
				firstFolio= currentPage- ecart;
				lastFolio= currentPage+ ecart;
			}
		}
		
		var folios= [];
		for(var i= firstFolio; i<= lastFolio; i++){
			folios[folios.length]= i;
		}
		return folios;
	}
	function foliosLinkContent( currentPage, nombreDePages ){
		var folios= foliosToDisplay( currentPage, nombreDePages );
		
		var collectedContent= "";
		for(var i= 0, imax= folios.length; i< imax; i++){
			collectedContent+= folioLinkContent(currentPage, nombreDePages, folios[i]);
		}
		return collectedContent;
	}
	function updatePager( currentPage, nombreDePages){
		if(ilFautLePager(nombreDePages)){
			$("#content > #contentWrapper > .content").addClass("invisible");
			$($("#content > #contentWrapper > .content").get(currentPage-1)).removeClass("invisible");
			
			$("#content > #pagination").remove();
			
			var pagerContent= '<div id="pagination">';
			
			pagerContent+= previousLinkContent(currentPage);
			
			pagerContent+= foliosLinkContent(currentPage,nombreDePages);
			
			pagerContent+= nextLinkContent(currentPage,nombreDePages);
			
			pagerContent+= '</div>';
			$("#content").append(pagerContent);
			
			$("#pagination a").click(function(){
				createPagination(parseInt(this.href.replace( /(^.*#)(.*?)/, "$2")));
			})
		}
	}
	function createPagination( p ){
		p= p||currentPage()
		updatePager(p,nombreDePages());
	}
	*/
   
    /* font-resizing ******************************************************** */
    var INCREASE= {
        "x-large":"x-large",
        "large":"x-large",
        "normal":"large",
        "small":"normal",
        "x-small":"small"
    }
    var DECREASE= {
        "x-large":"large",
        "large":"normal",
        "normal":"normal",
        "small":"normal",
        "x-small":"normal"
    }
    function changeFontSizeTo(dest){
        $("#contentWrapper").get(0).className= dest;
        if ($("#chapo").get(0) ) {
            $("#chapo").get(0).className = dest;
        }
        // $.cookie("font-size",dest);
    }
    function changeFontSize(e, direction){
        var future= direction[$("#contentWrapper").get(0).className||"normal"];
        changeFontSizeTo(future);
        e.preventDefault();
        e.stopPropagation();
    }
    function initFontResizing(){
        // var pref= $.cookie("font-size");
        // if(pref){
        //     changeFontSizeTo(pref)
        // }
        $("#increaseFontSize").click(function(e){
            changeFontSize(e, INCREASE);
            updateColumnsScrollSize();
        });
        $("#decreaseFontSize").click(function(e){
            changeFontSize(e, DECREASE)
            updateColumnsScrollSize();
        });
    }
    
    /* carousel ************************************************************* */
    function initCarousel(){
        var slide = document.getElementById('carouselScrollZone');
        if (!slide) {
            return;
        }
		if(document.body.id== "testimonials"){
            var minWidth= 390;
			var itemsDisplayed = 3;
            var move= 129;
		} else{
            var minWidth= 670;
			var itemsDisplayed = 6;
            var move= 110;
        }
		if (slide.offsetWidth <= minWidth) {
			var items = slide.getElementsByTagName('li');
			if (!items.length || items.length < itemsDisplayed) {
				return;
			}
            if( items.length> itemsDisplayed ){
    			slide.className = 'js';
    			new slideCycle({
    				context: slide,
    				next: 'carouselNext',
    				prev: 'carouselPrevious',
    				items: items,
    				itemsDisplayed: itemsDisplayed,
    				move: move,
    				offScreen: -999999
    			});
                $("#carouselPrevious").css({"visibility":"visible"});
                $("#carouselNext").css({"visibility":"visible"});
            }
		}
    }
    
    /** accordeon *********************************************************** */
    var scrolls={}
    function heightForDiv1 ( dds, div ) {
        var accumulatedValue= 0;
        dds.each( function () {
            accumulatedValue+= $(this).outerHeight();
        });
        
        if( !$.browser.msie ){
            accumulatedValue+= 1;// j'espere decouvrir un jour pourquoi on a besoin de ce +1...
        }
        
        // "recadrage" au max-height si necessaire
        if( accumulatedValue>= parseFloat( div.css( "max-height" ) ) ) {
            return( parseFloat( div.css( "max-height" ) ) );
        }
        
        return ( accumulatedValue );
    }
    function scrollToCurrentItem () {
        if( $("#currentLastLevelItem").size() ){
            var measuredPos= $("#currentLastLevelItem").offset().top- $("#currentLastLevelItem").parent().offset().top;
            scrolls[$("#currentLastLevelItem").parents("dl").get(0)].moveContentTo(-measuredPos)
        } else if( $("#currentMiddleLevelItem").size() ){
            var measuredPos= $("#currentMiddleLevelItem").offset().top- $("#currentMiddleLevelItem").parent().offset().top;
            scrolls[$("#currentMiddleLevelItem").parents("dl").get(0)].moveContentTo(-measuredPos)
        }
    }
    function installAccordionScroll () {// this = le dl en cours
        // recherche des elements
        var dds = $(this).find("dd");
        var dt = $(this).find("dt");
        
        // premier traffic du dom : on insere les divs "autour" des DDs
        var div = $('<div class="toScroll"></div>').insertAfter(dt);
        var div2 = $('<div></div>').prependTo(div);
        div2.append(dds)
        
        // on donne la bonne hauteur au div contenant
        div.height( heightForDiv1( dds, div ) );
        
        // petit hack pour contenter BOX
        l10n = { "simpleSlide": {} }
        
        // lancement du script de scroll
        t = new BOX.SimpleScroll({
            "target": div,
            "buttons": true
        });
        
        // second traffic du dom :
        // on insere un div apres les divs inseres "autour" des DDs
        var div3 = $('<div class="end"></div>').insertAfter(div);
        
        // on enregistre l'objet de scroll avec sa DL associee pour plus tard
        // (utilise par scrollToCurrentItem)
        scrolls[this]= t;
    }
    function initAccordionsScroll () {
        var accordions= $("div.accordion");
        accordions.each(function(){
            // this = le div.accordion en cours
            if ($(this).find("dl.open dd.open").size()) {
                // mode à trois niveaux
                
                var dls= $(this).find("dd.open dl");
                $(dls).each( installAccordionScroll );
            } else if ($(this).find("dl.open").size()) {
                // mode à deux niveaux
                
                var dls= $(this).find("dl.open");
                $(dls).each( installAccordionScroll );
            } else {
                // mode à un niveau
            }
        });
    }
    
    function openAccordion (e) {
        if( $(this).parent().parent().hasClass("open") ){
            $(this).parent().parent().removeClass("open");
        } else {
            $(this).parent().parent().parent().find(".open").removeClass("open")
            $(this).parent().parent().addClass("open");
            if( !( $(this).parent().find(".toScroll").size() ) ) {
                initAccordionsScroll();
            }
        }
        e.preventDefault();
        e.stopPropagation();
        if(window.event){window.event.cancelBubble = true;}
    }
    
    function initAccordionInteractivity () {
        $(".accordion dl.open dd dl dt").click(openAccordion);
        //$(".accordion dl.open dd dl dt a").focus(openAccordionBis);
    }
    
    /* formulaires ********************************************************** */
    function initReplacements () {
        $("form").each(function () {
            BOX.form($(this).attr('id')).addReplacement({
                "maxHeight": 200
            });
            $(this).addClass("replaced")
        });
    }
    
    /* (;_;) un petit coup d'AOP... ***************************************** */
    function parasiteBOX () {
        if( !( BOX.SimpleScroll.prototype.old_initialize ) ) {
            BOX.SimpleScroll.prototype.old_initialize= BOX.SimpleScroll.prototype.initialize;
            BOX.SimpleScroll.prototype.initialize= function (datas) {
                this.old_initialize(datas);
                
                var that= this;
                var thread;
                function scrollParasited( that, e ) {
                    that.clickToPosition(e, $(that.sContainer).parent());
                }
                this.sContainer.mousedown(function(e) {
                    thread= window.setInterval(function(){
                        scrollParasited(that, e);
                    }, 100);
                });
                this.sContainer.mouseup(function(e) {
                    window.clearInterval(thread);
                });
            }
        }
        if( !( BOX.SimpleScroll.prototype.old_getContentOffset ) ){
            BOX.SimpleScroll.prototype.old_getContentOffset= BOX.SimpleScroll.prototype.getContentOffset;
            BOX.SimpleScroll.prototype.getContentOffset= function () {
                var t= this.old_getContentOffset();
                if( isNaN( t ) ){
                    return 0;
                }
                return t;
            }
        }
    }
    
    function initFormScaleSwitching () {
        if( $("#scale_list_0").size()&& $("#scale_list_1").size() ){
            var currentForm;
            if($('form#readyReckonerStep1').size()){
                currentForm = 'readyReckonerStep1';
            } else if ($('form#bmiCalculator').size()){
                currentForm = 'bmiCalculator';
            } else if ($('form#mustToolStep1').size()){
                currentForm = 'mustToolStep1';
            } else if ($('form#mustToolStep2').size()){
                currentForm = 'mustToolStep2';
            } else if ($('form#mustToolStep3').size()){
                currentForm = 'mustToolStep3';
            }
            BOX.form(currentForm).addListener('fieldChange.radio.scale_list', function(e) {
                if( this.radio('scale_list').isChecked(0) ) {
                    if( $("#metricForm").hasClass("invisible") ) {
                        $("#metricForm").removeClass("invisible");
                    }
                    if( !( $("#imperialForm").hasClass("invisible") ) ) {
                        $("#imperialForm").addClass("invisible");
                    }
                } else if( this.radio('scale_list').isChecked(1) ) {
                    if( $("#imperialForm").hasClass("invisible") ) {
                        $("#imperialForm").removeClass("invisible");
                    }
                    if( !( $("#metricForm").hasClass("invisible") ) ) {
                        $("#metricForm").addClass("invisible");
                    }
                }
            });
        }
    }
    
    var scrolls2= [];
    window.scrolls2 = scrolls2;
    function initColumnScrolling () {		
		function appliScroll (O_objet) {
			if( O_objet.size() ) {
	            O_objet.wrapInner('<div class="toScroll" style="height:'+O_objet.height()+'px;"></div>');
	            O_objet.find(" > div.toScroll").each(
	                function (i, elm) {
	                    scrolls2[scrolls2.length]= new BOX.SimpleScroll({
	                        "target": this,
	                        "buttons": true
	                    });
	                    
	                    var I_hScrollbar = $(elm).height() - 20;
						$('.scrollBar', elm).css('height', I_hScrollbar+'px');
						
						scrolls2[scrolls2.length - 1].compute();
	                }
	            );
	        }
		}
		
		appliScroll($('#other-sites #content .firstColumn'));
		appliScroll($('#other-sites #content .secondColumn'));
		appliScroll($("#recipes #content .column"));
		appliScroll($('#other-sites #chapo .content'));
		//appliScroll($('#rubrique #content .column'));
		//appliScroll($('#sousRubrique #content .column'));
		appliScroll($('#rubrique #content .content'));
		appliScroll($('#sousRubrique #content .content'));
		appliScroll($('#rubrique #chapo .content'));
		appliScroll($('#sousRubrique #chapo .content'));
		//appliScroll($('#legal-disclaimer #contentWrapper'));
		//appliScroll($('#contact #content'));
		//appliScroll($('#credits #content'));

    }
    function updateColumnsScrollSize () {
        $.each(scrolls2, function () {
           this.compute(); 
        });
    }
    
    function openWindow ( params ) {
        var t= "";
        t+= ( 'left='+params.left );
        t+= ( ',top='+params.top );
        t+= ( ',width='+params.width );
        t+= ( ',height='+params.height );
        t+= ( ',toolbar='+params.toolbar );
        t+= ( ',resizable='+params.resizable );
        t+= ( ',status='+params.status );
        t+= ( ',scrollbars='+params.scrollbars );
        
        window.open(
            params.url, 
            params.name,
            t
        );
    }
    function hackForTermsAndConditions () {
        var t= $("#termsAndConditionsLink");
        if( t.size() ){
            var params= {
                url: t.get(0).href,
                name: 'termsAndConditionsWindow',
                width: 500,
                height: 500,
                toolbar: 0,
                resizable: 1,
                status: 0,
                scrollbars: 1
            }
            params.left= (screen.width- params.width)/ 2,
            params.top= (screen.height- params.height)/ 2,
        
            t.click(function (e) {
                openWindow(params);
                return false;
            });
        }
    }
	function loadPush(){
		if(Math.random()>0.5){
			$("#push1").css("display","block");
		}
		else{
			$("#push2").css("display","block");
		}
	}
    /* load : lancement des inits ******************************************* */
	$(W).load( function() {
		loadPush();
        parasiteBOX();
		initKeyboardMenuNavigation();
		//createPagination();
        if($("#increaseFontSize").get(0)){
            initFontResizing();
        }
        initCarousel();
        initAccordionsScroll();
        scrollToCurrentItem();
        initAccordionInteractivity();
        initReplacements();
        initFormScaleSwitching();
        
        initColumnScrolling();
        
        hackForTermsAndConditions();
	});

	$(document).ready(function () {
		$("#imprimer").click(
			function () {
				window.print();
				return false;
			}
		);
		
	});
    
})(jQuery);
