var settings;
var matchingElements;

function replaceTokens(i, from, to)
{
	var element = settings['photo_format'];

	element = element.replace('[ID]', 'photo' + i);

	for (i = 0; i < from.length; i++)
		element = element.replace(from[i], to[i]);
	
	return element;
}

var processPhotos = function(json)
{
	$("#output").append(json.title);
	
	var gallery = settings['gallery_format'].replace('[ALBUM_TITLE]', json.album_title);
	var photos = '';

	for (i = 0; i < settings['repeat']; i++)
    {
		$.each(json.pics, function(i, pic) { 
			photos +=  
			replaceTokens(i, 
				['[TITLE]', '[DESCRIPTION]', '[PHOTO_URL]', '[THUMB_URL]', '[WIDTH]', '[HEIGHT]'], 
				[pic.title, pic.description, json.base_url + pic.photo, json.base_url + settings['thumbnail_shape'] + '/' + pic.thumb + '/' + settings['thumbnail_size'], 
settings['thumbnail_size'], settings['thumbnail_size']]
				); });
	}
	
	gallery = gallery.replace('[PHOTOS]', photos);
	matchingElements.append(gallery);
}

jQuery.fn.imagistable = function(options) {
	var galleryFormat = '<div class="title">[ALBUM_TITLE]</div>[PHOTOS]';
	var photoFormat = 
		  '<div class="photo" id="[ID]" rel="gallery">' 
		+ '<a href="[PHOTO_URL]"><img src="[THUMB_URL]" width="[WIDTH]" height="[HEIGHT]"></a>' 
		+ '</div>';
		
  	settings = jQuery.extend({
		base_url: '',
		gallery_format: galleryFormat,
		max_items: 10,
		photo_format: photoFormat,
		repeat: 1,
		thumbnail_shape: 'rect',
		thumbnail_size: 50
		}, options);
		
	matchingElements = this;
		
	$.getJSON(settings['base_url'] + settings['max_items'] + '?jsoncallback=?', processPhotos);

	return this;
};
