/** 
 *  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;
  }
});


var isMouseOverContainer = function(event, container)
{		
	return event.element().descendantOf($(container)) || event.element() == $(container);		
}

function setBoxMenu(box, state)
{
	var arrowVisible = "image/template/main_page_arrow_hover.gif";
	var arrowHidden = "image/template/main_page_arrow.gif";
	
	
	if (state == true)
	{
		arrowImage = arrowVisible;
		box.show();
	}
	else
	{
		arrowImage = arrowHidden;
		box.hide();
	}
	
	box.up().select("img.arrow").each(function(k,v){			
		k.writeAttribute("src",arrowImage);		
	})
}

function bindMenuBoxAction(item, index)
{		
	var submenu = item.select("div.simple_submenu");
	
	Event.observe(document, 'mousemove', function(event){
		
		if (!isMouseOverContainer(event,item))
		{				
			submenu.each(function(v1,k1){
				setBoxMenu(v1, false);
			});
		}
	});
	
	item.select(".trigger").each(function(value, key)
	{				
		value.observe('click', function(event)
		{
			submenu.each(function(v,k)
			{					
				setBoxMenu(v, !v.visible());
			});
		});
	});
}

function bindMainMenuBoxes(mainMenu)
{
	$(mainMenu).select("div.main_page_box").each(bindMenuBoxAction)
}
