if (!net) var net = {};
if (!net.stuporheroes) net.stuporheroes = {};
net.stuporheroes.comic = {
	"strips" : [],
	"first" : null,
	"current" : 0,
	"last" : null,
	"animating" : false,
	"pending" : {
		'first' : false,
		'prev' : false,
		'next' : false,
		'last' : false
	},
	"load" : function() {
		var s = $('#strip div');
		var id = s.attr('id');
		id = Number(id.substr(6));
		var post = $('#post').html();
		post = post.substr(post.indexOf('</p>', post.indexOf('<p class="date">')) + 4);
		var strip = {
			"id" : id,
			"image" : s,
			"title" : $("#post h1").html(),
			"post" : post,
			"date" : $("#post .date").html()
		}
		//Load First strip if it's not the loaded strip
		if ($('#first-strip').length)
		{
			var url = $('#first-strip').attr('href');
			net.stuporheroes.comic.first = Number(url.substr(url.lastIndexOf('/') + 1));
			$.getJSON('/ajax-strip.php', { 'id' : net.stuporheroes.comic.first }, function(data, txtStatus) {
				if (data.id !== false)
				{
					$('#strip').append('<div id="strip-' + data.id + '"></div>');
					$('#strip-' + data.id).html('<img src="/'+data.src+'" alt="'+data.alt+'" title="'+data.title+'">').hide();
					net.stuporheroes.comic.placeStrip({
						"id" : data.id,
						"image" : $('#strip-' + data.id),
						"title" : data.post_title,
						"post" : data.post,
						"date" : data.date
					});
					if (net.stuporheroes.comic.pending.first === true)
					{
						net.stuporheroes.comic.pending.first = false;
						net.stuporheroes.comic.firstStrip();
					}
				}
			});
			$('#first-strip').click(net.stuporheroes.comic.firstStripListener);
		}
		//Load Last Strip if it's not the loaded strip
		if ($('#last-strip').length)
		{
			url = $('#last-strip').attr('href');
			net.stuporheroes.comic.last = Number(url.substr(url.lastIndexOf('/') + 1));
			$.getJSON('/ajax-strip.php', { 'id' : net.stuporheroes.comic.last }, function(data, txtStatus) {
				if (data.id !== false)
				{
					$('#strip').prepend('<div id="strip-' + data.id + '"></div>');
					$('#strip-' + data.id).html('<img src="/'+data.src+'" alt="'+data.alt+'" title="'+data.title+'">').hide();
					net.stuporheroes.comic.placeStrip({
						"id" : data.id,
						"image" : $('#strip-' + data.id),
						"title" : data.post_title,
						"post" : data.post,
						"date" : data.date
					});
					if (net.stuporheroes.comic.pending.last === true)
					{
						net.stuporheroes.comic.pending.last = false;
						net.stuporheroes.comic.lastStrip();
					}
				}
			});
			$('#last-strip').click(net.stuporheroes.comic.lastStripListener);
		}
		//If first strip link is dead, then current comic is the first strip
		if (net.stuporheroes.comic.first === null)
		{
			net.stuporheroes.comic.first = strip.id;
		}
		//If last strip link is dead, then current comic is the last strip
		if (net.stuporheroes.comic.last === null)
		{
			net.stuporheroes.comic.last = strip.id;
		}
		//Load current strip variable with id of loaded strip
		net.stuporheroes.comic.current = strip.id;
		//Add loaded strip to the strips array
		net.stuporheroes.comic.placeStrip(strip);
		//Load up previous strip from server
		net.stuporheroes.comic.getPreviousStrip(id);
		//Set up prev-strip listener
		$('#previous-strip').click(net.stuporheroes.comic.previousStripListener);
		//Load up next strip from server
		net.stuporheroes.comic.getNextStrip(id);
		//Set up next-strip listener
		$('#next-strip').click(net.stuporheroes.comic.nextStripListener);
		$('#strip').prepend('<a id="page-back" href="">&nbsp;</a>').append('<a id="page-forward" href="">&nbsp;</a>');
		$('#page-back').click(net.stuporheroes.comic.previousStripListener);
		$('#page-forward').click(net.stuporheroes.comic.nextStripListener);
	},
	"placeStrip" : function(strip) {
		if (strip.id && strip.image)
		{
			net.stuporheroes.comic.strips[strip.id] = strip;
		}
	},
	"getNextStrip" : function(id) {
		if ((id + 1) >= net.stuporheroes.comic.last)
		{
			return;
		}
		$.getJSON('/ajax-strip.php', { 'id' : (id + 1)}, function(data) {
			if (data.id !== false)
			{
				net.stuporheroes.comic.strips[id].image.before('<div id="strip-' + data.id + '"></div>');
				$('#strip-' + data.id).hide().html('<img src="/'+data.src+'" alt="'+data.alt+'" title="'+data.title+'">');
				net.stuporheroes.comic.placeStrip({
					"id" : data.id,
					"image" : $('#strip-' + data.id),
					"title" : data.post_title,
					"post" : data.post,
					"date" : data.date
				});
				if (net.stuporheroes.comic.strips[id + 1] == undefined && id != net.stuporheroes.comic.last)
				{
					net.stuporheroes.comic.getNextStrip(data.id);
				}
				if (net.stuporheroes.comic.pending.next === true)
				{
					net.stuporheroes.comic.pending.next = false;
					net.stuporheroes.comic.nextStrip();
				}
			}
		});
	},
	"getPreviousStrip" : function(id) {
		if ((id - 1) <= net.stuporheroes.comic.first)
		{
			return;
		}
		$.getJSON('/ajax-strip.php', { 'id' : ( id - 1)}, function(data, txtStatus) {
			if (data.id !== false)
			{
				net.stuporheroes.comic.strips[id].image.after('<div id="strip-' + data.id + '"></div>');
				$('#strip-' + data.id).hide().html('<img src="/'+data.src+'" alt="'+data.alt+'" title="'+data.title+'">');
				net.stuporheroes.comic.placeStrip({
					"id" : data.id,
					"image" : $('#strip-' + data.id),
					"title" : data.post_title,
					"post" : data.post,
					"date" : data.date
				});
				if (net.stuporheroes.comic.strips[id - 1] == undefined && id != net.stuporheroes.comic.first)
				{
					net.stuporheroes.comic.getPreviousStrip(data.id);
				}
				if (net.stuporheroes.comic.pending.prev === true)
				{
					net.stuporheroes.comic.pending.prev = false;
					net.stuporheroes.comic.prevStrip();
				}
			}
		});
	},
	"lastStripListener" : function(e) {
		e.preventDefault();
		//If already on the last strip. Do nothing
		if (net.stuporheroes.comic.last == net.stuporheroes.comic.current || net.stuporheroes.comic.animating)
		{
			return;
		}
		net.stuporheroes.comic.lastStrip();
	},
	'lastStrip' : function() {
		//If next strip is not yet loaded wait until it is and proceed
		if (net.stuporheroes.comic.strips[net.stuporheroes.comic.last] === undefined)
		{
			net.stuporheroes.comic.setPending('last');
			return;
		}
		
		//load up last image
		net.stuporheroes.comic.strips[net.stuporheroes.comic.last].image.show().css('width', '100%');
		//Hide all images between current and last one
		for (var i = net.stuporheroes.comic.current + 1; i < net.stuporheroes.comic.strips.length - 1; i++)
		{
			if (net.stuporheroes.comic.strips[i] !== undefined)
			{
				net.stuporheroes.comic.strips[i].image.hide();
			}
		}
		//animate post change
		$('#post').slideUp(500, function() {
			$('#post').html('<h1>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.last].title+'</h1><p class="date">'+net.stuporheroes.comic.strips[net.stuporheroes.comic.last].date+'</p>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.last].post).slideDown(500);
		});
		//peel back current strip to reveal last strip
		net.stuporheroes.comic.animating = true;
		net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.animate(
			{
				"width" : "0"
			},
			1000,
			function()
			{
				net.stuporheroes.comic.animating = false;
				net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.hide();
				net.stuporheroes.comic.current = net.stuporheroes.comic.last;
				$('#social-networking').html('<a rel="prettySociable" href="http://thestuporheroes.net/strip/'+net.stuporheroes.comic.last+'">Share</a>')
				$.prettySociable();
				//Update links
				net.stuporheroes.comic.updateNav();
				//Load strip previous to last strip
				if (net.stuporheroes.comic.strips[net.stuporheroes.comic.current - 1] === undefined)
				{
					net.stuporheroes.comic.getPreviousStrip(net.stuporheroes.comic.current);
				}
			}
		);
	},
	"firstStripListener" : function(e) {
		e.preventDefault();
		//If already on the first strip. Do nothing
		if (net.stuporheroes.comic.first == net.stuporheroes.comic.current || net.stuporheroes.comic.animating)
		{
			return;
		}
		net.stuporheroes.comic.firstStrip();
	},
	'firstStrip' : function() {
		//If first strip is not yet loaded wait until it is and proceed
		if (net.stuporheroes.comic.strips[net.stuporheroes.comic.first] === undefined)
		{
			net.stuporheroes.comic.setPending('first');
			return;
		}
		
		//load up first image
		net.stuporheroes.comic.strips[net.stuporheroes.comic.first].image.show().css('width', '0');
		//animate post change
		$('#post').slideUp(500, function() {
			$('#post').html('<h1>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.first].title+'</h1><p class="date">'+net.stuporheroes.comic.strips[net.stuporheroes.comic.first].date+'</p>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.first].post).slideDown(500);
		});
		//peel back current strip to reveal first strip
		net.stuporheroes.comic.animating = true;
		net.stuporheroes.comic.strips[net.stuporheroes.comic.first].image.animate(
			{
				"width" : "100%"
			},
			1000,
			function()
			{
				net.stuporheroes.comic.animating = false;
				net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.hide();
				net.stuporheroes.comic.current = net.stuporheroes.comic.first;
				$('#social-networking').html('<a rel="prettySociable" href="http://thestuporheroes.net/strip/'+net.stuporheroes.comic.strips[net.stuporheroes.comic.first].id+'">Share</a>')
				$.prettySociable();
				//Update links
				net.stuporheroes.comic.updateNav();
				//Load strip next strip
				if (net.stuporheroes.comic.strips[net.stuporheroes.comic.current + 1] === undefined)
				{
					net.stuporheroes.comic.getNextStrip(net.stuporheroes.comic.current);
				}
			}
		);
	},
	"nextStripListener" : function(e) {
		e.preventDefault();
		//If already on the last strip. Do nothing
		if (net.stuporheroes.comic.last == net.stuporheroes.comic.current || net.stuporheroes.comic.animating)
		{
			return;
		}
		net.stuporheroes.comic.nextStrip();
	},
	'nextStrip' : function()
	{
		//If next strip is not yet loaded wait until it is and proceed
		if (net.stuporheroes.comic.strips[net.stuporheroes.comic.current + 1] === undefined)
		{
			net.stuporheroes.comic.setPending('next');
			return;
		}
		
		//Increment the id of the current strip
		net.stuporheroes.comic.current += 1;
		net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.show().css('width', '100%');
		$('#post').slideUp(500, function() {
			$('#post').html('<h1>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].title+'</h1><p class="date">'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].date+'</p>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].post).slideDown(500);
		});
		net.stuporheroes.comic.animating = true;
		net.stuporheroes.comic.strips[net.stuporheroes.comic.current- 1].image.animate(
			{
				"width" : "0"
			},
			1000,
			function()
			{
				net.stuporheroes.comic.animating = false;
				net.stuporheroes.comic.strips[net.stuporheroes.comic.current - 1].image.hide();
				//Update links
				net.stuporheroes.comic.updateNav();
				$('#social-networking').html('<a rel="prettySociable" href="http://thestuporheroes.net/strip/'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].id+'">Share</a>')
				$.prettySociable();
				if (net.stuporheroes.comic.strips[net.stuporheroes.comic.current + 1] == undefined && net.stuporheroes.comic.current != net.stuporheroes.comic.last)
				{
					net.stuporheroes.comic.getNextStrip(net.stuporheroes.comic.current);
				}
			}
		);
	},
	'updateNav' : function()
	{
		var nav = {
			"first" : "&laquo; First",
			"prev" : "&lt; Previous",
			"next" : "&gt; Next",
			"last" : "&raquo; Last"
		}
		if (net.stuporheroes.comic.current != net.stuporheroes.comic.first)
		{
			nav.first = '<a id="first-strip" href="/strip/'+net.stuporheroes.comic.first+'">&laquo; First</a>';
		}
		if (net.stuporheroes.comic.current != net.stuporheroes.comic.first)
		{
			nav.prev = '<a id="previous-strip" href="/strip/'+(net.stuporheroes.comic.current - 1)+'">&lt; Previous</a>';
		}
		if (net.stuporheroes.comic.current != net.stuporheroes.comic.last)
		{
			nav.next = '<a id="next-strip" href="/strip/'+(net.stuporheroes.comic.current + 1)+'">&gt; Next</a>';
		}
		if (net.stuporheroes.comic.current != net.stuporheroes.comic.last)
		{
			nav.last = '<a id="last-strip" href="/strip/'+net.stuporheroes.comic.last+'">&raquo; Last</a>';
		}
		$('#controls').html('<li>'+nav.first+'</li><li>'+nav.prev+'</li><li>'+nav.next+'</li><li>'+nav.last+'</li>');
		//Set up first-strip listener
		$('#first-strip').click(net.stuporheroes.comic.firstStripListener);
		//Set up prev-strip listener
		$('#previous-strip').click(net.stuporheroes.comic.previousStripListener);
		//Set up next-strip listener
		$('#next-strip').click(net.stuporheroes.comic.nextStripListener);
		//Set up last-strip listener
		$('#last-strip').click(net.stuporheroes.comic.lastStripListener);
	},
	"previousStripListener" : function(e) {
		e.preventDefault();
		//If already on the last strip. Do nothing
		if (net.stuporheroes.comic.first == net.stuporheroes.comic.current || net.stuporheroes.comic.animating)
		{
			return;
		}
		net.stuporheroes.comic.prevStrip();
	},
	'prevStrip' : function()
	{
		//If prev strip is not yet loaded wait until it is and proceed
		if (net.stuporheroes.comic.strips[net.stuporheroes.comic.current - 1] === undefined)
		{
			net.stuporheroes.comic.setPending('prev');
			return;
		}
		
		net.stuporheroes.comic.current -= 1;
		$('#post').slideUp(500, function() {
			$('#post').html('<h1>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].title+'</h1><p class="date">'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].date+'</p>'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].post).slideDown(500);
		});
		net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.show().css({ "width" : '0' });
		net.stuporheroes.comic.animating = true;
		net.stuporheroes.comic.strips[net.stuporheroes.comic.current].image.animate( 
			{
				"width" : '100%'
			},
			1000,
			function()
			{
				net.stuporheroes.comic.animating = false;
				net.stuporheroes.comic.strips[net.stuporheroes.comic.current + 1].image.hide(); //Hide next strip (one we just covered up)
				//Update links
				net.stuporheroes.comic.updateNav();
				if (net.stuporheroes.comic.current > net.stuporheroes.comic.first && net.stuporheroes.comic.strips[net.stuporheroes.comic.current - 1] === undefined)
				{
					net.stuporheroes.comic.getPreviousStrip(net.stuporheroes.comic.current);
				}
				$('#social-networking').html('<a rel="prettySociable" href="http://thestuporheroes.net/strip/'+net.stuporheroes.comic.strips[net.stuporheroes.comic.current].id+'">Share</a>')
				$.prettySociable();

			}
		);
	},
	'setPending' : function(link)
	{
		net.stuporheroes.comic.pending.first = false;
		net.stuporheroes.comic.pending.prev = false;
		net.stuporheroes.comic.pending.next = false;
		net.stuporheroes.comic.pending.last = false;
		switch (link)
		{
			case 'first':
				net.stuporheroes.comic.pending.first = true;
				break;
			case 'prev':
				net.stuporheroes.comic.pending.prev = true;
				break;
			case 'next':
				net.stuporheroes.comic.pending.next = true;
				break;
			case 'last':
				net.stuporheroes.comic.pending.last = true;
				break;
		}
	}
}

$(document).ready(function() {
	$.prettySociable(); //Activate sharing link
	net.stuporheroes.comic.load();
});
