var iCrossFader = {

   //z-indexes

   backgroundIndex : 10,/* index of the next image to be displayed*/
   foregroundIndex : 20,/* index of the image currently displayed*/
   waitingIndex : 5,/*index of the image waiting to be displayed (only used where the crossfader init)*/
   imageDisplayDuration: 8000, /*How long before the next crossfading*/
   
   /*How fast the opacity increment*/
   opacityIncrement : 10, 
   crossFadeInterval : 30,
   
   imagesToLoad : null, /*images that are going to be loaded*/

   _currentImage : 0,
   _previousImage : 0,
   _stopped : false,
   
   _opacity : 0,/* opacity of the image being displayed gets incremented by _opacityIncrement */
   _images : null,
   _imageTimeoutHandle:null,
   _opacityIntervalHandle:null,
   _imagesLoaded: 1,
   _container : null,
   _hasLink : false,
   featureSelect : 'featureSelect',
   _onFadeFunction : null,

   init: function() {
      //try {
	      iCrossFader._images = new Array();

         iCrossFader._images[0] = document.getElementById('imgStart');
         
         iCrossFader._container = iCrossFader._images[0].parentNode;
         if (iCrossFader._container.tagName == 'A')
         {
            iCrossFader._hasLink = true;
            iCrossFader._images[0].url = iCrossFader._container.href;
         }

         iCrossFader._images[0].style.zIndex = iCrossFader.foregroundIndex;

         for(i=0;i<iCrossFader.imagesToLoad.length;i++) 
         {
            var img = new Image(); //preloader
            img.onLoad = new function() {
               iCrossFader._imagesLoaded++;
               iCrossFader._loadCheck();
            }
            img.src = iCrossFader.imagesToLoad[i].src;
            iCrossFader._images[i+1] = document.createElement('img'); //dom object
            iCrossFader._images[i+1].src = img.src;
            iCrossFader._images[i+1].alt = iCrossFader.imagesToLoad[i].alt;
            iCrossFader._images[i+1].url = iCrossFader.imagesToLoad[i].url;
            iCrossFader._images[i+1].style.zIndex = iCrossFader.waitingIndex;
            
            iCrossFader._container.appendChild(iCrossFader._images[i+1]);   
         }
         
         removeClass(document.getElementById(iCrossFader.featureSelect), 'noScript');
         addClass(document.getElementById('n'+iCrossFader._currentImage), 'selected');
      //} catch (e) {
         // Do nothing
      //}
   },
   
   _loadCheck: function() {
      if(iCrossFader._imagesLoaded == iCrossFader.imagesToLoad.length)
      {
         iCrossFader.start();
      }
   },
   
   _crossFade: function(fromImage, toImage) {
         setOpacity(iCrossFader._images[toImage],0);
         iCrossFader._images[toImage].style.zIndex = iCrossFader.foregroundIndex;
         iCrossFader._images[fromImage].style.zIndex = iCrossFader.backgroundIndex;
         iCrossFader._currentImage = toImage;
         iCrossFader._previousImage = fromImage;
         iCrossFader._opacityIntervalHandle = window.setInterval("new function() {iCrossFader._fade();}", iCrossFader.crossFadeInterval);
   },
   
   
   _fade: function() {

      if(iCrossFader._opacity == 0) {
         try {
           iCrossFader._onFadeFunction.apply();
         }
         catch (e) {
            // Do nothing function doesnt exist
         }
         try {
            removeClass(document.getElementById('n'+iCrossFader._previousImage), 'selected'); 
	         addClass(document.getElementById('n'+iCrossFader._currentImage), 'selected');
	      } catch (e) {
	         // Do nothing
	      }
      }
      

      setOpacity(iCrossFader._images[iCrossFader._currentImage],iCrossFader._opacity);
      iCrossFader._opacity += iCrossFader.opacityIncrement;

      if (iCrossFader._hasLink && 50 <= iCrossFader._opacity && iCrossFader._container.href != iCrossFader._images[iCrossFader._currentImage].url)
      {
         iCrossFader._container.href = iCrossFader._images[iCrossFader._currentImage].url;
      }
      
      if(iCrossFader._opacity > 100) {
         iCrossFader.stop();
         iCrossFader._onFade();
      }
   },
   
   start: function() {
      //figurer quelle images on doit afficher
      if(!iCrossFader._stopped) {
         iCrossFader._opacity = 0;
         from = iCrossFader._currentImage;
         to = from+1;
         	      
	      if(to >= iCrossFader._images.length) {
	         to=0;    
	      }
	      iCrossFader._imageTimeoutHandle = window.setTimeout("new function() {iCrossFader._crossFade("+from+","+to+");}", iCrossFader.imageDisplayDuration);
      }
   },
   
   stop: function() {
      window.clearInterval(iCrossFader._opacityIntervalHandle);
      window.clearTimeout(iCrossFader._imageTimeoutHandle);
   },
   
   
   selectImage : function(id) {
      iCrossFader._stopped = true;   
      iCrossFader.stop();

      try
      {
         
         if (iCrossFader._hasLink)
	      {
	         iCrossFader._container.href = iCrossFader._images[id].url;
	      }
	      
         setOpacity(iCrossFader._images[iCrossFader._currentImage],100);
         setOpacity(iCrossFader._images[iCrossFader._previous],0);
      }
      catch (e) {
      
      }

      if(id != iCrossFader._currentImage) {
         iCrossFader._opacity = 0;
         iCrossFader._crossFade(iCrossFader._currentImage,id);
      }
   },
   
   _onFade: function() {
      
      try {
         setOpacity(iCrossFader._images[iCrossFader._previousImage],0);
      } catch (e) {
         // Do nothing
      }
      
      iCrossFader.start();
   }
   
   
   
   
};
