// Pour le cookie
var pathname, myDomain, date_exp;
// Pour les bookmarks
var tabValeursBookmarksTitre, tabValeursBookmarksUrl, tabValeursBookmarks, strValeursBookmarks;
var tabValeursBookmarksMaxLength = 12;
var bookmarkZone, formBookmark;

var ici = new String(document.location);
var test = ((ici.indexOf ("?test") != -1) ? 1 : 0);

// Supprime les espaces à gauche
function leftTrim(sString)
{
	while (sString.substring(0,1) == " ")
	{
		sString = sString.substring(1, sString.length);
	}
	return (sString);
}

// Supprime les espaces à droite
function rightTrim(sString)
{
	while (sString.substring(sString.length-1, sString.length) == " ")
	{
		sString = sString.substring(0,sString.length-1);
	}
	return (sString);
}

// Supprime les espaces à droite et à gauche
function trim (sString)
{
	return (leftTrim (rightTrim (sString)));
}

// Renvoie la hauteur de la fenètre
function getWindowHeight()
{
	var windowHeight = 0;
	if (typeof(window.innerHeight) == "number")
	{
		windowHeight = window.innerHeight;
	}
	else
	{
		if (document.documentElement && document.documentElement.clientHeight)
		{
			windowHeight = document.documentElement.clientHeight;
		}
		else
		{
			if (document.body && document.body.clientHeight)
			{
				windowHeight = document.body.clientHeight;
			}
		}
	}
	return windowHeight;
}

// Renvoie la position d'un objet en abscisse
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft+= obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft+= obj.x;
	return curleft;
}

// Renvoie la position d'un objet en ordonnée
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop+= obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

// Centre la zone de contenu
function centreContenu ()
{
	var diffHauteurContenu = 30;
	var diffHauteurContenu2 = 0;
	var bookmark = document.getElementById ("bookmark");
	var tabLiens = bookmark.getElementsByTagName ("a");
	var lastLien = tabLiens [tabLiens.length - 1];
	var headerBas = findPosY (lastLien) + lastLien.offsetHeight;
	var contenu = document.getElementById ("contenu");
	var contenuHauteur = contenu.offsetHeight;
	var footer = document.getElementById ("footer");
	var footerHaut = findPosY (footer);
	var marge = (footerHaut - headerBas - contenuHauteur) / 2;
	marge+= diffHauteurContenu;
	if (document.all)
	{
		marge+= diffHauteurContenu2;
	}
	contenu.style.marginTop = marge + "px";
}

// Positionne le footer
function setFooter()
{
	if (document.getElementById)
	{
		var windowHeight = getWindowHeight();
		if (windowHeight > 0)
		{
			var contentHeight = document.getElementById("wrapper1").offsetHeight;
			var footerElement = document.getElementById("footer");
			var diffHeight = windowHeight - contentHeight;
			if (diffHeight > 0 )
			{
				footerElement.className = "shortPage";
				centreContenu ();
			}
		}
	}
}
// Stocke une valeur dans un cookie
function setCookie (name, value)
{
	var argv = setCookie.arguments;
	var argc = setCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString ())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
}

