/*
	PureDOM explorer 3.0
	written by Christian Heilmann (http://icant.co.uk)
	Please refer to the pde homepage for updates: http://www.onlinetools.org/tools/puredom/
	Free for non-commercial use. Changes welcome, but no distribution without 
	the consent of the author.
*/
/*  PureDOM explorer modifié 1.1 
	Modifié par Stéphane Meermans (hhtp://www.herdo.be)
	Utilisez les modifs à votre guise pour le code principal voyez avec Christian Heilmann
	Mofifications apportées :
		*	le strong ne doit plus être mis en dur dans le code html
			il est ajouté dynamiquement en détectant le href correspondant au nom de la page
		*	le menu contenant le strong reçoit également une image (ouverture/fermeture)
		*	le menu contenant le strong est refermable
		*	lorsque l'on ouvre un menu les autres se referment
		*	la classe du lien parent ouvrant le menu change lorsque l'on clique dessus
		* 	l'image d'ouverture et de fermeture n'est plus dans externe au lien parent
*/

pde={
	//classes
	pdeClass:'pde',
	hideClass:'hide',
	showClass:'show',
	parentClass:'parent',
	currentClass:'current',
	openedParent:'opened',
	closedParent:'closed',
	openMessage:'close section',
	closedMessage:'open section',
	init:function(){
	pde.activate();	
		if(!document.getElementById || !document.createTextNode){return;}
		var uls=document.getElementsByTagName('ul');
		for(var i=0;i<uls.length;i++){
		var inneruls,parentLI;
			if(!pde.cssjs('check',uls[i],pde.pdeClass)){continue;}
			var inneruls=uls[i].getElementsByTagName('ul');
			for(var j=0;j<inneruls.length;j++){
				parentLI=inneruls[j].parentNode;
				pde.cssjs('remove',parentLI.getElementsByTagName('a')[0],pde.openedParent)
				pde.cssjs('add',parentLI.getElementsByTagName('a')[0],pde.closedParent)
				if(parentLI.getElementsByTagName('strong')[0]){
					pde.cssjs('add',parentLI,pde.currentClass);
					pde.cssjs('add',parentLI,pde.parentClass);
					pde.addEvent(parentLI.getElementsByTagName('a')[0],'click',pde.showhide,false);
					parentLI.getElementsByTagName('a')[0].onclick=function(){return false;} // Safari hack
					pde.cssjs('remove',parentLI.getElementsByTagName('a')[0],pde.closedParent)
					pde.cssjs('add',parentLI.getElementsByTagName('a')[0],pde.openedParent)
					continue;
				}
				pde.cssjs('add',parentLI,pde.parentClass);
				pde.cssjs('add',inneruls[j],pde.hideClass);
				pde.addEvent(parentLI.getElementsByTagName('a')[0],'click',pde.showhide,false);
				parentLI.getElementsByTagName('a')[0].onclick=function(){return false;} // Safari hack
			}
		}
	},
	showhide:function(e){
		var img2;
		var image,message;
		var elm=pde.getTarget(e);
		var parentUl=elm.parentNode.parentNode
		var ul=elm.parentNode.getElementsByTagName('ul')[0];
		if(pde.cssjs('check',ul,pde.hideClass)){
			
			for(var j=0;j<parentUl.getElementsByTagName('ul').length;j++)
			{
			var ulJ =parentUl.getElementsByTagName('ul')[j].parentNode;
			var firstA=ulJ.getElementsByTagName('a')[0];

			message2=pde.closedMessage;
			pde.cssjs('remove',parentUl.getElementsByTagName('ul')[j],pde.showClass);	
			pde.cssjs('add',parentUl.getElementsByTagName('ul')[j],pde.hideClass);	
			
			//on repère tous les éléments a de classe openParent et on les ferme
			if(pde.cssjs('chek',firstA,pde.openedParent)!=-1)
			{
			pde.cssjs('remove',firstA,pde.openedParent);
			pde.cssjs('add',firstA,pde.closedParent);
			};
			}
			message=pde.openMessage;
			pde.cssjs('remove',elm.parentNode.getElementsByTagName('ul')[0],pde.hideClass);
			pde.cssjs('add',elm.parentNode.getElementsByTagName('ul')[0],pde.showClass);
		} else {
			message=pde.closedMessage;
			pde.cssjs('remove',elm.parentNode.getElementsByTagName('ul')[0],pde.showClass);
			pde.cssjs('add',elm.parentNode.getElementsByTagName('ul')[0],pde.hideClass);
		}
		//on switch la classe du a cliqué
		pde.cssjs('swap',elm,pde.closedParent,pde.openedParent);
		pde.cancelClick(e);
	},
/* helper methods */
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;}
		return target;
	},
	cancelClick:function(e){
		if (window.event){
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			return;
		}
		if (e){
			e.stopPropagation();
			e.preventDefault();
		}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener) 
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	cssjs:function(a,o,c1,c2){
		switch (a){
			case 'swap':
				o.className=!pde.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!pde.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			break;
			case 'remove':
				var rep=o.className.match(' '+c1)?' '+c1:c1;
				o.className=o.className.replace(rep,'');
			break;
			case 'check':
				return new RegExp("(^|\s)" + c1 + "(\s|$)").test(o.className)
			break;
		}
	},
	activate:function() {
		var path,fullPath;
			if(document.location.search) {
				fullPath = document.location.href;
				fullPathKillQueryString = fullPath.split(document.location.search);
				fullPath = fullPathKillQueryString[0];
			} else {
				fullPath = document.location.href;
			}
			fullPathCutted = fullPath.split("/");
			//adaptions by BVE to compensate for url relative to server-root
			//path = fullPathCutted.splice(0,fullPathCutted.length-1) 
			path = fullPathCutted.splice(0,3)
			path = path.join("/");
			//path += "/";
			listOfUl=document.getElementsByTagName("ul");
			for(var j =0;j<listOfUl.length;j++)
			{
				if(listOfUl[j].className=="pde")
				{
					links = listOfUl[j].getElementsByTagName("a");
					for (var i=0; i<links.length; i++) {
						if(links[i].getAttribute("href") == fullPath || (path + links[i].getAttribute("href")) == fullPath) {
							
							var a=links[i]
		
							var strong = document.createElement("strong");
							var aParentLi = links[i].parentNode;
							var text=a.childNodes.item(0).data;
							aParentLi.replaceChild(strong,a);
							var newText = document.createTextNode(text);
							strong.appendChild(newText);
							break;
						}
					}
				}
			}
	}

}
pde.addEvent(window, 'load', pde.init, false);

