

// OBIEKT ANIMOWANE MENU

/* klasaDIV - to klasa rozwijanych kolejno divow */
/* fragmentSRC - to string ktory jest wspolny (zawiera sie w nazwie) obrazków sa kolejno powiekszanie */
function AnimowaneMenu(klasaDIV) //konstruktor
{
 var KOLEJKA="kolejka_wykonan";
 this.klasaDIV=klasaDIV;
 this.tagElement="div";
 this.filtrujPo='.jpg';
 this.DIVsIMGs=new Array(); //tablica z obrazkami ze wszytkich DIVow (this.elementyDIV)
 this.elementyDIV=new Array();
 this.imgs=new Array();
 this.imgLoadLatency=1500; //milisec
 this.durationTime=0.7; //sek
 this.IE=(navigator.userAgent.indexOf('MSIE')==-1)?false:true;



 //metoda inicjuje wykonanie na onloadzie window
 this.initOnload=function(klasaDIV) 
                 { 
		   this.inicjuj(); 
		 }

 //zwraca obrazki bedace w danym elemencie (np. w DIVIE) o danym fragmencie SRC 
 this.filtrujIMGPoSRC=function (imgsARR,fragmentSRC)
	 {
	   var ref=new Array();
	   for(var i=0; i<imgsARR.length; i++) 
	      if(imgsARR[i].src.indexOf(fragmentSRC)!=-1) ref[ref.length]=imgsARR[i];
	   return ref;
	 }

 this.setOpacity=function(obj,value)
	 {
	  obj.style.opacity = value/10;
          obj.style.filter = "alpha(opacity=" + value*10 + ")";
	 }


this.EfektyNaObrazki=function()
        {
	 //petla na obrazkach ktore znajduja sie wewnatrz DIVOW
	 for(var i=0,imgs=this.DIVsIMGs; i<imgs.length; i++)
	   {
	     imgs[i].num=i; //przypisz numer
	     imgs[i].defaultWidth=imgs[i].width;
	     imgs[i].defaultHeight=imgs[i].height;
	     imgs[i].xProc=parseInt((imgs[i].defaultWidth)/100);
		 imgs[i].yProc=parseInt((imgs[i].defaultHeight)/100);     
	     imgs[i].onmouseover=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Move($(this), { x: this.xProc*(-4), y: this.yProc*(-4), mode: 'relative', duration: 0.1
										    });
				 }
	     imgs[i].onmouseout=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Move($(this), { x: this.xProc*(4), y: this.yProc*(4), mode: 'relative', duration: 0.1
										    });
				 }
	   }//for
        }
