/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \
|		
|		Copyright (c) 2006 Génocentre
|		Design + HTML/CSS/DOM JavaScript : Smart Agence
|		http://www.smartagence.com/
|		
\ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */


/* ______________________[ 01 | Interactivité du menu principal (menu horizontal) ]________________________ */

/* A special thanks goes to Eric Shepherd for his ALA article about “Hybrid CSS Dropdowns”: http://www.alistapart.com/articles/hybrid/ 
and to Patrick Griffiths and Dan Webb for their htmldog.com article “Sons of Suckerfish”: http://www.htmldog.com/articles/suckerfish/ */

function SmartHover(who) {
	if (document.all&&document.getElementById&&document.getElementsByTagName&&document.getElementById(who)) {
		navRoot=document.getElementById(who);
		for (i=0;i<navRoot.childNodes.length;i++) {
			node=navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {this.className+=" over";}
				node.onmouseout=function() {this.className=this.className.replace(" over", "");}
			}
		}
	}
	SmartFocus(who);
}

function SmartFocus(who) {
	var navLnk=document.getElementById(who).getElementsByTagName("A");
	var navItm=document.getElementById(who).getElementsByTagName("LI");
	for (var n=0;n<navItm.length;n++) {
		if (navItm[n].className!="on") navItm[n].className="y";
	}
	for (var i=0;i<navLnk.length;i++) {
		navLnk[i].onfocus=function() {
			if (this.parentNode.parentNode.id==who) {
				this.parentNode.className+=" over";
			} else {
				this.parentNode.parentNode.parentNode.className+=" over";
			}
		}
		navLnk[i].onblur=function() {
			if (this.parentNode.parentNode.id==who) {
				this.parentNode.className=this.parentNode.className.replace(" over", "");
			} else {
				this.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.className.replace(" over", "");
			}
		}
	}
}


/* ______________________[ 02 | Gestion de la taille du texte d’un article ]________________________ */

function SmartSize() {
	var args=SmartSize.arguments;
	if (document.getElementById&&document.getElementById("Tplus")&&document.getElementById("Tmoins")) {
		var cibleplus=document.getElementById("Tplus");
		var ciblemoins=document.getElementById("Tmoins");
		cibleplus.onclick=function() {
			for (n=0;n<args.length;n++) {
				if (document.getElementById(args[n])) {
					var cibletxt=document.getElementById(args[n]);
					var sizestr=cibletxt.style.fontSize.substring(0,cibletxt.style.fontSize.length-2);
					var sizeinter=cibletxt.style.lineHeight.substring(0,cibletxt.style.lineHeight.length-2);
					sizestr=sizestr!=""?parseInt(sizestr):11;
					cibletxt.style.fontSize=sizestr+1+"px";
				}
			}
		}
		ciblemoins.onclick=function() {
			for (n=0;n<args.length;n++) {
				if (document.getElementById(args[n])) {
					var cibletxt=document.getElementById(args[n]);
					var sizestr=cibletxt.style.fontSize.substring(0,cibletxt.style.fontSize.length-2);
					var sizeinter=cibletxt.style.lineHeight.substring(0,cibletxt.style.lineHeight.length-2);
					sizestr=sizestr!=""?parseInt(sizestr):11;
					cibletxt.style.fontSize=sizestr-1+"px";
				}
			}
		}
	}
}


/* ______________________[ 03 | Lancement d’une impression pour les navigateurs compatibles ]________________________ */

function DirectPrint() {
	if (window.print) self.print();
}


/* ______________________[ 04 | Miscellaneous ]________________________ */

function OpenPopup(url,nom,option) {
	window.open(url,nom,option);
}


/* ______________________[ 05 | Ouverture de fenêtre compatible XHTML 1.0 Strict ]________________________ */

function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors=document.getElementsByTagName("a");
	for (var i=0;i<anchors.length;i++) {
		var anchor=anchors[i];
		if (anchor.getAttribute("href")&&anchor.getAttribute("rel")=="external") anchor.target="_blank";
	}
}


/* ______________________[ 06 | Gestion de l’ouverture/fermeture d’une liste « <dl/> » ]________________________ */

function SmartDL() {
	var args=SmartDL.arguments;
	for (n=0;n<args.length;n+=2) {
		var ClickFx=args[n+1];
		if (document.getElementById&&document.getElementById(args[n])) {
			var root=document.getElementById(args[n]).getElementsByTagName("DT");
			for (a=0;a<root.length;a++) {
				if (root[a].nodeName=="DT"&&root[a].className!="on") {
					if (root[a].nextSibling.nodeName=="DD") {var Sister=root[a].nextSibling;}
					else if (root[a].nextSibling.nextSibling.nodeName=="DD") {var Sister=root[a].nextSibling.nextSibling;}
					Sister.className="off";
				}
				if (root[a].nodeName=="DT"&&root[a].className=="on") {
					if (root[a].nextSibling.nodeName=="DD") {var Sister=root[a].nextSibling;}
					else if (root[a].nextSibling.nextSibling.nodeName=="DD") {var Sister=root[a].nextSibling.nextSibling;}
					Sister.className="on";
				} 
			}
			for (a=0;a<root.length;a++) {
				if (root[a].nodeName=="DT") {SmartOpenClose(root[a],root[a],ClickFx);}
			}
		}
	}
}

