/* 
 * Gestion de l'interface utilisateur
 */
(function($){
    //UIOSC object
    UIOSC = {
        //Initialiser l'UI
        init: function(){
            this.initBlocRecherche();
            this.initPagination();
        },
        
        //initialiser le bloc recherche : scroll en même temps que la page
        initBlocRecherche: function(){            
            var bloc_recherche = $('#recherche_wrapper');
            
            $(window).bind('scroll', function(){
                var hauteur_bloc_recherche = bloc_recherche.height();
                var footer_pos = $('#footer_content').position();

                if(window.innerHeight){
                    var hauteur_int = window.innerHeight;
                } else if(document.documentElement.clientHeight){
                    var hauteur_int = document.documentElement.clientHeight;
                }
                
                if(window.scrollY){
                    var scrollTop = window.scrollY;
                } else if(document.documentElement.scrollTop) {
                    var scrollTop = document.documentElement.scrollTop;
                }
                
                if(scrollTop > 204){                    
                    var scroll_recherche = scrollTop - 194;
                    
                    if(scroll_recherche + hauteur_bloc_recherche + 244 >= footer_pos.top){
                        scroll_recherche = footer_pos.top - hauteur_bloc_recherche - 264; 
                    }
                    
                    bloc_recherche.css('marginTop', scroll_recherche+'px');
                } else {
                    bloc_recherche.css('marginTop', '0px');
                }
            });
        },
        
        //Initialise la pagination AJAX
        initPagination: function(){
            var pagination = $('#pagination');
            pagination.css('visibility', 'hidden');
            var ui = this;
            ajax_pagination = true;
            
            //Sur scroll, charger les pages suivantes
            $(window).bind('scroll', function(){
                var pagination_top = ui.getY(pagination.get(0));
                
                if(window.scrollY){
                    var scrollTop = window.scrollY;
                } else if(document.documentElement.scrollTop) {
                    var scrollTop = document.documentElement.scrollTop;
                }
                
                if(window.innerHeight){
                    var hauteur_int = window.innerHeight;
                } else if(document.documentElement.clientHeight){
                    var hauteur_int = document.documentElement.clientHeight;
                }
                
                //Si le scroll est suffisant, afficher la suite
                if(ajax_pagination && hauteur_int + scrollTop > pagination_top + 200){
                    //Bloquer l'AJAX sur les paginations
                    ajax_pagination = false;
                    
                    //Récupérer la page suivante
                    var next_page = pagination.find('a.pagenav:not(.ajaxed):first');
                    if(next_page.length > 0){
                        //Loader avant requête AJAX
                        pagination.before('<span id="loader_activites"></span>');
                        
                        $.ajax({
                            url: next_page.attr('href') + '&mode=ajax',
                            success: function(response){
                                //Marquer la page comme chargée
                                next_page.addClass('ajaxed');
                                
                                //Insérer le bloc caché dans le DOM
                                var bloc_page = $(response);
                                pagination.before(bloc_page.hide());
                                
                                //Cacher le loader
                                $('#loader_activites').remove();
                                
                                //Afficher les activités
                                bloc_page.fadeIn('slow');
                                
                                //Débloquer l'AJAX sur la pagination
                                ajax_pagination = true;
                            }
                        });
                    }
                }
            });
        },
        
        //Récupérer la position absolue d'un élément dans la page
        getY: function(oElement){
            var iReturnValue = 0;
            while(oElement != null ) {
                iReturnValue += oElement.offsetTop;
                oElement = oElement.offsetParent;
            }
            return iReturnValue;
        }
    }
    
    
    $(document).ready(function(){    
        UIOSC.init();
    });
})(jQuery)

