/* ----|| Slide main panel to reveal about page. ||---- */

$.fn.autoSlide = function() {
	//$(".primary").animate({left:['+1000px', 'easeOutCirc'], opacity:'0.5'}, 400);
	$(".secondary").animate({left:['+333px', 'easeOutCirc'], opacity:['0.5', 'easeInQuint']}, 400);
}

$.fn.slideBack = function() {
	//$(".primary").animate({left:['0px', 'easeOutCirc'], opacity:'1.0'}, 400);
	$(".secondary").animate({left:['0px', 'easeOutCirc'], opacity:['1.0', 'easeOutQuad']}, 200);
}

$.fn.portfolio = function(unique_id, section_id, slide_class, next_slide_class, prev_slide_class, show_more_class, show_more_height)
{
	var slideStart = 1;
	var totalSlides = $(section_id+" > figure").size();
	
	$(next_slide_class).click(
		function() {
			if (slideStart == totalSlides) {
				return false;
				end;
			}
			slideStart++;
			$(slide_class).animate({left:"-=100%"},250);
			return false;
		}
	);
	
	$(prev_slide_class).click(
		function() {
			if (slideStart == 1) {
				return false;
				end;
			}
			slideStart--;
			$(slide_class).animate({left:"+=100%"}, 250);
			return false;
		}
	);
	
	$(show_more_class).click(
		function() {
			if ($(show_more_class+" > img").hasClass("rotate-180")) {
				$(section_id).css("height", "579px");
				$(show_more_class+" > img").removeClass("rotate-180");
				$(show_more_class).parent(".control-group").addClass("change-me");
				$(".change-me > .control-context").text("Full");
				$(show_more_class).parent(".control-group").removeClass("change-me");
			}
			
			else {
				$(section_id).css("height", show_more_height+"px");
				$(show_more_class+" > img").addClass("rotate-180");
				$(show_more_class).parent(".control-group").addClass("change-me");
				$(".change-me > .control-context").text("Clip");
				$(show_more_class).parent(".control-group").removeClass("change-me");
			}
			
			return false;
		}
	);
}

jQuery.fn.main_nav_behavior = function(nav_id, class_apply, orig_margin_top, nav_order, nav_order_magnitude) {
	$(window).scroll(function() {
		var scroll = $(window).scrollTop();

		if ((scroll >= 22) && (scroll <= 80)) {
			var new_width = 60 + (22 - scroll);
			var existing_margin = $(nav_id).css("margin-top").replace("px","");
			
			if ((existing_margin < orig_margin_top) && ($(nav_id).hasClass(class_apply))) {
				var new_margin = (orig_margin_top - nav_order_magnitude) - ((orig_margin_top + 2) - (new_width*nav_order));
				var margin_top = new_margin;
			}
			else {
				if (nav_order_magnitude == 0) {
					var margin_top = orig_margin_top;
				}
				else {
					var new_margin = orig_margin_top - ((60 - new_width)*(nav_order-1));
					var margin_top = new_margin;
				}
			}

			$(nav_id).css({"width":new_width+"px", "margin-top":margin_top+"px"});
		}
		else if (scroll > 80) {
			$(nav_id).css({"width":"2px", "margin-top":"0"});
			$(nav_id).addClass(class_apply);
			$(nav_id+" .nav-text").css({"opacity":"0"});
		}
		else {
			$(nav_id).css({"width":"60px", "margin-top":orig_margin_top+"px"});
			$(nav_id).removeClass(class_apply);
			$(nav_id+" .nav-text").css({"opacity":"1"});
		}
	});
}

