$.fn.MainSlider = function(settings) {
	settings = $.extend({
		leftArrow: '',
		rightArrow: '',
		autoSlide: false,
		autoSlideInterval: 5000,
		crossLinking: true,
		slideEaseDuration: 1000,
		slideEaseFunction: "easeInOutExpo"
	}, settings);
	
	return this.each(function(){
		
		var slider = $(this);

		var panelWidth = slider.find(".panel").width();
		var panelCount = slider.find(".panel").size();
		var panelContainerWidth = panelWidth*panelCount;
		var navClicks = 0;
		
		$('.panel', slider).wrapAll('<div class="panel-container"></div>');
		$(".panel-container", slider).css({ width: panelContainerWidth });
		
		if (settings.crossLinking && location.hash && parseInt(location.hash.slice(1)) <= panelCount) {
			var currentPanel = parseInt(location.hash.slice(1));
			var offset = -(panelWidth*(currentPanel - 1));
			$('.panel-container', slider).css({ marginLeft: offset });
		} 
		else { 
			var currentPanel = 1;
		};
			
		$("#" + settings.leftArrow).click(function(){
			navClicks++;
			if (currentPanel == 1) {
				offset = - (panelWidth*(panelCount - 1));
				currentPanel = panelCount;
			} 
			else {
				currentPanel -= 1;
				offset = - (panelWidth*(currentPanel - 1));
			};
			
			$('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
			if (settings.crossLinking) { location.hash = currentPanel };
			return false;
		});
			
		$("#" + settings.rightArrow).click(function(){
			navClicks++;
			if (currentPanel == panelCount) {
				offset = 0;
				currentPanel = 1;
			} 
			else {
				offset = - (panelWidth*currentPanel);
				currentPanel += 1;
			};
			
			$('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
			if (settings.crossLinking) { location.hash = currentPanel };
			return false;
		});
		
		if (settings.autoSlide) {
			slider.ready(function() {
				setTimeout(autoSlide,settings.autoSlideInterval);
			});
		};
		
		function autoSlide() {
			if (navClicks == 0) {
				if (currentPanel == panelCount) {
					var offset = 0;
					currentPanel = 1;
				} 
				else {
					var offset = - (panelWidth*currentPanel);
					currentPanel += 1;
				};
				
				$('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
				$('.panel-container', slider).animate({ marginLeft: offset }, settings.slideEaseDuration, settings.slideEaseFunction);
				setTimeout(autoSlide,settings.autoSlideInterval);
			};
		};
	});
};
