;(function($){
	
	dsg.fn.quickSearch = function(sRemoteUrl){
		
		var jQuickSearch = $(".main .box-quick-search");
		var jForm = jQuickSearch.find("form");
		var jSelects = jForm.find("select");
		var jSelectsActions = jSelects.filter(":lt(3)");
		var jSubmit = jForm.find("p.submit span");
		
		jSelects
		.bind("enable", function(){
			$(this).removeAttr("disabled");
		})
		.bind("disable", function(){
			$(this).attr("disabled","disabled");
		});
		
		jSubmit.bind("disable", function(){
			jSubmit.addClass("disabled");
			jForm.submit(function(e){
				e.preventDefault();
			});
		})
		.bind("enable", function(){
			jSubmit.removeClass("disabled");
			jForm.unbind("submit");
		}).trigger("disable");
		
		jSelects.not(jSelectsActions).change(function(){
			
			var sCurValue = $(this).val();
			
			if ( sCurValue != "null" ) {
				jSubmit.trigger("enable");
			}
			
		});
		
		jSelectsActions.change(function(){
			
			var jSelect = $(this);
			var jNextSelect = jSelect.nextAll("select").slice(0,1);
			
			var sCurValue = jSelect.val();
			
			if ( sCurValue != "null" ) {
				
				jSelect.parent(":first").nextAll("p").removeClass("checked")
				.find("select").trigger("disable");
				
				jSubmit.trigger("disable");
				
				jSelect.parent(":first").removeClass("checked").addClass("loading");
				
				// Chargement AJAX
				$.getJSON(sRemoteUrl,{
						type: jSelect.attr("name"),
						id: sCurValue
					},
					function(data){
						if ( !(jSelect.get(0) === jSelects.get(0)) ){
							jSubmit.trigger("enable");
						}
						
						jSelect.parent(":first").removeClass("loading").addClass("checked");
						$.each(data, function(key, value){
							jSelects.filter("[name="+ key +"]").html(getSelectContent(value)).trigger("enable");
						});
						
					}
				);
				
			} else {
				jSelect.parent(":first").removeClass("checked");
				if (!jSelect.parent().is("p:nth-child(4)")) {
					jSelect.parent(":first").nextAll("p").removeClass("checked")
					.find("select").trigger("disable");
					jSubmit.trigger("disable");
				}
			}
			
		});
		
		function getSelectContent(data) {
			
			var nextOpts = "";
			$.each(data, function(val, label){
				nextOpts += '<option value="'+ val +'">'+ label +'</option>';
			});
			
			return nextOpts;
		};
		
		jSelectsActions.slice(1,3).add(jSelects.slice(-1)).trigger("disable");
		
	};
	
	dsg.fn.initHomeboxes = function(){
		
		$(".main div.box-home h2").click(function(){
			$(this).find("span").toggleClass("btn-expanded").end().next().find("p.visual, ul").toggle();
		})
		
		.append('<span class="btn" role="button"></span>')
		
		.find("a").click(function(e){
			e.preventDefault()
		});
	};
})(jQuery);