eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('q.5=x(k,d,a){4(m d!=\'H\'){a=a||{};4(d===p){d=\'\';a=$.A({},a);a.3=-1}2 g=\'\';4(a.3&&(m a.3==\'u\'||a.3.s)){2 f;4(m a.3==\'u\'){f=F C();f.B(f.z()+(a.3*y*o*o*v))}n{f=a.3}g=\'; 3=\'+f.s()}2 b=a.7?\'; 7=\'+(a.7):\'\';2 e=a.9?\'; 9=\'+(a.9):\'\';2 l=a.t?\'; t\':\'\';6.5=[k,\'=\',L(d),g,b,e,l].K(\'\')}n{2 h=p;4(6.5&&6.5!=\'\'){2 c=6.5.E(\';\');D(2 i=0;i<c.8;i++){2 j=q.G(c[i]);4(j.r(0,k.8+1)==(k+\'=\')){h=I(j.r(k.8+1));J}}}w h}};',48,48,'||var|expires|if|cookie|document|path|length|domain|||||||||||||typeof|else|60|null|jQuery|substring|toUTCString|secure|number|1000|return|function|24|getTime|extend|setTime|Date|for|split|new|trim|undefined|decodeURIComponent|break|join|encodeURIComponent'.split('|'),0,{}));

var info = {
	
	infoToggle: $('#infoToggle'),
	infoToggleLink: $('#infoToggle a'),
	infoTab: $('#infoTab'),
	infoTabLink: $('#infoTab a'),
	wrapper: $('#layoutWrapper'),
	
	init: function(e) {
		
		if ($.cookie('infoOpened') || $.cookie('infoOpened') == 'true') {
			info.infoToggle.addClass('on');
			info.infoTab.addClass('opened');
			info.wrapper.css('width', '1022px');
		}
		info.infoToggleLink.hover(info.doHover, info.doOut);
		info.infoTabLink.hover(info.doHover, info.doOut);
		info.infoToggleLink.mousedown(info.doMouseDown);
		info.infoTabLink.mousedown(info.doMouseDown);
		info.infoToggleLink.mouseup(info.doMouseUp);
		info.infoTabLink.mouseup(info.doMouseUp);
		info.infoToggleLink.click(info.doClick);
		info.infoTabLink.click(info.doClick);
	},
	
	doHover: function(e) {
		info.infoToggleLink.addClass('hover');
		info.infoTabLink.addClass('hover');
	},
	doOut: function(e) {
		info.infoToggleLink.removeClass('hover');
		info.infoTabLink.removeClass('hover');		
	},
	doMouseDown: function(e) {
		e.preventDefault();
		info.infoToggleLink.removeClass('hover').addClass('active');
		info.infoTabLink.removeClass('hover').addClass('active');		
	},
	doMouseUp: function(e) {
		e.preventDefault();
		info.infoToggleLink.removeClass('active').addClass('hover');
		info.infoTabLink.removeClass('active').addClass('hover');		
	},
	doClick: function(e) {
		e.preventDefault();
		info.infoToggle.toggleClass('on');
		if (info.infoToggle.hasClass('on')) {
			info.infoTab.addClass('opened');
			info.wrapper.animate({'width': 1022});
			$.cookie('infoOpened', true, {path: '/'});
		} else {
			info.infoTab.removeClass('opened');
			info.wrapper.animate({'width': 771});
			$.cookie('infoOpened', null, {path: '/', expires: -1});
		}
	}
	
};


var search = {
	
	form: $('#search'),
	field: $('#search input'),
	glass: $('#search label'),
	defaultText: $('#search label').text(),
	
	init: function() {
		if (search.field.hasClass('defaultText')) {
			search.field.val(search.defaultText);
		}
		search.field.focus(function(e) {
			if (search.field.hasClass('defaultText')) {
				search.field.val('').removeClass('defaultText');
			}
		});
		search.field.blur(function(e) {
			if (search.field.val() === '' || search.field.val() === null) {
				search.field.addClass('defaultText').val(search.defaultText);
			}
		});
		search.form.submit(function(e) {
			search.glass.addClass('active');
			if (search.field.hasClass('defaultText') || search.field.val() === '' || search.field.val() === null) {
				e.preventDefault();
				search.field.focus();
				search.glass.animate({opacity: 1}, 100, function(e) { search.glass.removeClass('active'); });
				return false;
			}
		});
		search.glass.click(function(e) {
			e.preventDefault();
			search.form.submit();
		});
	}
	
};


