--- /dev/null
+/*
+* © 2007 Benoît PIN – Centre de recherche en informatique – École des mines de Paris
+* Licence Creative Commons http://creativecommons.org/licenses/by/2.0/
+*
+*
+*
+* element : element représentant le menu
+* visibleAtStartup : menu visible au début
+* charList : Liste des caractères à intercépter pour ce menu
+* step : pas (en pixels) appliqué pour les reductions/affichages du menu
+* direction : direction de réduction/affichage du menu = up,down,right ou left
+* timeStep : intervalle utilisé pour la réduction/affichage du menu
+*/
+
+function Menu(element, visibleAtStartup, charList, step, direction, timeStep)
+{
+ this.element = element;
+ this.charList = charList;
+ this.step = step;
+ this.direction = direction;
+ this.timeStep = timeStep;
+
+ this.style = this.element.style;
+ if (visibleAtStartup) {
+ this.style.visibility = 'visible'
+ this.visible = true;
+ }
+ else {
+ this.style.visibility = 'hidden'
+ this.visible = false;
+ }
+
+ this.initialWidth = parseInt(this.style.width);
+ this.initialHeight = parseInt(this.style.height);
+
+ if(direction == "up" || direction == "down")
+ {
+ this.toModify = "height";
+ this.toCheck = "initialHeight";
+ }
+ else
+ {
+ this.toModify = "width";
+ this.toCheck = "initialWidth";
+ }
+
+ var thisMenu = this;
+ addListener(document, 'keypress', function(evt){thisMenu.handleKeyPress(evt);});
+}
+
+
+
+Menu.prototype.handleKeyPress = function(evt)
+{
+ evt = getEventObject(evt);
+ var charPress = String.fromCharCode((evt.keyCode) ? evt.keyCode : evt.which);
+
+ if(this.charList.indexOf(charPress) != -1)
+ {
+ var thisMenu = this;
+
+ if (!this.visible) {
+ this.idAffiche = setInterval(function(){thisMenu.afficheMenu();}, this.timeStep);
+ this.visible = true;
+ }
+ else {
+ this.initialHeight = parseInt(this.style.height);
+ this.initialWidth = parseInt(this.style.width);
+ this.idReduc = setInterval(function(){thisMenu.reducMenu();}, this.timeStep);
+ this.visible = false;
+ }
+
+ }
+}
+
+
+
+Menu.prototype.reducMenu = function ()
+{
+ var thickness = parseInt(this.style[this.toModify]);
+
+ thickness = (thickness-this.step);
+
+ if(thickness<0)
+ {
+ thickness = 0;
+ this.style.visibility = "hidden";
+ clearInterval(this.idReduc);
+ }
+ this.style[this.toModify] = thickness+"px";
+};
+
+
+
+Menu.prototype.afficheMenu = function()
+{
+ this.style.visibility="visible";
+
+ var thickness = parseInt(this.style[this.toModify]);
+
+ thickness = (thickness+this.step);
+
+ if(thickness>this[this.toCheck])
+ {
+ thickness = this[this.toCheck];
+ clearInterval(this.idAffiche);
+ }
+
+ this.style[this.toModify] = thickness+"px";
+};
\ No newline at end of file