function panelNav(container, panels, panelWidth, navType, animate) {
	var container = $(container);
	var panels = $(panels);
	var containerWidth = panelWidth * panels.length;
	var animate = (typeof(animate) != 'undefined') ? true : false;
	var nav, iconLinks, leftArrow, rightArrow, currentPanel, animationInterval;
  
	container.css({'width': containerWidth + 'px'});

	if (panels.length > 1) {
		if (navType == 'icons') {
			// circle navigation
			nav = $('<ol class="nav"></ol>');
			container.before(nav);
			j = 1;
			for (var i = 0; i < panels.length; i++) {
				panel = $(panels[i]);
				panel.attr('id', 'panel' + j);
				nav.append($('<li><a href="#panel' + j + '">' + j + '</a></li>'));
				j++;
			};
			iconLinks = nav.find('a');
			iconLinks.click(function(event) {
				event.preventDefault();
				var targetPosition = (this.href.match(/\d+$/)[0] - 1) * panelWidth;
				var currentPosition = container.css('left').match(/\d+/)[0];
				if (container.filter(':animated').size() == 0 && currentPosition != targetPosition) {
  				if (animate == true) clearInterval(animationInterval);
					container.animate({left: '-' + targetPosition + 'px'}, 500, 'swing');
					iconLinks.removeClass('current');
					$(this).addClass('current');
				  if (targetPosition == (containerWidth - panelWidth)) rightArrow.addClass('disabled');
					if (targetPosition == 0) leftArrow.addClass('disabled');
				  if (currentPosition == 0) leftArrow.removeClass('disabled');
					if (currentPosition == (containerWidth - panelWidth)) rightArrow.removeClass('disabled');
				}
			});
			iconLinks.eq(0).addClass('current');
			// arrow navigation
			leftArrow = $('<a href="#" class="left-arrow"><span></span></a>');
			container.after(leftArrow);
			leftArrow.click(function(event) {
				event.preventDefault();
				if (animate == true) clearInterval(animationInterval);
				var currentPosition = 0 - container.css('left').match(/\d+/)[0];
				var targetPosition = currentPosition + panelWidth;
				var currentIconLink = iconLinks.eq(Math.abs((currentPosition)/panelWidth));
				var targetIconLink = iconLinks.eq(Math.abs((currentPosition + panelWidth)/panelWidth));
				if (container.filter(':animated').size() == 0 && currentPosition < 0) {
					if (targetPosition == 0) leftArrow.children('span').eq(0).addClass('disabled');
					if (currentPosition == -(containerWidth - panelWidth)) rightArrow.children('span').eq(0).removeClass('disabled');
					container.animate({left: (targetPosition) + 'px'}, 500, 'swing');
					currentIconLink.removeClass('current');
					targetIconLink.addClass('current');
				}
			});
			leftArrow.children('span').eq(0).addClass('disabled');
			rightArrow = $('<a href="#" class="right-arrow"><span></span></a>');
			container.after(rightArrow);
			rightArrow.click(function(event) {
				event.preventDefault();
				if (animate == true) clearInterval(animationInterval);
				var currentPosition = 0 - container.css('left').match(/\d+/)[0];
				var targetPosition = currentPosition - panelWidth;
				var currentIconLink = iconLinks.eq(Math.abs((currentPosition)/panelWidth));
				var targetIconLink = iconLinks.eq(Math.abs((currentPosition - panelWidth)/panelWidth));
				if (container.filter(':animated').size() == 0 && currentPosition > -(containerWidth - panelWidth)) {
				  if (targetPosition == -(containerWidth - panelWidth)) rightArrow.children('span').eq(0).addClass('disabled');
				  if (currentPosition == 0) leftArrow.children('span').eq(0).removeClass('disabled');
					container.animate({left: (targetPosition) + 'px'}, 500, 'swing');
					currentIconLink.removeClass('current');
					targetIconLink.addClass('current');
				}
			});
		}
		if (navType == 'text') {
			nav = $('<ul class="nav"></ul>');
			container.after(nav);
			// create the left arrow, assign behavior
			leftArrow = $('<li><a href="#" class="left-arrow">Prev</a></li>');
			nav.append(leftArrow);
			leftArrow.click(function(event) {
				event.preventDefault();
				if (animate == true) clearInterval(animationInterval);
				var currentPosition = 0 - container.css('left').match(/\d+/)[0];
				var targetPosition = currentPosition + panelWidth;
				if (container.filter(':animated').size() == 0 && currentPosition < 0) {
					if (targetPosition == 0) leftArrow.addClass('disabled');
					if (currentPosition == -(containerWidth - panelWidth)) rightArrow.removeClass('disabled');
					container.animate({left: (targetPosition) + 'px'}, 500, 'swing', function() {
						currentPanel.text(Math.abs(currentPosition)/panelWidth);
					});
				}
			});
			leftArrow.addClass('disabled');
			// create the text output
			var bob = $('<li id="current-panel-readout"><span class="current-panel">1</span> of ' + panels.length + '</li>');
			nav.append(bob);
			currentPanel = $('.current-panel');
			// create the right arrow, assign behavior
			rightArrow = $('<li><a href="#" class="right-arrow">Next</a></li>');
			nav.append(rightArrow);
			rightArrow.click(function(event) {
				event.preventDefault();
				if (animate == true) clearInterval(animationInterval);
				var currentPosition = 0 - container.css('left').match(/\d+/)[0];
				var targetPosition = currentPosition - panelWidth;
				if (container.filter(':animated').size() == 0 && currentPosition > -(containerWidth - panelWidth)) {
				  if (targetPosition == -(containerWidth - panelWidth)) rightArrow.addClass('disabled');
				  if (currentPosition == 0) leftArrow.removeClass('disabled');
					container.animate({left: (targetPosition) + 'px'}, 500, 'swing', function() {
						currentPanel.text((-currentPosition + (panelWidth * 2))/panelWidth);
					});
				}
			});
  		if (animate == true) {
  		  var animatePanelNav = function () {
    		  var currentPosition = 0 - container.css('left').match(/\d+/)[0];
          if (currentPosition == -(containerWidth - panelWidth)) {
            var targetPosition = 0;
          } else {
            var targetPosition = currentPosition - panelWidth;
          }
				  if (targetPosition == -(containerWidth - panelWidth)) rightArrow.addClass('disabled');
					if (targetPosition == 0) leftArrow.addClass('disabled');
				  if (currentPosition == 0) leftArrow.removeClass('disabled');
					if (currentPosition == -(containerWidth - panelWidth)) rightArrow.removeClass('disabled');
          container.animate({left: targetPosition + 'px'}, 500, 'swing');
					currentPanel.text((-targetPosition + (panelWidth))/panelWidth);
  		  }
  			animationInterval = setInterval(animatePanelNav, 7000);
  		}
		}
	}
};