function getCookieVal (offset)
{
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring (offset, endstr));
}
function getCookie (name)
{
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	var resultat = "";
	while (i < clen)
	{
		var j = i+alen;
		if (document.cookie.substring (i, j) == arg)
			resultat = getCookieVal (j);
		i = document.cookie.indexOf (" ",i) + 1;
		if (i == 0)
			break;
	}
	return (resultat);
}
function getCookieBookmark ()
{
	strValeurBookmarks = new String (getCookie ("bookmarks"));
	var reg = new RegExp ("[|]+", "g");
	tabValeursBookmarks = strValeurBookmarks.split (reg);
	if (tabValeursBookmarks.length == 1)
	{
		tabValeursBookmarks = new Array ();
	}
	tabValeursBookmarksTitre = new Array ();
	tabValeursBookmarksUrl = new Array ();
	for (var i = 0; i < tabValeursBookmarks.length; i+= 2)
	{
		tabValeursBookmarksTitre.push (tabValeursBookmarks [i]);
		tabValeursBookmarksUrl.push (tabValeursBookmarks [i + 1]);
	}
}
function setCookieBookmark ()
{
	tabValeursBookmarks = new Array ();
	for (var i = 0; i < tabValeursBookmarksTitre.length; i++)
	{
		tabValeursBookmarks.push (tabValeursBookmarksTitre [i]);
		tabValeursBookmarks.push (tabValeursBookmarksUrl [i]);
	}
	strValeurBookmarks = tabValeursBookmarks.join ("|");
	pathname="/";
	myDomain="www.toulon.org";
	date_exp = new Date();
	date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));
	setCookie ("bookmarks", strValeurBookmarks,date_exp,pathname,myDomain);
}
function creeBookmarksListe ()
{
	// 1 Création de la liste
	var liste = document.createElement ("ul");
	for (i = 0; i < tabValeursBookmarksTitre.length; i++)
	{
		var titre = tabValeursBookmarksTitre [i];
		var url = tabValeursBookmarksUrl [i];
		numCol = i % 3 + 1;
		var listeItem = document.createElement ("li");
		listeItem.className = "col" + numCol;
		var lien = document.createElement ("a");
		lien.href = url;
		lien.title = titre;
		lien.target = "_blank";
		var lienTexte = document.createTextNode (titre);
		var lienDel = document.createElement ("a");
		lienDel.href = "javascript:deleteBookmark (" + i + ");";
		lienDel.title = "Supprimer ce raccourci";
		lienDel.className = "memo_del";
		var lienDelImg = document.createElement ("img");
		lienDelImg.src = "http://www.toulon.org/images/icone_del.png";
		lienDelImg.alt = "Supprimer ce raccourci";
		lien.appendChild (lienTexte);
		lienDel.appendChild (lienDelImg);
		listeItem.appendChild (lien);
		listeItem.appendChild (lienDel);
		liste.appendChild (listeItem);
	}
	// 2 Ajout du lien "ajouter" si le nombre de liens l'autorise
	if (i < tabValeursBookmarksMaxLength)
	{
		numCol = i % 3 + 1;
		var listeItem = document.createElement ("li");
		listeItem.className = "col" + numCol;
		var lien = document.createElement ("a");
		lien.href = "#";
		lien.title = "Pour ajouter un raccourci, cliquez ici";
		lien.className = "memo_add";
		var lienTexte = document.createTextNode ("Ajouter un raccourci");
		lien.appendChild (lienTexte);
		listeItem.appendChild (lien);
		liste.appendChild (listeItem);
	}
	// 3 Ajout à la page
	bookmarkZone = document.getElementById ("bookmark");
	var tabListes = bookmarkZone.getElementsByTagName ("ul");
	for (var i = 0; i < tabListes.length; i++)
	{
		var liste2 = tabListes [i];
		bookmarkZone.removeChild (liste2);
	}
	bookmarkZone.appendChild (liste);
}
// Initialisation du formulaire de bookmark
function initFormBookmark ()
{
	var i, numCol;

	// 1 Vérifier le cookie
	pathname=location.pathname;
	myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
	date_exp = new Date();
	date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));
	getCookieBookmark ();
	
	// 2 Créer la liste correspondante
	creeBookmarksListe ();
	
	// 4 Activer le lien memo_add
	formBookmark = document.getElementById ("form_bookmark");
	var tabLiens = bookmarkZone.getElementsByTagName ("a");
	for (var i = 0; i < tabLiens.length; i++)
	{
		var lien = tabLiens [i];
		if (lien.className == "memo_add")
		{
			lien.onclick = function ()
			{
				if (formBookmark.className == "on")
				{
					formBookmark.className = "off";
				}
				else
				{
					formBookmark.className = "on";
					document.getElementById ("bookmark_titre").focus();
					var x = findPosX (this);
					var y = findPosY (this) + this.offsetHeight;
					formBookmark.style.left = x + "px";
					formBookmark.style.top = y + "px";
				}
			}
		}
	}
	// 4b Gérer les frappes de touche dans les champs du formulaire
	var tabInputs = bookmarkZone.getElementsByTagName ("input");
	for (var i = 0; i < tabInputs.length; i++)
	{
		var input = tabInputs [i];
		input.onkeypress = checkenter;
	}
	
	// 5 Gérer le formulaire
	formBookmark.onsubmit = myBookmarkSubmit;
	
	// 6 Valider ou invalider les liens d'ajout de raccourci dans le corps de la page
	var contenu = document.getElementById ("contenu");
	var tabLiens = contenu.getElementsByTagName ("a");
	for (var i = 0; i < tabLiens.length; i++)
	{
		var lien = tabLiens [i];
		var className = new String (lien.className);
		if (className.indexOf ("memo_add") != -1)
		{
			if (tabValeursBookmarksTitre.length < tabValeursBookmarksMaxLength)
			{
				lien.className = "memo_add on";
			}
			else
			{
				lien.className = "memo_add off";
			}
		}
	}
}
// Vérification de la frappe de caractères
function checkenter (e)
{
	var keycode;
	if (window.event)
		keycode = window.event.keyCode;
	else if (e)
		keycode = e.which;
	if (keycode == 13)
	{
		myBookmarkSubmit ();
	}
}
// Enregistrement des bookmarks
function myBookmarkSubmit ()
{
	var titre = new String (document.getElementById ("bookmark_titre").value);
	var url = new String (document.getElementById ("bookmark_url").value);
	titre = trim (titre);
	url = trim (url);
	document.getElementById ("bookmark_titre").value = titre;
	document.getElementById ("bookmark_url").value = url;
	if ((titre != "") && (url != ""))
	{
		document.getElementById ("bookmark_titre").value = "";
		document.getElementById ("bookmark_url").value = "";
		addBookmark (titre, url);
	}
	else
	{
		if (titre == "")
		{
			document.getElementById ("bookmark_titre").focus ();
		}
		else
		{
			document.getElementById ("bookmark_url").focus ();
		}
	}
	
	return (false);
}
// Effacement de bookmark
function deleteBookmark (index)
{
	var newTabValeursBookmarksTitre, newTabValeursBookmarksUrl;
	newTabValeursBookmarksTitre = tabValeursBookmarksTitre.slice (0, index);
	newTabValeursBookmarksTitre = newTabValeursBookmarksTitre.concat (tabValeursBookmarksTitre.slice (index + 1, tabValeursBookmarksTitre.length));
	tabValeursBookmarksTitre = newTabValeursBookmarksTitre;
	newTabValeursBookmarksUrl = tabValeursBookmarksUrl.slice (0, index);
	newTabValeursBookmarksUrl = newTabValeursBookmarksUrl.concat (tabValeursBookmarksUrl.slice (index + 1, tabValeursBookmarksUrl.length));
	tabValeursBookmarksUrl = newTabValeursBookmarksUrl;
	
	// Stocker la nouvelle valeur dans les cookies
	setCookieBookmark ();
	
	// La récupérer et la traiter
	initFormBookmark ();

}
// Ajout de bookmark
function addBookmark (titre, url)
{
	var urlStarter = new String ("http://");
	if (url != "")
	{
		// Mettre le "http" au besoin
		if (url.indexOf (urlStarter) == -1)
		{
			url = urlStarter.concat (url);
		}
		// Stocker dans les tableaux et cacher le formulaire
		tabValeursBookmarksTitre.push (titre);
		tabValeursBookmarksUrl.push (url);
		formBookmark.className = "off";
		
		// Stocker la nouvelle valeur dans les cookies
		setCookieBookmark ();
		
		// La récupérer et la traiter
		initFormBookmark ();
	}
}
// Initialisation de la page
function initAll ()
{
	initFormBookmark ();
	setFooter ();
}
window.onload=initAll;