function slider(opt){
	// Assign variables
	var sliderElement = opt.sliderElement;
	var sliderWidth   = sliderElement.width();
	var imageWrapper  = sliderElement.children("ul.images");
	var sliderPanels  = imageWrapper.children("li");
	var numElements   = sliderElement.find("ul.images li").length;
	if(sliderElement.children("ul.navigation").length < 1){
		loadNav();
	}
	var sliderNav     = $("ul.sliderNavagation");
	var navNext       = sliderNav.find("li a.next");
	var navPrev       = sliderNav.find("li a.prev");
	var currentPos    = 0;
	
	var autoSlide     = 0;
	
	// Handle requested slide
	var requestedSlide = window.location.hash.substring(1);
	if(requestedSlide && requestedSlide > 0 && requestedSlide <= numElements){
		currentPos = -sliderWidth*(requestedSlide-1);
	}
	
	function init(){
		imageWrapper.width(numElements*sliderWidth);
		imageWrapper.css("left",currentPos);
		checkButtons(currentPos);
		updateMarker(currentPos);
		if(opt.fadeEdge){
			var edgeHTML  = "<div class=\"edge left\">&nbsp;<\/div>";
					edgeHTML += "<div class=\"edge right\">&nbsp;<\/div>";
			imageWrapper.after(edgeHTML); 
		}
		if(opt.autoSlide > 0){
			autoSlide = setInterval(function(){ automate(); }, opt.autoSlide);
		}
		
		// Bind click
		sliderNav.find("li a").bind("click",function(evnt){
			evnt.preventDefault();
			clearTimeout(autoSlide);
			if(imageWrapper.is(":not(:animated)") && $(this).hasClass("disabled") !== true){
				currentPos = parseInt(imageWrapper.css("left"),10);
				if($(this).hasClass("next")){
					next(currentPos);
				}else if($(this).hasClass("prev")){
					previous(currentPos);
				}
			}
		});
	}
	
	function loadNav(){
		var navHTML  = "<ul class=\"sliderNavagation\">";
				navHTML += "<li><a href=\"#\" class=\"prev\">Previous</a><\/li>";
				navHTML += "<li><a href=\"#\" class=\"next\">Next</a><\/li>";
				navHTML += "<\/ul>";
		sliderElement.after(navHTML);
	}
	
	function automate(){
		currentPos = parseInt(imageWrapper.css("left"),10);
		if(currentPos > -sliderWidth*(numElements-1)){
			slideTo(currentPos-sliderWidth);
		}else{
			slideTo(0);
		}
	}
	
	function next(currentPos){
		if(currentPos > -sliderWidth*(numElements-1)){
			slideTo(currentPos-sliderWidth);
		}
	}
	
	function previous(currentPos){
		if(currentPos < 0){
			slideTo(currentPos+sliderWidth);
		}
	}
	
	function slideTo(newPos){
		checkButtons(newPos);
		imageWrapper.animate({opacity: 0}, 500, function(){
			$(this).css('left', newPos);
			updateMarker(newPos);
			$(this).animate({opacity: 1}, 500);
		});
		
	}
	
	function checkButtons(newPos){
		if(newPos <= -sliderWidth*(numElements-1)){
			navNext.addClass("disabled");
		}else{
			navNext.removeClass("disabled");
		}
		if(newPos >= 0){
			navPrev.addClass("disabled");
		}else{
			navPrev.removeClass("disabled");
		}
	}
	
	function updateMarker(currentPos){
		sliderPanels.removeClass("current");
		var shown = ((0-currentPos)+sliderWidth)/sliderWidth;
		sliderPanels.eq(shown-1).addClass("current");
	}
	
	init();
	
}
