var alien109 = {
	appSettings: {
		overlayOpacity:0.72,
		overlay:"url(../gfx/BG_modal.gif)",
		categoryTween:300,
		menuWidth:170,
		projectImageDimentions: {width:480, height:360}
	}
}

function switchKeyTab()
{
	$("#keyTab").removeClass("hover");
	$("#keyTab").addClass("tabDown");
	$("#catTab").removeClass("tabDown");
	$("#project_keywords").animate({left: 0}, alien109.appSettings.categoryTween, "easeInQuint");
	$("#port_menu_content").animate({left: -alien109.appSettings.menuWidth}, alien109.appSettings.categoryTween, "easeInQuint");
}

$(document).ready(function() {

	setScreenshotHandlers();
	
	$("#project_keywords").css("left", alien109.appSettings.menuWidth).show();

	$("#catTab").click(function() {
		$(this).removeClass("hover");
		$(this).addClass("tabDown");
		$("#keyTab").removeClass("tabDown");
		$("#port_menu_content").animate({left: 0}, alien109.appSettings.categoryTween, "easeInQuint");
		$("#project_keywords").animate({left: alien109.appSettings.menuWidth}, alien109.appSettings.categoryTween, "easeInQuint");
	});

	$("#keyTab").click(switchKeyTab);

	$("span.tab").mouseover(function() {
		if(!$(this).hasClass("tabDown")) {
			$(this).addClass("hover");
		}
	});
	
	$("span.tab").mouseout(function() {
		$(this).removeClass("hover");
	});
	
	hijackLinks();
});

