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

	
	$('modele').disabled = false;
			
	
	// Constantes Sliders
    var step_budget			= 2000;
    var budget_max 			= 60000;
    

	// Déclaration des events liés au select
    $('categorie').addEvent('change',function(){                     
		if(this.get('value')!=0)
        {
            get_datas(["modele"]);
			get_datas(["marque"]);
			$('modele').disabled = false;
	    }
		else 
		{
			get_datas(["marque"]);
			$('modele').disabled = true;
	    } 
    }); 
	
	$('marque').addEvent('change',function(){ 
		if(this.get('value')!=0)
        {
            get_datas(["modele"]);
			$('modele').disabled = false;
	    } 
		else 
		{
			$('modele').disabled = true;
	    } 
    });
	
	$('modele').addEvent('change',function(){                     
    	get_datas([]);
    }); 
    
    $('dep').addEvent('change',function(){ 
    	$('ville').value = 0;
        get_datas(["ville"]);
    });
    $('ville').addEvent('change',function(){                     
    	get_datas([]);
    });
    $('annee').addEvent('change',function(){                     
    	//get_datas([]);
    }); 
	$('energie').addEvent('change',function(){                     
    	get_datas([]);
    }); 
	


    // Déclaration du slider Budget 
    var slider_budget = new Slider($('slider_0_path'), $('slider_0_knob_left'),$('slider_0_range'), {
		start: 0,
		end: budget_max,
        knobheight: 17,
		knobwidth: 17,
		onChange: function(pos){
	        if(pos.maxpos == budget_max)
	            $('max_budget').set('html','+30000');
	        else
	            $('max_budget').set('html',roundValue(pos.maxpos, step_budget));
	        
	        $('min_budget').set('html',roundValue(pos.minpos, step_budget));
    	},
        onComplete: function(pos){
	        if(pos.maxpos == budget_max)
	            $('budget_value').set('value',roundValue(pos.minpos, step_budget)+'#1000000');
	        else
	            $('budget_value').set('value',roundValue(pos.minpos, step_budget)+"#"+roundValue(pos.maxpos, step_budget));
	        
	        get_datas([]);
        }
	}, $('slider_0_knob_right'));
    
    if($('budget_value').value != ''){
        var budget = $('budget_value').value.split("#");
        slider_budget.setMin(Number(budget[0]));
        slider_budget.setMax(Number(budget[1]));                  
    }
    else{
        slider_budget.setMin(0);
        slider_budget.setMax(60000);
    }
    

    
    /**
     * Fonction de mise à jour des champs de recherche
     * 
     * @param	array tableau d'id des champs à mettre à jour
     * @return	void
     */
	function get_datas(to_update){
		
		var datas = {
			type: 		$('type_vehicule').value,
			marque:		$('marque').value,
			categorie:	$('categorie').value,
			modele:		$('modele').value,
			dep:		$('dep').value,
			ville:		$('ville').value,
			budget:		$('budget_value').value,
			annee:		$('annee').value,
			kilometrage:$('kilometrage').value,
			energie:$('energie').value
			
		};
		
		new Request.JSON({
            url: fichier_js,
            data: datas,
            onComplete: function(response){
            	to_update.each(function(item){

            		if(item == "marque"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Marques"}).inject($(item));
            			
            			response['marque'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
					else if(item == "categorie"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Catégorie"}).inject($(item));
            			
            			response['categorie'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            		else if(item == "modele"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Modèles"}).inject($(item));
            			
            			response['modele'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
					else if(item == "energie"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Energies"}).inject($(item));
            			
            			response['energie'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            		else if(item == "ville"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Villes"}).inject($(item));
            			
            			response['ville'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            	});
                
            	//$('nbr_resultats').set('html', (response['nombre'] < 2) ? response['nombre']+" résultat" : response['nombre']+" résultats");
			}
        }).send();
	};

	/**
	 * Fonction pour arrondir une valeur au pas inférieur donné
	 * 
	 * @param	int valeur à arrondir
	 * @param	int pas
	 * @return	int valeur arrondie
	 */
    function roundValue(valeur,pas){
        return Math.floor(valeur / pas) * pas;
    }
    
    
	/**
	 * Changement du type de véhicule (neuf / occasion)
	 * 
	 * @param	int type véhicule (0: occasion / 1: neuf)
	 * @param	bool true appel au chargement de la page
	 * @return	void
	 */
    function switchTypeVehicule(type, initialisation)
    {    
    	// Set d'un champ hidden à la valeur du type choisi
        $('type_vehicule').set('value',type);
        
    	// Si ce n'est pas l'initialisation : Mise à zéro de tous les champs
        if(!initialisation){
        	$('marque').value = 0;
            slider_budget.setMin(0);
            slider_budget.setMax(budget_max);
            slider_kilometrage.setMin(0);
            slider_kilometrage.setMax(kilometrage_max);
            $('ville').value = 0;
            $('annee').value = 0;
            $('kilometrage').value = 0;
        	get_datas(["marque", "ville"]);
        }
        
        var btn_neuf 		= $('b_neuf');
        var btn_occasion 	= $('b_occasion');
        var switchMorph 	= new Fx.Morph('criteres_occasion',{'link' : 'chain', 'duration' : '500'});
        
        if(type == 0){ // Si Occasion
        	
        	btn_occasion.fade(1).removeEvents();
            btn_neuf.fade(0.4).addEvents({
            	'click': function(){
                	switchTypeVehicule(1, false);
            	},
            	'mouseover': function(){
                    this.fade(0.9);
                },
                'mouseout': function(){
                    this.fade(0.4);
                }
            });
            
            switchMorph.start({ 'height': $('criteres_occasion').retrieve('height'), 'opacity': 1 });
        }
        else{
        	
        	btn_neuf.fade(1).removeEvents();
        	btn_occasion.fade(0.4).addEvents({
            	'click': function(){
                	switchTypeVehicule(0, false);
            	},
            	'mouseover': function(){
                    this.fade(0.9);
                },
                'mouseout': function(){
                    this.fade(0.4);
                }
            });
        	
            switchMorph.start({ 'height': 0, 'opacity': 0 });
            
            $('kilometrage').set('value','0');
            $('annee').set('value','0');
        }
    }
    
    // Stockage de la hauteur de la div contenant les paramètres spécifique occasion
    $('criteres_occasion').store('height',$('criteres_occasion').getStyle('height'));  
    
    // Switchage vers le type défini par défaut avec paramètre d'initialisation à true
    switchTypeVehicule($('type_vehicule').value, true);
    

});

