Index: admin/js/common.js
===================================================================
--- admin/js/common.js	(revision 3)
+++ admin/js/common.js	(revision 131)
@@ -6,5 +6,5 @@
 			handler.apply(this, arguments);
 			if (existingFunction)
-				existingFunction.apply(this, arguments); 
+				existingFunction.apply(this, arguments);
 		};
 	})(handlerName in obj ? obj[handlerName] : null);
@@ -45,5 +45,5 @@
 				else
 					range = trparent.prevUntil('#'+dotclear.lastclicked);
-				
+
 				range.find('input[type=checkbox]').setChecked(dotclear.lastclickedstatus);
 				this.checked = dotclear.lastclickedstatus;
@@ -57,5 +57,5 @@
 }
 
-jQuery.fn.toggleWithLegend = function(target,s) {
+jQuery.fn.toggleWithLegend = function(target,s, callback) {
 	var defaults = {
 		img_on_src: dotclear.img_plus_src,
@@ -71,22 +71,22 @@
 	};
 	var p = jQuery.extend(defaults,s);
-	
+
 	if (!target) { return this; }
-	
+
 	var set_cookie = p.hide ^ p.reverse_cookie;
 	if (p.cookie && jQuery.cookie(p.cookie)) {
 		p.hide = p.reverse_cookie;
 	}
-	
-	var toggle = function(i,speed) {
+
+	var toggle = function(i,speed, callback) {
 		speed = speed || 0;
 		if (p.hide) {
 			$(i).get(0).src = p.img_on_src;
 			$(i).get(0).alt = p.img_on_alt;
-			target.hide(speed);
+			target.hide(speed, callback);
 		} else {
 			$(i).get(0).src = p.img_off_src;
 			$(i).get(0).alt = p.img_off_alt;
-			target.show(speed);
+			target.show(speed, callback);
 			if (p.fn) {
 				p.fn.apply(target);
@@ -94,5 +94,5 @@
 			}
 		}
-		
+
 		if (p.cookie && set_cookie) {
 			if (p.hide ^ p.reverse_cookie) {
@@ -102,8 +102,8 @@
 			}
 		}
-		
+
 		p.hide = !p.hide;
 	};
-	
+
 	return this.each(function() {
 		var i = document.createElement('img');
@@ -117,14 +117,14 @@
 			outline: 'none'
 		});
-		
+
 		var ctarget = p.legend_click ? this : a;
-		
+
 		$(ctarget).css('cursor','pointer');
 		$(ctarget).click(function() {
-			toggle(i,p.speed);
-			return false;
-		});
-		
-		
+			toggle(i,p.speed, callback);
+			return false;
+		});
+
+
 		toggle($(i).get(0));
 		$(this).prepend(' ').prepend(a);
@@ -136,5 +136,5 @@
 		return this;
 	}
-	
+
 	var p = {
 		img_on_src: dotclear.img_plus_src,
@@ -156,5 +156,5 @@
 		return false;
 	};
-	
+
 	var sizeBox = function() {
 		This.css('height','auto');
@@ -163,10 +163,10 @@
 		}
 	};
-	
+
 	var textToggler = function(o) {
 		var i = $('<img src="'+p.img_on_src+'" alt="'+p.img_on_alt+'" />');
 		o.css('cursor','pointer');
 		var hide = true;
-		
+
 		o.prepend(' ').prepend(i);
 		o.click(function() {
@@ -188,18 +188,18 @@
 		});
 	};
-	
+
 	this.addClass('help-box');
 	this.find('>hr').remove();
-	
+
 	this.find('h3').each(function() { textToggler($(this)); });
 	this.find('h3:first').nextAll('*:not(h3)').hide();
 	sizeBox();
-	
+
 	var img = $('<span id="help-button">'+dotclear.msg.help+'</span>');
 	var select = $();
 	img.click(function() { return toggle(); });
-	
+
 	$('#content').append(img);
-	
+
 	return this;
 };