function SmartOpenClose(who,Brothers,ClickFx) {
	if (who.nextSibling.nodeName=="DD") {var Sister=who.nextSibling;}
	else if (who.nextSibling.nextSibling.nodeName=="DD") {var Sister=who.nextSibling.nextSibling;}
	if (ClickFx==1) {
		who.onclick=function() {
			who.className=who.className=="on"?"off":"on";
			Sister.className=Sister.className=="on"?"off":"on";
		}
	} else {
		who.onclick=function() {
			for (a=0;a<who.parentNode.childNodes.length;a++) {
				if (who.parentNode.childNodes[a].nodeName=="DT") {who.parentNode.childNodes[a].className="";}
				else if (who.parentNode.childNodes[a].nodeName=="DD") {who.parentNode.childNodes[a].className="off";}
			}
			AllDT=who.parentNode.getElementsByTagName("DT");
			AllDD=who.parentNode.getElementsByTagName("DD");
			for (b=0;b<AllDT.length;b++) {
				AllDT[b].className="off";
			}
			for (c=0;c<AllDD.length;c++) {
				AllDD[c].className="off";
			}
			who.className="on";
			Sister.className=(Sister.className=="on"||Sister.className==" on")?"":"on";
		}
	}
}


/* ______________________[ 07 | Lancement des scripts : méthode dite « Unobtrusive JavaScript » ]________________________ */

window.onload=function() {
	SmartHover("NavigationPrincipale");
	SmartSize("ColA","ColB","ColC","ColD","ColMenu","ColContenu","ColContextuel");
	SmartDL("FAQ",0);
	externalLinks();
}


/* ______________________[ 08 | Plan du site ]________________________ */

/*
aqtree3clickable.js

Converts an unordered list to an explorer-style tree, with clickable
icons

To make this work, simply add one line to your HTML:
<script type="text/javascript" src="aqtree3clickable.js"></script>

and then make the top UL of your nested unordered list of class
"aqtree3clickable".

That's it. No registration function, nothing.

http://www.kryogenix.org/code/browser/aqlists/

Stuart Langridge, November 2002
sil@kryogenix.org

Inspired by Aaron's labels.js (http://youngpup.net/demos/labels/) and Dave Lindquist's menuDropDown.js (http://www.gazingus.org/dhtml/?id=109)

*/

addEvent(window, "load", makeTreesC);

function makeTreesC() {
    // We don't actually need createElement, but we do
    // need good DOM support, so this is a good check.
    if (!document.createElement) return;
    
    uls = document.getElementsByTagName("ul");
    for (uli=0;uli<uls.length;uli++) {
        ul = uls[uli];
        if (ul.nodeName == "UL" && ul.className == "treeview") {
            processULELC(ul);
        }
    }
    
}

function processULELC(ul) {
    if (!ul.childNodes || ul.childNodes.length == 0) return;
    // Iterate LIs
    for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
        var item = ul.childNodes[itemi];
        if (item.nodeName == "LI") {
            // Iterate things in this LI
            var a;
            var subul;
	    subul = "";
            for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
                var sitem = item.childNodes[sitemi];
                switch (sitem.nodeName) {
                    case "A": a = sitem; break;
                    case "UL": subul = sitem; 
                               processULELC(subul);
                               break;
                }
            }
            if (subul) {
                associateELC(a,subul);
            } else {
                a.parentNode.className = "aq3bullet";
            }
        }
    }
}

function associateELC(a,ul) {
    if (a.parentNode.className.indexOf('aq3open') == -1)
      a.parentNode.className = 'aq3closed';
    a.onclick = function () {
        this.parentNode.className = (this.parentNode.className=='aq3open') ? "aq3closed" : "aq3open";
        return false;
    }
}

/* tout afficher / tout masquer */


function affichage(element) 
	{
		var uls = document.getElementsByTagName('ul');
		var el=document.getElementById(element);
		var ef=el.childNodes;
		var nclose="Tout masquer";
		var nopen="Tout afficher";
		
		for (b=0;b<el.lastChild.childNodes.length;b++) {
			if (el.lastChild.childNodes[b].nodeName=="A")
			{
				el.lastChild.childNodes[b].firstChild.data=el.lastChild.childNodes[b].firstChild.data==nopen?nclose:nopen;
				el.lastChild.childNodes[b].blur();
			}
		}
		
		for(var i = 0; i < uls.length; ++i) 
		{
			if (uls[i].className=='treeview')
			{
				uls[i].style.display=uls[i].style.display=="none"?"block":"none";
			}
		}
		var lis = document.getElementsByTagName('li');
		for(var i = 0; i < lis.length; ++i) 
		{
				lis[i].className = (lis[i].className=='aq3bullet') ? "aq3bullet" : "aq3open";
		}
	}

/*              Utility functions                    */

function addEvent(obj, evType, fn){
  /* adds an eventListener for browsers which support it
     Written by Scott Andrew: nice one, Scott */
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
  } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
	return false;
  }
}