function parseRequestParameters(url) {
	//IE fix
	var url = url.replace(/http:\/\/[^\/]+\//,"");
	var parts = url.split("/");
	return {type:parts[0], typeParam:parts[1], project:parts[2]};
}

function hijackCategoryLinks()
{
	$("a.category_link").click(function(event) {
		event.preventDefault();	
		var params = parseRequestParameters($(this).attr('href'));
		var index = $("#project_categories_list li").index($(this).parent());
		loadProjectsByCategory(params.typeParam,index);
	});
}

function getKeywordListItemByHref(item)
{
	var url = item.attr("href").replace(/http:\/\/[^\/]+\//,"");
	return $("#project_keywords_list a.keyword_link[@href=" + url + "]");
}

/*

function getKeywordListItemByHref(item)
{
	var match = -1;
	$.each($("#project_keywords_list a.keyword_link"), function(i,o) {
		if(item.attr("href").toString() == $(o).attr("href").toString())
		{
			match = i;
		}
	});
}

*/


function hijackKeywordLinks()
{
	$("a.keyword_link").unbind();
	$("a.keyword_link").click(function(event) {
		switchKeyTab();
		event.preventDefault();	
		var params = parseRequestParameters($(this).attr('href'));
		if($(this).parent().attr("id") == "port_project_description")
		{	
			var index = $("#project_keywords_list li").index(getKeywordListItemByHref($(this)).parent());
		}
		else
		{
			var index = $("#project_keywords_list li").index($(this).parent());
		}
		loadProjectsByKeyword(params.typeParam,index);
	});
}

function hijackProjectLinks()
{
	$("a.project_link").click(function(event) {
		event.preventDefault();	
		var params = parseRequestParameters($(this).attr('href'));
		var index = $("#projectsList li").index($(this).parent());
		loadProject(params,index);
	});
}

function setScreenshotHandlers()
{
	$.each($(".screenshot_button"), function(i,e) {
		
		$(e).click(function(event) {
			event.preventDefault();
			setActiveScreenshot(i);
			$("#port_project_images").animate({
				top: (-i * alien109.appSettings.projectImageDimentions.height)
			}, alien109.appSettings.projectImageDimentions.width, "easeInQuint");
		})
	});
}

function hijackLinks() {
	hijackCategoryLinks();
	hijackKeywordLinks();
	hijackProjectLinks();	
}

function openContact() {
	trackPage("/about_me.html");
	$("#about_me").dialog("destroy");
	$("#about_me").html("");
	$("#about_me").dialog({
		modal:true,
		width:320,
		height:150,
		resizable:false,
		overlay: {
			opacity: alien109.appSettings.overlayOpacity,
			'background-image': alien109.appSettings.overlay
		}
		});
	$("#about_me").load("about_me.html", function() {
		$(this).show();
	});
}

function openResume() {
	trackPage("/resume.html");
	$("#resume_content").dialog("destroy");
	$("#resume_content").dialog({
		modal:true,
		width:810,
		height:380,
		resizable:false,
		overlay: {
			opacity: alien109.appSettings.overlayOpacity,
			'background-image': alien109.appSettings.overlay
		}
		});
	$("#resume_content").show();	
}

function loadFirstProject() {
		var $this = $($("a.project_link").get(0))
		var params = parseRequestParameters($this.attr('href'));
		var index = $("#projectsList li").index($this.parent());
		loadProject(params,0);
}

function loadProjectsByCategory(category, index) {
	trackPage("/category/" + category);
	setCurrentSelection("project_categories_list", index);
	setCurrentSelection("project_keywords_list", -1);
	setHeaderBackground($("#port_projects_header"), 'loading');
	$("#projectsList").slideUp(200, function() {
		$("#port_projects").load("ajaxRequests.php", {"c":"pl", "category":category}, function(res,state,req) {
			$("#projectsList").hide();
			hijackProjectLinks();
			setHeaderBackground($("#port_projects_header"), '');
			$("#projectsList").slideDown(300, function(){
				loadFirstProject();
			});
			
		});
	});
}

function loadProjectsByKeyword(keyword, index) {
	trackPage("/keyword/" + keyword);
	setCurrentSelection("project_categories_list", -1);
	setCurrentSelection("project_keywords_list", index);
	setHeaderBackground($("#port_projects_header"), 'loading');
	$("#projectsList").slideUp(200, function() {
		$("#port_projects").load("ajaxRequests.php", {"c":"pl", "keyword":keyword}, function(req) {
			$("#projectsList").hide();
			hijackProjectLinks();
			setHeaderBackground($("#port_projects_header"), '');
			$("#projectsList").slideDown(300, function(){
				loadFirstProject();
			});
		});
	});
}

function loadProject(params, index) {
	var project = params.project;
	trackPage("/" + params.type + "/" + params.typeParam + "/" + project);
	setCurrentSelection("projectsList", index);
	setHeaderBackground($("#port_project_header"), 'loading');
	$("#port_project_content").fadeOut(200, function() {
		$("#port_project").load("ajaxRequests.php", {"c":"pro", "project":project}, function(req) {
			$("#port_project_content").hide();
			hijackKeywordLinks();
			setScreenshotHandlers();
			setHeaderBackground($("#port_project_header"), '');
			$("#port_project_content").fadeIn(600);
		});
	});
}

function setCurrentSelection(parentId, index) {
	$("#" + parentId + " li a").removeClass("active");
	if(index != -1)
	{
		$($("#" + parentId + " li a").get(index)).addClass("active");
	}
}

function setActiveScreenshot(index) {
	$("#port_project_image_buttons a").removeClass("active");
	$($("#port_project_image_buttons a").get(index)).addClass("active");
}

function setScreenShot(src,imgBtnNum) {
	$("ss" + imgBtnNum).src = "gfx/BTN_" + "ss" + (imgBtnNum + 1) + "-d.gif";
}

function setHeaderBackground(obj, state) {
	var imgSrc = (state == "loading")?"gfx/BG_title_ani.gif":"gfx/BG_title.gif";
	obj.css("background-image", "url(" + imgSrc + ")");
	if(state == "loading") {
		obj.text("LOADING...");
	}
}

function openMediaPlayer(url, title) {
	trackPage("/player/" + url);
	$("#media").dialog("destroy");
	$("#media").html("");
	$("#media").load(url, function() {
		$(this).show();
		$("#media").dialog({
			modal:true,
			close:destroyDialog,
			title:title,
			width:mWidth + 10,
			height:mHeight + 35,
			resizable:false,
			bgiframe:true,
			overlay:{
				opacity: alien109.appSettings.overlayOpacity,
				'background-image': alien109.appSettings.overlay
			}
		});
	});
}

function destroyDialog() {
	//For IE since it doesn't destroy all flash content...
	$("#flashcontent").html("");
	$("#media").html("");
	$("#media").dialog("destroy");
}

function trackPage(url)
{
	urchinTracker(url);
}