/**
 * jQuery hoverIcon plugin, by madr <anders.ytterstrom@gmail.com>
 * version 1.0
 */
(function($){
  $.fn.hoverIcon = function(options) {
    var defaults = {};
    
    function restoreHover(elm, icon) {
        icon.attr('src', elm.attr('offSrc'));
    };
    
    var opts = $.extend(defaults, options);
    
    return this.each(function() {
      var elm = $(this);
      
      elm.mouseover(function(evt){
        // if hover image is missing, abort
        if (elm.attr('hasNoHover') == 'oh yeah') { return; }
        
        elm.attr('hover', true);
        clearTimeout(elm[0].timer);
        
        var icon = elm.find('.itemIcon');

        // if no icon element, abort
        if (icon.length == 0) { return; }
        
        // get the hover image src once
        if (!elm.attr('offSrc')) {
          var newSrc = elm.parent().html().match(/-- (.+?) --/);
        
          if(!newSrc) { 
            elm.attr('hasNoHover', 'oh yeah');
            return;
          }
        
          elm.attr('offSrc', icon.attr('src')).attr('onSrc', newSrc[1]);
        }
        
        // change icon
        icon.attr('src', elm.attr('onSrc'));
      }).mouseout(function(e){
        if (!e) var e = window.event;
        var relTarg = e.relatedTarget || e.toElement;
        
        var prnt = $(relTarg).parent('.labelHd');
        if (relTarg.className.match(/labelHd/) || (prnt.length && prnt.attr('hover'))) {
          return;
        } 
        
        restoreHover(elm, elm.find('.itemIcon'));
      });
    });
  };
})(jQuery);
