Index: /trunk/model/sources/dkCore/genSld/wdt/mgr/scSlideMgr.doss/scSlideMgr.js
===================================================================
--- /trunk/model/sources/dkCore/genSld/wdt/mgr/scSlideMgr.doss/scSlideMgr.js	(revision 473)
+++ /trunk/model/sources/dkCore/genSld/wdt/mgr/scSlideMgr.doss/scSlideMgr.js	(revision 477)
@@ -17,5 +17,5 @@
  * samuel.monsarrat@kelis.fr
  *
- * Portions created by the Initial Developer are Copyright (C) 2008
+ * Portions created by the Initial Developer are Copyright (C) 2009
  * the Initial Developer. All Rights Reserved.
  *
@@ -89,11 +89,9 @@
 		return this.fRatioNormalScreen;
 	},
-	/** scSlideMgr.addBindableBlk : Add a bindable block for processing by onLoad().
-	 */
+	/** scSlideMgr.addBindableBlk : Add a bindable block for processing by onLoad(). */
 	addBindableBlk : function(pPath, pOpt, pBkConstructor){
 		this.fBindBlks.push({fPath : pPath, fOpt : pOpt, fConst : pBkConstructor});
 	},
-	/** scSlideMgr.findOwnerBlk : Retrun the block that is ancestor to the specified element.
-	 */
+	/** scSlideMgr.findOwnerBlk : Retrun the block that is ancestor to the specified element. */
 	findOwnerBlk : function(pElt){
 		if (pElt == this.fBlocksRoot) return pElt;
@@ -103,5 +101,4 @@
 		return null;
 	},
-
 	/** Api scSiLib. */
 	onResizedAnc : function(pOwnerNode, pEvent) {
@@ -167,7 +164,4 @@
 		var vBaseFontSize = Math.round(this.fRatioNormalScreen * this.fDefaultFontSize);
 		document.body.style.fontSize = vBaseFontSize+"px";
-		// Quirks mode can be triggered (not shure by what) so the font-size must be fixed on all tables too.
-//		var vTables = scPaLib.findNodes("des:table");
-//		for (var i in vTables) vTables[i].style.fontSize = vBaseFontSize+"px";
 		// Adapt table col width
 		var vCols = scPaLib.findNodes("des:col");
@@ -175,6 +169,5 @@
 	},
 
