// linkHandler
// 
// Author: Jason Anderson
// Date: Feb 09, 2009
//
// Captures events triggered by user clicking on
// document link, and routes it to corresponding ajax
// call and/or javascript function
//
// Any link handled in this manner is assumed to be internal,
// or otherwise not require a page load.
//

function handleLinkEvent(clickEvent) {

	// stop the event in case you want to rebind a link
	// that just got clicked (e.g. comments)
	clickEvent.stopPropagation();

	var href = clickEvent.currentTarget.href;
	
	var params = new Object();
	var dest = new Array("");
	
	if(hasDestination(href)) {
		dest = href.substring(href.indexOf("#")+1).split("/");
	}
	
	if(hasParams(href)) {
	
		var paramStrs;
		if(hasDestination(href)) {
			paramStrs = (href.substring(href.indexOf("?")+1,href.indexOf("#"))).split("&");
		} else {
			paramStrs = (href.substring(href.indexOf("?")+1)).split("&");
		}
		
		var keyvals;
		for(var i=0; i<paramStrs.length; i++) {
			keyvals = paramStrs[i].split("=");
			params[""+keyvals[0]] = keyvals[1];
		}
	}
	
	processParams(params,clickEvent.currentTarget);
	processDestination(dest, clickEvent.currentTarget);
	
	// tell browser not to process link as usual
	return false;
}

function processParams(params, target) {

	var jQTarget = $(target);
	
	for(var param in params) {
		switch(param) {
			case "p":
				if(jQTarget.hasClass("prevpost")) prevPost(params.p);
				else nextPost(params.p);
				break;
			case "port":
				loadPortfolio(params.port);
				break;
			case "page":
				break;
			default:
				break;
		}
	}
}

function processDestination(dest, target) {

	var jQTarget = $(target);

	var indx = 0;
	switch(dest[indx]) {
		case 'about':
			toggleAboutMe();
			break;
		case 'main':
			gotoHome();
			break;
		case 'portfolio':
			if(!jQTarget.is("#portfolio a.nav")) { gotoPortfolio(); }
			break;
		case 'comments':
			toggleComments();
			break;
		default:
			return true;
			break;
	}
	
}

function hasParams(hrefStr) {
	return hrefStr.indexOf("?") >= 0;
}

function hasDestination(hrefStr) {
	return hrefStr.indexOf("#") >= 0;
}