Liste déroulante avec scrolling 100% SVG

Nouvelle version compatible avec Firefox 1.5, Opera 9 et Batik 1.6

Objets SVG et script sont séparés
Le script est chargé au démarrage 
Les objets SVG sont chargés à la demande et déchargés après utilisation.

Vous pouvez créer votre propre design et le sauver dans un fichier SVG ou SVGZ.

Voir un exemple    

Pour utiliser cette liste déroulante vous devez
1) charger le script avec 
    <script xlink:href="js/list_scroll.js"/>    gestion de la liste déroulante
    <script xlink:href="js/opera.js"/>    emulation de getURL() et parseXML()
    <script xlink:href="js/tools.js"/>    déplacement de la fenêtre
2) réserver une place à la fin avec 
    <g id="messages" transform="translate(100,50)"></g> par exemple 
3) mettre dans un groupe <defs> les gradients utilisés pour les boutons
4) appeler la liste déroulante avec 
add_list_scroll("svg/list_scroll.svg","messages","Changer la couleur\ndu rectangle\nChoisissez une couleur",color.join("\n"), num);
dans l'ordre: fichier SVG des objets, nom du groupe, chaîne pour l'invite, chaîne pour les éléments de la liste, nombre pour l'utilisation
5) créer une fonction pour utiliser le résultat du choix
function messages_use_list_scroll(result,num_choice,num_list)
{
    if (!result)
        return
    switch(num_list)
    {
        case 0:
            obj=svgdoc.getElementById("rect1");
            obj.setAttribute("fill",color[num_choice]);
            break;
        ..........
    }
}

Contraintes

svgdoc doit être le nom de SVGDocument 
nom du groupe + "_use_list" le nom de la fonction

Dans le design SVG, cette fonction est appelée quand vous fermez la fenêtre avec onclick="close_list(true)".
Quand la liste déroulante est fermée avec OK, l'indice de l'option choisie est transmis, vous devez travailler avec des tableaux pour les éléments de la liste.
La fonction list_tape permet d'utiliser les touches Enter et Escape pour fermer la fenêtre.
Trois lignes de texte avec "invite0", "invite1", "invite2" comme id.
Vous devez concerver les id des objets ou modifier le script.