-	/** scPresMgr.xReadStyle : Read a style property (inline or CSS).
-	 */
+	/** scPresMgr.xReadStyle : Read a style property (inline or CSS). */
 	xReadStyle : function(pElt, pProp, pDoc) {
 		var vDoc = pDoc || document;
@@ -198,6 +191,5 @@
 
 /* ===== SlideZoom Block class ================================================= */
-/** scSlideMgr.SldZmBlk : SlideZoom block (anchors pointing to slides that need to be opened as a zoom).
- */
+/** scSlideMgr.SldZmBlk : SlideZoom block (anchors pointing to slides that need to be opened as a zoom). */
 scSlideMgr.SldZmBlk = function(pElt, pOpt){
 	pElt.onclick = this.onClickZoom;
@@ -212,6 +204,5 @@
 /* ===== Size Block classes ================================================= */
 
-/** scSlideMgr.SizeBlk : Base size block.
- */
+/** scSlideMgr.SizeBlk : Base size block. */
 scSlideMgr.SizeBlk = function(){
 }
@@ -234,6 +225,5 @@
 }
 
-/** scSlideMgr.SizeBlkImg : Image size block.
- */
+/** scSlideMgr.SizeBlkImg : Image size block. */
 scSlideMgr.SizeBlkImg = function(pElt, pOpt){
 	//scCoLib.util.log("scSlideMgr.SizeBlkImg");
@@ -331,8 +321,6 @@
 }
 
-/** scSlideMgr.SizeBlkObj : Embeded object size block.
- */
+/** scSlideMgr.SizeBlkObj : Embeded object size block. */
 scSlideMgr.SizeBlkObj = function(pElt, pOpt){
-	//scCoLib.util.log("scSlideMgr.SizeBlkObj");
 	if(!pElt) return;
 	this.fOpt = pOpt || {};
Index: /trunk/model/sources/dkCore/genSld/wdt/mgr/scPresMgr.doss/scPresMgr.js
===================================================================
--- /trunk/model/sources/dkCore/genSld/wdt/mgr/scPresMgr.doss/scPresMgr.js	(revision 473)
+++ /trunk/model/sources/dkCore/genSld/wdt/mgr/scPresMgr.doss/scPresMgr.js	(revision 477)
@@ -17,5 +17,5 @@
  * samuel.monsarrat@kelis.fr
  *
- * Portions created by the Initial Developer are Copyright (C) 2008
+ * Portions created by the Initial Developer are Copyright (C) 2009
  * the Initial Developer. All Rights Reserved.
  *
@@ -47,19 +47,21 @@
 	fNavPath : null,
 	
+	/* Paths standards. */
 	fContainerFilter : ".ssContainer",
 	fContainerBlocksRootPath : "des:.ssBkRoot",
-	fBlkCoPath :       "des:.ssBkCo",
-	fCutableFilter :   ".ssCutable|p|ol|ul|li",
-	
+	fBlkCoPath : "des:.ssBkCo",
+	fCutableFilter : ".ssCutable|p|ol|ul|li",
+
+	/* Constantes de stylage. */
 	fSsCssName : "modeSS",
+	fSsClassPrefix : "tpl",
 
 	/* Constantes pour les animations. */
-	
 	/** Largeur mini du slide */
 	fBlockMinWidth : 500,
 	/** Ratio de marge max par rapport à la largeur du container */
-	fBlockMaxMargin : .3,
+	fBlockMaxMargin : 0.3,
 	/** Ratio d'espace libre à placer au dessus du contenu */
-	fBlockTopSpace : .3,
+	fBlockTopSpace : 0.3,
 	/** Opacité pour les masks des steps. */
 	fStepMaskOpacity : 0.9,
@@ -78,4 +80,6 @@
 	fListeners : [],
 	fToolElts : [],
+	fSldPosStyledElts : [],
+	fEnableEffects : true,
 	
 	/* Etats */
@@ -83,12 +87,16 @@
 
 	/* Localisations */
-	fStrings : {en:["previous","previous image (left arrow)",       //0
-	            "next","next image (right arrow)",                  //2
-	            "close","close the zoom (ESC)",                     //4
-	            "WARNING: The Firebug extention is active.\nIt is advisable to deactivate Firebug while viewing this slide-show",""],//6
+	fStrings : {en:["previous","previous (left arrow)",       //0
+	            "next","next (right arrow)",                  //2
+	            "close","close the zoom (ESC)",               //4
+	            "WARNING: The Firebug extention is active.\nIt is advisable to deactivate Firebug while viewing this slide-show.",""],//6
 	            fr:["Précédant","Précédant (flèche gauche)",
 	            "Suivant","Suivant (flèche droite)",
 	            "Fermer","Fermer le zoom (ESC)",
-	            "ATTENTION : L'extension Firebug est actif.\nIl est conseillé de désactiver Firebug pour visualiser ce diaporama.",""]
+	            "ATTENTION : L'extension Firebug est actif.\nIl est conseillé de désactiver Firebug pour visualiser ce diaporama.",""],
+	            es:["anterior","anterior (flecha izquierda)",
+              "siguiente","siguiente (flecha derecha)",
+              "cerrar","cerrar el zoom (ESC)",
+              "ATENCIÓN: La extensión Firebug esta activa.\nSe recomienda desactivar Firebug mientras consulte esa presentación",""]
 	            },
 
@@ -116,4 +124,6 @@
 		//Init liste elements outils
 		this.fToolElts = new Array();
+		//Init liste elements stylés avec la position actuel dans le slide-show (FirstSlide LastSlide, FirstStep, LastStep)
+		this.fSldPosStyledElts = new Array();
 
 		scOnLoads[scOnLoads.length] = this;
@@ -122,4 +132,7 @@
 		this.fContainerFilter = pContainerFilter;
 	},
+	setCutableFilter : function(pCutableFilter) {
+		this.fCutableFilter = pCutableFilter;
+	},
 	setContainerBlocksRootPath : function(pContainerBlocksRootPath) {
 		this.fContainerBlocksRootPath = pContainerBlocksRootPath;
@@ -128,7 +141,35 @@
 		this.fBlkCoPath = pBlkCoPath;
 	},
-	setCutableFilter : function(pCutableFilter) {
-		this.fCutableFilter = pCutableFilter;
-	},
+	/** Set paths of elements that constitute the zoom frame. */
+	setZoomPaths : function(pZoomFramePath,pZoomContentPath) {
+		this.fZoomFramePath = pZoomFramePath;
+		this.fZoomContentPath = pZoomContentPath;
+	},
+	/** register a path as a slide-position styled element. */
+	addSlidePositionStyledPath : function(pPath) {
+		this.fSldPosStyledElts.push(pPath);
+	},
+	/** register a listener. */
+	register : function(pType, pFunc) {
+		this.fListeners[pType].push(pFunc);
+	},
+	/** Enable / Disable auto tool hiding */
+	enableToolHider : function(pEnable) {
+		this.fToolHider = pEnable;
+		if (!pEnable) this.xShowTools();
+	},
+	/** Enable / Disable visual effects */
+	enableEffects : function(pEnable) {
+		this.fEnableEffects = pEnable;
+	},
+	/** Enable / Disable visual effects */
+	toggleEffects : function() {
+		this.fEnableEffects = ! this.fEnableEffects;
+	},
+	/** register a node as a tool (auto hidden elements). */
+	addToolElt : function(pNode) {
+		this.fToolElts.push(pNode);
+	},
+	/** Main OnLoad function called by the SCENARI framework. */
 	onLoad : function() {
 		try{
@@ -166,4 +207,5 @@
 			//Init nav bar
 			this.fNav = scPaLib.findNode(this.fNavPath);
+			this.fNav.fDefaultClass = this.fNav.className;
 			this.fNav.innerHTML = ""; // Purge the nav bar
 			this.fBtnPrv = this.xAddBtn(this.fNav, "btnPrv", this.xGetStr(0), this.xGetStr(1));
@@ -176,17 +218,25 @@
 			this.fSldHome.fSldMgr.initSld();
 			//Init zoom container
-			this.fZoom = this.xAddEltHidden("div", document.body, "tplZm");
-			this.fZoom.fSld = scPresMgr.xAddElt("div", this.fZoom, "tplZmSld");
-			this.fZoom.fCo = this.xAddElt("div", this.fZoom, "tplZmCo");
-			this.fZoom.fBtnCls = this.xAddBtn(this.fZoom, "btnZmCls", this.xGetStr(4), this.xGetStr(5));
+			this.fZoom = (this.fZoomFramePath ? scPaLib.findNode(this.fZoomFramePath) : this.xAddElt("div", document.body, null));
+			this.fZoom.className = this.fZoom.className + " "+this.fSsClassPrefix+"Zm"
+			this.fZoom.style.visibility = "hidden";
+			this.fZoom.fCo = (this.fZoomContentPath ? scPaLib.findNode(this.fZoomContentPath) : this.fZoom);
+			this.fZoom.fSld = scPresMgr.xAddElt("div", this.fZoom.fCo, this.fSsClassPrefix+"ZmSld");
+			this.fZoom.fFrg = this.xAddElt("div", this.fZoom.fCo, this.fSsClassPrefix+"ZmFrg");
+			this.fZoom.fBtnCls = this.xAddBtn(this.fZoom.fCo, "btnZmCls", this.xGetStr(4), this.xGetStr(5));
+			//Init slide-position styled elements
+			for (var i in this.fSldPosStyledElts){
+				this.fSldPosStyledElts[i] = scPaLib.findNode(this.fSldPosStyledElts[i]);
+				if (this.fSldPosStyledElts[i]) this.fSldPosStyledElts[i].fBaseClass = this.fSldPosStyledElts[i].className;
+			}
 			//Enable tool auto hiding
 			this.enableToolHider(true);
 			//Affichage du slide d'accueil (rendu instantanné)
 			this.fSwitchSldTask.initTask(this.fSldHome, "first", true);
+//			this.xUpdateSldPosStyledElts();
 			if (!scCoLib.fDebug && window.console && window.console.firebug) alert(this.xGetStr(6));
 		}catch(e){scCoLib.util.logError("ERROR scPresMgr.onLoad : ", e);}
 	},
 	loadSortKey : "A",
-
 	/** Load a slide by index id. 
 	 * @param pFromStart affiche le slide du début (true) ou de la fin (false).
@@ -195,14 +245,12 @@
 	 */
 	loadSld : function(pIdx, pFromStart, pInstantResult) {
-		//scCoLib.util.log("scPresMgr.loadSld: "+pIdx);
+		scCoLib.util.log("scPresMgr.loadSld: "+pIdx);
 		this.xResetFocus();
 		return this.xGotoSlide(pIdx, pFromStart, pInstantResult);
 	},
-
 	/** Returns the current slide. */
 	getCurrSld : function(){
 		return scPresMgr.fSwitchSldTask.fNewSld || this.fCurrSld;
 	},
-
 	/** Redessinement de la zone des slides (suite à resize notamment). */
 	redrawSlideZone : function(){
@@ -221,10 +269,8 @@
 		}
 	},