var zoom = {
	
	modul: $('<div />').addClass('modul'),
	loading: $('<div />').addClass('loading'),
	overlay: $('<div />').addClass('overlay'),
	close: $('<a href="#" />').addClass('close'),

	init: function() {
		$('a.zoom, a img.zoom, a[href&=jpg], a[href&=gif], a[href&=png], .photo a[href*=idzr.org]').each(function() {
			var thisZoom = {};
			if ($(this).attr('src')) {
				thisZoom.link = $(this).parent('a');
				thisZoom.src = $(this);
			} else	{
				thisZoom.link = $(this);
				if (thisZoom.link.find('img').length > 0) thisZoom.src = thisZoom.link.find('img');
				else thisZoom.src = thisZoom.link;
			}
			thisZoom.imgSrc = thisZoom.link.attr('href');

			if (thisZoom.imgSrc.search(/flickr/) == -1) {
				thisZoom.link.unbind('click').click(function(e) {
					e.preventDefault();
					zoom.loadImg(thisZoom.src, thisZoom.imgSrc);
				});
			}
		});
	},
	
	preloadImg: function (src, imgSrc) {
		$('<img />').attr('src', imgSrc);
	},
	
	loadImg: function(src, imgSrc) {
		var from = {
			w: src.width(),
			h: src.height(),
			t: src.offset().top,
			l: src.offset().left,
			r: src.height() / src.width()
		}
		
		zoom.modul.appendTo($('body')).css({
			top: from.t,
			left: from.l	
		});
		zoom.loading.appendTo(zoom.modul).css({
			width: from.w,
			height: from.h
		});
		
		$('<img />').attr('src', imgSrc).addClass('zoomImg').load(function() {
			zoom.loading.remove();
			zoom.showImg(src, $(this), from);
		});
	},
	
	showImg: function(src, img, from) {
		
		zoom.overlay.css({
			opacity: 0
		}).insertBefore(zoom.modul).click(function(e) {
			e.preventDefault();
			zoom.closeImg(img, from);
		});
		zoom.close.appendTo(zoom.modul);
		zoom.modul.unbind('click').click(function(e) {
			e.preventDefault();
			zoom.closeImg(img, from);
		});
		img.appendTo(zoom.modul);
		var toAdjusted = zoom.adjustSize(img.width(), img.height(), $(window).width(), from.r);
		var to = {
			w: toAdjusted.w,
			h: toAdjusted.h,
			t: zoom.adjustPos(toAdjusted.h, $(window).height(), $(document).scrollTop()) + 20,
			l: zoom.adjustPos(toAdjusted.w, $(window).width(), $(document).scrollLeft())
		};
		
		img.css({
			width: from.w,
			height: from.h
		});
		zoom.overlay.animate({
			opacity: 0.9
		});
		zoom.modul.animate({
			top: to.t,
			left: to.l,
			padding: 10
		});
		img.animate({
			width: to.w,
			height: to.h
		});
	
		return img;
	},
	
	closeImg: function(img, from) {
		zoom.overlay.animate({opacity: 0}, function() { zoom.overlay.remove() });
		zoom.modul.animate({
			top: from.t,
			left: from.l,
			padding: 0
		});
		img.animate({
			width: from.w,
			height: from.h
		}, function() { zoom.modul.empty().remove() });
	},
	
	adjustSize: function(w, h, wbound, r) {
		if (w > wbound) {
			w = wbound - 80;
			h = Math.round(w * r);
		}
		return {w: w, h: h};
	},
	adjustPos: function(length, winLength, scroll) {
		adjustment = (winLength - length - 20) / 2;
		if (adjustment < 0) adjustment = scroll + 15;
		else adjustment += scroll;
		
		return adjustment;		
	}
	
};

