function SiteMapManager(mParam){this.moduleName="SiteMap Manager";this.moduleVersion="2.1";this.mParam=mParam;this.sSiteMapContainer=null;this.olToggleSwitch={isUsed:false,sContainerID:""};this.olTitleFolding={isUsed:false,sTag:""};this.olTreeStyles={sTree:"treeview",sNormal:"aq3bullet",sClosed:"aq3closed",sOpened:"aq3open"};this.aTitleTargets=[];this.aTargets=[];this.isDOM=document.createElement&&document.getElementById;this.isOk=false;this.oDOMUtils=DOMUtils;this.bHideAllByDefault=true;this.sLocale="fr";this.aLocalizedLabels=new Array("fr","en");this.aLocalizedLabels["fr"]=new Array("Afficher le niveau","Masquer le niveau","Afficher le sous-niveau","Masquer le sous-niveau","Tout afficher","Tout masquer");this.aLocalizedLabels["en"]=new Array("Display level","Hide level","Display sublevel","Hide sublevel","Display all","Hide all");this.getLang=function(){var sLang="";var oHTML=document.getElementsByTagName("html")[0];if(oHTML.lang&&oHTML.lang=="en"){sLang=oHTML.lang}else{sLang="fr"}return sLang};this.toString=function(){return this.moduleName+' '+this.moduleVersion};this.setHideAllByDefault=function(bValue){this.bHideAllByDefault=bValue;return this};this.setToggleSwitch=function(isUsed,sContainerID){if(isUsed){this.olToggleSwitch.isUsed=isUsed}if(sContainerID!==""){this.olToggleSwitch.sContainerID=sContainerID}return this};this.setTitleFolding=function(isUsed,sTag){if(isUsed){this.olTitleFolding.isUsed=isUsed}if(sTag!==""){this.olTitleFolding.sTag=sTag}return this};this.setTreeStyles=function(olParams){this.olTreeStyles=olParams;return this};return this};SiteMapManager.prototype.apply=function(){this.sLocale=this.getLang();this.isOk=(typeof this.mParam==="object"?true:(document.getElementById(this.mParam)?true:false));if(this.isDOM&&this.isOk){if(typeof this.mParam==="object"){this.sSiteMapContainer=this.mParam}else{this.sSiteMapContainer=document.getElementById(this.mParam)}this.makeTreesClickable();this.addToggleSwitch()}else if(!this.isDOM){alert("Your browser seems not to support DOM enough. Script execution halted.")}else{alert("Sitemap container #"+this.sSiteMapContainer+" not found ! Script execution halted.")}};SiteMapManager.prototype.makeTreesClickable=function(){var aUL=this.sSiteMapContainer.getElementsByTagName("UL");var index=0;if(this.olTitleFolding.isUsed){this.applyTitleFolding()}for(index=0;index<aUL.length;index++){aUL[index].className=(aUL[index].className!=""?aUL[index].className+" "+this.olTreeStyles.sTree:this.olTreeStyles.sTree);this.processList(aUL[index])}};SiteMapManager.prototype.processList=function(oUL){if(oUL.childNodes&&oUL.childNodes.length>0){for(var index=0;index<oUL.childNodes.length;index++){var oItem=oUL.childNodes[index];if(oItem.nodeName=="LI"){var oLink=null;var oChildUL=null;for(var index2=0;index2<oItem.childNodes.length;index2++){var oSubItem=oItem.childNodes[index2];switch(oSubItem.nodeName){case"A":oLink=oSubItem;break;case"SPAN":oLink=oSubItem;break;case"UL":oChildUL=oSubItem;oChildUL.parentNode.setAttribute("id",this.getRandomID("smartMap_",2));if(this.bHideAllByDefault){this.aTargets[oItem.id]=oItem.removeChild(oChildUL)}this.processList(oChildUL);break}}if(oChildUL){this.associateLinkToList(oLink)}else{oLink.parentNode.className=(oLink.parentNode.className==""?this.olTreeStyles.sNormal:oLink.parentNode.className+" "+this.olTreeStyles.sNormal)}}}}};SiteMapManager.prototype.associateLinkToList=function(oLink){if(oLink.parentNode.className.indexOf(this.olTreeStyles.sNormal)==-1){if(this.bHideAllByDefault){oLink.parentNode.className=(oLink.parentNode.className==""?this.olTreeStyles.sClosed:oLink.parentNode.className+" "+this.olTreeStyles.sClosed)}else{oLink.parentNode.className=(oLink.parentNode.className==""?this.olTreeStyles.sOpened:oLink.parentNode.className+" "+this.olTreeStyles.sOpened)}this.triggerFolding(oLink.parentNode)}};SiteMapManager.prototype.triggerFolding=function(oItem){var sOpenClose='<a class="open_close" href="javascript:;" title="'+this.aLocalizedLabels[this.sLocale][2]+'"><span class="fx">['+this.aLocalizedLabels[this.sLocale][2]+']</span></a> '+oItem.innerHTML;var self=this;oItem.innerHTML=sOpenClose;if(oItem.firstChild&&oItem.firstChild.className=="open_close"){oItem.firstChild.onclick=oItem.firstChild.onkeypress=function(event){var oEvent=(window.event?window.event:event);var keyBoardUsed=(oEvent.type=="keypress"?true:false);var iTouche=-1;var oFXSpan=null;if(keyBoardUsed){iTouche=(window.event?window.event.keyCode:oEvent.which)}if(keyBoardUsed===false||(keyBoardUsed===true&&iTouche==32)){oFXSpan=self.oDOMUtils.getFirstChild(oItem).firstChild;var oLastChild=self.oDOMUtils.getLastChild(oItem);if(oLastChild.nodeName=="UL"){if(!self.bHideAllByDefault){self.aTargets[oItem.id]=oItem.removeChild(oLastChild)}else{oItem.removeChild(oLastChild)}oItem.className=oItem.className.replace(self.olTreeStyles.sOpened,self.olTreeStyles.sClosed);self.oDOMUtils.getFirstChild(oItem).setAttribute('title',self.aLocalizedLabels[self.sLocale][2])}else{oItem.appendChild(self.aTargets[oItem.id]);oItem.className=oItem.className.replace(self.olTreeStyles.sClosed,self.olTreeStyles.sOpened);self.oDOMUtils.getFirstChild(oItem).setAttribute('title',self.aLocalizedLabels[self.sLocale][3])}oFXSpan.innerHTML="["+(oItem.className==self.olTreeStyles.sOpened?self.aLocalizedLabels[self.sLocale][3]:self.aLocalizedLabels[self.sLocale][2])+"]"}return false}}};SiteMapManager.prototype.applyTitleFolding=function(){var aTitles=this.sSiteMapContainer.getElementsByTagName(this.olTitleFolding.sTag);var oLink=null;var self=this;var oNext=null;for(var i=0;i<aTitles.length;i++){oNext=this.oDOMUtils.getNextSibling(aTitles[i]);if(oNext&&oNext.nodeName.toLowerCase()=="ul"){aTitles[i].innerHTML='<a class="open_close" title="'+this.aLocalizedLabels[this.sLocale][1]+'" href=""><span class="fx">['+this.aLocalizedLabels[this.sLocale][1]+']</span></a> '+aTitles[i].innerHTML;oLink=aTitles[i].firstChild;oNext.setAttribute("id",this.getRandomID("smartMap_",2));aTitles[i].setAttribute("rel",oNext.id);aTitles[i].className=this.olTreeStyles.sOpened}if(oLink){oLink.onclick=oLink.onkeypress=function(event){var oEvent=window.event?window.event:event;var keyBoardUsed=(oEvent.type=="keypress"?true:false);var iTouche=-1;var oTitle=null;var oFXSpan=null;if(keyBoardUsed){iTouche=window.event?window.event.keyCode:oEvent.which}if(!keyBoardUsed||(keyBoardUsed&&iTouche==32)){oFXSpan=this.firstChild;oTitle=this.parentNode;if(oTitle.className==self.olTreeStyles.sOpened){self.aTitleTargets[oTitle.getAttribute("rel")]=oTitle.parentNode.removeChild(self.oDOMUtils.getNextSibling(oTitle));oTitle.className=self.olTreeStyles.sClosed;oTitle.firstChild.setAttribute('title',self.aLocalizedLabels[self.sLocale][0]);oFXSpan.innerHTML="["+self.aLocalizedLabels[self.sLocale][0];+"]"}else{oTitle.parentNode.insertBefore(self.aTitleTargets[oTitle.getAttribute("rel")],oTitle.nextSibling);oTitle.className=self.olTreeStyles.sOpened;oTitle.firstChild.setAttribute('title',self.aLocalizedLabels[self.sLocale][1]);oFXSpan.innerHTML="["+self.aLocalizedLabels[self.sLocale][1]+"]"}}return false}}}};SiteMapManager.prototype.getRandomID=function(sPrefix,iInLength){var sChars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";var sRandomID="";var iLength=(iInLength>0?iInLength:1);do{for(var x=0;x<iLength;x++){var i=Math.floor(Math.random()*62);sRandomID+=sChars.charAt(i)}sRandomID=sPrefix+sRandomID}while(document.getElementById(sRandomID));return sRandomID};SiteMapManager.prototype.addToggleSwitch=function(){var oP=document.createElement("P");var oLink=document.createElement("A");var oLink_content=document.createTextNode(this.aLocalizedLabels[this.sLocale][4]);var oParent=document.getElementById(this.olToggleSwitch.sContainerID);var self=this;if(oParent){oP.setAttribute("id","toggle");oLink.href="";oLink.className="toggleShowAll";oLink.onclick=oLink.onkeypress=function(event){var oEvent=(window.event?window.event:event);var keyBoardUsed=(oEvent.type=="keypress"?true:false);var iTouche=-1;if(keyBoardUsed){iTouche=(window.event?window.event.keyCode:oEvent.which)}if(!keyBoardUsed||(keyBoardUsed&&iTouche==32)){self.toggleLists(this);switch(this.className){case"toggleHideAll":this.innerHTML=self.aLocalizedLabels[self.sLocale][4];this.className="toggleShowAll";break;case"toggleShowAll":this.innerHTML=self.aLocalizedLabels[self.sLocale][5];this.className="toggleHideAll";break}}return false};oLink.appendChild(oLink_content);oP.appendChild(oLink);oParent.insertBefore(oP,oParent.firstChild)}};SiteMapManager.prototype.toggleLists=function(oToggleLink){var oPlanSite=this.sSiteMapContainer;var aTitles=[];var aListElements=oPlanSite.getElementsByTagName("LI");var oFXSpan=null;var i=0;var oNext=null;if(this.olTitleFolding.isUsed){aTitles=oPlanSite.getElementsByTagName(this.olTitleFolding.sTag);for(i=0;i<aTitles.length;i++){oFXSpan=aTitles[i].firstChild.firstChild;oNext=this.oDOMUtils.getNextSibling(aTitles[i]);switch(oToggleLink.className){case"toggleHideAll":if(oNext.nodeType!=3&&oNext.nodeName.toLowerCase()==="ul"){this.aTitleTargets[aTitles[i].getAttribute("rel")]=aTitles[i].parentNode.removeChild(oNext);aTitles[i].className=this.olTreeStyles.sClosed;aTitles[i].firstChild.setAttribute('title',"["+this.aLocalizedLabels[this.sLocale][0]+"]");oFXSpan.innerHTML="["+this.aLocalizedLabels[this.sLocale][0]+"]"}break;case"toggleShowAll":if(aTitles[i].className===this.olTreeStyles.sClosed){aTitles[i].parentNode.insertBefore(this.aTitleTargets[aTitles[i].getAttribute("rel")],aTitles[i].nextSibling);aTitles[i].className=this.olTreeStyles.sOpened;aTitles[i].firstChild.setAttribute('title',"["+this.aLocalizedLabels[this.sLocale][1]+"]");oFXSpan.innerHTML="["+this.aLocalizedLabels[this.sLocale][1]+"]"}break}}}for(i=0;i<aListElements.length;i++){if(aListElements[i].id){switch(oToggleLink.className){case"toggleHideAll":if(aListElements[i].lastChild.nodeName=="UL"){aListElements[i].firstChild.firstChild.innerHTML="["+this.aLocalizedLabels[this.sLocale][2]+"]";aListElements[i].removeChild(aListElements[i].lastChild);aListElements[i].className=this.olTreeStyles.sClosed}break;case"toggleShowAll":aListElements[i].firstChild.firstChild.innerHTML="["+this.aLocalizedLabels[this.sLocale][3]+"]";aListElements[i].appendChild(this.aTargets[aListElements[i].id]);aListElements[i].className=this.olTreeStyles.sOpened;break}}}};