-
 	/** Show the passed ressource in the zoom. */
 	showZoom : function(pRes) {
 		return this.xShowZoom(pRes);
 	},
-
 	/** Returns true if the presentation has a next step / slide. */
 	hasNxt : function() {
@@ -234,5 +280,4 @@
 		} else return false;
 	},
-
 	/** Returns true if the presentation has a previous step / slide. */
 	hasPrv : function() {
@@ -241,20 +286,4 @@
 			return (vSld.fSldMgr.hasPrv() ? true : !vSld.fSldMgr.isFirstSld());
 		} else return false;
-	},
-
-	/** register a listener. */
-	register : function(pType, pFunc) {
-		this.fListeners[pType].push(pFunc);
-	},
-
-	/** Enable / Disable auto tool hiding */
-	enableToolHider : function(pEnable) {
-		this.fToolHider = pEnable;
-		if (!pEnable) this.xShowTools();
-	},
-
-	/** register a node as a tool (auto hidden elements). */
-	addToolElt : function(pNode) {
-		this.fToolElts.push(pNode);
 	},
 
@@ -280,5 +309,4 @@
 		return true;
 	},
-
 	/** Move back 1 step / slide.
 	 * @param pSkip if true move to beginning of previous slide.
@@ -305,6 +333,18 @@
 			this.fBtnPrv.style.visibility = (vSld.fSldMgr.hasPrv() ? "" : (!vSld.fSldMgr.isFirstSld() ? "" : "hidden"));
 		}
-	},
-	
+		this.xUpdateSldPosStyledElts();
+	},
+	/** xUpdateSldPosStyledElts */
+	xUpdateSldPosStyledElts : function() {
+		// Add slide-postion classes on registed elements if needed.
+		var vSld = this.getCurrSld();
+		if (vSld && vSld.fSldMgr) {
+			for (var i in this.fSldPosStyledElts){
+				var vNewClass = this.fSldPosStyledElts[i].fBaseClass + (vSld.fSldMgr.isFirstSld() ? " "+this.fSsClassPrefix+"FirstSlide" + (!vSld.fSldMgr.hasPrv() ? " "+this.fSsClassPrefix+"FirstStep" : "") : (vSld.fSldMgr.isLastSld() ? " "+this.fSsClassPrefix+"LastSlide" + (!vSld.fSldMgr.hasNxt() ? " "+this.fSsClassPrefix+"LastStep" : "") : ""));
+//				var vNewClass = this.fSldPosStyledElts[i].fBaseClass + (vSld.fSldMgr.isFirstSld() ? " "+this.fSsClassPrefix+"FirstSlide" + (!vSld.fSldMgr.hasPrv() ? " "+this.fSsClassPrefix+"FirstStep" : "") : "");
+				if (this.fSldPosStyledElts[i].className != vNewClass) this.fSldPosStyledElts[i].className = vNewClass;
+			}
+		}
+	},
 	/** Navigation vers un slide. 
 	 * @param pFromStart affiche le slide du début (true) ou de la fin (false).
@@ -312,5 +352,5 @@
 	 */
 	xGotoSlide : function(pIdx, pFromStart, pInstantResult) {
-		//scCoLib.util.log("scPresMgr.xGotoSlide: "+pIdx);
+		scCoLib.util.log("scPresMgr.xGotoSlide: "+pIdx);
 		try{
 			//Borne pIdx selon les limites du slide show
@@ -341,4 +381,5 @@
 						//Trouvé
 						scPresMgr.fSwitchSldTask.initTask(vSld, pFromStart? "first" : "last", pInstantResult);
+//						this.xUpdateSldPosStyledElts();
 						return true;
 					}
@@ -348,8 +389,8 @@
 				scPresMgr.fSwitchSldTask.initTask(this.xBuildSlide(pIdx), pFromStart? "first" : "last", pInstantResult);
 			}
