var AboutMeMgr = (function() {
  // PRIVATE VARIABLES
	var currentCategory = "experience";
   
  // PRIVATE FUNCTIONS
	
	function setCategory(category){
		// set correct appearances of buttons
		$("#"+currentCategory).removeClass("aboutMeSelected");
		$("#"+category).addClass("aboutMeSelected");
		// load
		var filename = category + ".html";
	  $("#aboutMeContent .customScrollBox .content").load(filename,function() {
	    $("#aboutMeContent").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"auto","yes","yes",15);
	  });
	  currentCategory = category;
  }
  
  function resetScrollbar() {
		var top = $("#aboutMeContent").css("top");
		var topOffset = parseInt(top, 10); // 10 is radix that specifies decimal (not really necessary here)
		var headerPlusFooter = $("header").height() + $("footer").height();
		var calcHeight = $(document).height() - headerPlusFooter - 2*topOffset;
		$("#aboutMeContent").height(calcHeight);
		$("#aboutMeContent").css("height", calcHeight);
		$("#aboutMeContent .dragger_container").css("height", calcHeight);
		// init scroll
		$("#aboutMeContent").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"auto","yes","yes",15);
	}

  // INIT
   
  function init() {
  	// handle aboutMe category links
		$("#aboutMe").delegate("#aboutMeNavLinks a", "click", function() {
			StateMgr.set("aboutMe");
			setCategory( $(this).attr("id") );
			return false;
		});
		
		$("#aboutMe").delegate(".email", "click", function(){
			location.href="mailto:tedesi@gmail.com";
		});
  
  	// Load Experience page
    setCategory(currentCategory);
  }
 
  $( init );
 
  return {
    reset : function() {
    	resetScrollbar();
    }      
  };
}());

var PortfolioMgr = (function() {
  // PRIVATE VARIABLES
  var slides = [];
  var categoryTitles = [];
  var imgCache = [];
  var currentSlide = 0;
 
  // PRIVATE FUNCTIONS
	
	function setCategory(category){
		$("#i"+currentSlide).removeClass("portfolioSelected");
		$("#"+category).addClass("portfolioSelected");
		// load
		currentSlide = category.substr(1);
	  showSlide();
  }
	
	function buildMenu() {
		//
		$("#slideSelector").append("<ul></ul>");
		for (var i=0; i<categoryTitles.length; i++) {
			$("#slideSelector ul").append("<li><a id='i"+ i +"' href='#'>"+ categoryTitles[i] +"</a></li>");
		}
	}
	
	function showSlide() {
		// bound index
		if(currentSlide >= slides.length) { currentSlide = 0 }
		if(currentSlide < 0) { currentSlide = slides.length - 1 }
		// show content
		$("#slideInfo").html(slides[currentSlide].header);
		$("#currentSlide .customScrollBox .content").html(slides[currentSlide].section);
		// reset scroll
		$("#currentSlide").mCustomScrollbar("vertical",400,"easeOutCirc",1.05,"auto","yes","yes",15);
		
		resize();
	}
	
	function resize() {
		var calcHeight = $("#slides").height();
		$("#currentSlide").height(calcHeight);
		$("#currentSlide").css("height", calcHeight);
		$("#currentSlide .dragger_container").css("height", calcHeight);
	}

  // INIT
 
  function init() {
    $("body").append('<div id="park"></div>');
		$("#park").load("portfolio.html", function(response, status, xhr) { 
			// load slides
			var articles = $(this).find("article");
			for (var i=0; i<articles.length; i++) {
				var item = {
					header: articles.eq(i).children("header"),
					section: articles.eq(i).children("section")
				};
				var title = articles.eq(i).children("header").children("h1").text();
				//
				slides.push(item);
				categoryTitles.push(title);
			}
			buildMenu();
		});
		
		$("#portfolio").delegate("#slideSelector a", "click", function() {
			StateMgr.set("portfolio");
			setCategory( $(this).attr("id") );
			return false;
		});
		
		// handle internal links
		$("#portfolio").delegate(".internalLink", "click", function(){
			StateMgr.set("aboutMe");
			var url = $(this).attr("rel") + ".html";
			loadNewAboutMeContent(url);
			return false;
		});
		
		// handle prevSlide click
		$("#portfolio").delegate("#prevSlide", "click", function(){
			if (StateMgr.get() != "portfolio") {
				StateMgr.set("portfolio");
			}
			else {
				// previous
				currentSlide--;
      	showSlide();
			}			
		});
		
		// handle nextSlide click
		$("#portfolio").delegate("#nextSlide", "click", function(){
			if (StateMgr.get() != "portfolio") {
				StateMgr.set("portfolio");
			}
			else {
				// next
				currentSlide++;
      	showSlide();
			}	
		});
		
  }
 
  $( init );
 
  return {
    purge : function() {
    	$("#park").remove();
    },
    reset : function() {
    	resize();
    }  
  };
}());

var StateMgr = (function() {
  // PRIVATE VARIABLES
  var currentState = "portfolio";
  var notCurrentZ = "10";
  var currentZ = "100";
   
  // PRIVATE FUNCTIONS
	function bringSectionToTop(sectionID) {
		if(sectionID != currentState) {
			$("#"+sectionID).css("z-index",currentZ);
			$("#"+currentState).css("z-index",notCurrentZ);
		}
		currentState = sectionID;
	}
 
  function init() {
    bringSectionToTop("aboutMe");
  }
 
  $( init );
 
  return {
    set : function(sectionID) {
    	bringSectionToTop(sectionID);
    },
    get : function() {
    	return currentState;
    }
  };
}());


// jQuery ready
$(function() {

	AboutMeMgr.reset();
	PortfolioMgr.reset();
	
	$(window).resize(function(){
    AboutMeMgr.reset();
		PortfolioMgr.reset();
	});
	
	$(window).load(function(){
		PortfolioMgr.purge();
	})

	StateMgr.set("aboutMe");

	// handle clicks in aboutMe when portfolio is showing
	$("#main").delegate("#aboutMe", "click", function(){
		StateMgr.set("aboutMe");
	});
	
	// handle clicks in portfolio when aboutMe is showing
	$("#main").delegate("#portfolio", "click", function(){
		StateMgr.set("portfolio");
	});

});

  




















