/** 
 *  Preloader obrazków w linku
 *  
 *  @date 10.07.2008
 *  @author Daniel Nowacki
 *  @company EPRO IT    
 */

/**
 *  Rozszerzenie metody dodwane tylko na linki
 *  
 *  Jako parametr metody nalezy podac tylko nazwe pliku z hoverem. Plik ma sie znajodwac w tym samym katalogu co plik bazowy   
 */ 
Element.addMethods('A', {
  rollOver: function(objLink, hoverImg)
  {    
    if (objLink) /* link musi istnieć */
    {
      var objImgArray = objLink.select('img'); /* preloadery działają na obrazkach - pobieram */
      
      if (objImgArray[0]) /* jako pierwsze dziecko musi zawierać obrazek */
      {
        var objImg = objImgArray[0];
        
        var actPath = objImg.readAttribute('src') + ""; // zamiana na string
        
        var pattern = /[a-zA-Z_-]+\.[gpj][inp][fg]$/; // wyrazenie - pobiera nazwe pliku mozliwe rozszerzenia jpg, gif, png
        
        var hoverPath = actPath.replace(pattern, "") + hoverImg; // sciezka z obrazkeim do preloadera - obrazek z hoverem musi byc w tym samym katalogu co bazowy
        
        /* buforuję obrazek hovera - wymuszam pobranie z serwera */        
        new Image().src = hoverPath;
                

        /* zapamietuje sciezki */              
        objImg.writeAttribute('rollOver', hoverPath);            
        objImg.writeAttribute('rollOut', objImg.readAttribute('src'));    
              
        // dodaje sluchaczy na linki
        objLink.observe('mouseover', function()
        {                    
          objImg.writeAttribute('src', objImg.readAttribute('rollOver'));          
        });
        
        objLink.observe('mouseout', function()
        {
          objImg.writeAttribute('src', objImg.readAttribute('rollOut')); 
        });
      }            
    }    
    return objLink;
  }
});
