reqHistory = null;

window.addEvent('domready', function(){
    this.mode = 1;
    this.sort = 'titre';
    this.order = 'asc';
    this.page = 1;
    this.date = 0;
    this.lettre = 0;
    
    refreshPager();

    HistoryManager.initialize();

    reqHistory = HistoryManager.register(
        'page',
        [0], // default, page 0
        function(values) {
            if( values[0] > 0 ){
                this.page = values[0];
                this.mode = values[1];
                this.sort = values[2];
                this.lettre = values[3];
                this.date = values[4];
                this.journee = window.location.hash.match( /journee:([0-9]+)/ );
                getFilms();
            }
            else{
                myURI = new URI(window.location);
                if(myURI.get('fragment')){
                    this.lettre = myURI.get('fragment').substr(0,1);
                    getFilms();
                }
            }
        }.bind(this),
        function(values) {
            return [ 'page', values[0], values[1], values[2], '[' + values[3] + ']', '[' + values[4] + ']' ].join('-');
        },
        /page-(\d+)-(\d+)-([a-zA-Z]+)-\[([-a-zA-Z\d]+)\]-\[([-\d]+)\]/ // the regexp to match "page-1-1-titre-(C)-(02-2010)"
        );
	
    HistoryManager.start();

    $$('.tableau .bouton').each(function(el){
        el.addEvent('click', function(){
            $$('.tableau .bouton').removeClass('act');
			
            if(el.hasClass('detail')){
                this.mode = 1
                $$('.tableau .detail').addClass('act');
            }else if(el.hasClass('condense')){
                this.mode = 2
                $$('.tableau .condense').addClass('act');
            }
			
            getFilms(el);
        }.bind(this))
    }.bind(this))

    if ($('dateTop')) {
        //Fonctions permettant le tri
        selectDateTop = new c2Select($('dateTop'), {
            onChange: function(value, el){
                this.date = value;
                selectDateBottom.select(el);
                checkDateNextPrev()
                getFilms($('dateTop'));
            }.bind(this)
        });
        selectDateTop.setValue(this.date);
        this.date = selectDateTop.getValue();
        checkDateNextPrev();
    }

    if ($('dateBottom')) {
        //Fonctions permettant le tri
        selectDateBottom = new c2Select($('dateBottom'), {
            onChange: function(value, el){
                this.date = value;
                selectDateTop.select(el);
                checkDateNextPrev()
                getFilms($('dateTop'));
            }.bind(this)
        });
    }
	
    if ($('sousCriteres')) {
        //Fonctions permettant le tri
        $('sousCriteres').getElements('span').each(function(el){
            if(el.get('text') == this.lettre){
                $$('#sousCriteres span').removeClass('act');
                el.addClass('act');
            }
			
            el.addEvent('click', function(){
                $$('#sousCriteres span').removeClass('act');
                el.addClass('act');
                this.lettre = el.get('text');
                myURI.set('fragment',this.lettre);
                myURI.go();
				
                this.page = 1;
				
                getFilms($('dateTop'));
            }.bind(this))
        }.bind(this))
    }
    if ($('module').get('class') != 'nouveautes') {
        this.region = "user";
    }
    if ($$('.toutQuebec')) {
        //Fonctions permettant le tri
        $$('.toutQuebec').addEvent('click', function(){
            if(this.region == "all"){
                this.region = "user";
            /* $$('.toutQuebec').empty();
                            $$('.toutQuebec').set('text','Voir les nouveautés au Québec');*/
            }else{
                this.region = "all";
            /*$$('.toutQuebec').empty();
                            $$('.toutQuebec').set('text','Voir les nouveautés pour votre région');*/
            }
                        
            getFilms($('.toutQuebec'));
        }.bind(this))
    }

	
    $$('.dates .flecheSuiv').each(function(el){
        el.addEvent('click', function(){
            if (this.moisNext) {
                var date = selectDateTop.getNext(selectDateTop.selected);
                selectDateTop.select(date);
                selectDateBottom.select(date);
                checkDateNextPrev()
                this.date = selectDateTop.getValue();
                getFilms(el);
            }
        }.bind(this));
    }.bind(this))
	
    $$('.dates .flechePrec').each(function(el){
        el.addEvent('click', function(){
            if (this.moisPrev) {
                var date = selectDateTop.getPrevious(selectDateTop.selected);
                selectDateTop.select(date);
                selectDateBottom.select(date);
                checkDateNextPrev()
                this.date = selectDateTop.getValue();
                getFilms(el);
            }
        }.bind(this));
    }.bind(this));
	
    if($('sortByTop')){
        //Fonctions permettant le tri
        selectTop = new c2Select($('sortByTop'),{
            onChange: function(value,el){
                this.order = el.hasClass('desc') ? 'desc' : 'asc';
                this.sort = value;
                this.page = 1;
                selectBottom.select(el);
                getFilms($('sortByTop'));
            }.bind(this)
        });
        this.sort = selectTop.getValue();
    }
    if($('sortByBottom')){
        selectBottom = new c2Select($('sortByBottom'),{
            onChange: function(value,el){
                this.order = el.hasClass('desc') ? 'desc' : 'asc';
                this.sort = value;
                this.page = 1;
                selectTop.select(el);
                getFilms($('sortByBottom'));
            }.bind(this)
        });
    }
});