$(function() {
	$(".main-nav").main_nav_behavior("#the-portfolio-link", "page-link-portfolio-stay", 65, 1, 0);
	$(".main-nav").main_nav_behavior("#the-services-link", "page-link-services-stay", 166, 2, 2);
	$(".main-nav").main_nav_behavior("#the-blog-link", "page-link-blog-stay", 267, 3, 4);
	$(".main-nav").main_nav_behavior("#the-contact-link", "page-link-contact-stay", 368, 4, 8);
	$(".main-nav").main_nav_behavior("#the-lab-link", "page-link-lab-stay", 469, 5, 16);
	
	$(".site-info-link").click(function() {
		if ($(".site-info-link").hasClass("toggled-state")) {
			$(".site-info-link").removeClass("toggled-state");
			//$(".the-page").animate({left:['0', 'swing'], opacity:['1.0', 'easeOutQuad']}, 600);
			$(".primary").animate({left:['0', 'swing'], opacity:['1.0', 'easeOutQuad']}, 600);
			$(".secondary").animate({left:['0', 'easeOutCirc'], opacity:['1.0', 'easeOutQuad']}, 600);
			$(".site-info-link").text("i").css({"font-style":"italic","font-weight":"bold"});
		}
		
		else {
			$(".site-info-link").addClass("toggled-state");
			//$(".the-page").animate({left:['+1000px', 'swing'], opacity:['0.5', 'easeInQuint']}, 600);
			$(".primary").animate({left:['+1000px', 'swing'], opacity:['0.5', 'easeInQuint']}, 600);
			$(".secondary").animate({left:['+333px', 'easeOutCirc'], opacity:['0.5', 'easeInQuint']}, 1000)
			$(".site-info-link").text("←").css({"font-style":"normal","font-weight":"normal"});
		}

		return false;
	});
	
	
	/* ----|| Highlight current post type ||---- */
	$(".post-type-link").click(function() {
		$(".post-type-link").removeClass("post-type-current");
		$(this).addClass("post-type-current");
		$(".blog-posts-intro").addClass("specific-type-loaded");
		
		return false;
	});
	
	$("#pf-wfu").portfolio("wfu", "#pf-panels-wfu", ".pf-panel-wfu", ".next-slide-wfu", ".prev-slide-wfu", ".show-more-wfu", "1365");
	$("#pf-am").portfolio("am", "#pf-panels-am", ".pf-panel-am", ".next-slide-am", ".prev-slide-am", ".show-more-am", "1630");
	$("#pf-bk").portfolio("bk", "#pf-panels-bk", ".pf-panel-bk", ".next-slide-bk", ".prev-slide-bk", ".show-more-bk", "820");
	$("#pf-rate").portfolio("rate", "#pf-panels-rate", ".pf-panel-rate", ".next-slide-rate", ".prev-slide-rate", ".show-more-rate", "665");
	//$("#pf-hcsb").portfolio("hcsb", "#pf-panels-hcsb", ".pf-panel-hcsb", ".next-slide-hcsb", ".prev-slide-hcsb", ".show-more-hcsb", "1765");
	$("#pf-rx").portfolio("rx", "#pf-panels-rx", ".pf-panel-rx", ".next-slide-rx", ".prev-slide-rx", ".show-more-rx", "912");
	$("#pf-sj").portfolio("sj", "#pf-panels-sj", ".pf-panel-sj", ".next-slide-sj", ".prev-slide-sj", ".show-more-sj", "1140");
	$("#pf-sbts").portfolio("sbts", "#pf-panels-sbts", ".pf-panel-sbts", ".next-slide-sbts", ".prev-slide-sbts", ".show-more-sbts", "1100");


	/* Show Twitter on home page 
	   TODO: Enable caching  */

	//var tweeturl = cache.getItem("A");
	var tweeturl = "http://twitter.com/status/user_timeline/davidyeiser.json?count=20&callback=?";
	
	function relative_time(time_value) {
		var values = time_value.split(" ");
		time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
		var parsed_date = Date.parse(time_value);
		var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
		var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
		delta = delta + (relative_to.getTimezoneOffset() * 60);
		
		if (delta < 60) {
		return 'less than a minute ago';
		} else if(delta < 120) {
		return 'about a minute ago';
		} else if(delta < (60*60)) {
		return (parseInt(delta / 60)).toString() + ' minutes ago';
		} else if(delta < (120*60)) {
		return 'about an hour ago';
		} else if(delta < (24*60*60)) {
		return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
		} else if(delta < (48*60*60)) {
		return '1 day ago';
		} else {
		return (parseInt(delta / 86400)).toString() + ' days ago';
		}
	}
	
	$.getJSON(tweeturl, function(data) {
		$.each(data, function(i, item) {
			if (item.text.substr(0,1)=="@") {
			}
			else {
				var txt = item.text.replace(/(https?:\/\/[-a-z0-9._~:\/?#@!$&\'()*+,;=%]+)/ig,'<a href="$1">$1</a>')
				.replace(/@+([_A-Za-z0-9-]+)/ig, '<a href="http://twitter.com/$1">@$1</a>')
				.replace(/#+([_A-Za-z0-9-]+)/ig, '<a href="http://search.twitter.com/search?q=$1">#$1</a>');
				
				var tweet_time_stamp = relative_time(item.created_at);
				var tweet_permalink = 'http://twitter.com/'+item.user.screen_name+'/statuses/'+item.id_str;
				
				$('<p></p>').html(txt+'<a class="a-tweet-permalink" href="'+tweet_permalink+'">'+tweet_time_stamp+'</a>').prependTo('#a_twitter_tweet');
				//var the_tweet_to_show = txt+'<a class="a-tweet-permalink" href="'+tweet_permalink+'">'+tweet_time_stamp+'</a>';
				
				end;
			}
		});
	});

});

