jQuery.fn.extend({
	empty_option : '<option value="">&nbsp;&nbsp;&nbsp;</option>', // IE6 only <option> in <select>
	
	marques_modeles_changeType : function(){
		var selectType			=	jQuery(this);
		var selectCategorie		=	jQuery(this).parents('.marques-modeles').find('select.categorie');
		var selectMarque		=	jQuery(this).parents('.marques-modeles').find('select.marque');
		var selectModele		=	jQuery(this).parents('.marques-modeles').find('select.modele');
		var champ_nb_annonces	=	jQuery(this).parents('.marques-modeles').find('.nb_annonces');
		var submit				=	jQuery(this).parents('.marques-modeles').find('input[type=submit]');
		
		champ_nb_annonces.html('&nbsp;');
		champ_nb_annonces.addClass('loading');
		jQuery.get("/annonces/nombre/",{type: selectType.val(), id_categorie: selectCategorie.val(), id_marque: selectMarque.val(), id_modele: selectModele.val()}, 
			function(nb_annonces){
				if(nb_annonces == 0){
					submit.attr('disabled','disabled');
				}else{
					submit.removeAttr('disabled');
				}
				var html = "";
				if(nb_annonces == 0){
					html += "Aucune annonce";
				}else if(nb_annonces == 1){
					html += nb_annonces + " annonce";
				}else{
					html += nb_annonces + " annonces";
				}
				
				champ_nb_annonces.html(html);
				champ_nb_annonces.removeClass('loading');
		});
	},
	marques_modeles_changeCategorie : function(){
		var selectCategorie		=	jQuery(this);
		var selectMarque		=	jQuery(this).parents('.marques-modeles').find('select.marque');
		var selectModele		=	jQuery(this).parents('.marques-modeles').find('select.modele');
		var champ_nb_annonces	=	jQuery(this).parents('.marques-modeles').find('.nb_annonces');
		var submit				=	jQuery(this).parents('.marques-modeles').find('input[type=submit]');
		
		submit.removeAttr('disabled');
		selectMarque.css('visibility','hidden');	
		selectMarque.html(this.empty_option);
		selectModele.css('visibility','hidden');	
		selectModele.html(this.empty_option);
		champ_nb_annonces.html('&nbsp;');
		champ_nb_annonces.addClass('loading');
		jQuery.getJSON("/marque/lister/format/json",{id_categorie: selectCategorie.val(), get: 'marques'}, 
				function(j){
					if(selectMarque.hasClass('required')) {
						var options = '';
					}else {
						var options = selectMarque.empty_option;
					}
					for (var i = 0; i < j['marques'].length; i++) {
						options += '<option value="' + j['marques'][i].id + '">' + j['marques'][i].nom + '<\/option>';
					}
					selectMarque.html(options);
					jQuery("option:first", selectMarque).attr("selected","selected");
					selectMarque.css('visibility','visible');	
					if(j['marques'].length == 0){
						selectMarque.attr('disabled','disabled');
						selectModele.attr('disabled','disabled');
					}else{
						selectMarque.removeAttr('disabled');
						selectModele.removeAttr('disabled');
					}
					selectMarque.change();
				});
	},
	marques_modeles_changeMarque : function(){
		var selectCategorie		=	jQuery(this).parents('.marques-modeles').find('select.categorie');
		var selectMarque		=	jQuery(this);
		var selectModele		=	jQuery(this).parents('.marques-modeles').find('select.modele');
		var champ_nb_annonces	=	jQuery(this).parents('.marques-modeles').find('.nb_annonces');
		var submit				=	jQuery(this).parents('.marques-modeles').find('input[type=submit]');
		
		submit.removeAttr('disabled');
		selectModele.css('visibility','hidden');	
		selectModele.html(this.empty_option);
		champ_nb_annonces.html('&nbsp;');
		champ_nb_annonces.addClass('loading');
		jQuery.getJSON("/modele/lister/format/json",{id_categorie: selectCategorie.val(), id_marque: selectMarque.val(), get: 'modeles'}, function(j){
			if(selectModele.hasClass('required')) {
				var options = '';
			}else{
				var options = selectModele.empty_option;
			}
			for (var i = 0; i < j['modeles'].length; i++) {
				options += '<option value="' + j['modeles'][i].id + '">' + j['modeles'][i].nom + '<\/option>';
			}
			selectModele.html(options);
			jQuery("option:first", selectModele).attr("selected","selected");
			selectModele.css('visibility','visible');
			if(j['modeles'].length == 0){
				selectModele.attr('disabled','disabled');
			}else{
				selectModele.removeAttr('disabled');
			}
			selectModele.change();
		});
	},
	marques_modeles_changeModele : function(){
		var selectType			=	jQuery(this).parents('.marques-modeles').find('select.type');
		var selectCategorie		=	jQuery(this).parents('.marques-modeles').find('select.categorie');
		var selectMarque		=	jQuery(this).parents('.marques-modeles').find('select.marque');
		var selectModele		=	jQuery(this);
		var champ_nb_annonces	=	jQuery(this).parents('.marques-modeles').find('.nb_annonces');
		var submit				=	jQuery(this).parents('.marques-modeles').find('input[type=submit]');
		
		champ_nb_annonces.html('&nbsp;');
		champ_nb_annonces.addClass('loading');
		jQuery.get("/annonces/nombre/",{type: selectType.val(), id_categorie: selectCategorie.val(), id_marque: selectMarque.val(), id_modele: selectModele.val()}, 
			function(nb_annonces){
				if(nb_annonces == 0){
					submit.attr('disabled','disabled');
				}else{
					submit.removeAttr('disabled');
				}
				var html = "";
				if(nb_annonces == 0){
					html += "Aucune annonce";
				}else if(nb_annonces == 1){
					html += nb_annonces + " annonce";
				}else{
					html += nb_annonces + " annonces";
				}
				
				champ_nb_annonces.html(html);
				champ_nb_annonces.removeClass('loading');
		});
	}
});

jQuery(document).ready(function(){
	jQuery('.marques-modeles select.type').change(function(){ jQuery(this).marques_modeles_changeType(); });
	jQuery('.marques-modeles select.categorie').change(function(){ jQuery(this).marques_modeles_changeCategorie(); });
	jQuery('.marques-modeles select.marque').change(function(){ jQuery(this).marques_modeles_changeMarque(); });
	jQuery('.marques-modeles select.modele').change(function(){ jQuery(this).marques_modeles_changeModele(); });
});

