/*
 * Ce module initialise toutes les <IMG> avec la classe "imagemouseover" pour
 * que lorsque la souris passe au dessus de l'image, elle soit remplacé par
 * une autre image (selon un format prédéterminé), et que lorsque la souris 
 * quitte l'image, elle soit remplacé par l'image originale.
 * 
 * Dépendant sur EventManager.js, ImageManager.js et getElement.js
 */

var W3CDOM = (document.getElementsByTagName);
var imagemouseoverClass= new RegExp("(^| )imagemouseover( |$)");
var mouseOverPrefix= 'prefix-not-set';
var mouseOverSuffix= 'suffix-not-set';
var mouseOverImageList= new Array();
var debug= true;

if ( W3CDOM) {
    EventManager.registerEvent(window, 'load', init);
}

function setMouseOverPrefix(newPrefix) {
    mouseOverPrefix= newPrefix;
}

function setMouseOverSuffix(newSuffix) {
    mouseOverSuffix= newSuffix;
}

function addMouseOverImage( image) {
alert( image);
    initMouseOverImage(image);
}

function initMouseOverImage( image) {
    var imgPrefix= '';
    var imgSuffix= '';
    var imgInfix= image.src;
    var endOfPrefix= imgInfix.lastIndexOf('/');
    if ( endOfPrefix!=-1) {
        imgPrefix= imgInfix.substring(0,endOfPrefix+1);
        imgInfix= imgInfix.substring(endOfPrefix+1)
    }
    var startOfSuffix= imgInfix.lastIndexOf('.');
    if ( startOfSuffix!=-1) {
        imgSuffix= imgInfix.substring(startOfSuffix);
        imgInfix= imgInfix.substring(0,startOfSuffix);
    }
    var mouseOverImage= imgPrefix+mouseOverPrefix+imgInfix+mouseOverSuffix+imgSuffix;
    var newImage= new Image();
    newImage.src= mouseOverImage;
    mouseOverImageList.push(newImage);  // conserve une référence sur l'image.
    EventManager.registerEvent( image, 'mouseover', 
                function (e) {
                    if ( !newImage || !newImage.complete) return;

                    if ( e.crgl && e.crgl.element) {
                        ImageManager.swapImage(e.crgl.element, newImage.src);
                    }
                } );
    EventManager.registerEvent( image, 'mouseout', 
                function (e) {
                    if ( e.crgl && e.crgl.element) {
                        ImageManager.restoreImage(e.crgl.element);
                    }
                } );
}

function init() {
var debug= 0;
    var start= new Date();
    var imgs = findElementsForClass(document,'imagemouseover');
    var end= new Date();
    if ( debug) alert( 'init('+imgs.length+') : '+(end.getTime() - start.getTime()));
    for( var i= 0; i < imgs.length; i++) {
        // Seulement si la classe de l'image est "imagemouseover".
        var image= imgs[i];
        initMouseOverImage(image);
    }
}

