Nav = new function(){
	var step = "";
	var maxTop = "";
	var position = 0;
	var visible = "";

	this.init = function(){
		var total = $("#nav > li").length;
		var navHeight = $("#nav-wrapper").height();
		var itemHeight = $("#nav > li").height();
		
		visible = Math.round(navHeight/itemHeight);
		step = itemHeight;
		maxTop = total - visible;
		

		var active = $("#nav > li.active").prevAll().length;
		
		var numPages = Math.ceil(total/visible);
		var page = "";
		for(var i=0; i<numPages; i++){
			if((active < (i+1)*visible) && (active >= i*visible)) page = i;
		}
		
		position = page*visible;
		if (position>maxTop)position=maxTop;
		Nav.scroll(1);

		//Nav.updateButtons();

		// hover states for nav lis
		$("#nav > li").bind("mouseenter", function(){ $(this).addClass("hover");}).bind("mouseleave", function(){ $(this).removeClass("hover");});

		$("#paginate-up, #paginate-down").mousedown(function(){ 
			$(this).addClass("active");}).mouseup(function(){
			$(this).removeClass("active");});
	}

	this.up = function(){
		if(position > 0){
			position = position - visible;
			if (position<0)position=0;
			Nav.scroll();
		}
	}

	this.down = function(){
		if(position < maxTop){
			position = position + visible;
			if (position>maxTop)position=maxTop;
			Nav.scroll();
		}
	}

	this.scroll = function(ms){
		var speed = (ms!=null) ? ms : 500;
		var top = -(position * step);
		$("#nav").animate({top:top}, speed);
		Nav.updateButtons();
	}

	this.updateButtons = function(){
		if (position==0) $("#paginate-up").addClass("inactive");
		else $("#paginate-up").removeClass("inactive");

		if (position==maxTop) $("#paginate-down").addClass("inactive");
		else $("#paginate-down").removeClass("inactive");
	}
}

function adjustContentMargin(){
	// adjust for no scrollbar case
	var margin = 180;
	var wrapSidebarOffset = $("#wrap-sidebar").offset();
	var wrapOffset = $("#wrap").offset();

	if(wrapSidebarOffset.left > wrapOffset.left){
		var d = wrapSidebarOffset.left - wrapOffset.left;
		margin += d;
	}
	
	$("#content").css("margin-left",margin);
}

function scrollHandler(scrollDelta){
	var browserDelta = ($.browser.msie) ? 90 : 48;
	var st = $("#container").get(0).scrollTop;
	st += scrollDelta*browserDelta;
	$("#container").get(0).scrollTop = st;
}

$(document).ready(function(){
	Nav.init();
	
	if($("#wrap-sidebar").length > 0){
		adjustContentMargin();
		
		$(window).resize(function(){
			adjustContentMargin();
		});
	}

	// add mousewheel event to sidebar
	if($("#sidebar").length > 0){
		$("#sidebar").mousewheel(function(event, delta){
			var scrollDelta = delta*(-1);
			scrollHandler(scrollDelta);
			return false; // prevent default
		});
	}

	$(window).keypress(function(e){
		switch(e.keyCode) {
			case 38: //up arrow
				scrollHandler(-1);
				break;
			case 40: //down arrow
				scrollHandler(1);
				break;
		}
		return false; // prevent default
    });
});