
window.addEvent('domready', function(){

    var step_budget=500;
    var step_kilometrage=5000;
    var step_annee=1;
    
    var nbDynamicSelects=$('su_form_search').getElements('.dynamic_select').length;
    
    function roundValue(valeur,pas)
    {
        var arrondi=Math.floor((valeur+pas)/pas)*pas-pas;        
        
        return arrondi;
    }
    
    var slider_budget = new Slider($('slider_0_path'), $('slider_0_knob_left'),$('slider_0_range'), {
		start: 0,
		end: 30000,
		offset: 0,
        knobheight: 17,
		knobwidth: 17,
		mode: 'horizontal',
		snap:false,        
		onChange: function(pos)
        {            
            if(pos.maxpos==30000)
            {
                $('budget').set('value',roundValue(pos.minpos,step_budget)+'#150000');
                $('max_budget').set('html','+ de 30000');
            }
            else
            {
                $('budget').set('value',roundValue(pos.minpos,step_budget)+"#"+roundValue(pos.maxpos,step_budget));                
                $('max_budget').set('html',roundValue(pos.maxpos,step_budget));
            }
            
            $('min_budget').set('html',roundValue(pos.minpos,step_budget));                       
        },
        
        onComplete: function()
        {
            countResults();
        }
        
	}, $('slider_0_knob_right'));
    
    var slider_kilometrage = new Slider($('slider_1_path'), $('slider_1_knob_left'),$('slider_1_range'), {
		start: 0,
		end: 150000,
		offset: 0,
        knobheight: 17,
		knobwidth: 17,
		mode: 'horizontal',
		snap:false,
		onChange: function(pos)
        {            
            if(pos.maxpos==150000)
            {
                $('kilometrage').set('value',roundValue(pos.minpos,step_kilometrage)+'#1000000');
                $('max_kilometrage').set('html','+ de 150000');
            }
            else
            {
                $('kilometrage').set('value',roundValue(pos.minpos,step_kilometrage)+"#"+roundValue(pos.maxpos,step_kilometrage));                
                $('max_kilometrage').set('html',roundValue(pos.maxpos,step_kilometrage));
            }
            
            $('min_kilometrage').set('html',roundValue(pos.minpos,step_kilometrage));
        },
        
        onComplete: function()
        {
            countResults();
        }
        
	}, $('slider_1_knob_right'));
    
    var slider_annee = new Slider($('slider_2_path'), $('slider_2_knob_left'),$('slider_2_range'), { // TODO : années par rapport à l'année en cours
		start: 0,
		end: 10,
		offset: 0,
        knobheight: 17,
		knobwidth: 17,
		mode: 'horizontal',
		snap:false,
		onChange: function(pos)
        {            
            if(pos.maxpos==10)
            {
                $('annee').set('value',roundValue(pos.minpos,step_annee)+"#20");
                $('max_annee').set('html','+ de 10');
            }
            else
            {
                $('annee').set('value',roundValue(pos.minpos,step_annee)+"#"+roundValue(pos.maxpos,step_annee));                
                $('max_annee').set('html',roundValue(pos.maxpos,step_annee));
            }
            
            $('min_annee').set('html',roundValue(pos.minpos,step_annee));
        },
        
        onComplete: function()
        {
            countResults();
        }
        
	}, $('slider_2_knob_right'));
    
    function switchTypeVehicule(type)
    {    
        $$('.b_type_recherche').fade(0.4);
        
        $('b_neuf').addEvent('click',function(){
            switchTypeVehicule(1);
        });
        
        $('b_occasion').addEvent('click',function(){
            switchTypeVehicule(0);
        });
        
        $$('.b_type_recherche').addEvent('mouseover',function(){
            this.fade(0.9);
        });
        
        $$('.b_type_recherche').addEvent('mouseout',function(){
            this.fade(0.4);
        });
        
        $('type_vehicule').set('value',type);
        
        if(type==0)
        {
            $('b_occasion').fade(1);
            $('b_occasion').removeEvents();
        }
        else
        {
            $('b_neuf').fade(1);
            $('b_neuf').removeEvents();
        }
                
        $('su_form_search').getElements('.dynamic_select').each(function(element){
            element.addEvent('change',function(){countResults();});
            resetInfos(element.get('id'));                
        });
               
        loadInfos("carrosserie",{type:type});                 

        loadInfos("marque",{type:$('type_vehicule').get('value'),carrosserie:0}); // "toutes les catégories" par défaut
        
        loadInfos("energie",{type:$('type_vehicule').get('value')});
        
        if(critere_budget!='')
        {
            var budget=critere_budget.split("#");

            slider_budget.setMin(Number(budget[0]));
            slider_budget.setMax(Number(budget[1]));                   
        }
        else
        {
            slider_budget.setMin(0);
            slider_budget.setMax(30000);
        }
        
        var switchMorph = new Fx.Morph('criteres_occasion',{'link' : 'chain', 'duration' : '500'});
        if(type==0)
        {
            switchMorph.start({
                'height': $('criteres_occasion').retrieve('height'),
                'opacity': 1
            });
        }
        else
        {
            switchMorph.start({
                'height': 0,
                'opacity': 0
            });
        }
        
        if(critere_kilometrage!='' && critere_kilometrage!='0' && type==0)
        {
            var kilometrage=critere_kilometrage.split("#");

            slider_kilometrage.setMin(Number(kilometrage[0]));
            slider_kilometrage.setMax(Number(kilometrage[1]));
        }
        else if(type==1)
        {
            $('kilometrage').set('value','0');
        }
        else
        {
            slider_kilometrage.setMin(0);
            slider_kilometrage.setMax(150000);
        }
        
        if(critere_annee!='' && critere_annee!='0' && type==0)
        {
            var annee=critere_annee.split("#");

            slider_annee.setMin(Number(annee[0]));
            slider_annee.setMax(Number(annee[1]));
        }
        else if(type==1)
        {
            $('annee').set('value','0');
        }
        else
        {
            slider_annee.setMin(0);
            slider_annee.setMax(10);
        }
        
        countResults();
                        
        return;
    }
    
    function loadInfos(champ,params)
    {        
        resetInfos(champ);
        $(champ+'_loading').setStyle('display','inline');
        
        switch(champ)
        {
            case "carrosserie":
                resetInfos('marque');
            
            case "marque":
                resetInfos('modele');
        }
            
        var search_datas=new Request.JSON({
            url:'lib/su_vehicules_form_search.php',
            link:'chain',
            noCache:true,
            
            onRequest: function()
            {
                
            },
            
            onComplete: function(reponse)
            {                         
                var selected;
                
                if(nbDynamicSelects>1){nbDynamicSelects--;}
            
                $(champ+'_loading').setStyle('display','none');                     

                if(reponse==0)
                {
                    return;
                }
                
                $each(reponse,function(item){
                    var option=new Element('option',{'value':item, 'html':item}).inject($(champ));                    
                    
                    if(item==eval("critere_"+champ))
                    {
                        option.selected=true;
                        $(champ).fireEvent('change');
                    }
                });
              
                $(champ).disabled=false;
                $(champ).fade(1); 
            }
        });
        
        search_datas.get({champ:champ,params:params});
    
        return;
    }
    
    function countResults()
    {
        if(nbDynamicSelects>1){return;}
    
        var params={        
            type_vehicule: $('type_vehicule').get('value'),
            carrosserie: $('carrosserie').get('value'),
            marque: $('marque').get('value'),
            modele: $('modele').get('value'),
            energie: $('energie').get('value'),
            budget: $('budget').get('value'),
            kilometrage: $('kilometrage').get('value'),
            annee: $('annee').get('value')
        };
    
        var results_datas=new Request.JSON({
            url:'lib/su_vehicules_form_search.php',
            link:'cancel',
            noCache:true,
            
            onRequest: function()
            {
                $('form_search_nb_results_loading').setStyle('display','inline');
            },
            
            onComplete: function(reponse)
            {
                $('form_search_nb_results_loading').setStyle('display','none');
       
                var suffixe="";
                
                if(reponse<2){suffixe=" résultat";}
                else{suffixe=" résultats";}            
                
                if(reponse!=undefined && reponse!=null && reponse!="false")
                {
                    $('form_search_nb_results').set('html',reponse+suffixe);
                    $('form_search_nb_results_accueil').set('html',reponse+suffixe);
                }
                
                if(reponse==0)
                {
                    $('btn_rechercher').fade('out');
                    $('btn_rechercher_accueil').fade('out');
                }
                else
                {
                    $('btn_rechercher').fade('in');
                    $('btn_rechercher_accueil').fade('in');
                }
            }
        });
        
        results_datas.get({count:1,params:params});
    
        return;
    }
    
    function resetInfos(champ)
    {
        $(champ).set('html',$(champ).retrieve('defaut'));
        $(champ).fade(0.7);       
        $(champ).disabled=true;
        
        return;
    }
    
    $('su_form_search').getElements('.dynamic_select').each(function(element){
        element.store('defaut',element.get('html'));     
        resetInfos(element.get('id'));                
    });
    
    $('carrosserie').addEvent('change',function(){                     
        if(this.get('value')!=0)
        {
            loadInfos("marque",{type:$('type_vehicule').get('value'),carrosserie:this.get('value')});        
        }
        else
        {
            resetInfos('marque');
            resetInfos('modele');
        }        
    });
    
    $('marque').addEvent('change',function(){
        if(this.get('value')!=0)
        {
            loadInfos("modele",{type:$('type_vehicule').get('value'),carrosserie:$('carrosserie').get('value'),marque:this.get('value')});
        }
        else
        {
            resetInfos('modele');
        }
    });
                 
    $('criteres_occasion').store('height',$('criteres_occasion').getStyle('height'));  
         
    switchTypeVehicule(critere_type_vehicule);
    
});