+//			this.xUpdateSldPosStyledElts();
 			return true;
 		}catch(e){scCoLib.util.logError("ERROR scPresMgr.xGotoSlide: ",e);}
 	},
-	
 	/** Affecte le nouveau slide "stabilisé" et devient la nouvelle référence.
 	 * Gère le cache des slides en fonction de cette nouvelle position.
@@ -390,5 +431,4 @@
 		}catch(e){scCoLib.util.logError("ERROR scPresMgr.xSetCurrSlide: ",e);}
 	},
-	
 	/** Chargement d'un slide. */
 	xBuildSlide : function(pIdx) {
@@ -399,5 +439,4 @@
 		return vSld;
 	},
-	
 	/** Buttons manager. */
 	xBtnMgr : function(pBtn){
@@ -412,5 +451,4 @@
 		this.xResetFocus();
 	},
-	
 	/** Event clavier. */
 	sOnKeyUp : function(pEvent){
@@ -419,5 +457,4 @@
 		return scPresMgr.xKeyMgr(vCharCode);
 	},
-
 	/** scPresMgr.xKeyMgr */
 	xKeyMgr : function(pCharCode){
@@ -435,4 +472,6 @@
 			case 80://p
 				this.xPrv(); return false;
+			case 70://f
+				this.toggleEffects(); return false;
 			case 34://pg_dwn
 				this.xNxt(true); return false;
@@ -445,5 +484,4 @@
 		}
 	},
