//AA    js/aaM.js   #17 2010.09.18  
/*  **** ** ** ***	Archevéché d'Avignon ***************************************
    2010.09.18 JPG  #17 : Placé en OP les images de références des bullets 
    **** ** ** ***	************************************************************
*/

aaM={ //////////////////////////////////////////////////////////////////////////
	
	clssNT: "aaMinit",	clssSH: "aaMshow",	clssHD: "aaMhide",   
	
	imgSH : "http://diocese-avignon.fr/spip/squelettes/img/aaMshow.gif" , // #17
	imgHD : "http://diocese-avignon.fr/spip/squelettes/img/aaMhide.gif" , // #17
	msgSH : "Fermer la rubrique" ,             msgHD : "Ouvrir la rubrique" ,	

	trace :  false,  nt : 1,  sh : 2,  hd : 3,

	//
	init:function(){ 
		var idTop = "aaMenu" ; 
		//
	//	aaM.trace = confirm ("test JPG - aaM.js du 12009/12/21" ) ;
		if (! document.getElementById (idTop) ) return true ;
		var divs = document.getElementById(idTop).getElementsByTagName('div') ; 
		for (var j=0; j<divs.length ; j++) {
			var e = divs[j].previousSibling ;
			while (e.nodeName !="P") {e = e.previousSibling ;} 
	//		if (aaM.trace) aaM.trace = confirm (j + "/  initJPG divs.calss  = " 
	//                               + divs[j].className +"  " +e.nodeName) ;	
	//		if (aaM.trace) aaM.trace = confirm (j + "/  initJPG divs.calss  = " 
	//                               + divs[j].className +"  " +e.nodeName+"  "
    //								 + e.getAttribute("src")) ;	
			e = e.getElementsByTagName('img')[0] ;
			var statut  ;
			if      (aaM.cssjs("check", divs[j], aaM.clssHD )) {statut=aaM.hd ;}
			else if (aaM.cssjs("check", divs[j], aaM.clssSH )) {statut=aaM.sh ;}
			else                                               {statut=aaM.nt ;}
			aaM.set_bullet(e,statut) ; 
			aaM.addEvent(e,'click',aaM.handler,false);
			e.onclick=function(){return false;} // Safari hack
		}
		return false ; // rappel : code d'erreur avec (false =)0 = OK !
	} ,
	
	set_bullet:function (e,statut) {
	//   e : élément <img>  du "bullet"
		var image ; var message ; 		 
		//
		switch (statut) { 
			case aaM.hd : message=aaM.msgHD; image=aaM.imgHD ; break ;
		    case aaM.sh : message=aaM.msgSH; image=aaM.imgSH ; break ; 
		    case aaM.nt : message=aaM.msgHD; image=aaM.imgHD ; 
		}
	//	if (aaM.trace) aaM.trace = confirm ( statut+ 
	//	                         + "  " +image + " "+ message) ;
		e.setAttribute(  'src',image  );
		e.setAttribute(  'alt',message);
		e.setAttribute('title',message);		
	},
	
	NTtoHD:function (e) {
		var divs = e.getElementsByTagName('div') 
		for (var j=0; j<divs.length ; j++) {
			if (aaM.cssjs( "check", divs[j], aaM.clssNT)) {
				aaM.cssjs('remove', divs[j], aaM.clssNT);
				aaM.cssjs(   'add', divs[j], aaM.clssHD); 
			//	NTtoHD (divs[j]) ;
			}
		}
	},
	
	handler:function(e) {
	//   e  : élément <img> du "bullet" supportant l'évènement
	//  div : élément <DIV> supportant le statut et à modifier 
		//
		var bltimg = window.event ? window.event.srcElement : e ? e.target : null;
		aaM.cancelClick(e); 	// pourquoi attendre ?
		//	//
				var t=bltimg; 
				do {t = t.nextSibling; } while ("A" != t.nodeName);
				t = t.firstChild ; 
				var txt = t.nodeValue   //replace(/^\s+|\s+$/g, '') ;
			//	alert (txt) ;
		//	//
		var div=bltimg.parentNode ;
		do {div=div.nextSibling;} while (div.nodeName != "DIV");
		// echange des classes dans le <DIV>
		var statut ;
		if 	(	 aaM.cssjs( "check", div, aaM.clssHD)) { 
				 aaM.cssjs('remove', div, aaM.clssHD); 
				 aaM.cssjs(   'add', div, aaM.clssSH); 
				 statut = aaM.sh ;
		}
		else if (aaM.cssjs( "check", div, aaM.clssSH)) {
		         aaM.cssjs('remove', div, aaM.clssSH); 
			     aaM.cssjs(   'add', div ,aaM.clssHD);
				 statut = aaM.hd ;
		}
		else  {  aaM.cssjs('remove', div, aaM.clssNT); 
				 aaM.cssjs(   'add', div, aaM.clssSH); 
				 statut = aaM.sh ;
				 aaM.NTtoHD(div) ; 
		}
		// modification du bullet 
		aaM.set_bullet(bltimg, statut) ;			
	} ,

/* helper methods --------------------------------------------------------------- */

	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){
		switch (a){
			case 'add':
				if(!aaM.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)
		}
	}
}
aaM.addEvent(window, 'load', aaM.init, false);

