/* global variables */

var sep= ",";

var section; /* liste de num séparés par une virgule, représentant les menus qui seront ouverts */
if(section == null) section = "";

/* just a bit of browser sniffing is necessary. */
var ie = (document.all) ? true: false;
var isWin = (navigator.platform.indexOf("Win") != -1) ? true : false;
var ieWin = (ie && isWin) ? true : false;
var ieWin50 = (isWin && navigator.appVersion.indexOf('MSIE 5.0') != -1) ? true : false;


/* the menu open/close function. */
function togglemenu(num)
{
	/* set local variables. */
	var submenu = "sub"+num;
	var square = "sq"+num;

	/* Set the display style to "none" if the value is null */
	if (document.getElementById(submenu).style.display == null)
		document.getElementById(submenu).style.display = "none";

	/* The toggle section.
	If the value of the submenu element's display is "none",
	then it's set to "block"; if the value is "block", it's set to "none".
	The plus/minus GIF is also reset accordingly.
	*/

	var menusOuverts = GetCookie("menusOuverts");
	if(menusOuverts==null)menusOuverts="";

	if (document.getElementById(submenu).style.display != "block")
	{
		document.getElementById(submenu).style.display = "block";
		document.getElementById(square).src = "/images/minus.gif";

		var newMenusOuverts = "";
		if(menusOuverts.length ==0) menusOuverts = num;
		else
		{
			var tmpMenusOuverts = menusOuverts;
			if(tmpMenusOuverts.substring(0, 1) != sep) tmpMenusOuverts = sep + tmpMenusOuverts;
			if(tmpMenusOuverts.substring(tmpMenusOuverts.length-1, tmpMenusOuverts.length) != sep) tmpMenusOuverts = tmpMenusOuverts + sep;

			if(tmpMenusOuverts.indexOf(sep+num+sep)==-1)
				menusOuverts = menusOuverts + "," + num;
		}
		SetCookie("menusOuverts", menusOuverts);
	}
	else
	{
		document.getElementById(submenu).style.display = "none";
		document.getElementById(square).src = "/images/plus.gif";

		var index=-1;
		var indexCourant = 0;

		do
		{
			index = menusOuverts.indexOf(sep, indexCourant);

			/* Si l'id à retirer est à la fin de la chaine ou si la chain est vide */
			if(index ==-1) {
				if(indexCourant > 1) menusOuverts = (menusOuverts.substring(0, indexCourant-1));
				else menusOuverts = "";
				SetCookie("menusOuverts", menusOuverts);
			}

			/* Si l'id à retirer est au début ou dans la chaine */
			else
			{
				var tmp = (menusOuverts.substring(indexCourant, index));
				if(tmp == num)
				{
					var before = menusOuverts.substring(0, indexCourant -1);
					var after = menusOuverts.substring(index, menusOuverts.length);
					menusOuverts = before + after;

					if(menusOuverts.substring(0, 1) == sep) menusOuverts = menusOuverts.substring(1, menusOuverts.length);
					if(menusOuverts.substring(menusOuverts.length-1, menusOuverts.length) == sep) menusOuverts = menusOuverts.substring(0, menusOuverts.length-1);

					SetCookie("menusOuverts", menusOuverts);
					index = -1;
				}
				else indexCourant = index +1;
			}
		} while(index != -1);
	}
}


/* Get all the elements with a given class name */
function getElementsByClassName(tagname, classname)
{
	/* only execute in 5+ browsers. */
	if (!document.getElementById) return false;

	/* get all elements with the tag name tagname. */
	var TagElements = document.getElementsByTagName(tagname);

	/* define an array which will hold the elements with the class name classname. */
	var elementsByClassName = new Array();

	/* Look at all the elements in TagElements, and find the ones with the class name classname. */
	for (i=0; i<TagElements.length; i++)
	{
		if (TagElements[i].className == classname)
		{
			elementsByClassName[elementsByClassName.length] = TagElements[i];
		}
	}
	return elementsByClassName;
}


function changeclassstyle(tagname,classname,styleproperty,newstyle)
{
	var tochange = getElementsByClassName(tagname,classname);
  for (k=0; k < tochange.length; k++)
  {
    eval("tochange[k].style." + styleproperty + " = " + "'" + newstyle + "'");
  }
}


function changecursor(num)
{
	var square = "sq" + num;
	if (ieWin50) var cursorstyle = 'hand';
	else var cursorstyle = 'pointer';
	document.getElementById(square).style.cursor = cursorstyle;
}


function init()
{
	if (document.getElementById)
	{
		changeclassstyle('div','sousMenuB','display','none');
		changeclassstyle('td','pic','display','none');

		var num = GetCookie("menusOuverts");
		if(num ==null) num="";
		if (num.length == 0) num = section;
		else num = GetCookie("menusOuverts");

		if (num.length > 0)
		{
			var index=-1;
			do
			{
				index = num.indexOf(sep, 0);
				if(index ==-1) togglemenu(num);
				else togglemenu(num.substring(0, (index)));
				num = num.substring((index+1), num.length);
			} while(index != -1);
		}
	}
}


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;
	while (i<clen)
	{
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) return getCookieVal (j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) break;
	}
	return null;
}
