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

	
	// Constantes Sliders
    var step_budget			= 500;
    var budget_max 			= 75000;
    
    var step_kilometrage	= 5000;
    var step_annee			= 1;
	
	// Déclaration des events liés au select
    $('famille').addEvent('change',function(){     
    	$('gamme').value = 0;
    	$('marque').value = 0;
    	$('ville').value = 0;
    	$('annee').value = 0;
    	$('kilometrage').value = 0;
    	get_datas(["gamme", "marque"]);
    });
    $('gamme').addEvent('change',function(){
    	$('marque').value = 0;
    	get_datas(["marque"]);
    });
    $('marque').addEvent('change',function(){                     
    	get_datas([]);
    });  
    $('ville').addEvent('change',function(){                     
    	get_datas([]);
    });
    $('annee').addEvent('change',function(){                     
    	get_datas([]);
    });  
    $('kilometrage').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','+ de 75000');
	        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').set('value',roundValue(pos.minpos, step_budget)+'#1000000');
	        else
	            $('budget').set('value',roundValue(pos.minpos, step_budget)+"#"+roundValue(pos.maxpos, step_budget));
	        
	        get_datas([]);
        }
	}, $('slider_0_knob_right'));
    
    if($('budget').value != ''){
        var budget = $('budget').value.split("#");

        slider_budget.setMin(Number(budget[0]));
        slider_budget.setMax(Number(budget[1]));                  
    }
    else{
        slider_budget.setMin(0);
        slider_budget.setMax(75000);
    }
    
    /**
     * 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,
			famille: 	$('famille').value,
			gamme:		$('gamme').value,
			marque:		$('marque').value,
			budget:		$('budget').value,
			ville:		$('ville').value,
			annee:		$('annee').value,
			kilometrage:$('kilometrage').value
			
		};
		
		new Request.JSON({
            url:'recherche_loisir/get_data_loisir.php',
            data: datas,
            onComplete: function(response){
            	to_update.each(function(item){
            		
            		if(item == "famille"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Toutes les familles"}).inject($(item));
            			
            			response['famille'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            		else if(item == "gamme"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Toutes les gammes"}).inject($(item));
            			
            			response['gamme'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            		else if(item == "marque"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Toutes les marques"}).inject($(item));
            			
            			response['marque'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            		else if(item == "ville"){
            			$(item).empty();
            			new Element('option',{'value':"0", 'html':"Concessions"}).inject($(item));
            			
            			response['ville'].each(function(option){
            				new Element('option',{'value':option, 'html':option}).inject($(item));           				
            			});
               		}
            	});
                
            	$('boutonresult').set('value', (response['nombre'] < 2) ? "Cliquez ici pour voir le "+response['nombre']+" résultat" : "Cliquez ici pour voir les "+response['nombre']+" résultats");
			}
        }).send();
	};

	// On récupère la famille préset par php
	var	selected_value = $('famille').value;
	// Si celle-ci est nulle alors = à "toutes"
	selected_value = (selected_value != '') ? selected_value : '0';
	// Selection de la vignette correspondante (ou rien si "toutes)
    display_selected_famille_vehicule( selected_value.replace(' ','') );
	
	$('bouton_campingcar').addEvent('click', function(){
		display_selected_famille_vehicule("campingcar");
		$('famille').value = "CAMPING CAR";
		$('famille').fireEvent('change');
	});
	$('bouton_caravane').addEvent('click', function(){
		display_selected_famille_vehicule("caravane");
		$('famille').value = "CARAVANE";
		$('famille').fireEvent('change');
	});
	$('bouton_mobilhome').addEvent('click', function(){
		display_selected_famille_vehicule("mobilhome");
		$('famille').value = "MOBIL HOME";
		$('famille').fireEvent('change');
	});
	
	function display_selected_famille_vehicule(selected){
	
		$('campingcar_on').setStyle('display', 'none');
		$('caravane_on').setStyle('display', 'none');
		$('mobilhome_on').setStyle('display', 'none');
	
		$('campingcar_off').setStyle('display', 'inline');
		$('caravane_off').setStyle('display', 'inline');
		$('mobilhome_off').setStyle('display', 'inline');
		
		if(selected.toLowerCase() != '0'){
			$(selected.toLowerCase()+'_on').setStyle('display', 'inline');
			$(selected.toLowerCase()+'_off').setStyle('display', 'none');
		}
		
	}

	/**
	 * 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){
        	display_selected_famille_vehicule('0');
        	$('famille').value = 0;
        	$('gamme').value = 0;
        	$('marque').value = 0;
            slider_budget.setMin(0);
            slider_budget.setMax(budget_max);
            $('ville').value = 0;
            $('annee').value = 0;
            $('kilometrage').value = 0;
        	get_datas(["gamme", "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);
    

});

