(function($) {

	$.fn.htmlSlider = function(options)
	{
	  
		// default configuration properties
		var defaults = {
			prevClass  :	'prevBtn',						
			nextClass  :	'nextBtn',
			pageClass  :  'sliderPage',
			sliderClass:  'sliders',
			
			orientation:	'', //  'vertical' is optional;
			speed: 			800			
		}; 
		
		var options = $.extend(defaults, options);  
		
		return this.each(function() 
		{  
			var obj = $(this); 				
			var s = $("li", obj).length;			
			var w = $("."+options.sliderClass, obj).width(); 
			var h = $("."+options.sliderClass, obj).height(); 
			var ts = s-4;			
			var t = 0;
			var page = 0;
			var vertical = (options.orientation == 'vertical');
					
			if(!vertical) $("li", obj).css('float','left');
									
			$("."+options.prevClass, obj).hide();
			$("."+options.nextClass, obj).hide();
			
			$("."+options.nextClass, obj).click(function()
			{				  
				animate("next");
				if (t>=ts) $(this).fadeOut();
				$("."+options.prevClass, obj).fadeIn();
			});
			
			$("."+options.prevClass, obj).click(function()
			{		
				animate("prev");
				if (t<=0) $(this).fadeOut();
				$("."+options.nextClass, obj).fadeIn();
			});	
			
			$("."+options.pageClass, obj).click(function()
			{
			  page = getHashFromString( $(this).attr("href") );	
			  animate("page");				  
			  if (page>=ts) 
			  {			   
			    $("."+options.nextClass, obj).fadeOut();	
			    $("."+options.prevClass, obj).fadeIn();
			  }
			  
			  if (page<=0) 
			  {
			    $("."+options.prevClass, obj).fadeOut();
			    $("."+options.nextClass, obj).fadeIn();	  				
			  }
			  
			});	
			
			function animate(dir)
			{
				if(dir == "next")				
					t = (t>=ts) ? ts : t+1;					
				else if(dir == "prev")					
					t = (t<=0)  ? 0 : t-1;
				else 
				  t = page;
				  
				if(!vertical) 
				{				  
					p = (t*155*-1);
					$("ul",obj).animate( { marginLeft: p }, options.speed );				
				} 
				else 
				{				   
					p = (t*h*-1);
					$("ul",obj).animate( { marginTop: p }, options.speed );					
				}
				
			};
			
			if(s>1) $("."+options.nextClass, obj).fadeIn();	
			
			function getHashFromString(hash) 
			{
		    if (!hash) return -1;
		    hash = hash.replace(/^.*#/, '');
		    if (isNaN(hash)) return -1;
		    return (+hash);
	    }

	    function getHash() 
	    {
		    var hash = location.hash;
		    return getHashFromString(hash);
	    }
			
		});
	  
	};

})(jQuery);