-
 	/** scPresMgr.xShowZoom : display the zoom window
 	 * @param pRes : resource to zoom : if it is a anchor (A) then we zoom the href as a slide otherwise we clone/import the node
@@ -454,18 +492,20 @@
 		if (!vZm.fAct){
 			vZm.fAct = true;
-			vZm.fCo.innerHTML = "";
+			vZm.fFrg.innerHTML = "";
 			vZm.fSld.innerHTML = "";
 			vZm.fSldMgr = null;
 			if (pRes.nodeName.toLowerCase() == "a") {
-				new scPresMgr.FadeEltTask(vZm.fCo,0,null,null,true);
+				new scPresMgr.FadeEltTask(vZm.fFrg,0,null,null,true);
 				new scPresMgr.FadeEltTask(vZm.fSld,1,null,null,true);
-				vZm.fSldMgr = new scPresMgr.SldZoomMgr(vZm.fSld, pRes.href,function(){new scPresMgr.FadeEltTask(scPresMgr.fZoom,1);});
+		
+				vZm.fSldMgr = new scPresMgr.SldZoomMgr(vZm.fSld, pRes.href,function(){new scPresMgr.FadeEltTask(scPresMgr.fZoom,1,this.sFadeEltStart,this.sFadeEltEnd);});
 				vZm.fSldMgr.initSld();
 			} else {
-				new scPresMgr.FadeEltTask(vZm.fCo,1,null,null,true);
+				new scPresMgr.FadeEltTask(vZm.fFrg,1,null,null,true);
 				new scPresMgr.FadeEltTask(vZm.fSld,0,null,null,true);
-				vDst = scPresUt.importDeepNode(pRes, vZm.fCo.ownerDocument, vZm.fCo);
-				new scPresMgr.FadeEltTask(vZm,1);
-			}
+				vDst = scPresUt.importDeepNode(pRes, vZm.fFrg.ownerDocument, vZm.fFrg);
+				new scPresMgr.FadeEltTask(vZm,1,this.sFadeEltStart,this.sFadeEltEnd);
+			}
+			this.fNav.className = this.fNav.fDefaultClass + " "+this.fSsClassPrefix+"NavZoom";
 		} else {
 			if (pRes.nodeName.toLowerCase() == "a") {
@@ -474,30 +514,34 @@
 				vZm.fSldMgr.initSld();
 			} else {
-				vDst = scPresUt.importDeepNode(pRes, vZm.fCo.ownerDocument, vZm.fCo);
-				new scPresMgr.FadeEltTask(vZm.fSld,0);
-				new scPresMgr.FadeEltTask(vZm.fCo,1);
+				vDst = scPresUt.importDeepNode(pRes, vZm.fFrg.ownerDocument, vZm.fFrg);
+				new scPresMgr.FadeEltTask(vZm.fSld,0,this.sFadeEltStart,this.sFadeEltEnd);
+				new scPresMgr.FadeEltTask(vZm.fFrg,1,this.sFadeEltStart,this.sFadeEltEnd);
 			}
 		}
 		return vDst;
 	},
-
 	/** scPresMgr.xHideZoom : hide the zoom window */
 	xHideZoom : function(){
 		if (this.fZoom.fAct){
 			this.fZoom.fAct = false;
-			new scPresMgr.FadeEltTask(this.fZoom, 0, null, function(){scPresMgr.fZoom.fSldMgr = null; scPresMgr.fZoom.fSld.innerHTML = ""; scPresMgr.fZoom.fCo.innerHTML = "";	scPresMgr.fNav.style.zIndex = "";});
-		}
-	},
-
+			new scPresMgr.FadeEltTask(this.fZoom, 0, this.sFadeEltStart, this.sHideZoomEnd);
+			this.fNav.className = this.fNav.fDefaultClass;
+		}
+	},
+	/** scPresMgr.sHideZoomEnd */
+	sHideZoomEnd : function(){
+		this.fElt.fSldMgr = null; 
+		this.fElt.fSld.innerHTML = "";
+		this.fElt.fFrg.innerHTML = "";
+		if (scCoLib.isIE) this.fElt.style.backgroundColor = "";
+	},
 	/** scPresMgr.xGetZoomContainer : return the zoom container */
 	xGetZoomContainer : function(){
-		return this.fZoom.fCo;
-	},
-
+		return this.fZoom.fFrg;
+	},
 	/** scPresMgr.xGetZoomSlide : return the zoom iframe container */
 	xGetZoomSlide : function(){
 		return this.fZoom.fFra;
 	},
-
 	/** scPresMgr.xResetFocus - sets the focus to the current slide. */
 	xResetFocus : function() {
@@ -510,6 +554,5 @@
 		}
 	},
-	/** scPresMgr.xNotifyListeners - calls all the listeners of a given type.
-	 */
+	/** scPresMgr.xNotifyListeners - calls all the listeners of a given type. */
 	xNotifyListeners : function(pType,pRes) {
 		//scCoLib.util.log("scPresMgr.xNotifyListeners: "+pType);
@@ -521,5 +564,4 @@
 		}
 	},
-
 	/** scPresMgr.xHideTools : tool hider */
 	xHideTools : function(){
@@ -530,5 +572,5 @@
 				for (i in this.fToolElts) {
 					try {
-						new this.FadeEltTask(this.fToolElts[i],0,this.sFadeToolsStart,this.sFadeToolsEnd);
+						new this.FadeEltTask(this.fToolElts[i],0,this.sFadeEltStart,this.sFadeEltEnd);
 					} catch(e) {scCoLib.util.logError("ERROR scPresMgr.xHideTools: ",e);}
 				}
@@ -536,5 +578,4 @@
 		}
 	},
