/**
 * Effectue les actions à mener au chargement de la page
 */


/*******************************************************************************/
var my_tablist = new Tablist();

function toto() {
	this.values = new Array();
	this.id = new Array();
}

function toto_set(id, value) {
	for(var i = 0; i < this.id.length; i++) {
		if(this.id[i] == id) {
			this.values[i] = value;
		}
	}
}

function toto_get(id) {
	for(var i = 0; i < this.id.length; i++) {
		if(this.id[i] == id) {
			return this.values[i];
		}
	}
}

function toto_create(id) {
	this.values[this.values.length] = 0;
	this.id[this.id.length] = id;
}

toto.prototype.set = toto_set;
toto.prototype.get = toto_get;
toto.prototype.create = toto_create;

my_toto = new toto;


window.onload = function () {
	my_tablist.attach("tabzone", "subtabzone", "panelzone");
	
	var firstTab = new Tab("Accueil","home");
	firstTab.onBeforeClose = function() { alert("Cet onglet ne peut pas être fermé !"); return false; };
	firstTab.displayContent = function() {
		var content = 	"<h2>Qu'est ce qu'AjaxTabs ?</h2>\n";
		content +=		"<p>AjaxTabs est une bibliothèque Javascript/Ajax permettant d'implémenter un système de navigation par onglets au sein d'un site.</p>";
		content +=		"<p>AjaxTabs possède notamment les fonctionnalités suivantes :</p>";
		content +=		"<ul><li><p>Possibilité d'intégrer plusieurs onglets imbriqués ou non dans la page,</p></li>";
		content +=		"<li><p>Comportement des onglets entièrement personnalisable, onglet par onglet, grâce aux gestionnaires d'événements intégrés,</p></li>";
		content +=		"<li><p>Préchargement des onglets et mise en cache du contenu,</p></li>";
		content +=		"<li><p>Utilisable avec n'importe quelle technologie serveur (PHP, J2EE, ASP, Phython, Perl...),</p></li>";
		content +=		"<li><p>100% compatible Internet Explorer 6, Firefox et Mozilla,</p></li>";
		content +=		"<li><p>Entièrement compatible XHTML 1.1, personnalisation totale de l'interface par feuilles de style CSS.</li></ul>";
		content +=		"<p style=\"text-align:center;\"><a href=\"#\" class=\"downloadlink\" onclick=\"my_tablist.change(my_tablist.getTabById('download').element); return false;\">Télécharger AjaxTabs</a>";
		content +=		" <a href=\"#\" class=\"doclink\" onclick=\"my_tablist.change(my_tablist.getTabById('doc').element); return false;\">Consulter la documentation</a></p>";
		content +=		"<h4 style=\"margin-bottom:0;\">Note au sujet de la démo</h4>";
		content +=		"<p>Afin de présenter les fonctions de préchargement et de cache des données, le serveur retarde l'envoi des données de quelques secondes. Alors ne vous étonnez pas si les onglets mettent quelques secondes à s'afficher :)</p>";		
		
		deleteChildren(my_tablist.panelContainer);
		my_tablist.panelContainer.innerHTML = content;
	}
	my_tablist.append(firstTab);
	
	var secondTab = new Tab("Télécharger", "download");
	secondTab.onBeforeClose = function() { alert("Cet onglet ne peut pas être fermé !"); return false; };
	secondTab.displayContent = function() {
		var content = 	"<h2>Télécharger AjaxTabs</h2>\n";
		content += 	"<p>Le fichier zip contient la bibliothèque JavaScript intégrée dans un exemple complet.</p>\n";
		content += 	"<p><a href=\"http://www.lesitedemika.org/scripts/ajaxtabs/ajaxtabs_v_0_99.zip\" class=\"downloadlink\">Télécharger AjaxTabs</a> (fichier ZIP, 8Ko)</p>\n";
		content += 	"<p>Note : ce script est en version 0.99 - autrement dit : &quot;ça marche mais c'est pas propre&quot;. Pour une version 1.0 propre, attendez un petit peu ;)\n";
		deleteChildren(my_tablist.panelContainer);
		my_tablist.panelContainer.innerHTML = content;
	}
	my_tablist.append(secondTab);	
	
	var thirdTab = new Tab("Documentation", "doc");
	thirdTab.onBeforeClose = function() { alert("Cet onglet ne peut pas être fermé !"); return false; };
	thirdTab.displayContent = function() {
		var content = 	"<h2>Documentation</h2>\n<p>Disponible prochainement (on l'espère) !</p><p>En attendant la doc, vous pouvez vous baser sur l'exemple (largement commenté) fourni dans le zip.";
		deleteChildren(my_tablist.panelContainer);
		my_tablist.panelContainer.innerHTML = content;
	}
	my_tablist.append(thirdTab);

	var fourthTab = new Tab("Retour au site", "back");
	fourthTab.onBeforeClose = function() { alert("Cet onglet ne peut pas être fermé !"); return false; };
	fourthTab.displayContent = function() {
		window.location = "../index.php";
	}
	my_tablist.append(fourthTab);
	
	my_tablist.draw();

	my_tablist.change(firstTab.element);
	
	insereAlaFin();
};


function CreeUnTab() {
	
	//crée un tab portant le nom et l'id de sa position
	var my_tab1 = new Tab("tab"+my_tablist.tabs.length, "newtab"+my_tablist.tabs.length );
	
	//préloadé si on a déja chargé sa valeur sur le serveur
	my_tab1.isPreloaded = function() { if(my_toto.get(this.id) != 0) return true; else return false;};
	
	//si non préloadé, chargement de sa valeur sur le serveur
	my_tab1.loadContent = function() {
		
		deleteChildren(my_tablist.panelContainer);
		my_tablist.panelContainer.appendChild(document.createTextNode("Chargement des données, veuillez patienter..."));
		
		var instance = this;
		var a = Async.get();
		a.complete = function() {
		
			my_toto.set(instance.id, a._xmlhttp.responseText);
			//anti bug : permet de gérer l'affichage
			//si l'onglet a changé entre temps
			if(! my_tablist.tabs[my_tablist.activeTab].isPreloaded()) {
				my_tablist.tabs[my_tablist.activeTab].loadContent();				
			} else {
				my_tablist.tabs[my_tablist.activeTab].displayContent();
			}
		};
		a.call("server.php?tab="+this.name);		
	};
	
	//si chargé, affiche sa valeur
	my_tab1.displayContent = function() { 
		deleteChildren(my_tablist.panelContainer);
		my_tablist.panelContainer.appendChild(document.createTextNode(my_toto.get(this.id)));
	};

	my_toto.create(my_tab1.id);
	
	return my_tab1;
}


function insereAlaFin() {
	var my_tab1 = CreeUnTab();
	my_tablist.append(my_tab1);
	my_tablist.draw();		
}

function supprimeLeCourant() {
	my_tablist.close(my_tablist.tabs[my_tablist.activeTab]);
	my_tablist.draw();	
}

function supprimeLeDernier() {
	my_tablist.close(my_tablist.tabs[my_tablist.tabs.length-1]);
	my_tablist.draw();	
}

