/*
	functions.site.js
	DOM Interactivity Functions
	Created: Nov. 5, 2008
	Creator: Matt Kircher, Mainline Media LLC
*/

function setupPage(){
	
	applyIE6FlickerFix();
	translateEmails();
	
	//navigation
	$('#main-nav li:last, #sub-nav li:last, #functional-nav li:last, #gutter-nav li:last').addClass('end_nav');
	
	//links
	$('a').bind('click', function(){ $(this).blur(); });
	$('a.arrowed').append(' ›');
	
	//level areas
	$('#level-1, #level-2, .columns').addClass('clearfix');
	
	//headers / proximity
	$(':header + :header').addClass('subhead');
		$('#posts').find(':header + :header').removeClass('subhead');
	$('#level-2 .sub-content :header').css({ marginTop:'15px' });
	$('#level-2 .main-content :header:gt(0)').not('.subhead').css({ marginTop:'15px' });
	$(':header + p, :header + ul, :header + ol, :header + div').css({ marginTop:'2px' })
	.prev().css({ marginBottom:'0px' });
	
	//rounded corners
	$('.rounded').corners("10px");
	
	//styles
	$('.inline_list li').not(':last').append('  |  ');
	
	
}

function translateEmails(){
	$('span.email, address.email').each(function(){
		var spt = $(this);
		var at = / at /;
		var dot = / dot /g;		
		
		//EXAMPLE: <span class="email" title="link title | email address | email subject"> link content </span>		
		
		var inner_content = $(spt).html();						//inner HTML of span tag
		var t = $(spt).attr('title');						//email, link options from title attribute
		
		var title = t.substring(0, t.indexOf('|'));				//title for the link
		t = t.substring(t.indexOf('|')+1);
		
		var addr = t.substring(0, t.indexOf('|'));				//email address from id attribute
		addr = addr.replace(at,"@").replace(dot,".");				//replace words with chars
		
		var subject = t.substring(t.indexOf('|')+1);				//subject for email, if needed
		var fulladdr = ($.trim(subject) != "")?addr+'?subject='+subject:addr;	//full address formed with subject, if needed
		
		inner_content = ($.trim(inner_content) == "" || $.trim(inner_content) == "&nbsp;")?addr:inner_content;
		
		$(spt).after('<a href="mailto:'+fulladdr+'" title="'+title+'">'+ inner_content +'</a>')
		.hover(function(){window.status="Send an email!";}, function(){window.status="";});
		$(spt).remove();
	});
}

function initHomePortfolioViewer(){
	if($('#home_portfolio_viewer').length){
		$('#home_portfolio_viewer').css({ opacity:0 }).show().fadeTo(1000, 1, function(){
			
			$('#home_portfolio_viewer li').wrapInner('<a href="'+$('#home_portfolio_viewer p a').attr('href')+'"></a>').find('img').attr('border','0');
			
			//show first item
			$('#home_portfolio_viewer li:first img').fadeTo(1000, 1, function(){
				$('#home_portfolio_viewer h3').text($('#home_portfolio_viewer li:first img').attr('alt')).fadeTo(700, .85);
			});
				
			var interval = setInterval(function(){
				//fade caption
				$('#home_portfolio_viewer h3').fadeTo(700, 0, function(){
					
					//fade image
					$('#home_portfolio_viewer li:first img').fadeTo(500, 0, function(){
														  
						//move to bottom
						$('#home_portfolio_viewer ul').append($('#home_portfolio_viewer li:first'))
						
						//show next image, now the first in the list
						$('#home_portfolio_viewer li:first img').fadeTo(1000, 1, function(){
							$('#home_portfolio_viewer h3').text($('#home_portfolio_viewer li:first img').attr('alt')).fadeTo(700, .85);
						});
					});
				});
			}, 10000);
		});
	}
}

function initHomeRootsDiagram(){
	if($('#home_roots_diagram').length){
		
		var old_content = $('#home_roots_diagram_target').html();
		$('#home_roots_diagram li').hover(
			function(){
				$('#home_roots_diagram li').removeClass('selected');
				$(this).addClass('selected');
				var new_content = $('#home_roots_diagram li.selected').find('h4').html()+' &ndash '+$('#home_roots_diagram li.selected').find('p').html();
				$('#home_roots_diagram_target').html(new_content+'<span>'+old_content+'</span>');
			}, function(){
				$('#home_roots_diagram_target').html(old_content);
			}
		);
	}
}

function initPortfolioViewer(){
	
	//css adjustments
	$('#portfolio-content').equalHeights();
	
	//lightbox
	$('.project').find('a[rel^=lightbox]').lightBox();
	
	//hover state
	$('.project').hover(
		function(){ $(this).animate({ backgroundColor:'#FDF4D9' }, 200) },
		function(){ $(this).animate({ backgroundColor:'#FBEDC4' }, 200) }
	);
	
	$('#portfolio-content .project:nth-child(4)').css({ clear:'left' });
	
	//pagination
	if($('#portfolio-content .project').length > 6){
		portfolioPagination();
	}
}

function portfolioPagination(){
	
	var currentPage = 0;
	var numPerPage = 6;
	
	$('#portfolio-content').each(function() {
	
		var $listing = $(this);
		
		$listing.bind('repaginate', function() {	
			
			var n = currentPage * numPerPage;
			var x = ((currentPage + 1) * numPerPage - 1);
										
			$listing.find('.project').show();
			$listing.find('.project:lt('+n+')').hide().end();
			$listing.find('.project:gt('+x+')').hide().end();
		});
	
		var numRows = $listing.find('.project').length;			
		var numPages = Math.ceil(numRows / numPerPage);			
		
		var $pager = $('<p class="pager"><b>Page:</b></p>');
		var $pager2 = $pager.clone(true);
		
		for (var page = 0; page < numPages; page++) {			
			$('<a href="#" class="page-number">' + (page + 1) + '</a>')
			.bind('click', {'newPage': page}, function(event) {
				currentPage = event.data['newPage'];
				$listing.trigger('repaginate');
				
				$('.pager').find('a:eq('+eval(currentPage)+')').addClass('active').siblings().removeClass('active');
				$(this).trigger('blur');
				return false;
			})
			.appendTo($pager).addClass('clickable')
			.clone(true).appendTo($pager2);
		}
		$pager.find('a.page-number:first').addClass('active');
		$pager2.find('a.page-number:first').addClass('active');
		
		$pager.insertBefore($listing);
		$pager2.insertAfter($listing);
		
		$listing.trigger('repaginate');
	});	
}


/* IE RELATED */

function applyIE6FlickerFix(){
	try {
	  document.execCommand("BackgroundImageCache", false, true);
	} catch(err) {}
}

$(document).ready(function(){
	setupPage();
});