-
 	/** scPresMgr.xShowTools : mouse event manager */
 	xShowTools : function(){
@@ -543,5 +584,5 @@
 			for (i in this.fToolElts) {
 				try {
-					new this.FadeEltTask(this.fToolElts[i],1,this.sFadeToolsStart,this.sFadeToolsEnd);
+					new this.FadeEltTask(this.fToolElts[i],1,this.sFadeEltStart,this.sFadeEltEnd);
 				} catch(e) {scCoLib.util.logError("ERROR scPresMgr.xShowTools: ",e);}
 			}
@@ -549,5 +590,4 @@
 		this.fToolsShowTime = new Date().getTime();
 	},
-
 	/** Init tous les blocks fils d'un blockRoot (du slide ou d'un container) */
 	xInitBlocks : function(pParentMgr, pBlockRoot){
@@ -570,5 +610,4 @@
 		return vResult;
 	},
-
 	/** scPresMgr.sOnClickTocLnk : TOC item onclick event */
 	sOnClickTocLnk : function(){
@@ -576,21 +615,19 @@
 		return false;
 	},
-	
 	/** scPresMgr.sMouseMgr : mouse event manager */
 	sMouseMgr : function(){
 		if (scPresMgr.fToolHider) scPresMgr.xShowTools();
 	},
-
 	/** scPresMgr.sHeartbeat : run every second. */
 	sHeartbeat : function(){
 		if (scPresMgr.fToolHider) scPresMgr.xHideTools();
 	},
-
-	/** scPresMgr.sFadeToolsStart */
-	sFadeToolsStart : function(){
-		if (scCoLib.isIE) this.fElt.style.backgroundColor = scPresMgr.xReadStyle(scPresMgr.fSldFra, "backgroundColor") || "white";
-	},
-	/** scPresMgr.sFadeToolsEnd */
-	sFadeToolsEnd : function(){
+	/** scPresMgr.sFadeEltStart */
+	sFadeEltStart : function(){
+		var vBkColor = scPresMgr.xReadStyle(scPresMgr.fSldFra, "backgroundColor") || "white";
+		if (scCoLib.isIE) this.fElt.style.backgroundColor = (vBkColor == "transparent" ? "white" : vBkColor);
+	},
+	/** scPresMgr.sFadeEltEnd */
+	sFadeEltEnd : function(){
 		if (scCoLib.isIE) this.fElt.style.backgroundColor = "";
 	},
@@ -606,5 +643,5 @@
 			if (pNxtSib) pParent.insertBefore(vFrmHolder,pNxtSib)
 			else pParent.appendChild(vFrmHolder);
-			vFrmHolder.innerHTML = "<iframe scrolling='no' frameborder='0'></iframe>";
+			vFrmHolder.innerHTML = "<iframe scrolling='no' frameborder='0' allowtransparency='true'></iframe>";
 			vElt = vFrmHolder.firstChild;
 		} else {
@@ -618,5 +655,4 @@
 		return vElt;
 	},
-
 	/** scPresMgr.xAddEltNoDisp : Add a non displayed HTML element to a parent node. */
 	xAddEltNoDisp : function(pName, pParent, pClassName) {
@@ -624,5 +660,4 @@
 		return vElt;
 	},
-
 	/** scPresMgr.xAddEltHidden : Add a hidden HTML element to a parent node. */
 	xAddEltHidden : function(pName, pParent, pClassName) {
@@ -630,5 +665,4 @@
 		return vElt;
 	},
-
 	/** scPresMgr.xAddBtn : Add a HTML button to a parent node. */
 	xAddBtn : function(pParent, pClassName, pCapt, pTitle, pNxtSib) {
@@ -648,5 +682,4 @@
 		return vBtn;
 	},
-
 	/** scPresMgr.xReadStyle : Read a style property (inline or CSS). */
 	xReadStyle : function(pElt, pProp) {
@@ -669,5 +702,4 @@
 		}
 	},
-
 	/** scPresMgr.xGetEltTop : Retrun an element's absolute top (from pRoot or the top of the page).
 	 * @param pElt start element.
@@ -684,10 +716,8 @@
 		return vY;
 	},
-
 	/** scPresMgr.xGetEltH : Retrun an element's height. */
 	xGetEltH: function(pElt) {
 		return(scCoLib.toInt(pElt.style.pixelHeight || pElt.offsetHeight));
 	},
