includeJavaScript ('js/config.js');


function PhotoJpg (file, width, height) {
	this.file = file;
	this.width = width;
	this.height = height;
	this.loaded = false;
	this.started = false;
}

PhotoJpg.prototype.getImgHtml = function (width, height) {
	var img = "<img src='" + this.file + "' "
			+ "width=" + width + "px " 
			+ "style='margin:10px'>";
	return img;
}

PhotoJpg.prototype.getLandingImgHtml = function (width, height) {
	var img = "<img src='" + this.file + "' "
			+ "width=" + this.width + "px " 
			+ "height=" + this.height + "px>";
	return img;
}

function setStartPhoto () {
	var startPhoto = Math.floor(Math.random()*photos.length);
	if (startPhoto != 0) {
		var resequence = photos.splice (0,startPhoto);
		photos = photos.concat (resequence);
	}
}

function getNextPhotoNum () {
	if (photoNum == undefined) {
		photoNum = 0;
	}
	else {
		photoNum += 1;
		if (photoNum >= photos.length) {
			photoNum = 0;
		}
	}
	return photoNum;
}

function showContentPhoto () {
	var photoDuration = secondaryPage.photoDuration * 1000;
	var photoFade = secondaryPage.photoFade * 1000;
	if (photoNum == undefined) {
		var photo = photos[getNextPhotoNum ()];
		$("#contentPhotoFrame").html (photo.getImgHtml (168, 112));
		setInterval ("showContentPhoto ()", photoDuration);
	}
	else {
		var photo = photos[getNextPhotoNum ()];
		var img = $("#contentPhotoFrame img");
		img.fadeTo (photoFade, .4, function () {
			img.attr ("src", photo.file);
			img.fadeTo (photoFade, 1.0);
		});
	}
}

var numPhotos = 6;
function avoidPosition (position) {
	var ii = 0;
	var numTop = 0;
	var numBottom = 0;
	if (position < (numPhotos/2)) 
		numTop++;
	else
		numBottom++;
	
	for (ii = 0; ii < landingPhotos.length; ii++) {
		if (landingPhotos[ii] == undefined)
			continue;
		
		if (landingPhotos[ii].position == position) 
			return true;
		
		if (landingPhotos[ii].position < (numPhotos/2))
			numTop++;
		else
			numBottom++;
		
		if (numTop > 2 || numBottom > 2)
			return true;
	}
	return false;
}

function getNextPosition () {
	position = Math.floor(Math.random()*numPhotos);
	while (avoidPosition (position)) {
		position = Math.floor(Math.random()*numPhotos);
	}
	return position;
}

function getDelay (timeout) {
	return Math.floor(Math.random ()*timeout);
}


function switchLandingPhoto (num) {
	var currTime = new Date().getTime();
	var lastSwitch = 0;
	var ii = 0;
	for (ii = 0; ii < landingPhotos.length; ii++) {
		lastSwitch = Math.max (lastSwitch, landingTime[ii]);
		var elapsed = currTime - lastSwitch;
		
		if (elapsed < interPhotoDelay) {
			setTimeout ('switchLandingPhoto('+num+')', interPhotoDelay - elapsed);
			return;
		}
	}
	var photoDuration = mainPage.photoDuration * 1000;
	var photoFade = mainPage.photoFade * 1000;
	var landingPhoto = landingPhotos[num];
	var old = landingPhoto.position;
	var photoDiv = $("#land0"+ landingPhoto.position);
	var landingPhoto = new LandingPhoto ();
	landingPhotos[num] = landingPhoto;
	var imgHtml = landingPhoto.jpg.getLandingImgHtml ();
	var newPhotoDiv = $("#land0"+ landingPhoto.position);
	landingTime[num] = new Date().getTime();
	photoDiv.fadeTo (photoFade, 0.0, function () {
		photoDiv.html ("").css ("opacity", 1.0);
		newPhotoDiv.html (imgHtml).css ("opacity", 0.0);
		newPhotoDiv.fadeTo (photoFade, 1.0);
	});
	
	setTimeout ('switchLandingPhoto('+num+')', photoDuration);
}

function showLandingPhoto (num) {
	var photoDuration = mainPage.photoDuration * 1000;
	var landingPhoto = landingPhotos[num];
	var photoDiv = $("#land0"+ landingPhoto.position);
	var imgHtml = landingPhoto.jpg.getLandingImgHtml ();
	photoDiv.html (imgHtml);
	landingPhoto.time = new Date().getTime();
	setTimeout ('switchLandingPhoto('+num+')', photoDuration);
}

function LandingPhoto () {
	this.jpg = photos[getNextPhotoNum ()];
	this.position = getNextPosition ();
	this.time = 0;
}

function preloadPhotos (batch) {
	var ii = 0;

    var delegate = function(photoNum) {
        photos[photoNum].loaded = true;
    };
    var started = 0;
	for (ii = 0; ii < photos.length; ii++) {
		if (!photos[ii].started) {
			started += 1;
			photos[ii].started = true;
			$('<img src="'+photos[ii].file +'" />').load().onload = delegate (ii);
			if (started == batch)
				break;
		}
	}
	if (started) {
		setTimeout ('preloadPhotos (' + batch + ')', 1000);
	}
}

numLandingPhotos = 3;
landingPhotos = new Array ();
landingTime = new Array ();
interPhotoDelay = 0;

function showLandingPhotos () {
	
	var ii = 0;
	for (ii = 0; ii < numLandingPhotos; ii++) {
		if (!photos[ii].loaded) {
			preloadPhotos ();
			setTimeout ('showLandingPhotos ()', 1000);
			return;
		}
	}

	
	interPhotoDelay = mainPage.photoStartup * 1000;
	for (ii = 0; ii < numLandingPhotos; ii++) {
		landingPhotos.push (new LandingPhoto ());
		landingTime.push (0);
		setTimeout ('showLandingPhoto (' + ii + ')', ii*interPhotoDelay);
	}
}

