/**
 * @author Peter Riet
 */
function cFotoalbum() {
	var _self = this;
	this.blnDiashowGestart = false;
	this.divPhoto;
	this.imgAfbeelding;
	this.preload_images = new Array();
	this.intCurrentPhotoIndex = 0;
	this.strPhotoBaseURL;
	this.arrPhotos = new Array();
	this.arrFotoOmschrijvingen = new Array();
	
	this.strCurrentURL;
	this.intFotoX = 0;
	this.intFotoY = 0;
	this.intMediaIDVorigeSerie;
	this.intMediaIDVolgendeSerie;
	this.intDiashowSnelheid = 3500;
	this.intDiashowSnelheidStappen = 500;
	
	// Elements
	this.divOmschrijving;
	this.aFotoalbumNavigatieVorige;
	this.aFotoalbumNavigatieVolgende;
	this.aFotoalbumNavigatieDiashow;
	this.imgFotoalbumDiashowStart;
	this.imgFotoalbumDiashowStop;
	this.aFotoalbumNavigatieVorigeSerie;
	this.aFotoalbumNavigatieVolgendeSerie;
	this.aFotoalbumNavigatieTrager;
	this.aFotoalbumNavigatieSneller;
	this.spanFotoalbumDiashowSnelheid;
	this.pFotoalbumNavigatieOmschrijving;	
	
	this.init = function() {
		_self.divPhoto = document.getElementById("divFotoalbumFoto");
		_self.imgFotoalbumDiashowStart = document.getElementById("imgFotoalbumDiashowStart");
		_self.imgFotoalbumDiashowStop = document.getElementById("imgFotoalbumDiashowStop");
		_self.divOmschrijving = document.getElementById("divFotoalbumFotoOmschrijving");
		_self.aFotoalbumNavigatieVorige = document.getElementById("aFotoalbumNavigatieVorige");
		_self.aFotoalbumNavigatieDiashow = document.getElementById("aFotoalbumNavigatieDiashow");
		_self.aFotoalbumNavigatieVolgende = document.getElementById("aFotoalbumNavigatieVolgende");
		_self.aFotoalbumNavigatieVorigeSerie = document.getElementById("aFotoalbumNavigatieVorigeSerie");
		_self.aFotoalbumNavigatieVolgendeSerie = document.getElementById("aFotoalbumNavigatieVolgendeSerie");
		_self.aFotoalbumNavigatieTrager = document.getElementById("aFotoalbumNavigatieTrager");
		_self.aFotoalbumNavigatieSneller = document.getElementById("aFotoalbumNavigatieSneller");
		_self.spanFotoalbumDiashowSnelheid = document.getElementById("spanFotoalbumDiashowSnelheid");
		_self.pFotoalbumNavigatieOmschrijving = document.getElementById("pFotoalbumNavigatieOmschrijving");
	}
	
	this.autostartDiashow = function() {
		// Doe niks bij laatste foto
		if (_self.intCurrentPhotoIndex == _self.arrPhotos.length - 1) return;

		_self.updateKnoppenStartDiashow();
		
		_self.blnDiashowGestart = true;				
	}
	
	this.clickTegel = function(strHref) {
		window.location.href = strHref;	
	}
	
	this.startStopDiashow = function() {
		if (!_self.blnDiashowGestart) {
			_self.updateKnoppenStartDiashow();				
			_self.blnDiashowGestart = true;

			// Doe niks bij laatste foto
			if (_self.intCurrentPhotoIndex == _self.arrPhotos.length - 1) {
				// Toon volgende serie
				setTimeout("objFotoalbum.toonVolgendeSerie();", 500);
			}
			else {
				// Toon volgende foto
				// Start de diashow
				setTimeout("objFotoalbum.diaShowVolgende();", 500);
			}
		}
		else {
			// Verander de knop
			_self.imgFotoalbumDiashowStart.style.display = "inline";
			_self.imgFotoalbumDiashowStop.style.display = "none";

			_self.blnDiashowGestart = false;

			// Toon navigatie knoppen
			_self.updateNavigatieKnoppen();
			if (_self.intMediaIDVorigeSerie) _self.aFotoalbumNavigatieVorigeSerie.style.visibility = "visible";
			if (_self.intMediaIDVolgendeSerie) _self.aFotoalbumNavigatieVolgendeSerie.style.visibility = "visible";
		}
	}	
	
	this.diaShowVolgende = function() {
		if (!_self.blnDiashowGestart) return false;
		
		_self.toonVolgendeFoto();
	}

	this.toonFoto = function(intPhotoIndex, strSrc) {
		if (_self.intCurrentPhotoIndex == intPhotoIndex) return;
		
		_self.intCurrentPhotoIndex = intPhotoIndex;
		
		var blnFade = true;
		
		if (!blnFade) {
			if (!_self.imgAfbeelding) _self.imgAfbeelding = document.getElementById("imgFotoalbumFoto")
			
			_self.imgAfbeelding.src = _self.strPhotoBaseURL + strSrc;
		}
		else {
			var i = _self.preload_images.length;
			_self.preload_images[i] = document.createElement("img");
			_self.preload_images[i].src = _self.strPhotoBaseURL + strSrc + "?" + Math.random();
			_self.preload_images[i].id = "preload_image_" + i;
			_self.preload_images[i].onload = _self.insert_image;
			_self.preload_images[i].oncontextmenu = function() { alert("Copyright © Ruben Schipper"); return false; };
			
			objImageAnimation.setOpacity(_self.preload_images[i], 0);
		
			if (i > 0) {
				objImageAnimation.fadeOut("preload_image_" + (i - 1), 100);
			}
		
			_self.divPhoto.appendChild(_self.preload_images[i]);
		}
		
		_self.updateFotoOmschrijving();
	}
	
	this.initFotoPositie = function() {
		var img = document.getElementById("preload_image_" + (_self.preload_images.length - 1));
		
		var pos = findPos(img);
		_self.intFotoX = pos[0];
		_self.intFotoY = pos[1];
	}
	
	this.insert_image = function() {
		var img = document.getElementById("preload_image_" + (_self.preload_images.length - 1));
		
		// Positioneer afbeelding
		img.style.left = _self.intFotoX + "px";
		img.style.top = _self.intFotoY + "px";
		
		// Positioneer navigatie		
		_self.divPhoto.style.height = parseInt(img.height, 10) + "px";
	
		objImageAnimation.fadeIn("preload_image_" + (_self.preload_images.length - 1), 0);

		// Als diashow loopt dan weer verder gaan: start timer opnieuw
		if (_self.blnDiashowGestart) {
			if (_self.intCurrentPhotoIndex < _self.arrPhotos.length - 1)
				setTimeout("objFotoalbum.diaShowVolgende()", _self.intDiashowSnelheid);
			else {
				// Ga door naar de volgende serie
				if (_self.intMediaIDVolgendeSerie) { 
					_self.updateNavigatieKnoppen();
					_self.aFotoalbumNavigatieVorige.style.visibility = "hidden";
					setTimeout("objFotoalbum.toonVolgendeSerie(true);", _self.intDiashowSnelheid);
				}
				else // Laatste serie, stop diashow
					_self.startStopDiashow(); 
			}
		}
	}

	this.toonVorigeFoto = function() {
		if (_self.intCurrentPhotoIndex == 0) return;
		
		var intPhotoIndex = _self.intCurrentPhotoIndex - 1;
		
		_self.toonFoto(intPhotoIndex, _self.arrPhotos[intPhotoIndex]);
		if (!_self.blnDiashowGestart) _self.updateNavigatieKnoppen();
	}
	
	this.toonVolgendeFoto = function() {
		if (_self.intCurrentPhotoIndex == _self.arrPhotos.length - 1) return;
		
		var intPhotoIndex = _self.intCurrentPhotoIndex + 1;
			
		_self.toonFoto(intPhotoIndex, _self.arrPhotos[intPhotoIndex]);
		if (!_self.blnDiashowGestart) _self.updateNavigatieKnoppen();
	}

	
	this.updateFotoOmschrijving = function() {
		var strOmschrijving = (_self.arrFotoOmschrijvingen[_self.intCurrentPhotoIndex].length > 0) ? _self.arrFotoOmschrijvingen[_self.intCurrentPhotoIndex] : "&nbsp;";
		_self.divOmschrijving.innerHTML = strOmschrijving;
	}
	
	this.updateNavigatieKnoppen = function() {
		// Verberg of toon vorige knop ivm begin bereikt
		_self.aFotoalbumNavigatieVorige.style.visibility = (_self.intCurrentPhotoIndex == 0) ? "hidden" : "visible";

		// Verberg play knop bij laatste foto		
		//_self.aFotoalbumNavigatieDiashow.style.visibility = (_self.intCurrentPhotoIndex == (_self.arrPhotos.length - 1)) ? "hidden" : "visible";
		_self.aFotoalbumNavigatieDiashow.style.visibility = ((_self.intCurrentPhotoIndex < (_self.arrPhotos.length - 1)) || _self.intMediaIDVolgendeSerie) ? "visible" : "hidden";
		
		// Verberg of toon vorige knop ivm einde bereikt
		_self.aFotoalbumNavigatieVolgende.style.visibility = (_self.intCurrentPhotoIndex == (_self.arrPhotos.length - 1)) ? "hidden" : "visible";
		
		// Verbergen als de diashow niet loopt
		_self.aFotoalbumNavigatieTrager.style.visibility = (_self.blnDiashowGestart) ? "visible" : "hidden";
		_self.aFotoalbumNavigatieSneller.style.visibility = (_self.blnDiashowGestart) ? "visible" : "hidden";
	}
	
	this.updateNavigatieTooltip = function(el) {
		var strTooltip;
		
		if (!el || typeof el.alt == "undefined")
			strTooltip = ""; 
		else if  (el.alt != "") { //}(!el.alt_org || el.alt_org == "") {
			strTooltip = el.alt;
			
			el.alt_org = el.alt;
			el.alt = "";
			
		}
		else if (typeof el.alt_org != "undefined") {
			var strTooltip = el.alt_org;
			
			el.alt = el.alt_org;
			el.alt_org = "";			
		}
		else
			strTooltip = "";
		
		_self.pFotoalbumNavigatieOmschrijving.innerHTML = strTooltip; 
	}
	
	this.updateKnoppenStartDiashow = function() {
		// Verander de knop
		_self.imgFotoalbumDiashowStart.style.display = "none";
		_self.imgFotoalbumDiashowStop.style.display = "inline";
		
		// Verberg navigatie knoppen
		_self.aFotoalbumNavigatieVorige.style.visibility = "hidden";
		_self.aFotoalbumNavigatieVolgende.style.visibility = "hidden";
		_self.aFotoalbumNavigatieVorigeSerie.style.visibility = "hidden";
		_self.aFotoalbumNavigatieVolgendeSerie.style.visibility = "hidden";
		
		// Snelheid diashow
		_self.aFotoalbumNavigatieTrager.style.visibility = "visible";
		_self.aFotoalbumNavigatieSneller.style.visibility = "visible";
	}
	
	this.toonDiashowSnelheid = function() {
		_self.spanFotoalbumDiashowSnelheid.innerHTML = (_self.intDiashowSnelheid / 1000).toString().replace(".", ",") + " seconden per foto";
		setTimeout("objFotoalbum.spanFotoalbumDiashowSnelheid.innerHTML = '&nbsp;'", 1000);
	}
	
	this.toonVorigeSerie = function() {
		if (_self.intMediaIDVorigeSerie) _self.toonSerie(_self.intMediaIDVorigeSerie);
	}

	this.toonVolgendeSerie = function(blnDiashow) {
		if (_self.intMediaIDVolgendeSerie) {
			// Als functie wordt aangeroepen vanuit diashow: alleen naar volgende als diashow niet gestopt is
			if (!blnDiashow || (blnDiashow && _self.blnDiashowGestart))
				_self.toonSerie(_self.intMediaIDVolgendeSerie);
		}
	}

	this.toonSerie = function(intMediaID) {
		var strParamDiashow = (_self.blnDiashowGestart) ? "&diashow=true" : "";
		window.location.href = _self.strCurrentURL + '?mediaid=' + intMediaID + "&diashowsnelheid=" + _self.intDiashowSnelheid + strParamDiashow;
	}
	
	this.verhoogSnelheidDiashow = function() {
		if ((_self.intDiashowSnelheid - _self.intDiashowSnelheidStappen) <= 0) return;
		
		_self.intDiashowSnelheid -= _self.intDiashowSnelheidStappen;
		_self.toonDiashowSnelheid();
	}

	this.verlaagSnelheidDiashow = function() {
		_self.intDiashowSnelheid += _self.intDiashowSnelheidStappen;
		_self.toonDiashowSnelheid();
	}
	
}

var objFotoalbum = new cFotoalbum();