/**
 * MooSwap - Automatic swap images
 *
 * Dependencies: MooTools 1.2
 *
 * @version            0.1.1
 *
 * @license          MIT-style license
 * @author           Davide Caffaratti <davcaffa [at] gmail.com>
 * @copyright        Author
 * @site             http://davidecaffaratti.com
 */ 
 
 

var MooSwap = new Class({


    Implements: [Options],

    options: {
        imgHoverPrefix: '2'   
    },
    
    initialize: function(elements, options) {
        //set options
        this.setOptions(options);
        // Set elements
        this.setSwap(elements);
    },
    
        setSwap: function(elements) { 
        $$(elements).each(function(el) { 
                    
            var holdSrc = el.getProperty('src');  
            var extension = holdSrc.substring(holdSrc.lastIndexOf('.'),holdSrc.length);       
            var newSrc = holdSrc.replace(extension, this.options.imgHoverPrefix + '' + extension);
          
            // set new image for preloading
            new Asset.image(newSrc, { alt: el.getProperty('alt') });

			
            // default link on current img element
            var link = el;
            
            // check if there is a link a href parent
            var parent_a = el.getParent('a');
            
            if (parent_a) {
                var link = parent_a;        
            }
            
 
            if (this.options.useTransition && this.options.opacity < 1) {
                el.setStyles({'opacity': this.options.opacity});  
                var effect = new Fx.Morph(el, {duration: this.options.transitionDuration, transition: this.options.transition});
            } 
            
           
            link.addEvents({
                mouseover: function() {
                    if (this.options.useTransition && this.options.opacity < 1 ) {
                        effect.cancel();
                        effect.start({opacity:1});
                    }
                    el.setProperty('src', newSrc);
                }.bind(this),
                mouseout: function() {
                    if (this.options.useTransition && this.options.opacity < 1) {
                        effect.cancel();
                        effect.start({opacity: this.options.opacity});
                    }
                    el.setProperty('src', holdSrc);
                }.bind(this)
           });
        }, this);    
    }
});