/*
        //morph 
              imgs[i].onmouseover=function()
				 { 
				  new Effect.Morph($(this), {
											   style: {
														position: "relative",
														width: this.defaultWidth+10,
														height: this.defaultHeight+10,
														top:  this.defaultHeight-10,
														left:  this.defaultWidth-10												
											           }, // CSS Properties
							duration: 0.3 // Core Effect properties
											});
				}
			imgs[i].onmouseover=function()
				 { 
				  new Effect.Morph($(this), {
											   style: {
														position: "relative",
														width: this.defaultWidth-10,
														height: this.defaultHeight-10,
														top:  this.defaultHeight+10,
														left:  this.defaultWidth+10												
											           }, // CSS Properties
							duration: 0.3 // Core Effect properties
											});
				}
				
				
				
	    //morph ver 2
	    	     imgs[i].onmouseover=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);
				  $(this).morph("position: relative; width: "+(this.defaultWidth+10)+"; height: "+this.defaultHeight+10+"; top:  "+(this.defaultHeight-10)+", left: "+
				  (this.defaultWidth-10)+"");
				 }
	     imgs[i].onmouseout=function()
				 { 
				  $(this).morph("position: relative; width: "+(this.defaultWidth+10)+"; height: "+this.defaultHeight+10+"; top:  "+(this.defaultHeight-10)+", left: "+
				  (this.defaultWidth-10)+"");
				  
				 }

        //move
	     imgs[i].onmouseover=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Move($(this), { x: this.xProc*(-4), y: this.yProc*(-4), mode: 'relative', duration: 0.1
										    });
				 }
	     imgs[i].onmouseout=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Move($(this), { x: this.xProc*(4), y: this.yProc*(4), mode: 'relative', duration: 0.1
										    });
				 }

         //parallel
	     imgs[i].onmouseover=function()
			   { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Parallel([				  
				  new Effect.Scale($(this), 95, { scaleFrom: 100, duration: 0.1,
												   scaleMode: { originalHeight: this.defaultHeight, originalWidth: this.defaultWidth },
												 }),
				  new Effect.Move($(this), { x: this.xProc*(1), y: this.yProc*(1), mode: 'relative', duration: 0.3
				  							})
									   ],
									     {
										   queue: { position:"end", scope:"obr_effect"+this.num }
										 }); //paralell
				 }
	     imgs[i].onmouseout=function()
				 { 
				  ClearEffectsQueue("obr_effect"+this.num);				  
				  new Effect.Parallel([				  
				  new Effect.Scale($(this), 95, { scaleFrom: 100,  duration: 0.1,
				  scaleMode: { originalHeight: this.defaultHeight, originalWidth: this.defaultWidth },
							      }),
				  new Effect.Move($(this), { x: this.xProc*(-1), y: this.yProc*(-1), mode: 'relative', duration: 0.3
				   })
									   ],
									     {
										   queue: { position:"end", scope:"obr_effect"+this.num }
										 }); //paralell
				 }
*/

 this.inicjuj=function() 
	 {
           //alert(Scriptaculous.Version);
           this.elementyDIV=$$(this.tagElement+((this.klasaDIV=='')?'':'.'+this.klasaDIV)); //pozbieraj divki o danej klasie css
 	   //petle przelatuja po przefiltrowanych DIVach i zbieraja obrazki do jednej tablicy
	   if(this.elementyDIV==undefined){ alert('brak elementow '+this.tagElement); return; }
	  //petla na divach o podanej klasie CSS
 	   for(var i=0,OnedivIMGs,licz=0; i<this.elementyDIV.length; i++)
     		   {
      		    OnedivIMGs=this.elementyDIV[i].getElementsByTagName("img"); //jeden div
		    OnedivIMGs=this.filtrujIMGPoSRC(OnedivIMGs,this.filtrujPo);
		    if(!this.IE)
		       this.elementyDIV[i].style.visibility="hidden"; //divy na hidden
      		    for(var j=0; j<OnedivIMGs.length; j++)
			{
			 this.DIVsIMGs[licz++]=OnedivIMGs[j]; 		//obrazki z diva
			 OnedivIMGs[j].style.visibility="hidden"; 	//img na hidden
			}
     		   }



		var Vis=false; /* zmienna ktora zapobiega pojawieniu sie tabeli zanim zacznie sie rozwijac */
		var durationTime=this.durationTime;
		function LoadujJedenPoDrugim(tablica,licznik)
			{
			 if(tablica[licznik])
			    {
	     			//zakladanie efektu grow na obrazki
			     Effect.Grow(tablica[licznik],{
						 duration: durationTime,
						 beforeStart: function()
							       {
								tablica[licznik].style.visibility="visible";
							       },
						 afterFinish: function()
							       { 
								licznik++; LoadujJedenPoDrugim(tablica,licznik);
							       }
					 		  }); //Effect
			    }//if
			 }
		function LoadujJedenPoDrugimIE(tablica,licznik)
			{
			 if(tablica[licznik])
			    {
			     tablica[licznik].style.visibility="visible";
		             licznik++;
			     LoadujJedenPoDrugimIE(tablica,licznik);
			    }
			 }

		  if(!this.IE)
                     LoadujJedenPoDrugim(this.elementyDIV,0); //najpierw loaduj divy
		  else
		     LoadujJedenPoDrugimIE(this.elementyDIV,0);
		  var imgs=this.DIVsIMGs; //konieczne do przekazania do funkcji setTimeout (this nie widzi)
		  setTimeout(function()
			    {
			     LoadujJedenPoDrugim(imgs,0);
			    },this.imgLoadLatency);			//potem loaduj obrazki		    
		  this.EfektyNaObrazki();

	}//init
				
}//koniec AnimowaneMenu


// klasa dziedziczaca z animowanego menu
function AnimowaneProdukty(klasaDIV)
{
 AnimowaneMenu.call(this,klasaDIV) //konstruktor
 //nadpisanie metody
 this.innaRegula=false;	    
 this.odstepyTimeout=300;
 this.direction="top-left";
 this.inicjuj=function()
         {
          var rosnacyTimeout=0;
	    var tablica=this.elementyDIV;
          var durationTime=this.durationTime;
	    var odstepyTimeout=this.odstepyTimeout;
	    var direc=this.direction;
          //petla na divach o podanej klasie CSS
	    if(!tablica) return;
	    tablica.each(function(el)
		  {
		    if(!this.IE)
		       el.style.visibility="hidden"; //divy na hidden

			//wyswietlanie
		    setTimeout(function()
		      {
			 Effect.Grow(el,{
						 duration: durationTime,
						 direction: direc,
						 beforeStart: function()
							       {
								   el.style.visibility="visible";
							       }
							  });
			},rosnacyTimeout);
			rosnacyTimeout+=odstepyTimeout;
     		   });
         }
}//AnimowaneProdukty




 //do anulowania kolejki efektow Scriptaculous
ClearEffectsQueue=function(scope)
	 {
	  Effect.Queues.get(scope).each(function(effect) { effect.cancel(); });
	 }