@@ -209,5 +209,5 @@
 var dotclear = {
 	msg: {},
-	
+
 	hideLockable: function() {
 		$('div.lockable').each(function() {
@@ -217,5 +217,5 @@
 				this.disabled = true;
 				$(this).width(($(this).width()-14) + 'px');
-				
+
 				var imgE = document.createElement('img');
 				imgE.src = 'images/locker.png';
@@ -224,5 +224,5 @@
 				imgE.style.left = ($(this).width()+4)+'px';
 				$(imgE).css('cursor','pointer');
-				
+
 				$(imgE).click(function() {
 					$(this).hide();
@@ -233,5 +233,5 @@
 					$(current_lockable_div).find('p.form-note').show();
 				});
-				
+
 				$(this).parent().css('position','relative');
 				$(this).after(imgE);
@@ -239,5 +239,5 @@
 		});
 	},
-	
+
 	checkboxesHelpers: function(e) {
 		var a = document.createElement('a');
@@ -249,7 +249,7 @@
 		};
 		$(e).append(a);
-		
+
 		$(e).append(document.createTextNode(' - '));
-		
+
 		a = document.createElement('a');
 		a.href='#';
@@ -260,7 +260,7 @@
 		};
 		$(e).append(a);
-		
+
 		$(e).append(document.createTextNode(' - '));
-		
+
 		a = document.createElement('a');
 		a.href='#';
@@ -272,10 +272,10 @@
 		$(e).append(a);
 	},
-	
+
 	postsActionsHelper: function() {
 		$('#form-entries').submit(function() {
 			var action = $(this).find('select[name="action"]').val();
 			var checked = false;
-			
+
 			$(this).find('input[name="entries[]"]').each(function() {
 				if (this.checked) {
@@ -283,20 +283,20 @@
 				}
 			});
-			
+
 			if (!checked) { return false; }
-			
+
 			if (action == 'delete') {
 				return window.confirm(dotclear.msg.confirm_delete_posts.replace('%s',$('input[name="entries[]"]:checked').size()));
 			}
-			
+
 			return true;
 		});
 	},
-	
+
 	commentsActionsHelper: function() {
 		$('#form-comments').submit(function() {
 			var action = $(this).find('select[name="action"]').val();
 			var checked = false;
-			
+
 			$(this).find('input[name="comments[]"]').each(function() {
 				if (this.checked) {
@@ -304,11 +304,11 @@
 				}
 			});
-			
+
 			if (!checked) { return false; }
-			
+
 			if (action == 'delete') {
 				return window.confirm(dotclear.msg.confirm_delete_comments.replace('%s',$('input[name="comments[]"]:checked').size()));
 			}
-			
+
 			return true;
 		});
@@ -323,5 +323,5 @@
 		this.form.submit();
 	});
-	
+
 	var menu_settings = {
 		img_on_src: dotclear.img_menu_off,
@@ -331,21 +331,25 @@
 	}
 	$('#blog-menu h3:first').toggleWithLegend($('#blog-menu ul:first'),
-		$.extend({cookie:'dc_blog_menu',hide:false,reverse_cookie:true},menu_settings)
+		$.extend({cookie:'dc_blog_menu',hide:false,reverse_cookie:true},menu_settings),
+		positionFooter
 	);
 	$('#system-menu h3:first').toggleWithLegend($('#system-menu ul:first'),
-		$.extend({cookie:'dc_system_menu'},menu_settings)
+		$.extend({cookie:'dc_system_menu'},menu_settings),
+		positionFooter
 	);
 	$('#plugins-menu h3:first').toggleWithLegend($('#plugins-menu ul:first'),
-		$.extend({cookie:'dc_plugins_menu'},menu_settings)
+		$.extend({cookie:'dc_plugins_menu'},menu_settings),
+		positionFooter
 	);
 	$('#favorites-menu h3:first').toggleWithLegend($('#favorites-menu ul:first'),
-		$.extend({cookie:'dc_favorites_menu'},menu_settings)
+		$.extend({cookie:'dc_favorites_menu'},menu_settings),
+		positionFooter
 	);
-	
+
 	$('#help').helpViewer();
-	
+
 	$('.message').backgroundFade({sColor:'#cccccc',eColor:'#666666',steps:20});
 	$('.error').backgroundFade({sColor:'#f5e5e5',eColor:'#e5bfbf',steps:20});
