/*------------------------------------------------------------------------------------
 
	Preloader
	A very simple image preloader object
  
 	Usage:
 	
    Preloader.add(path);
    Preloader.onFinish(func);
    Preloader.load();
    
      path: 		A string or array of strings of image paths to preload
      func:     A function or array of functions to be called after images are loaded

      load():   Start the preloader
      
------------------------------------------------------------------------------------*/

var Preloader = {
  callbacks: [],
  images: [],
  loadedImages: [],
  imagesLoaded: 0,
  
  add: function(image){
    if (typeof image == 'string') this.images.push(image);
    if (typeof image == 'array' || typeof image == 'object'){
      for (var i=0; i< image.length; i++){
        this.images.push(image[i]);
      }
    }
  },
  onFinish: function(func){
    if (typeof func == 'function') this.callbacks.push(func);
    if (typeof func == 'array' || typeof func == 'object'){
      for (var i=0; i< func.length; i++){
        this.callbacks.push(func[i]);
      }
    }
  },
  load: function(){
    for(var i=0; i<this.images.length; i++){
      this.loadedImages[i] = new Image();
      this.loadedImages[i].onload = function(){ Preloader.checkFinished.apply(Preloader) }
      this.loadedImages[i].src = this.images[i];
    }
  },
  
  checkFinished: function(){
    this.imagesLoaded++;
    if (this.imagesLoaded == this.images.length) this.fireFinish();
  },
  fireFinish: function(){
    for (var i=0; i<this.callbacks.length; i++){
      this.callbacks[i]();
    }
    this.images = [];
    this.loadedImages = [];
    this.imagesLoaded = 0;
    this.callbacks = [];
  }
}




/**
controls the fading images on load
**/
	function preload(fadeID,imageID) {
			// preload fading image
			var image = $(imageID).readAttribute('src');
			Preloader.add(image);
			// function to call when image is ready
			var finishFunc = function(){
				/*
				feedback_container2 = $("feedback_container2");
				//alert(feedback_container2);
				var jetzt = new Date();
				var jetzt_gerade = jetzt.getTime();
				feedback_container2.innerHTML = jetzt_gerade;
				*/
				
				Effect.Appear(fadeID, { duration:1, from:0.0, to:1.0 });
				
				
				// set container to visible
				//$('image_holder').setStyle({'display': 'block'});
				// very quick fade out overlapping container to prevent flicker
				//new Effect.Opacity('preloading', {duration: 0.1, from: 1, to: 0});
			}
			feedback_container = $("feedback_container");
			//alert(feedback_container);
			/*
			var jetzt = new Date();
			var jetzt_gerade = jetzt.getTime();
			feedback_container.innerHTML = jetzt_gerade;
			*/
			Preloader.onFinish(finishFunc);
			Preloader.load();
	}
	function fade(imageID) {
		// fade in container which holds the image
		Effect.Appear(imageID, { duration:1, from:0.0, to:1.0 });
		//new Effect.Opacity('image_holder', {duration: 1, from: 0, to: 1});
		// display copyright afterwards to prevent appearance without image
		//setTimeout(function() { $('copyright').setStyle({'display': 'block'}); }, 500);
	}