/**
 * This javascript object litheral handles browser image caching.
 * It takes a series of images as arguments (through a image-array or image-object bundle),
 * and cashes them. Optionally it also takes one or more functions as a arguments, witch will be triggered
 * when all images are finished caching.
 * 
 * @author Rolf Håkon Rensaa
 */

var bildeCache = {
	bilder: [],
	bildeObjekt: new Image(),
	tilbakekall: [],
	ferdigLastedeBilder: 0,
	
  lastInnBildeChunker: function(bildene){
    if (typeof bildene == 'string') this.bilder.push(bildene);
    if (typeof bildene == 'array' || typeof bildene == 'object'){
		//console.log("Kjører inn en serie med bilder fra en array el. objekt.");
      for (var i=0; i< bildene.length; i++){
        this.bilder.push(bildene[i]);
      }
    }
  },
  callBackFunksjoner: function(funksjoner){
    if (typeof funksjoner == 'function') this.tilbakekall.push(funksjoner);
    if (typeof funksjoner == 'array' || typeof funksjoner == 'object'){
      for (var i=0; i< funksjoner.length; i++){
        this.tilbakekall.push(funksjoner[i]);
      }
    }
  },	
  lastOppCache: function(imgArr){
  	//if (imgArr == null){ alert("imgArr er empty");};
    for(var i=0; i<this.bilder.length; i++){
			this.bildeObjekt = new Image();
      //this.bildeObjekt[i] = new Image();
      this.bildeObjekt.onload = function(){
				//console.log("Bilde lastet");
				bildeCache._erAlleLastet.apply(bildeCache);
			}
			this.bildeObjekt.src = this.bilder[i];
    }
  },
  _erAlleLastet: function(){
    this.ferdigLastedeBilder++;
    if (this.ferdigLastedeBilder == this.bilder.length) {
			//console.log("Alle bilder er lastet");
			this._triggerFerdig();
			//alert("Ferdig!");
		}
  },
  _triggerFerdig: function(){
    for (var i=0; i<this.tilbakekall.length; i++){
      this.tilbakekall[i]();
    }
    this.bilder = [];
    this.ferdigLastedeBilder = 0;
    this.tilbakekall = [];
  }
} //slutt object literal