-	
+
 	$('form:has(input[type=password][name=your_pwd])').submit(function() {
 		var e = this.elements['your_pwd'];
@@ -359,4 +363,32 @@
 		return true;
 	});
+
+
+	// Sticky footer
+	positionFooter();
+	function positionFooter() {
+		$("#wrapper").css({ overflow: "auto" });
+		var page_height = $("#top").height() + $("#wrapper").height() - $("#footer").height();
+		if( page_height < $(window).height() ){
+			// calcul de la largeur
+			var page_width = $(document).width() - 30;
+			$("#footer").css({
+				position: "absolute",
+				bottom: "10px",
+				width: page_width+"px",
+				padding: ".75em 0",
+				marginbottom: "0"
+			});
+		} else {
+			$("#footer").css({
+				position: "static",
+				padding: ".75em 0",
+				width: "auto",
+			});
+		}
+
+	}
+	$(window).resize(positionFooter);
+
 });
 
Index: admin/style/default.css
===================================================================
--- admin/style/default.css	(revision 116)
+++ admin/style/default.css	(revision 131)
@@ -135,5 +135,5 @@
 }
 #info-box a img, #info-box2 a img {
-	vertical-align: middle; 
+	vertical-align: middle;
 	padding-left: .3em;
 	}
@@ -217,5 +217,5 @@
 
 /* favoris en haut */
-#fav-add { 
+#fav-add {
 	position: absolute;
 	top: 3.5em;
@@ -226,5 +226,5 @@
 	clear: both;
 	padding: .75em 2em;
-	margin: 6em 1em .5em 1em;
+	margin: 6em 15px .5em 15px;
 	-webkit-border-radius: .3em;
 	-moz-border-radius: .3em;
@@ -243,5 +243,5 @@
 }
 #footer p span.credit {
-	font-size: .85em; 
+	font-size: .85em;
 	font-weight: normal;
 }
@@ -996,5 +996,5 @@
 }
 .dragable tbody td {
-	
+
 }
 .handle {
@@ -1111,5 +1111,5 @@
 p.field {
 	position: relative;
-	
+
 }
 p.field label {
@@ -1177,9 +1177,9 @@
 }
 /* commun */
-input[type=submit], 
-input[type=reset], 
-input[type=button], 
+input[type=submit],
+input[type=reset],
+input[type=button],
 a.button,
-a.button.add, 
+a.button.add,
 a.back {
 	display: inline-block;
@@ -1190,5 +1190,5 @@
 	padding: .1em .75em .1em;
 	text-shadow: 0 1px 1px rgba(0,0,0,.3);
-	-webkit-border-radius: .2em; 
+	-webkit-border-radius: .2em;
 	-moz-border-radius: .2em;
 	border-radius: .2em;
@@ -1196,5 +1196,5 @@
 }
 /* validation */
-input[type=submit], 
+input[type=submit],
 input[type=button],
 a.button.add {
@@ -1205,9 +1205,9 @@
 	background: -moz-linear-gradient(top,  #2C8FD1,  #2373A8);
 }
-input[type=submit]:hover, 
-input[type=reset]:hover, 
+input[type=submit]:hover,
+input[type=reset]:hover,
 input[type=button]:hover,
-input[type=submit]:focus, 
-input[type=reset]:focus, 
+input[type=submit]:focus,
+input[type=reset]:focus,
 input[type=button]:focus,
 a.button.add:hover,
@@ -1220,7 +1220,7 @@
 }
 /* suppression et reset */
-a.button, 
-a.back, 
-input[type=submit].reset, 
+a.button,
+a.back,
+input[type=submit].reset,
 input[type=submit].delete {
 	border: 1px solid #999;
@@ -1231,11 +1231,11 @@
 	text-shadow: none;
 	}
-a.button:hover, 
-a.back:hover, 
-input[type=submit].reset:hover, 
+a.button:hover,
+a.back:hover,
+input[type=submit].reset:hover,
 input[type=submit].delete:hover,
-a.button:focus, 
-a.back:focus, 
-input[type=submit].reset:focus, 
+a.button:focus,
+a.back:focus,
+input[type=submit].reset:focus,
 input[type=submit].delete:focus {
 	background: #e5e5e5;
