// Dimensions JQuery plugin - http://jquery.com/dev/svn/trunk/plugins/dimensions/dimensions.js
jQuery.fn._height=jQuery.fn.height;jQuery.fn._width=jQuery.fn.width;jQuery.fn.height=function(){if(this[0]==window)return self.innerHeight||jQuery.boxModel&&document.documentElement.clientHeight||document.body.clientHeight;if(this[0]==document)return Math.max(document.body.scrollHeight,document.body.offsetHeight);return this._height(arguments[0]);};jQuery.fn.width=function(){if(this[0]==window)return self.innerWidth||jQuery.boxModel&&document.documentElement.clientWidth||document.body.clientWidth;if(this[0]==document)return Math.max(document.body.scrollWidth,document.body.offsetWidth);return this._width(arguments[0]);};jQuery.fn.innerHeight=function(){return this[0]==window||this[0]==document?this.height():this.css('display')!='none'?this[0].offsetHeight-(parseInt(this.css("borderTopWidth"))||0)-(parseInt(this.css("borderBottomWidth"))||0):this.height()+(parseInt(this.css("paddingTop"))||0)+(parseInt(this.css("paddingBottom"))||0);};jQuery.fn.innerWidth=function(){return this[0]==window||this[0]==document?this.width():this.css('display')!='none'?this[0].offsetWidth-(parseInt(this.css("borderLeftWidth"))||0)-(parseInt(this.css("borderRightWidth"))||0):this.height()+(parseInt(this.css("paddingLeft"))||0)+(parseInt(this.css("paddingRight"))||0);};jQuery.fn.outerHeight=function(){return this[0]==window||this[0]==document?this.height():this.css('display')!='none'?this[0].offsetHeight:this.height()+(parseInt(this.css("borderTopWidth"))||0)+(parseInt(this.css("borderBottomWidth"))||0)+(parseInt(this.css("paddingTop"))||0)+(parseInt(this.css("paddingBottom"))||0);};jQuery.fn.outerWidth=function(){return this[0]==window||this[0]==document?this.width():this.css('display')!='none'?this[0].offsetWidth:this.height()+(parseInt(this.css("borderLeftWidth"))||0)+(parseInt(this.css("borderRightWidth"))||0)+(parseInt(this.css("paddingLeft"))||0)+(parseInt(this.css("paddingRight"))||0);};jQuery.fn.scrollLeft=function(){if(this[0]==window||this[0]==document)return self.pageXOffset||jQuery.boxModel&&document.documentElement.scrollLeft||document.body.scrollLeft;return this[0].scrollLeft;};jQuery.fn.scrollTop=function(){if(this[0]==window||this[0]==document)return self.pageYOffset||jQuery.boxModel&&document.documentElement.scrollTop||document.body.scrollTop;return this[0].scrollTop;};jQuery.fn.offset=function(options,returnObject){var x=0,y=0,elem=this[0],parent=this[0],op,sl=0,st=0,options=jQuery.extend({margin:true,border:true,padding:false,scroll:true},options||{});do{x+=parent.offsetLeft||0;y+=parent.offsetTop||0;if(jQuery.browser.mozilla||jQuery.browser.msie){var bt=parseInt(jQuery.css(parent,'borderTopWidth'))||0;var bl=parseInt(jQuery.css(parent,'borderLeftWidth'))||0;x+=bl;y+=bt;if(jQuery.browser.mozilla&&parent!=elem&&jQuery.css(parent,'overflow')!='visible'){x+=bl;y+=bt;}}if(options.scroll){op=parent.offsetParent;do{sl+=parent.scrollLeft||0;st+=parent.scrollTop||0;parent=parent.parentNode;if(jQuery.browser.mozilla&&parent!=elem&&parent!=op&&jQuery.css(parent,'overflow')!='visible'){y+=parseInt(jQuery.css(parent,'borderTopWidth'))||0;x+=parseInt(jQuery.css(parent,'borderLeftWidth'))||0;}}while(parent!=op);}else
parent=parent.offsetParent;if(parent&&(parent.tagName.toLowerCase()=='body'||parent.tagName.toLowerCase()=='html')){if((jQuery.browser.safari||(jQuery.browser.msie&&jQuery.boxModel))&&jQuery.css(parent,'position')!='absolute'){x+=parseInt(jQuery.css(op,'marginLeft'))||0;y+=parseInt(jQuery.css(op,'marginTop'))||0;}break;}}while(parent);if(!options.margin){x-=parseInt(jQuery.css(elem,'marginLeft'))||0;y-=parseInt(jQuery.css(elem,'marginTop'))||0;}if(options.border&&(jQuery.browser.safari||jQuery.browser.opera)){x+=parseInt(jQuery.css(elem,'borderLeftWidth'))||0;y+=parseInt(jQuery.css(elem,'borderTopWidth'))||0;}else if(!options.border&&!(jQuery.browser.safari||jQuery.browser.opera)){x-=parseInt(jQuery.css(elem,'borderLeftWidth'))||0;y-=parseInt(jQuery.css(elem,'borderTopWidth'))||0;}if(options.padding){x+=parseInt(jQuery.css(elem,'paddingLeft'))||0;y+=parseInt(jQuery.css(elem,'paddingTop'))||0;}if(options.scroll&&jQuery.browser.opera&&jQuery.css(elem,'display')=='inline'){sl-=elem.scrollLeft||0;st-=elem.scrollTop||0;}var returnValue=options.scroll?{top:y-st,left:x-sl,scrollTop:st,scrollLeft:sl}:{top:y,left:x};if(returnObject){jQuery.extend(returnObject,returnValue);return this;}else{return returnValue;}};