function checkDateNextPrev(){
    if(!selectDateTop.getNext(selectDateTop.selected)){
        $$('.dates .flecheSuiv').fade(0.5);
        this.moisNext = false;
    }else{
        $$('.dates .flecheSuiv').fade(1);
        this.moisNext = true
    }
	
    if(!selectDateTop.getPrevious(selectDateTop.selected)){
        $$('.dates .flechePrec').fade(0.5);
        this.moisPrev = false;
    }else{
        $$('.dates .flechePrec').fade(1);
        this.moisPrev = true;
    }
}

function refreshPager(){
    new SimplePager().addEvent( 'change', function( pageID, el ){
        this.page = pageID;
        getFilms( el );
    }.bind(this) );
}

function getFilms(element){
    $('containerFilms').empty();
	
    if (element!=null) {
        new Fx.Scroll(element).toElement($('content'));
    }
	
    ajaxLoader = new Element('img', {
        'src' : '/assets/images/base/ajaxLoader.gif'
    }).inject(new Element('div',{
        'class' : 'ajaxLoader'
    }).inject($('containerFilms')));

    new Request.JSON({
        url: 'ajax/ajax.Films.php',
        method: 'post',
        data: {
            'xhr': $('module').get('class'),
            'mode': this.mode,
            'sort': this.sort,
            'order': this.order,
            'page' : this.page,
            'date' : this.date,
            'lettre' : this.lettre,
            'region' : this.region
        },
        onSuccess: function(data){
            if (data) {
                reqHistory.setValue(0, this.page);
                reqHistory.setValue(1, this.mode);
                reqHistory.setValue(2, this.sort);
                reqHistory.setValue(3, this.lettre);
                reqHistory.setValue(4, this.date);
                
                $$('.pager').set('html', data.pager);
                refreshPager();

                $('containerFilms').set('html', data.html);

                if ($('module').get('class') == 'nouveautes') {
                    var str = ' dans votre région cette semaine';
                    var strRegion = 'Voir les nouveautés au Québec'
                    if(this.region == 'all'){
                        str = ' au Québec cette semaine';
                        strRegion = 'Voir les nouveautés pour votre région';
                    }

                    $$('.toutQuebec').set('text',strRegion);

                    $$('.compte').set('html','<span class="nbFilms">'+data.nb+'</span> nouveautés'+ str);
                }
                if(this.journee){
                    var scroll_journee_id = 'journee_'+this.journee[1];
                    if( $( scroll_journee_id ) ){
                        new Fx.Scroll( window, {
                            offset: {
                                x: 0,
                                y: 0
                            }
                        }).toElement( $( scroll_journee_id ) );
                    }
                }

            }
        }.bind(this)
    }).send();
}


