//todo corriger rolloverImage et rollbackImage
/*
 * Unobtrusive image rollover with Prototype library, v1.0
 *
 * Created by Herryanto Siatono
 * Copyright (c) 2007 Pluit Solutions <www.pluitsolutions.com>
 *
 * This script is freely distributable under the terms of an MIT-style license.
 <script type="text/javascript" src="/appli-box-www-data/scripts/prototype.js"></script>
<script type="text/javascript" src="/appli-box-www-data/scripts/rollover.js"></script>
<a href="/path" class="ab_rollover"><img src="/design/images/aboutus" /></a>
/design/images/aboutus.gif
/design/images/aboutus_over.gif
/design/images/aboutus_active.gif
/*------------------------------------------------------------------------------*/

var Rollover= Class.create();
Event.observe(window, 'load', function() {
      new Rollover();
    });
Rollover.prototype = {
  initialize: function(options) {
    this.images = {};
    this.setOptions(options);
    this.observeLinks();
  },

  setOptions: function(options) {
    this.options = {
      rolloverSuffix: 'over',
      selectedSuffix: 'active',
      suffixSeperator: '_',
      rolloverClassName:'ab_rollover'
    };
    //pour l'instant on ne peut pas passer d'options
    //Object.extend(this.options, options || {});
  },

  observeLinks: function() {

    this.links=$$('a.'+this.options.rolloverClassName);
    //var aLinks=$$('a.'+this.options.rolloverClassName);
	//var inputLinks=$$('input[type="image"].'+this.options.rolloverClassName);
	//this.links=aLinks.concat(inputLinks);
	//alert(this.links.inspect());
    for (i=0; i<this.links.length; i++) {
      this.links[i].observe('mouseover', this.rolloverImage);
      this.links[i].observe('mouseout', this.rollbackImage);
    }


    images=$$('a.'+this.options.rolloverClassName+' img');
    //var aImages=$$('a.'+this.options.rolloverClassName+' img');
    //var inputImages=$$('input[type="image"].'+this.options.rolloverClassName+' img');
    //images=aImages.concat(inputImages);
    for (i=0; i<images.length; i++) {
      imageId = images[i].id
      if (!imageId) {
        imageId  = this.id + i;
        images[i].id = imageId;
      }

      this.images[imageId] = images[i].src;
      images[i].imageRollover = this;

      // preload rollover image
      (new Image()).src = this.parseRolloverImage(images[i]);
    }
  },

  rolloverImage: function(e) {
    image = Event.element(e);
    if(image.imageRollover){
    	//######## BUG !!! mis un if pour ne pas avoir l'erreur javascript
    	image.imageRollover.images[image.id] = image.src;
    	image.src = image.imageRollover.parseRolloverImage(image);
    }
  },

  rollbackImage: function(e) {
    image = Event.element(e);
    if(image.imageRollover){
    	//######## BUG !!! mis un if pour ne pas avoir l'erreur javascript
    	image.src = image.imageRollover.images[image.id];
    	image.src = image.imageRollover.images[image.id];
    }
  },

  parseRolloverImage: function(image) {
    ext = image.src.substr(image.src.lastIndexOf('.'));
    path = image.src.match(/(.*)\/(.*\.(png|gif|jpg))/)[1]
    filename = image.src.gsub(path, '')
    basename = this.parseBasename(filename);
    basename = this.parseBasename(basename, this.options.suffixSeperator + this.options.selectedSuffix);
    return path + basename + this.options.suffixSeperator + this.options.rolloverSuffix + ext;
  },

  parseBasename: function(name, seperator) {
    seperator = seperator || '.';
    found = name.lastIndexOf(seperator);
    if (found > 0) {
      return name.substr(0, found);
    } else {
      return name;
    }
  }
}

