// JavaScript Document // Inclusion du fichier pour le bouton modifier du cms document.writeln(''); // DÉBUT * Script nécessaire pour l'utilitaire qui contrôle la dimension des polices function changeTypoClass(taille,oksetActiveStyleSheet){ if(taille=="Gros") { document.getElementById("enu_typoSizeDefault").className="enu_typoSizeDefault"; document.getElementById("enu_typoSizeUp").className="enu_typoSizeUp_act"; // alert (document.getElementById("enu_typoSizeDefault").className); // alert (document.getElementById("enu_typoSizeUp").className); if(arguments.length<2) { setActiveStyleSheet('Augmenter la taille du texte'); } } else { document.getElementById("enu_typoSizeDefault").className="enu_typoSizeDefault_act"; document.getElementById("enu_typoSizeUp").className="enu_typoSizeUp"; // alert (document.getElementById("enu_typoSizeDefault").className); // alert (document.getElementById("enu_typoSizeUp").className); if(arguments.length<2) { setActiveStyleSheet('Taille du texte par défaut'); } } } function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } function getActiveStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title"); } return null; } function getPreferredStyleSheet() { var i, a; for(i=0; (a = document.getElementsByTagName("link")[i]); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("rel").indexOf("alt") == -1 && a.getAttribute("title") ) return a.getAttribute("title"); } return null; } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } // À l'origine window.onload était utilisé // l'utilisation de window.onload a causé problème lorsque la navigation de gauche a utilisé la même syntaxe... // Une autre solution aurait été de les regrouper ensemble... /* body.onload = function(e) { var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); } */ window.onunload = function(e) { var title = getActiveStyleSheet(); createCookie("style", title, 365); } var cookie = readCookie("style"); var title = cookie ? cookie : getPreferredStyleSheet(); setActiveStyleSheet(title); // FIN *** Script nécessaire pour l'utilitaire qui contrôle la dimension des polices // DÉBUT * Script pour le fonctionnement du combo ONGLETS / TABLEAUX // Obtenir la largeur de toutes les images en background-image des éléments LI pour ajuster conséquemment la largeur des balises A à l'intérieur de ces éléments LI... // AU clic d'un onglet faire apparaître tous les onglets et disparaître toutes les listes (tableaux) // Puis faire disparaître l'élément qui a été cliqué et apparaître le tableau (qui porte le même nom de classe que l'élément cliqué ? Pourquoi pas ?) // Obtenir la largeur du titre qui va apparaître en entête du tableau (background de notre balise UL) qui va devenir la valeur de notre attribut margin left // Puis faire apparaître le titre en background de l'élément UL (comme entête du tableau) (probablement en passant le paramètre directement dans la fonction...) // // FIN *** Script pour le fonctionnement du combo ONGLETS / TABLEAUX /* Nom : randomImgsJpg But : Afficher une image jpg au hasard. Entrée : le nom du répertoire, le nombre d'images contenu dans le répertoire, la largeur, la hauteur et la classe de l'image. Sortie : Affichage d'une image au hasard. */ /* script de swap class pour, entre autres, formulaire d'inscription aux formations */ function simpleSwapClass(id, newclass) { if (document.getElementById) { document.getElementById(id).className = newclass; } } /* DÉBUT * Script pour le combo Onglets + Listes */ function cOngletsSurListes(idNo,imageMidName,largeurTitre) // En respectant les normes établies, ce script peut être utilisé sur UN (1) module "combo Liste et Image" par page HTML (ce qui devrait toutefois être suffisant). // Les images doivent être nommées d'une façon particulière (nom commun / nom / numéro) pour assurer le bon fonctionnement de ce script. // Le code HTML associé doit aussi respecter des pricipes de base. // Consulter la documentation pour des informations supplémentaires ! { var myA = document.getElementById('ongletsSurListes').getElementsByTagName('a'); for (var i = 0 ; i < myA.length ; ++i) { myA[i].style.display = 'block'; // if (myLi[i].style.display == 'none') // { // alert (ceci); // myLi[i].style.display = 'block'; // } } var myTable = document.getElementById('ongletsSurListesCont').getElementsByTagName('table'); for (var i = 0 ; i < myTable.length ; ++i) { myTable[i].style.display = 'none'; } // Déterminer si on doit afficher le titre francais ou anglais en cherchant les caractères "_en dans le nom de l'image"... var imageName = document.getElementById('onglet_'+idNo).style.backgroundImage; if (imageName.indexOf("_en")!=-1) { var langSuffix = "_en"; } else { var langSuffix = ""; } document.getElementById('onglet_'+idNo).style.display = 'none'; document.getElementById('tableau_'+idNo).style.display = 'block'; document.getElementById('ongletsSurListes').style.backgroundImage = 'url(/pls/portal/docs/page/biblio_fr/media/images/cong_' + imageMidName + '_t' + idNo + langSuffix + '.gif)'; document.getElementById('ongletsSurListes').style.paddingLeft = largeurTitre + 'px'; // BUG dans Opera : besoin de la ligne suivante pour "activer l'effet rollover" dans Opera... // alert (document.getElementById('ongletsSurListes').style.backgroundImage = 'url(/pls/portal/docs/page/biblio_fr/media/images/cong_t_' + imageMidName + '_' + idNo + '.gif)'); // Si on veut utiliser une image au lieu de background image pour le titre... Ne fonctionne pas dans Opera non plus ! // document.getElementById('ongletTitre').src = '/pls/portal/docs/page/biblio_fr/media/images/ot_' + imageMidName + '_' + idNo + '.gif'; } /* FIN *** Script pour le combo Onglets + Listes */ /* Script pour appeler les FLASH */ function insererFlash(DivID, ObjectID, Width, Height, Url, BgColor) { var d = document.getElementById(DivID); d.innerHTML = ''; } function insererVideoFlash(DivID, ObjectID, Width, Height, Url, Variable, BgColor) { var d = document.getElementById(DivID); d.innerHTML = ''; } /* FIN *** Script pour appeler les FLASH */ /* DÉBUT * Onglet Consultez seulement */ /* Le rajout du 2e paramètre permet la réutilisation (probablement temporaire, en attendant une version plus adaptée) de cette fonction dans la page "Forum" du minisite biblioclip */ function swapTabContent(clickedElement) { var dataOngActif = document.getElementById("ongletBiblioActifLink").innerHTML; var dataOngDuClic = clickedElement.innerHTML; // alert (dataOngActif) // Modification apportée par christine, au lieu de switcher le href on switch le onclick var path1 = document.getElementById("ongletBiblioActifLink").onclick; var path2 = clickedElement.onclick; // alert (dataOngActif); // alert (dataOngDuClic); // alert (path1); // alert (path2); if (document.getElementById) { document.getElementById("ongletBiblioActifLink").innerHTML = dataOngDuClic; document.getElementById("ongletBiblioActifLink").onclick = path2; clickedElement.innerHTML = dataOngActif; clickedElement.onclick = path1; } // Si on veut que ca fonctionne dans des browsers vraiment old school c est ici que ca devrait se passer... else if (document.all) { // document.all["textDiv"].innerHTML = data; } } function swapBgOngConsultez() { document.getElementById('ficheOngletBg').style.background = 'url(/pls/portal/docs/page/biblio_fr/media/images/accueil/bg_fiche_conteneur.gif)'; } /* FIN *** Onglet Consultez seulement */ function Get_Tags(nom,letype){ //Retourne sous forme de tableau les tags HTML (paramètre letype) dans le id CONTIENT un nom (Le premier paramètre) particulier var les_elements = document.getElementsByTagName(letype.toUpperCase()); var tableau = new Array(); for(var i=0;i1) { var nom = nom_commun + nom_unique; var myRegExp = new RegExp(nom_commun); var mydivs = Get_Tags(myRegExp,"div"); for(i=0;i 0) date.setTime(date.getTime() - skew); } function popCenter (page, name, w, h, scroll) { var winl = (screen.width - w) / 2; var wint = (screen.height - h) / 2; winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',noresize,'; win = window.open(page, name, winprops); win.focus(); } // DÉBUT * Script qui permet de simuler une navigation de 3e niv dans un formulaire texte // Objectif : Savoir quel item du menu a été cliqué en dernier (lequel est actif ? finalement...) function fake3eNivNav() // En respectant les normes établies, ce script peut être utilisé dans une page qui contient UNE barre de navigation de 3e niv portant l'ID "nav3eNivCont" // Les images doivent être nommées d'une façon particulière (nom commun / nom / numéro) pour assurer le bon fonctionnement de ce script. // Le code HTML associé doit évidemment respecter des pricipes de base. { var myA = document.getElementById('nav3eNivCont').getElementsByTagName('a'); for (var i = 0 ; i < myA.length ; ++i) { // On reset le menu (enlève les classes "actif") myA[i].className = ''; } // DOMMAGE... faudrait que la ligne commentée ci-dessous fonctionne pour un code HTML optimal...!!! //this.className="actif"; // document.getElementById(essai33).className = 'actif'; // alert (document.getElementById(essai33).className); // var selectedItem = this.className ; // alert (selectedItem); // alert ('Code 18'); } // Si le fureteur est compatible W3 DOM, executer la fonction setImageSwaps au chargent de la page if (document.getElementsByTagName && document.getElementById) { if (window.addEventListener) window.addEventListener('load', setImageSwaps, false); else if (window.attachEvent) window.attachEvent('onload', setImageSwaps); } // Pendant le chargement du document, appeler la fonction prepareImageSwap en ciblant les éléments désiré, avec l'effet désiré... function setImageSwaps() { prepareImageSwap('moduleDeLiens'); // Quelques exemples... // Ex. pour hover, mousedown, sans restore - pour les images dans le conteneur portant l'id "example2" // prepareImageSwap('example2',true,false,true,false); // Ex. pour hover et restore, usage le + fréquent - pour n'importe quel image dans document.body qui n'a pas encore été processé... // prepareImageSwap(document.body); /* Une fois qu'une image a été processé, elle ne peut pas l'être une 2e fois. Il est donc logique de commencer par les appels de fonctions qui ciblent des petites zones spécifiques de la page, s'il y a lieu... Et de terminer par les appels généraux (sur document.body, par exemple, et s'il y a lieu...) */ } // DÉBUT * Fonction qui programme des rollovers sur des images sans code HTML "intrusif" // façon de nommer les images : // nomImage_nm.gif (ou jpg) ou *_nm* correspond à l'état "normal" // *_hv* pour "hover" correspond à l'état "mouseOver" // *_ou* pour "hover" correspond à l'état "mouseOut" // *_md* pour "hover" correspond à l'état "mouseDown" // *_mu* pour "hover" correspond à l'état "mouseUp" function prepareImageSwap(elem,mouseOver,mouseOutRestore,mouseDown,mouseUpRestore,mouseOut,mouseUp) { if (typeof(elem) == 'string') elem = document.getElementById(elem); if (elem == null) return; var regg = /(.*)(_nm\.)([^\.]{3,4})$/ var prel = new Array(), img, imgList, imgsrc, mtchd; imgList = elem.getElementsByTagName('img'); for (var i=0; img = imgList[i]; i++) { if (!img.rolloverSet && img.src.match(regg)) { mtchd = img.src.match(regg); img.hoverSRC = mtchd[1]+'_hv.'+ mtchd[3]; img.outSRC = img.src; if (typeof(mouseOver) != 'undefined') { img.hoverSRC = (mouseOver) ? mtchd[1]+'_hv.'+ mtchd[3] : false; img.outSRC = (mouseOut) ? mtchd[1]+'_ou.'+ mtchd[3] : (mouseOver && mouseOutRestore) ? img.src : false; img.mdownSRC = (mouseDown) ? mtchd[1]+'_md.' + mtchd[3] : false; img.mupSRC = (mouseUp) ? mtchd[1]+'_mu.' + mtchd[3] : (mouseOver && mouseDown && mouseUpRestore) ? img.hoverSRC : (mouseDown && mouseUpRestore) ? img.src : false; } if (img.hoverSRC) {preLoadImg(img.hoverSRC); img.onmouseover = imgHoverSwap;} if (img.outSRC) {preLoadImg(img.outSRC); img.onmouseout = imgOutSwap;} if (img.mdownSRC) {preLoadImg(img.mdownSRC); img.onmousedown = imgMouseDownSwap;} if (img.mupSRC) {preLoadImg(img.mupSRC); img.onmouseup = imgMouseUpSwap;} img.rolloverSet = true; } } function preLoadImg(imgSrc) { prel[prel.length] = new Image(); prel[prel.length-1].src = imgSrc; } } function imgHoverSwap() {this.src = this.hoverSRC;} function imgOutSwap() {this.src = this.outSRC;} function imgMouseDownSwap() {this.src = this.mdownSRC;} function imgMouseUpSwap() {this.src = this.mupSRC;} // FIN *** Fonction qui programme des rollovers sur des images sans code HTML "intrusif" /* Fonctions pour régler le bug d'affichage des images dans les galeries d'images. */ function getBaseServer(url) { if(!url) return null; var position = url.indexOf('://') + 3; if(position < 0) return null; var position2 = url.indexOf('/',position); if(position2 < 0) return url; if(position2 == position) return null; return url.substring(0,position2); } function getBasePath(serveur, url) { if(!url || !serveur) return null; var position = url.indexOf(serveur) + serveur.length; url = url.substring(position); position = url.lastIndexOf('/'); if(position < 0) return '/'; return url.substring(0,position) + '/'; } function fixWebclippingIE7() { var webClip = typeof setOraWcCookie; if(!webClip || webClip != 'function') return; var linkServer = getBaseServer(document.location.href); var linkPath = getBasePath(linkServer,document.location.href); var allBase = document.getElementsByTagName('base'); if(!allBase) return; for(var x = 0; x < allBase.length; x++) { var parent = allBase[x].parentNode; if(parent && parent.nodeName) { if(parent.nodeName.toUpperCase() == 'HEAD') { linkServer = getBaseServer(allBase[x].href); linkPath = getBasePath(linkServer,allBase[x].href); } else { var baseServer = getBaseServer(allBase[x].href); var basePath = getBasePath(baseServer,allBase[x].href); var nextDiv = allBase[x].nextSibling; while(nextDiv && nextDiv.tagName != 'DIV') nextDiv = nextDiv.nextSibling; if(nextDiv == null || nextDiv.tagName != 'DIV') continue; var tagsNames = new Array('img','input','script','object'); for(var y = 0; y < tagsNames.length; y++) { var tags = nextDiv.getElementsByTagName(tagsNames[y]); for(var z = 0; z < tags.length; z++) { if(!tags[z].src) continue; var newLine = /\s/g; var src = /.*<.*src[ ]*=[ ]*"(.*)".*>/i; var lien = tags[z].outerHTML.replace(newLine,' ').replace(src,'$1'); if(lien.indexOf('/') == 0) { tags[z].src = baseServer + lien; } else if(lien.indexOf('://') == -1) { tags[z].src = baseServer + basePath + lien; } } } } } } } /* Fin : Fonctions pour régler le bug d'affichage des images dans les galeries d'images. */ // DÉBUT * Biblioclip Specific function valideAccept () { document.forum.valide.disabled = !document.forum.accepte.checked } function forumLien() { document.forum.accepte.checked = false; //document.location="http://ville.montreal.qc.ca/jive_forums/category.jspa?categoryID=6"; window.open("http://ville.montreal.qc.ca/jive_forums/category.jspa?categoryID=6"); } // Inclusion du fichier pour la détection de flash. document.writeln(''); function getVideo(divId, videoUrl, langue, play, titre, nom, prix){ /* Auteur : Jean-Philippe Grondin Date : 02 août 2007 Objectif : afficher un vidéo Flash et vérifier si le Player Flash est installé. */ // Version maximale supportée. var requiredMajorVersion = 8; // Version minimale requise. var requiredMinorVersion = 0; // Révision minimum de Flash. var requiredRevision = 0; var alternateContent; var variableVideo; extension = videoUrl.match(/.flv/gi); if(extension != null) { // si le url du fichier contient une extension ".swf" on l'enlève. videoUrl = videoUrl.substring(0,videoUrl.length-4); } // Vérifier la version du Player Flash. var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); if (hasReqestedVersion) { if (play == false) // Le vidéo ne doit pas jouer par défaut. variableVideo = '&MM_ComponentVersion=1&skinName=/pls/portal/docs/page/librairie_fr/video/Halo_Skin_3&streamName=' + videoUrl + '&autoPlay=false&autoRewind=true'; else // Le vidéo joue dès qu'il apparaît dans la page. variableVideo = '&MM_ComponentVersion=1&skinName=/pls/portal/docs/page/librairie_fr/video/Halo_Skin_3&streamName=' + videoUrl + '&autoPlay=true&autoRewind=true'; if (titre == null){ insererVideo(divId,'FLVPlayer','342', '291', '/pls/portal/docs/page/librairie_fr/video/FLVPlayer_Progressive.swf', variableVideo, ''); } else{ insererVideoGagnant(divId,'FLVPlayer','342', '291', '/pls/portal/docs/page/librairie_fr/video/FLVPlayer_Progressive.swf', variableVideo, '', titre, nom, prix); } } else { // Le Flash Player n'est pas installé, alors on affiche un message pour inviter l'utilisateur à télécharger le "plug-in". if (langue == 'en') { alternateContent = '