-	
 	/** Set the opacity of a given node.
 	 * @param pRate Variable de 0 à 1.
@@ -697,5 +727,4 @@
 		else pNode.style.opacity = pRate;
 	},
-
 	/** Start the opacity of a given node.
 	 * On ajoute le filtre d'opacité sur IE.
@@ -708,5 +737,4 @@
 		pNode.style.visibility = "";
 	},
-
 	/** End the opacity of a given node.
 	 * On supprime le filtre d'opacité sur IE (évite des bugs de refresh).
@@ -720,5 +748,4 @@
 		else pNode.style.visibility = "";
 	},
-
 	/** Reteive a localized string. */
 	xGetStr: function(pStrId) {
@@ -735,11 +762,8 @@
 		fNewSld: null,
 		fStatus: null,
-		
 		fIdx: -1,
 		fRateOld: [.9, .8, .7, .5, .3, .2, .1,  0,  0,  0,  0],
 		fRateNew: [ 0,  0,  0,  0, .1, .2, .3, .5, .7, .8, .9],
-		
-		/**
-		 * Init la task pour accéder à un nouveau slide.
+		/** Init la task pour accéder à un nouveau slide.
 		 * @param pBlock block à afficher.
 		 * @param pStatus 
@@ -751,4 +775,5 @@
 			//scCoLib.util.log("fSwitchSldTask.initTask: status: "+pStatus);
 			try{
+			if (!scPresMgr.fEnableEffects) pInstantResult = true;
 			//On annule tout autre task en cours
 			scPresMgr.fSwitchStpTask.precipitateEndTask();
@@ -840,6 +865,6 @@
 				scPresMgr.xEndOpacityEffect(this.fNewSld, 1);
 			}
+			scPresMgr.xUpdateGui();
 			scPresMgr.xSetCurrSlide(this.fNewSld);
-			scPresMgr.xUpdateGui();
 			this.fNewSld = null;
 			this.fIdx = -1;
@@ -868,11 +893,8 @@
 		fNewBlock: null,
 		fStep: 0,
-		
 		fIdx: -1,
 		fRateOld: [.9, .8, .7, .5, .3, .2, .1,  0,  0,  0,  0],
 		fRateNew: [ 0,  0,  0,  0, .1, .2, .3, .5, .7, .8, .9],
-	
-		/**
-		 * init la task pour accéder à un nouveau block.
+		/** init la task pour accéder à un nouveau block.
 		 * @param pTarget Block/Step cible à afficher
 		 * 			"F" : First
@@ -885,4 +907,5 @@
 			//scCoLib.util.log("fSwitchBlkTask.initTask: "+pNewBlock);
 			try{
+			if (!scPresMgr.fEnableEffects) pInstantResult = true;
 			//On précipite le chgt de steps.
 			scPresMgr.fSwitchStpTask.precipitateEndTask();
@@ -965,7 +988,5 @@
 		/** Mask précédent qui détenait le focus. */
 		fOldMask : null,
-		
-		/**
-		 * init la task pour accéder à un nouveau step.
+		/** init la task pour accéder à un nouveau step.
 		 * @param pTargetStep Step cible à passer en focus
 		 * 			"F" : First (pInstantResult est alors forcé à true)
@@ -979,4 +1000,5 @@
 		initTask : function(pBlock, pTargetStep, pInstantResult){
 			try{
+				if (!scPresMgr.fEnableEffects) pInstantResult = true;
 				if(this.fBlockMgr) {
 					this.precipitateEndTask();
@@ -1062,6 +1084,5 @@
 			}
 			}catch(e){scCoLib.util.log("ERROR fSwitchStpTask.execTask: "+e);}
-		}
-		,
+		},
 		/** Permet de précipiter la fin de la task en cours. */
 		precipitateEndTask : function(){
@@ -1114,5 +1135,4 @@
 		var vSldMgr = this.fSldMgr;
 		scCoLib.util.log("scPresMgr.SldMgr.sOnLoadSld: "+vSldDoc.title);
-		
 		// Enable fSsCssName CSS on slide
 		var vCss = null;
@@ -1298,5 +1318,4 @@
 scPresMgr.SldZoomMgr.prototype.postOnLoad = function() {
 	scPresMgr.fSwitchBlkTask.initTask(this.fCurrBlk, this.getFirstBlock(), "F", true);
-	scPresMgr.fNav.style.zIndex = this.hasNxt() ? "100" : "";
 	this.fPostLoadFunc();
 }
@@ -1375,14 +1394,9 @@
 			}
 		}
-	} else {
-		this.fCurrStep = -1;
-	}
-	
+	} else this.fCurrStep = -1;
 	// Centre le block dans son container
 	this.xCenterBlock();
-	
 	// Resize ok
 	this.fNeedResize = false;
-
 	//On resize et redessine le block
 	scPresMgr.fSwitchBlkTask.initTask(this.fBlkNode, this.fBlkNode, "S", true);
@@ -1409,7 +1423,4 @@
 		// Flag ok
 		this.fNeedResize = false;
-
-		//scCoLib.util.log("Afetr RESIAZE : this.fTargetStepIdx: "+pTarget+" - "+this.fCurrStep);
-		//scCoLib.util.log("Afetr RESIAZE : this.fBlockMgr.fMasks: "+this.fMasks);
 	}
 	//Redraw sans animation des steps du block.
@@ -1475,5 +1486,5 @@
 	if(! this.fAllSteps || this.fAllSteps.length==0) return;
 	//On fige les dimensions du content du block
