/*****

Image Cross Fade Redux
Version 1.0
Last revision: 02.15.2006
steve@slayeroffice.com

Please leave this notice intact. 

Rewrite of old code found here: http://slayeroffice.com/code/imageCrossFade/index.html


-> Improved by Andre Volk

*****/


window.addEventListener?window.addEventListener("load",so_init,false):window.attachEvent("onload",so_init);

var  count=0, d=document, allimgs=new Array(), actimgs=new Array, wishimgs=new Array,
     currentImage, nextImage, cOpacity=.99, IMGcomplete=true, IncomingWishes=false, 
     showImageDelay = 3000, LOCKED=false, CLEAR_TIMER, MOUSE_OUT=true, DOCUMENT_LOADED = false;
     CLEAR_TITLE = ''; CLEAR_TEXT = '';




function getImageIndex(image){

   for(i=0;i<actimgs.length;i++) if (actimgs[i] == image) return i;
   
   window.alert("Not found in Array");

}

function moveArray (to, from){
	
    while (to.length) {to.pop();}
	
	for (l=0; l<from.length; l++){
		to[l] = from[l];
	}
}
	
	
function compareArrays (left, right){

   if (left.length != right.length){
	   return false;
   } else {
	   
	   for(l=0; l<left.length; l++){
		   
		   if (left[l] != right[l]) return false;
	   }
	   
	   return true;
	   
   }
	
}



function schedule(){

   // Laeuft gerade eine andere Instanz dieser Funktion ?
   
   if (CLEAR_TIMER >= 0){ CLEAR_TIMER -= 1; }
   
   if (!LOCKED) { 
   
      LOCKED = true;
	   
      count += 1;

      if (IMGcomplete) {
    
          // Wartezeit ist vorbei...
          if (count * 50 >= showImageDelay){
          
		        if (actimgs.length > 1) {
					
                   cIndex = getImageIndex(currentImage);
          
                   if ( cIndex == (actimgs.length-1)) {
                       nextImage = actimgs[0];
                   } else nextImage = actimgs[cIndex+1];
             
                   fade();
				   
				}  else count = 0;
				
          }
       
          if (IncomingWishes) {
       
             IncomingWishes = false;
			 
			 if (compareArrays(actimgs, wishimgs) != true){
				 
                moveArray(actimgs, wishimgs);
                nextImage = actimgs[0];
                fade();
				
			 } 
          }  
       
      } else {
   
          fade();
       
      }    
      
      LOCKED = false;
      
   }
   
   if (CLEAR_TIMER == 0){ clear_now(); }
   
}



function fade() {
	
	  IMGcomplete = false;
      cOpacity-=.05;
		
      if (cOpacity <= 0){
	   IMGcomplete = true;
	   cOpacity = 0;
      }
		
      nOpacity = 1-cOpacity;


      currentImage.xOpacity = cOpacity.toFixed(2);
      nextImage.xOpacity = nOpacity.toFixed(2);	
      
      setOpacity(currentImage);
      setOpacity(nextImage);    

      
      if (IMGcomplete){
	     currentImage.style.display = "none";
	     count = 0;
	     cOpacity = .99;
         currentImage = nextImage;
      }
      

      function setOpacity(obj) {
		if(obj.xOpacity>.99) {
			obj.xOpacity = .99;
			return;
		}
		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
		obj.style.display = "block";	
      }
	
}


function set_wishes(von,bis,baeder){
	// Loesche altes wishimgs Array
	
	 while (wishimgs.length) {wishimgs.pop();}
	
	j = 0;
    for (k = von; k<=bis; k++){
		
		wishimgs[j] = allimgs[k];
		j++;
	}
	
	if (baeder==1){wishimgs[j]=document.med01;}
	if (baeder==2){wishimgs[j]=document.mos01;}
	       
    IncomingWishes = true;
}


function clear_now(){

     if (MOUSE_OUT && DOCUMENT_LOADED){
		set_wishes(0,allimgs.length-1);
		document.getElementById("ZimmerName").innerHTML = CLEAR_TITLE;
        document.getElementById("ZimmerBeschreibung").innerHTML = CLEAR_TEXT;
	 }
}
	
	


function make_a_wish(von, bis,baeder){
	
	if (DOCUMENT_LOADED){
	MOUSE_OUT = false;
	CLEAR_TIMER = -1;
    set_wishes(von,bis,baeder);
	}
}


function reset_to_all(title,text){
	
	if (DOCUMENT_LOADED){
	MOUSE_OUT = true;
	CLEAR_TIMER = 200;
	CLEAR_TITLE = title;
	CLEAR_TEXT = text;
	}
}



function so_init() {
	if(!d.getElementById || !d.createElement)return;

	// DON'T FORGET TO GRAB THIS FILE AND PLACE IT ON YOUR SERVER IN THE SAME DIRECTORY AS THE JAVASCRIPT!
	// http://slayeroffice.com/code/imageCrossFade/xfade2.css
	css = d.createElement("link");
	css.setAttribute("href","/css/xfade2.css");
	css.setAttribute("rel","stylesheet");
	css.setAttribute("type","text/css");
	d.getElementsByTagName("head")[0].appendChild(css);

	allimgs = d.getElementById("imageContainer").getElementsByTagName("img");
	
	moveArray (actimgs, allimgs);
	currentImage = actimgs[0];
	currentImage.style.display = "block";
	currentImage.xOpacity = .99;
    cOpacity = .99;
	
	if (actimgs.length > 1) {
	    
	    for(i=1;i<allimgs.length;i++) allimgs[i].xOpacity = 0;
	    nextImage = actimgs[0];
	    window.setInterval("schedule()", 50);
	}
	
	DOCUMENT_LOADED = true;
	
}
