// JavaScript Document

var callFillUp = function myCallback(notificationType, notifier, data) {
	if (notificationType != "onPreStateChange")
		return;
			if (data.state == "ready")			
			fillup();
}

Spry.Data.Region.addObserver('galleryImage', callFillUp);
Spry.Data.Region.addObserver('imageSubTitle', callFillUp);
Spry.Data.Region.addObserver('description', callFillUp);

var gEffectInProgress = null;
var gPendingSetRowIDRequest = -1;

function fadeInContent(notificationType, notifier, data) {
	if (notificationType != "onPostUpdate")
		return;
	var effect = new Spry.Effect.Fade('galleryImage', { to: 100, from: 0, duration: 500, finish: function() {
		// The region is now showing. Process any pending row change request.
		gEffectInProgress = null;
		if (gPendingSetRowIDRequest >= 0)
		{
			var id = gPendingSetRowIDRequest;
			gPendingSetRowIDRequest = -1;
			fadeOutContentThenSetRow(id);
		}
	}});
	effect.start();
	
	var effect = new Spry.Effect.Fade('imageSubTitle', { to: 100, from: 0, duration: 500, finish: function() {
		// The region is now showing. Process any pending row change request.
		gEffectInProgress = null;
		if (gPendingSetRowIDRequest >= 0)
		{
			var id = gPendingSetRowIDRequest;
			gPendingSetRowIDRequest = -1;
			fadeOutContentThenSetRow(id);
		}
	}});
	effect.start();
	
	var effect = new Spry.Effect.Fade('description', { to: 100, from: 0, duration: 500, finish: function() {
		// The region is now showing. Process any pending row change request.
		gEffectInProgress = null;
		if (gPendingSetRowIDRequest >= 0)
		{
			var id = gPendingSetRowIDRequest;
			gPendingSetRowIDRequest = -1;
			fadeOutContentThenSetRow(id);
		}
	}});
	effect.start();
	
}

//
// STEP 4: Register the function as an observer on the detail region.
//
Spry.Data.Region.addObserver('galleryImage', fadeInContent);
Spry.Data.Region.addObserver('imageSubTitle', fadeInContent);
Spry.Data.Region.addObserver('description', fadeInContent);

function fadeOutContentThenSetRow(rowID) {
	// If we have an effect already in progress, don't do anything
	// We'll set the rowID when we're done.

	if (gEffectInProgress) {
		gPendingSetRowIDRequest = rowID;
		return;
	}

	// If the correct row is already showing, don't do anything!

	if (rowID == dsGallery.getCurrentRowID())
		return;

	gEffectInProgress = new Spry.Effect.Fade('galleryImage', { to: 0, from: 100, duration: 500, finish: function() {
		dsGallery.setCurrentRow(rowID);
	}});
	gEffectInProgress.start();
	
	gEffectInProgress = new Spry.Effect.Fade('imageSubTitle', { to: 0, from: 100, duration: 500, finish: function() {
		dsGallery.setCurrentRow(rowID);
	}});
	gEffectInProgress.start();
	
	gEffectInProgress = new Spry.Effect.Fade('description', { to: 0, from: 100, duration: 500, finish: function() {
		dsGallery.setCurrentRow(rowID);
	}});
	gEffectInProgress.start();
	
}
