// POPUPS Package / (c) Archimed'2015 / JSE v0.6.3.1 / Cached for 140.77.250.69 (expires 23/10/2015 09:25:24) // // packages.acknowledge('POPUPS'); // ---------------------------------------------- /* history * * TODO: * - vérifier que la popup properties a un réel intéret, ce n'est qu'une iframe! * - commenter et corriger le reste du code: calendar * - corriger le bug de la popup prompt sous Mozilla: y mettre le focus ne place pas correctement la popup dans le document * - Pour les popups calendar, on a besoin du package UILIB !! Modifier le fichier package ?? * * version 1.4.1 - 12 Avril 2005 * - gestion du scroll lors de l'affichage du select apres avoir scroller la page * * version 1.4 11/2003 * - gestion des language RTL et LTR * * version 1.3 01/2003 * - les fenetres bougent * - support des attributs left et top * * version 1.2 12/2002 Tof * - ajout de commentaires * - création plus souple des fenetres: prise en charge des attributs titlebar, titlebarIcon, closeButton * - quand titre indéfini, undefined n'est plus affiché dans la barre de titre * - support des classes pour gérer le style: JSPOPUP, JSPOPUP_TITLE, JSPOPUP_FOOT * - création de la popup confirm * - création de boutons par défaut pour les popup du type warning, confirm, prompt. Support de l'attribut defaultButtons * - correction du bug des iframes pour Netscape * - correction du centrage des popups pour Mozilla et Netscape * - correction du scroll horizontal sous IE et prise en charge du scroll sous Mozilla et Netscape * - amélioration du support de l'animation (la routine ne tourne plus constamment) * - mise en commentaire des méthodes show, hide et getValue qui ne font pas de traitement particulier car héritées de JSEUIObject * * version 1.1 07/2002 Krzys * */ /******** test si la version de ce fichier est compatible avec le package DOMCORE *******/ try { if (!JSGetPropertyInfo('move')) alert('POPUPS version 1.3: la version du package DOMCORE doit etre au minimum 1.3 !!!'); } catch(e) { alert('POPUPS version 1.3: la version du package DOMCORE doit etre au minimum 1.3 !!!'); } /************************* les fonctions associées à la mobilité des popups *********************/ /* L'idée initiale était d'utiliser un "ghost" (une fenetre vide) pour éviter de devoir bouger des popups trop chargées (en particulier les iframe). Ca ne marche que sous IE, pour mozilla on bouge la popup dans sa totalité. Finalement on abandonne pour l'instant l'idée d'un ghost car quand le popup est plus grand que la taille spécifiée à cause de son contenu, on récupère des dimensions erronnées ce qui engendre des bugs lors du dimensionnement du ghost */ /* * élément mémorisant des informations relatives à la popup qui bouge */ function POPUPS_MOVING() { this.popup=null; // on mémorise le décalage du clic à l'intérieur de la fenetre this.offsetX=0; this.offsetY=0; } var popupMoving = new POPUPS_MOVING(); /* * pour démarrer le processus de mobilité * * @param id(string) identifiant du popup * */ function POPUPSStartMove(id, e) { // on mémorise les infos de la fenetre qui va bouger // il ne faut pas oublier de prendre en compte le scroll de la page popupMoving.popup = popups.get(id); var container = popupMoving.popup.container; if (JSisMZ) { popupMoving.offsetX = window.scrollX + e.clientX - parseInt(container.style.left); // c'est une chaine de caractères (ex: 129px) popupMoving.offsetY = window.scrollY + e.clientY - parseInt(container.style.top); } else { popupMoving.offsetX = document.body.scrollLeft + event.clientX - parseInt(container.style.left); popupMoving.offsetY = document.body.scrollTop + event.clientY - parseInt(container.style.top); } // on affiche le ghost /*if (JSisIE) { var ghost = getElementById('popup_ghost'); ghost.style.left = container.style.left; ghost.style.top = container.style.top; ghost.style.width = container.style.width; ghost.style.height = container.style.height; ghost.style.display = ''; }*/ // on intercepte l'évènement onmousemove document.onmousemove = POPUPSOnMove; // on empeche la surbrillance bleue de sélection de texte if (JSisIE) document.onselectstart=new Function ("return false"); } /* * pour stopper le processus de mobilité * */ function POPUPSEndMove() { // on n'intercepte plus les mouvements de la souris document.onmousemove = null; // on autorise à nouveau la sélection du texte if (JSisIE) document.onselectstart=null; var container = popupMoving.popup.container; /*if (JSisIE) { // on masque le ghost var ghost = getElementById('popup_ghost'); ghost.style.display='none'; // on positionne la popup qui devait bouger container.style.left = ghost.style.left; container.style.top = ghost.style.top; // on mémorise les coordonnées de position sans le décalage pour que la fonction de scroll s'y retrouve container._left = parseInt(ghost.style.left) - document.body.scrollLeft; container._top = parseInt(ghost.style.top) - document.body.scrollTop; }*/ if (JSisIE) { container._left = parseInt(container.style.left) - document.body.scrollLeft; container._top = parseInt(container.style.top) - document.body.scrollTop; } else { container._left = parseInt(container.style.left) - window.scrollX; container._top = parseInt(container.style.top) - window.scrollY; } // on oublie le popup... popupMoving.popup = null; } /* * pour bouger le ghost de la popup * */ function POPUPSOnMove(e) { var container = popupMoving.popup.container; var x, y; if (JSisMZ) { x = window.scrollX + parseInt(e.clientX) - popupMoving.offsetX; y = window.scrollY + parseInt(e.clientY) - popupMoving.offsetY; } else { x = document.body.scrollLeft +parseInt(event.clientX) - popupMoving.offsetX; y = document.body.scrollTop +parseInt(event.clientY) - popupMoving.offsetY; } // il ne faut que la popup sorte de la page if (x>0 && y>0) { container.style.left=x; container.style.top=y; // sous IE on bouge le ghost /*if (JSisIE) { var ghost = getElementById('popup_ghost'); ghost.style.left = x; ghost.style.top = y; } else { container.style.left=x; container.style.top=y; }*/ } } /*********************************** gestionnaire de popup ***************************************/ /* * le gestionnaire de popups * * @extends JSETopLevelElement * */ function JSEPopups() { } Implements(JSEPopups,JSETopLevelElement); with (JSEPopups) { prototype.counter=0; prototype.nodeElementConstructor='JSEPopup'; prototype.defaultType='popup'; prototype.activePopup=null; /* * pour obtenir le nom du constructeur associé aux popup * * @param tagName(string) le libellé du tag * @return le libellé du constructeur * @return_type string * @comment cette méthode est-elle encore utilisée ? */ prototype._getConstructorFromTag = function(tagName) { if (tagName=='POPUP') { return 'JSEPopup'; } return 'DOMElement'; } /* * pour récupérer une popup * * @param id(string) l'identifiant de la popup recherchée * @return l'objet associé à la popup * @return_type JSEPopup */ prototype.get = function(id) { return this.documentElement.findChildWithAttribute('POPUP','ID',id); } /* * pour afficher une popup * * @param id(string) l'identifiant de la popup à afficher * @param callback(string) la fonction à appeler quand la popup est fermée * @param defaultValue(string) la valeur retournée par défaut lors de la fermeture de la fenetre * @return l'objet associé à la popup * @return_type JSEPopup */ prototype.show = function(id,callback,defaultValue) { var popup=this.get(id); if (popup) { popup.defaultValue=defaultValue; popup.callback=callback; popup.show(); } return popup; } /* * pour masquer une popup * * @param id(string) l'identifiant de la popup à cacher * @return l'objet associé à la popup * @return_type JSEPopup */ prototype.hide = function(id) { var popup=this.get(id); // this.documentElement.findChildWithAttribute('POPUP','ID',id); if (popup) { popup.hide(); } return popup; } /* * pour créer l'ensemble des popup */ prototype.write = function() { for(var i=0;i