main = function() {
	var galSel = '';
	
	return {
		inAnim: false,
		
		init: function() {
			var galImg = $('div#imageGallery > img:first, div#imageDiashow > img:first');
			
			if (galImg.length) {
				var i = new Image();
				i.onload = function() {
					galImg.fadeIn('fast');
				};
				i.src = galImg.attr('src');
			}
		
			this.initGallery();
			this.initProjectNavigation();
			$('a').focus(function() { if (this.blur) this.blur(); });
		},
		
		initGallery: function() {
			var gal = $('div#imageGallery, div#imageDiashow');
			
			if (gal.is('#imageGallery')) {
				galSel = '#imageGallery';
				gal.find('a.prev').click(this.prevGalImage);
				gal.find('a.next').click(this.nextGalImage);
			} else if (gal.is('#imageDiashow')) {
				galSel = '#imageDiashow';
				window.setInterval("main.nextGalImage(true)",3000);
			}
		},
		
		prevGalImage: function() {
			if (main.inAnim) {
				return;
			}
			
			var links = $(galSel + ' p.urls a'),
				curIndex = parseInt($(galSel + ' span.imageNumber').text()) - 1,
				maxIndex = links.length - 1;
		
			if (curIndex > 0) {
				main.inAnim = true;
				
				var i = curIndex - 1;
				main.showGalImage(links.eq(i).attr('href'));
				main.updateGalNav(i,maxIndex);
			}
			
			return false;
		},
		
		nextGalImage: function(cont) {
			if (main.inAnim) {
				return;
			}
			
			var links = $(galSel + ' p.urls a'),
			curIndex = parseInt($(galSel + ' span.imageNumber').text()) - 1,
			maxIndex = links.length - 1;
			
			if (curIndex < maxIndex) {
				main.inAnim = true;
				
				var i = curIndex + 1;
				main.showGalImage(links.eq(i).attr('href'));
				main.updateGalNav(i,maxIndex);
			} else if (cont) {
				main.inAnim = true;
				
				main.showGalImage(links.eq(0).attr('href'));
				main.updateGalNav(0,maxIndex);
			}
			
			return false;
		},
		
		showGalImage: function(url) {
			var back = $(galSel + ' > img').eq(0),
				ovl = $(galSel + ' > img').eq(1),
				img = new Image();
			
			img.onload = function() {
				ovl.attr('src',url);
				ovl.fadeIn('fast',function() {
					back.attr('src',url);
					ovl.hide();
					
					main.inAnim = 0;
				});
			};
			img.src = url;
		},
		
		updateGalNav: function(cur,max) {
			$(galSel + ' span.imageNumber').text(cur + 1);
			
			if (cur > 0) {
				$(galSel + ' p.arrows .prev').show();
				$(galSel + ' p.arrows .prevDisabled').hide();
			} else {
				$(galSel + ' p.arrows .prev').hide();
				$(galSel + ' p.arrows .prevDisabled').show();
			}
			
			if (cur < max) {
				$(galSel + ' p.arrows .next').show();
				$(galSel + ' p.arrows .nextDisabled').hide();
			} else {
				$(galSel + ' p.arrows .next').hide();
				$(galSel + ' p.arrows .nextDisabled').show();
			}
		},
		
		initProjectNavigation: function() {
			var nav = $('p#teaserNavigation');
			
			if (nav) {
				var teasers = $('div#portfolioList div.teaser');
				nav.find('span.numPages').text(Math.ceil(teasers.length / 9));
				
				nav.find('a.backBtn').click(main.prevProjectPage);
				nav.find('a.forwardBtn').click(main.nextProjectPage);
			}
		},
		
		prevProjectPage: function(e) {
			if (main.inAnim++) {
				return;
			}
			
			var nav = $('p#teaserNavigation'),
				teasers = $('div#portfolioList div.teaser'),
				curPage = parseInt(nav.find('span.curPage').text()) - 1,
				numPages = Math.ceil(teasers.length / 9);
			
			if (curPage > 0) {
				var p = curPage - 1;
				// $('div#portfolioList').animate({ scrollTop: p * 579 },'fast','swing',function() { main.inAnim = 0; });
				$('div#portfolioList').css('opacity',0).scrollTop(p * 579).animate({ opacity: 1.0 },'normal','swing',function() { main.inAnim = 0; });
				main.updateProjectNav(p,numPages);
			}
			
			e.preventDefault();
		},
		
		nextProjectPage: function(e) {
			if (main.inAnim++) {
				return;
			}
			
			var nav = $('p#teaserNavigation'),
			teasers = $('div#portfolioList div.teaser'),
			curPage = parseInt(nav.find('span.curPage').text()) - 1,
			numPages = Math.ceil(teasers.length / 9);
			
			if (curPage < numPages) {
				var p = curPage + 1;
				// $('div#portfolioList').animate({ scrollTop: p * 579 },'fast','swing',function() { main.inAnim = 0; });
				$('div#portfolioList').css('opacity',0).scrollTop(p * 579).animate({ opacity: 1.0 },'normal','swing',function() { main.inAnim = 0; });
				main.updateProjectNav(p,numPages);
			}
			
			e.preventDefault();
		},
		
		updateProjectNav: function(cur,num) {
			$('p#teaserNavigation span.curPage').text(cur + 1);
			
			var nav = $('p#teaserNavigation');
			if (cur == 0) {
				nav.find('.backBtn').hide();
				nav.find('.backBtnDisabled').show();
			} else {
				nav.find('.backBtn').show();
				nav.find('.backBtnDisabled').hide();
			}
			
			if (cur == (num - 1)) {
				nav.find('.forwardBtn').hide();
				nav.find('.forwardBtnDisabled').show();
			} else {
				nav.find('.forwardBtn').show();
				nav.find('.forwardBtnDisabled').hide();
			}
		}
	};
}();

$(document).ready(function() { main.init(); });
