/*
Slide Scroller.
Developed by Trevor Cobbett
Input Params:
	element: ID of the element which contains the slides
	slideWidth: Integer of the width of the slides
	scrollingSpeed: Integer in miliseconds of how long it takes to switch slides
	slideBase: Whether slides are given an ID which does not start with a 0, useful for hash navigation (IDs on the slide are not required)
*/
jQuery.fn.TrevScroll = function(custom){
	switch(true){
		case !custom:
			throw "Missing parameters required - {element: string, slideWidth: int}";
			break;
		case !custom.element:
			throw "Missing parameter required - {element: string}";
			break;
		case !custom.slideWidth:
		case isNaN(parseInt(custom.slideWidth)):
			throw "Missing parameter required - {slideWidth: int}";
			break;
	}
	var defaults = {
		scrollingSpeed: 1200,
		slideBase: 0
	};
	var currentSlide = (window.location.hash && window.location.hash.match(/#slide[0-9]+/i))? parseInt(window.location.hash.replace(/#slide/i, "")): 1;
	var scrolling = false;
	var opts = $.extend(defaults, custom);
	$("#"+opts.element).wrapInner($("<div id='"+opts.element+"_TrevScroll'></div>"));
	this.bind("click", function(event){
		event.preventDefault();
		if(!scrolling){
			scrolling = true;
			var cs = $($(this).parent().children()).index($(this)) + opts.slideBase;
			if(!isNaN(cs) && cs !== undefined && currentSlide != cs){
				var navsCount = $(".nav>li").size();
				var curMarginLeft = parseInt($("#"+opts.element+"_TrevScroll").css("marginLeft"));
				var diff = cs - currentSlide;
				var marginDiff = (diff * opts.slideWidth);
				$("#"+opts.element+"_TrevScroll").animate({
						"marginLeft": (curMarginLeft - marginDiff)
				}, opts.scrollingSpeed, function(){
					scrolling = false;
				});
				currentSlide = cs;
			}else{
				scrolling = false;
			}
		}
	});
	return this;
}