This content requires the Adobe Flash Player version ' + requiredMajorVersion + '

' + ''; } else { alternateContent = '

Pour visualiser un vidéo, vous devez avoir
la version ' + requiredMajorVersion + ' de Adobe Flash Player

' + '' + ''; } document.write(alternateContent); // Insérer le code HTML } } function insererVideo(DivID, ObjectID, Width, Height, Url, Variable, BgColor) { var d = document.getElementById(DivID); d.innerHTML = ''; } function insererVideoGagnant(DivID, ObjectID, Width, Height, Url, Variable, BgColor, titre, nom, prix) { var d = document.getElementById(DivID); d.innerHTML = '

' + prix + '

' + titre + '

' + nom + '

' } /*Fonction qui consiste à rendre invisible le bouton ou l'image (obligatoirement positionner dans un div) sur lequel on click. Tous les autres div ce démasque. */ function Masquer_bouton(nom){ //Utiliser cette fonction quand les divs ne servent qu'à montrer et masquer des éléments lesdivs = document.getElementsByTagName("div"); for(var i=0;i"); } /* Début * functions pour loading de Astro biblio */ //Fonction pour détecter la largeur du document //Retourne la largeur du document function getDocWidth() { var D = document; return (D.body.clientWidth); } /* Nom: getDocHeight But: Retourne la hauteur totale du document (pas la hauteur de l'écran, mais le document en entier) */ function getDocHeight() { var D = document; return (D.documentElement.scrollHeight) } /* Nom: unloadFlashbox But: reloader la page d'accueil biblio et unloader le flash*/ function unloadFlashbox(){ window.location.href="http://www.ville.montreal.qc.ca/biblio"; } // Function pour les dimensions du bgdiv function setBgSize(){ var browserWidth = getDocWidth(); var browserHeight = getDocHeight(); var bgFlash = document.getElementById("bgFlash"); bgFlash.style.width = browserWidth + "px"; bgFlash.style.height = browserHeight + "px"; } // DÉBUT * récupérer des paramètres dans l'url à l'aide javascript function get_url_param(name) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return ""; else return results[1]; } // FIN *** récupérer des paramètres dans l'url à l'aide javascript // DÉBUT * Fonction qui pop astrobiblio au chargement de function pop_astro_app() { var astro_param = get_url_param('astro'); //alert (astro_param); if (astro_param == '1') { //setTimeout ("loadFlashbox()", 10000 ); var f = document.getElementById("flashContent"); loadFlashbox(); } } // FIN *** récupérer des paramètres dans l'url à l'aide javascript /* Nom: loadFlashbox But: delete le contenu de la div video et load la flashbox avec background transparent */ function loadFlashbox(){ var bgFlash = document.getElementById("bgFlash"); bgFlash.style.visibility = 'visible'; var accFlash = document.getElementById("accueilFlash"); accFlash.style.visibility = 'visible'; var d = document.getElementById("astroFlashContent"); if (d != null){ d.innerHTML = ""; } var e = document.getElementById("DivVideoPromo_2009"); if (e != null){ e.innerHTML = ""; } var f = document.getElementById("flashContent"); if (f != null){ f.innerHTML = ""; } // Version maximale supportée. var requiredMajorVersion = 10; // Version minimale requise. var requiredMinorVersion = 0; // Révision minimum de Flash. var requiredRevision = 0; //Detection de la version du flash player var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision); if (hasReqestedVersion) { //ajout du flash si la version est assez récente var so =""; so = new SWFObject("/pls/portal/docs/PAGE/BIBLIO_FR/MEDIA/FLASH/P_Astro.swf", "astro", "600", "600", "10", "#000000"); so.addParam("allowFullScreen", "true"); so.write("accueilFlash"); }else{ //sinon, message pour downloader la version la plus récente d = document.getElementById("accueilFlash"); d.innerHTML = "Vous avez besoin du plugiciel Flash 10 pour accéder à l"; } var fermerFlash = document.getElementById("fermerFlash"); //click sur le bgFlash = ferme le flash. var p = document.getElementById("bgFlash"); p.onclick = unloadFlashbox; p.onmouseover = showFermer; accFlash.onmouseover = hideFermer; setBgSize(); } function showFermer(){ var fermerFlash = document.getElementById("fermerFlash"); fermerFlash.style.visibility = 'visible'; fermerFlash.innerHTML = "Fermer Astrobiblio"; fermerFlash.style.cursor = 'pointer'; fermerFlash.onclick = unloadFlashbox; } function hideFermer(){ var fermerFlash = document.getElementById("fermerFlash"); fermerFlash.style.visibility = 'hidden'; }