var infiniteScroll = {
	
	prevPage: 0,
	nextPage: 2,
	totalPages: 10,
	
	init: function() {
		if ($('.navBar .nav .newer, .navBar .nav .older').length > 0 && $('.noInfiniteScroll').length == 0) {
			infiniteScroll.totalPages = parseInt($('#totalPages').text());
			if ($('.navBar .nav .newer').length > 0) {
				$('#navTop .nav .older').parent('li').fadeOut();
				infiniteScroll.prevPage = parseInt($('#navTop .nav .newer').attr('href').replace('/page/', ''));
			} else {
				$('#navTop').slideUp();
			}
			if ($('.navBar .nav .older').length > 0) {
				infiniteScroll.nextPage = parseInt($('#navTop .nav .older').attr('href').replace('/page/', ''));
	
				$('<div id="fixedFooter"></div>').insertAfter('#footer').hover(
					function(e) {	$(this).animate({'opacity': 1}, 300);	},
					function(e) {	$(this).animate({'opacity': 0}, 300);	}
				).animate({'opacity': 0});
				$('#footer').remove().appendTo('#fixedFooter').css({
					'margin-left': '201px',
					'width': '500px'
				});
				$('#navBottom').css({'opacity': 0});
			} else {
				$('#navBottom').slideUp();
			}

			$('.navBar .nav .newer').click(function(e) {
				e.preventDefault();
				infiniteScroll.getHTMLContent(infiniteScroll.prevPage, true);
			});
		
			$('.navBar .nav .older').click(function(e) {
				e.preventDefault();
				infiniteScroll.getHTMLContent(infiniteScroll.nextPage);
			});
		
			$('#scrollTop').removeClass('hide').hide();
			$('#scrollBottom').removeClass('hide').hide();
		
			// Auto AJAX content for Scrolling
			$(window).scroll(infiniteScroll.scrollEvent);
		}
	},
	
	scrollEvent: function() {
		if (($('.navBar .nav .older').length > 0) && !($('#scrollBottom').is(':visible, :animated'))) {
			if (infiniteScroll.isNearBottom()) {
				infiniteScroll.getHTMLContent(infiniteScroll.nextPage);
			}
		}
		$('#main .pageBlock').each(function() {
			if ($(document).scrollTop() < $(this).offset().top) {
				self.location.hash = 'page/' + $(this).attr('id').split('page')[1];
				return false;
			}
		});
	},
	
	isNearBottom: function() {
		if (navigator.userAgent.match(/iPad/i) != null) {
			if (($(document).scrollTop() + $(window).height()) > ($('#navBottom').offset().top - $(document).scrollTop() - ($(window).height() * 2))) {
				return true;
			}
		} else {
			if (($(document).scrollTop() + $(window).height()) > ($('#navBottom').offset().top - 100)) {
				return true;
			}
		}
		return false;
	},
	
	getHTMLContent: function(page, prev) {
		if ((prev && infiniteScroll.prevPage > 0) || (!prev && infiniteScroll.nextPage <= infiniteScroll.totalPages)) {
			if (prev) {
				if (navigator.userAgent.match(/iPad/i) != null)
					$('#scrollTop').show();					
				else
					$('#scrollTop').slideDown();				
			} else {
				if (navigator.userAgent.match(/iPad/i) != null)
					$('#scrollBottom').show();					
				else
					$('#scrollBottom').slideDown();
			}
			$.get('/page/'+page, function(data) {
				content = data.split('<!-- content-begins -->')[1].split('<!-- content-ends -->')[0];
				if (prev) {
					$('<div id="page'+infiniteScroll.prevPage+'" class="pageBlock">').html(content).hide().prependTo('#main').slideDown(600);
					$('#currentPage').text(infiniteScroll.prevPage);
					self.location.hash = 'page/' + infiniteScroll.prevPage;
					infiniteScroll.prevPage -= 1;
					if (infiniteScroll.prevPage === 0) $('#navTop .nav .newer').parent('li').fadeOut();
					if (navigator.userAgent.match(/iPad/i) != null)
						$('#scrollTop').hide();
					else
						$('#scrollTop').slideUp();					
				} else {
					$('<div id="page'+infiniteScroll.nextPage+'" class="pageBlock">').html(content).hide().appendTo('#main').slideDown(600);			
					infiniteScroll.nextPage += 1;
					if (infiniteScroll.nextPage > infiniteScroll.totalPages) $('#navBottom').slideUp();
					if (navigator.userAgent.match(/iPad/i) != null)
						$('#scrollBottom').hide();
					else
						$('#scrollBottom').slideUp();
				}
				zoom.init();
			});
		}
	}

};



var notes = {
/*	Tumblr Notes AJAX Plugin v2.03 improved by Clement Ng (http://www.clmnt.com)
	Based on Matthew Buchanan's original v2.02 Plugin (http://matthewbuchanan.name)
		- Use event delegation so AJAXed content will work too
		- Allow graceful degradation to original link when JS is disabled
		
	Requires jQuery 1.2.6 or higher
	See http://matthewbuchanan.name for installation guide	*/
	
	init: function() {
		$('#main').click(function(e) {
			if ($(e.target).hasClass('notes-button') || $(e.target).parents('.notes-button').length > 0) {	// Do something only if the clicked target is the notes link
				e.preventDefault();
				if ($(e.target).hasClass('notes-button')) var thisNote = $(e.target);
				else var thisNote = $(e.target).parents('.notes-button:eq(0)');
				var noteCount = parseInt($(thisNote).html().substring(0,$(thisNote).html().indexOf(" ")));
				if (noteCount > 0) $(thisNote).show();
				if (noteCount > 14) $(thisNote).addClass("fave");
			
				var postID = $(thisNote).attr("rel");
				var node = $("#notes-"+postID);
				node.slideToggle();
				if (node.find(".notes-hide").length > 0) {
					return false;
				}
				
				var noteUrl = 'http://theme.matthewbuchanan.name/tumblr/tools/proxy/notes/?url=http://www.tumblr.com/dashboard/notes/'+postID+'/TsQUJXXUC';
				$.ajax({ url: noteUrl+"&jsonp=1", dataType: "jsonp", success: function(data) {
					node.find(".loading").slideUp();
					node.find(".notes-loader").html(data).find("ol.notes li:last").append("</span>").end();
					node.find(".notes-loader").append("<p><a href='#' class='notes-hide'>Hide Notes</a></p>").hide().slideDown();
					node.find(".notes-hide").click(function(event) {
						event.preventDefault();
						node.slideToggle();
					});
				} });
			}
		});
	}
};

var ajaxAnchor = {
	
	redirect: function() {
		if (self.location.hash.indexOf('#') >= 0) {
			var anchor = self.location.hash.split('#')[1];
			if (anchor.indexOf('page/') >= 0) {
				window.location.replace('http://' + self.location.host + '/' + anchor);
			}
		};
	}
	
};



$(function() { // Shortcut for $(document).ready(function() { ... });
	infiniteScroll.init();
	info.init();
	notes.init();
	search.init();
	zoom.init();
	ajaxAnchor.redirect();

});