/**
 * Variables contenant les références aux structures de fenêtres du contenu
 * des différents onglets.
 */
var tabExempleSAW;
var tabBrowserSAW;
var tabConsoleSAW;
var recipeCodeSAW;


/**
 * Crée la disposition initiale de l'interface.
 */
function packUI() {
	//sizeTabPanes();
	
	// Calcul de la hauteur et de la largeur du contenu d'un onglet.
	var bodyEle = document.getElementById("tab-pane-1");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;
	
	tabExempleSAW.pack(wOutCont, hOutCont);

	// Disposer le deuxième onglet.
	pack_tabPane2(false)	
}

function pack_tabPane2(force) {
	// Calcul de la hauteur et de la largeur du contenu d'un onglet.
	var bodyEle = document.getElementById("tab-pane-2");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;

	tabBrowserSAW.pack(wOutCont, hOutCont, force);
	tabConsoleSAW.pack(wOutCont, hOutCont, force);
}

/**
 * Redimensionne l'interface en fonction de la fenêtre du navigateur.
 */
function resizeUI() {
	//sizeTabPanes();

	// Calcul de la hauteur et de la largeur du contenu d'un onglet.
	var bodyEle = document.getElementById("tab-pane-1");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;
	
	tabExempleSAW.resize(wOutCont, hOutCont, false);

	resize_tabPane2();
}	

function resize_tabPane2() {
	// Calcul de la hauteur et de la largeur du contenu d'un onglet.
	var bodyEle = document.getElementById("tab-pane-2");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;
	
	tabBrowserSAW.resize(wOutCont, hOutCont, false);
	tabConsoleSAW.resize(wOutCont, hOutCont, false);
}

/**
 * Gestion de l'ouverture du document. On crée les différents div de
 * l'interface à onglets.
 */
window.onload = function() {
	//window.resizeTo(800, 600);
	
	// S'assurer que les onglets sont bien créés.
	setupAllTabs();

	// Créer la fenêtre pour l'onglet Exemple.
	tabExempleSAW = new SAWindow2("container-book2-tab",
								  "book2-window",  "tabExample",
					 		 	  "book2-menu",    "tabExampleMenu",
						 		  "book2-content", "tabExampleContent",
								  SAWindow2.STATIC_TOP);
	tabExempleSAW.addToTop("tabExampleMenuCont");

	recipeCodeSAW = new SAWindow2("book2-content",
							  "sub2-window", "recipeMainPanel",
				 		 	  "sub2-top",    "recipeTocDesc",
					 		  "sub2-bottom", "recipeExec",
							  SAWindow2.RESIZE_VERTICAL);
	recipeCodeSAW.setTopMin(40);
	recipeCodeSAW.setBotMin(90);
	recipeCodeSAW.addToTop("book2-toppanel");
	recipeCodeSAW.addToBot("book2-botpanel");
	recipeCodeSAW.addSubPack(pack_tabPane2);
	recipeCodeSAW.addSubResize(resize_tabPane2);


	// Créer la fenêtre pour l'onglet Browser.
	tabBrowserSAW = new SAWindow2("container-browser-tab",
								  "browser-window",  "tabBrowser",
					 		 	  "browser-menu",    "tabBrowserMenu",
						 		  "browser-content", "tabBrowserContent",
								  SAWindow2.STATIC_TOP);
	tabBrowserSAW.addToTop("tabBrowserMenuCont");


	// Créer la fenêtre pour l'onglet Console.
	tabConsoleSAW = new SAWindow2("container-console-tab",
								  "console-window",  "tabConsole",
					 		 	  "console-menu",    "tabConsoleMenu",
						 		  "console-content", "tabConsoleContent",
								  SAWindow2.STATIC_TOP);
	tabConsoleSAW.addToTop("tabConsoleMenuCont");
								  
								  
	// Construire l'interface.
	packUI();
	
	// Lire le contenu du livre.
	var book = new SABook("CTMCP");
	book.loadXML("book");
	book.toHTMLToc(document.getElementById("book2-toc"), document.getElementById("book2-recipe"));
	
	// Vider la zone de saisie du code (FF garde le texte si on appuie sur Actualiser).
	clearCodeEntry();
	
	//
	helloOz();
}

/**
 * Vider la zone de saisie du code .
 */
function clearCodeEntry() {
	var c = document.getElementById("codeEntry");
	c.value = "";
}

/**
 * Redimensionner les différents onglets lorsque la fenêtre du navigateur
 * est redimensionnée.
 */
window.onresize = function() {
	resizeUI();
}

/**
 *
 */
function onlyRecipe() {
	recipeCodeSAW.repack(SAWindow2.ONLY_TOP);
}
function onlyCode() {
	recipeCodeSAW.repack(SAWindow2.ONLY_BOTTOM);
}
function showBoth() {
	recipeCodeSAW.repack(SAWindow2.RESIZE_VERTICAL);
}


/**
 * Callbacks de TabPane.
 */
function tabPaneHide(ele) {

	var bodyEle = document.getElementById("tab-pane-1");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;

	// On sauvegarde la taille actuelle de l'onglet qui va être masqué.
	if (ele.id == "container-book2-tab" && tabExempleSAW)
		tabExempleSAW.saveSize(wOutCont, hOutCont);

	var bodyEle = document.getElementById("tab-pane-2");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;

	// On sauvegarde la taille actuelle de l'onglet qui va être masqué.
	if ((ele.id == "container-book2-tab" || ele.id == "container-browser-tab") && tabBrowserSAW)
		tabBrowserSAW.saveSize(wOutCont, hOutCont);
	if ((ele.id == "container-book2-tab" || ele.id == "container-console-tab") && tabConsoleSAW)
		tabConsoleSAW.saveSize(wOutCont, hOutCont);
}


function tabPaneShow(ele) {

	var bodyEle = document.getElementById("tab-pane-1");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;

	// On pack le contenu de l'onglet qui va être affiché. Si cela avait déjà été fait, 
	// pack() ne le refait pas. Dans ce cas, on synchronise la fenêtre avec la nouvelle 
	// taille potentielle du navigateur.
	if (ele.id == "container-book2-tab" && tabExempleSAW) {
		if (!tabExempleSAW.pack(wOutCont, hOutCont)) {
			tabExempleSAW.resize(wOutCont, hOutCont, true);
		}
	}
	
	var bodyEle = document.getElementById("tab-pane-2");
	var wOutCont = bodyEle.offsetWidth;
	var hOutCont = bodyEle.offsetHeight;
	var rowCont = document.getElementById("tab-row");
	hOutCont -= rowCont.offsetHeight;

	// On pack le contenu de l'onglet qui va être affiché. Si cela avait déjà été fait, 
	// pack() ne le refait pas. Dans ce cas, on synchronise la fenêtre avec la nouvelle 
	// taille potentielle du navigateur.
	if ((ele.id == "container-book2-tab" || ele.id == "container-browser-tab") && tabBrowserSAW) {
		if (!tabBrowserSAW.pack(wOutCont, hOutCont)) {
			tabBrowserSAW.resize(wOutCont, hOutCont, true);
		}
	}
	if ((ele.id == "container-book2-tab" || ele.id == "container-console-tab") && tabConsoleSAW) {
		if (!tabConsoleSAW.pack(wOutCont, hOutCont)) {
			tabConsoleSAW.resize(wOutCont, hOutCont, true);
		}
	}


}
