var Bradt = {
	template_url : '',
	
	init: function() {
		Bradt.menu();
		Bradt.portfolio.init();
		Bradt.safari();
		Bradt.homepage.init();
		Bradt.contact.init();
		Bradt.about.init();
	},
	
	safari: function() {
		$('.homepage .books').append('<div id="ShelfariWidget85430"><a href="http://www.shelfari.com/">Shelfari: Book reviews on your book blog</a><script src="http://www.shelfari.com/ws/85430/widget.js" type="text/javascript" language="javascript"></script><noscript><p>Find new <a href="http://www.shelfari.com/books">books</a> and literate friends with Shelfari, the online <a href="http://www.shelfari.com/">book club</a>.</p></noscript></div>');
	},
	
	about: {
		init: function() {
			if (!$('.page-about').get(0)) return;
		
			$('.more-history').before('<a href="" class="more-history-btn">Show more work history...</a>');
			$('.more-history-btn').click(function() {
				$('.more-history').fadeIn();
				$(this).remove();
				return false;
			});
		}
	},
	
	contact: {
		init: function() {
			if (!$('.page-contact').get(0)) return;
			
			$('input[name=what]').change(function() {
				var val = $(this).val();
				switch (val) {
					case 'plugin':
					case 'personal':
						$('#message-details, .button, .section').hide();
						$('.section-' + val).show();
						break;
					default:
						$('.section').hide();
						$('#message-details, .button').show();
				}
			});
			
			$('form').submit(function() {
				var form = $(this);
				var data = form.serialize();
				var url = form.attr('action') + '?ajax=1';
				$.post(url, data, function(data) {
					form.html(data);
					if ($('p.error-msg').get(0)) {
						$.scrollTo('p.error-msg', 500);
						$('p.error, p.error-msg').hide().fadeIn();
					}
				});
				
				return false;
			});
		}
	},
	
	homepage: {
		init: function() {
			var photo = $('#header .home .photo');
			if (photo.get(0)) {
				photo.append('<img src="' + Bradt.template_url + '/images/home/photo-glow.jpg" alt="" />');
				$('img', photo).hide().fadeIn(2000, Bradt.homepage.fadeIn);
			}
		},
		
		fadeIn: function() {
			$(this).fadeIn(1000, Bradt.homepage.fadeOut);
		},
		
		fadeOut: function() {
			$(this).fadeOut(1000, Bradt.homepage.fadeIn);
		}
	},
	
	menu: function() {
		$('#header ul.nav li a').click(function() {
			$('#header ul.nav li a').removeClass('active');
			$(this).addClass('active');
		});
	},
	
	portfolio: {
	
		init: function() {
			if (!$('.page-portfolio').get(0))
				return;
			
			$.localScroll.hash();
			
			var img = new Image();
			img.src = Bradt.template_url + '/images/indicator.gif';

			Bradt.portfolio.roles.init();
			
			$('li.project').each(function() {
				var project = $(this);
				var scr = $('.scr > a', project);
			
				$('ul.screenshots li a', project).click(function() {
					var anchor = $(this);
					
					$('ul.screenshots li a', project).removeClass('current');
					anchor.addClass('current');

					if (!$('.loading', scr).get(0)) {
						scr.append('<div class="loading"></div><img src="' + Bradt.template_url + '/images/indicator.gif" width="16" height="16" alt="Loading..." class="loading" />');
					}
					else {
						$('.loading', scr).show();
					}
					
					$('.loading', scr).each(function() {
						var ld = $(this);
						var top = (scr.height()/2) - (ld.height()/2);
						var left = scr.width()/2 - (ld.width()/2);
						ld.css('top', top + 'px');
						ld.css('left', left + 'px');
					});
					
					var img = new Image();
					$(img).load(function() {
						$('.loading', scr).hide();
						
						if (img.height > scr.height()) {
							scr.css('background-image', 'url(' + anchor.attr('href') + ')');
							scr.animate({ height: img.height });
						}
						else {
							scr.animate({ height: img.height }, function() {
							   scr.css('background-image', 'url(' + anchor.attr('href') + ')');
							});
						}

						var url = anchor.attr('href').replace(/\-[0-9]+x[0-9]+\.jpg/, '.jpg');
						scr.attr('href', url);
						
						$.scrollTo(project, 500);
				   });
				   img.src = anchor.attr('href');
		
				   return false;
				});
			
				// Preload screenshots
				$('ul.screenshots li a', project).each(function() {
					var img = new Image();
					img.src = $(this).attr('href');
				});
			
			});
		},
		
		roles: {
			
			init: function() {
				$('.tabs li').click(function() {
					var selected = $(this).attr('class');
					
					$('.tabs li a').removeClass('current');
					$('a', this).addClass('current');
					
					if (selected == 'all') {
						$('.project').show();
						return;
					}
					
					$('.project').each(function() {
						var found = 0;
						$('.roles li span', this).each(function() {
							var txt = $(this).text().toLowerCase();
							txt = txt.replace(/[^a-z0-9]/, '-');
							if (txt == selected) {
								found = 1;
							}
						});
						
						if (found) {
							$(this).show();
						}
						else {
							$(this).hide();
						}
					});					
				});
				
				var hash = document.location.hash;
				if (hash) {
					hash = hash.replace('#', '');
					var tab = $('.tabs li.' + hash).get(0);
					if (tab) {
						$(tab).trigger('click');
					}
				}
			}
		}
	}
}

$(document).ready(function() {
	bradt_load_js_vars();
	Bradt.init();
});
