var gallery = { 'lock': true, 'total': 1, 'deck': [], 'ptr': 0, 'pos': 2 };

function galleryInitPhotos(items) {
	gallery.lock  = true;
	gallery.total = items.meta.count;
	
	var images = [];
	
	$.each(items.photos, function(index, photo) {
	    images[index] = new Image();
	    $(images[index]).one('load', { pos: index + 1, ord: items.meta.ord[index] }, function(e) {
	        gallery.deck[e.data.ord] = photo;
			if (gallery.pos == e.data.pos)
			{
				galleryShowPhoto();
				$('#gallery #panel-shadow').animate({ 'top': '310px' }, { duration: 250 });
			}
		}).attr({ 'src': '/static/' + photo.fields.image });
	});
}

function gallerySetPanel(photo) {
    var link = '';
    if (photo.fields.short_link != '')
    {
        var target = '';
        if (photo.fields.short_link.match('http')) target = ' target="_blank"';
        link = ' <a href="' + photo.fields.short_link + '"' + target + '>link</a>';
    }
	$('#gallery #panel #title .prime').text(photo.fields.prime);
    $('#gallery #panel #title .sub').text(photo.fields.sub);
    $('#gallery #panel #caption').html(photo.fields.short_desc + link);
}

function galleryLoadPhoto(ptr) {
	$.getJSON('/home/gallery/' + ptr + '/', function(item) {
	    gallery.deck[item.ord] = item.photo[0];
		$('#gallery #frame #ph3').attr({ 'src': '/static/' + item.photo[0].fields.image });
	});
}

function galleryShowPhoto() {
	if (gallery.deck[gallery.ptr])
	{
	    ph_off = gallery.pos;
    	ph_on  = (gallery.pos == 1) ? 2 : 1;
        
	    $('#gallery #frame #ph' + ph_off).show();
    	$('#gallery #frame #ph' + ph_off).css('z-index', 215);
    	$('#gallery #frame #ph' + ph_on).attr({ 'src': '/static/' + gallery.deck[gallery.ptr].fields.image }).show();

    	$('#gallery #index').text(gallery.ptr + 1 + '/' + gallery.total);
    	gallerySetPanel(gallery.deck[gallery.ptr]);

    	$('#gallery #frame #loading').hide();
    	$('#gallery #frame #ph' + ph_off).fadeOut(250, function() {
    		$('#gallery #frame #ph' + ph_off).css('z-index', 210);
    		gallery.lock = false;
    	});

    	gallery.pos = ph_on;
	}
	else
	{
	    console.log('timing issue...');
	    gallery.lock = false;
	}
}

function galleryPrev() {
	if (gallery.lock || gallery.total <= 1) return;
	
	gallery.lock = true;
	gallery.ptr  = (gallery.ptr == 0) ? gallery.total - 1 : gallery.ptr - 1;
	prev_ptr     = (gallery.ptr == 0) ? gallery.total - 1 : gallery.ptr - 1;
	
	if (gallery.deck[gallery.ptr])
	{
		galleryShowPhoto();
	}
	else
	{
		$('#gallery #frame #loading').show();
		$('#gallery #frame #ph3').one('load', galleryShowPhoto);
	}
	
	if (!gallery.deck[prev_ptr]) galleryLoadPhoto(prev_ptr);
}

function galleryNext() {
	if (gallery.lock || gallery.total <= 1) return;
	
	gallery.lock = true;
	gallery.ptr  = (gallery.ptr == gallery.total - 1) ? 0 : gallery.ptr + 1;
	next_ptr     = (gallery.ptr == gallery.total - 1) ? 0 : gallery.ptr + 1;
	
	if (gallery.deck[gallery.ptr])
	{
		galleryShowPhoto();
	}
	else
	{
		$('#gallery #frame #loading').show();
		$('#gallery #frame #ph3').one('load', galleryShowPhoto);
	}
	
	if (!gallery.deck[next_ptr]) galleryLoadPhoto(next_ptr);
}

$(document).ready(function() {
    $('#gallery #frame #loading').at_intervals(function() {
    	var spinner = $('#gallery #frame #loading img:first');
    	var step = spinner.position().left - 36;
    	if (step < -428) step = 0;
    	spinner.css('left', step + 'px');
    }, { delay: 75 });

    $('#gallery #reg-prev').click(galleryPrev);
    $('#gallery #btn-prev').click(galleryPrev);
    $('#gallery #reg-next').click(galleryPrev);
    $('#gallery #btn-next').click(galleryNext);
    
    $.getJSON('/home/gallery/0/', galleryInitPhotos);
});