-	var vContentH = Math.max(20, vAvailH - scPresMgr.xGetEltTop(this.fBlkContent,this.fParentMgr.fBlocksRoot));
+	var vContentH = Math.max(20, vAvailH - scPresMgr.xGetEltTop(this.fBlkNode,this.fParentMgr.fBlocksRoot) - (this.fBlkNode.offsetHeight - this.fBlkContent.offsetHeight));
 	vBlkContentStyle.position = "absolute";
 	vBlkContentStyle.width = "100%";
@@ -1492,5 +1503,5 @@
 		var vTop = pNode.offsetTop;
 		var vH = vTop - vPreviousTop;
-		if(vH > vAvailH) return -1;
+		if(vH > vContentH) return -1;
 		//Malus en fonction de la profondeur de cuttable au dessus
 		var vP = pNode.parentNode;
@@ -1500,5 +1511,5 @@
 		}
 		//Malus si le dernier step devient plus petit que celui-là
-		if( vRealH - vTop < vTop - vPreviousTop) vH -= (vAvailH - (vRealH - vTop))/2;
+		if( vRealH - vTop < vTop - vPreviousTop) vH -= (vContentH - (vRealH - vTop))/2;
 		return 1000000 + vH;
 	}
@@ -1522,5 +1533,5 @@
 			vPreviousAllStepsIdx = vBestIdx;
 		}
-	} while(vBestIdx>=0 && (vRealH-vPreviousTop > vAvailH));
+	} while(vBestIdx>=0 && (vRealH-vPreviousTop > vContentH));
 	//On crée le tableau des masks
 	if(! this.fMasks) this.fMasks = [];
@@ -1601,14 +1612,10 @@
 	this.fBlkNode = pBlkContainerNode;
 	this.fBlkIdx = pBlkIdx;
-	
 	// Racine des blocks du container.
-	this.fSubBlocksRoot = scPaLib.findNode(scPresMgr.fContainerBlocksRootPathComp, this.fBlkNode);
-	
+	this.fBlocksRoot = scPaLib.findNode(scPresMgr.fContainerBlocksRootPathComp, this.fBlkNode);
 	//Fixe les dim du container
 	this.xFixContainerSize();
-	
 	//init les blocks de ce container
-	this.fSubBlocks = scPresMgr.xInitBlocks(this, this.fSubBlocksRoot);
-	
+	this.fSubBlocks = scPresMgr.xInitBlocks(this, this.fBlocksRoot);
 	// Sous-bloc en cours.
 	this.fCurrSubBlk = null;
@@ -1724,21 +1731,18 @@
 /** Hauteur disponible pour les fils de ce container. */
 scPresMgr.BlkContainerMgr.prototype.getAvailHeight = function(){
-	return this.fSubBlocksRoot.offsetHeight;
+	return this.fBlocksRoot.offsetHeight;
 }
 /** Largeur disponible pour les fils de ce container. */
 scPresMgr.BlkContainerMgr.prototype.getAvailWidth = function(){
-	return this.fSubBlocksRoot.offsetWidth;
+	return this.fBlocksRoot.offsetWidth;
 }
 /** Fixe la taille du container dans son contexte parent. */
 scPresMgr.BlkContainerMgr.prototype.xFixContainerSize = function(){
 	var vBodyH = this.fParentMgr.getAvailHeight();
-	var vTop = this.fSubBlocksRoot.offsetTop;
+	var vTop = this.fBlocksRoot.offsetTop;
 	//scCoLib.util.log("vBodyH: "+vBodyH+" - vTop"+vTop);
-	this.fSubBlocksRoot.style.height = Math.max(50, vBodyH - vTop)+"px";
+	this.fBlocksRoot.style.height = Math.max(50, vBodyH - vTop)+"px";
 	this.fNeedResize = false;
 }
-
-
-
 
 /** scPresMgr.FadeEltTask : TiLib task that fades a given element in or out.
@@ -1758,5 +1762,5 @@
 		this.fStartFunc = pStartFunc || function(){};
 		this.fEndFunc = pEndFunc || function(){};
-		if (pInstant) {
+		if (pInstant || !scPresMgr.fEnableEffects) {
 			this.terminate();
 			return;
@@ -1800,6 +1804,5 @@
 }
 
-/** scSlideMgr : scSlideMgr pour le homeSlide.
- */
+/** scSlideMgr : scSlideMgr pour le homeSlide. */
 var scSlideMgr = {
 	fDefaultFontSize : 22, // fontSize in pixels
@@ -1826,5 +1829,4 @@
 		return this.fBlocksRoot.offsetWidth;
 	},
-
 	/** Api scSiLib. */
 	onResizedAnc : function(pOwnerNode, pEvent) {
@@ -1861,6 +1863,5 @@
 }
 
-/** scPresUt : Browser dependant utility toolbox.
- */
+/** scPresUt : Browser dependant utility toolbox. */
 var scPresUt = {};
 if(scCoLib.isIE) {