// jQuery Easing v1.1 - http://gsgd.co.uk/sandbox/jquery.easing.php
jQuery.easing = {
	bouncein: function(x, t, b, c, d) {
		return c - jQuery.easing['bounceout'](x, d-t, 0, c, d) + b;
	},
	bounceout: function(x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	linear: function(x, t, b, c, d) {
		return c*t/d + b; //linear
	}
};

// setting up interface
var menu = "";
var speedin = 2000;
var speedout = 1500;

var content_setup = function(section) {
	$("#"+ section).css("top", $(window).height() +"px").height($(window).height() +"px");
	$("#"+ section +" div.content").css("background-color","#446B7E");
	$("#"+ section +" div.content").css("border-left","1px solid #67A2BE");
	$("#"+ section +" div.content").css("border-right","1px solid #67A2BE");
	$("#"+ section +" div.content").css("min-height", parseInt($("#"+ section).height(), 10) +"px");
};
var animate_content = function(section) {
	if (menu == "") {
		$("#"+ section).animate({top: -1}, speedin, "bounceout", function() {
			$("#menu #menu_"+ section +" a").addClass("selected");
			$("#close-button").css("top", (parseInt($("#"+ section).css("top"), 10) +20) +"px");
			$("#close-button").fadeIn("slow");
			$("#"+ section +" div.content").fadeIn("slow");
		});
		menu = section;
	} else {
		if (menu != section) {
			$("#close-button").hide();
			$("#"+ menu).animate({top: ($(window).height()+1)}, speedout, "bounceout", function() {
				$("#menu a").removeClass("selected");
				$("div.content").hide();
				$("#"+ section).animate({top: -1}, speedin, "bounceout", function() {
					$("#menu #menu_"+ section +" a").addClass("selected");
					$("#close-button").css("top", (parseInt($("#"+ section).css("top"), 10) +20) +"px");
					$("#close-button").fadeIn("slow");
					$("#"+ section +" div.content").fadeIn("slow");
				});
			});
			menu = section;
		} else {
			$("#close-button").hide();
			$("#"+ menu).animate({top: ($(window).height()+1)}, speedout, "bounceout"	, function() {
				$("#menu a").removeClass("selected");
				$("div.content").hide();
			});
			menu = "";
		}
	}
};
var setup_links = function(section) {
	$('a[@href*=#'+ section +']').bind("click", function() {
		animate_content(section);
		return false;
	});
};
var rewrite_email = function() {
	$("a[@href^=mailto:]").each(function() {
		var ad = $(this).text();
		ad = ad.replace(/\[snail\]/gi,"@");
		ad = ad.replace(/\[dot\]/gi,".");
		$(this).text(ad);
		ad = $(this).attr("href");
		ad = ad.replace(/\[snail\]/gi,"@");
		ad = ad.replace(/\[dot\]/gi,".");
		$(this).attr("href", ad);
	});
};
	

$(function() {
	content_setup("about");
	content_setup("resume");
	content_setup("contact");
	setup_links("about");
	setup_links("resume");
	setup_links("contact");
	
	var addr = location.href;
	if (addr.indexOf("#about") > 0) animate_content("about");
	else if(addr.indexOf("#resume") > 0) animate_content("resume");
	else if (addr.indexOf("#contact") > 0) animate_content("contact");
	
	$("#selected_work div.item:even").addClass("odd");
	$("#footer").before('<div id="bottom-spacer"></div><div id="close-button"><a href="#"></a></div>');
	$("#close-button").hide();
	$("#menu a, #close-button a").focus(function() {
		$(this)[0].blur();
	});
	$("#close-button a").bind("click", function() {
		$("#close-button").hide();
		$("#"+ menu).animate({top: ($(window).height()+1)}, speedout, "bounceout"	, function() {
			$("#menu a").removeClass("selected");
			$("div.content").hide();
		});
		return false;
		menu = "";
	});
	$("#resume li").append(", ");
	rewrite_email();
});