function tngSlider(container,itemClass,direction,itemsPerViewport,upLeftArrow,downRightArrow,slidePer,stopOnEdge,autoScroll,autoScrollDelay){
	// Construct tngSlider object
	var containerName = container;
	var containerNamePure = containerName.substr(1);
	var container = $(container);
	var itemClassName = itemClass;
	var items = container.find(itemClassName);
	var sliderDirection = direction;
	var maxOffset;
	var mouseOverSlider = false;
	var mouseOverControls = false;
	var edgeSlideInProgress = false;
	this.slideMils = 400;
	this.edgeSlideMils = 1200;
	var slideSpeed = this.slideMils; 
	var edgeSlideSpeed = this.edgeSlideMils;
	if(autoScrollDelay == null || autoScrollDelay == ''){
			autoScrollDelay = 5000;
	}
	autoScrollDelay = parseInt(autoScrollDelay);
	if(autoScroll == true && autoScrollDelay <= slideSpeed && autoScrollDelay >= 1){
		slideSpeed = autoScrollDelay - 1;
	}
	
	// Get one item height/width depending on the direction parameter
	if(sliderDirection == 'vertical'){
		// Floating and clearing vertical items due to margin behaviour
		$(itemClassName).css({'float':'left','clear':'both'});
		var itemHeight = $(itemClassName+':first').outerHeight(true);
		var viewportDimension = itemsPerViewport * itemHeight;
		var contentDimension = items.length * itemHeight;
		maxOffset = viewportDimension - contentDimension;
	} else if(sliderDirection == 'horizontal'){
		var itemWidth = $(itemClassName+':first').outerWidth(true);
		var viewportDimension = itemsPerViewport * itemWidth;
		var contentDimension = items.length * itemWidth;
		maxOffset = viewportDimension - contentDimension;
	}
	
	// Setup viewport/content mechanic
	container.prepend('<div id="'+containerNamePure+'_viewport"><div id="'+containerNamePure+'_content"></div></div>');
	var contentContainer = $('#'+containerNamePure+'_content');
	var viewportContainer = $('#'+containerNamePure+'_viewport');
	contentContainer.append(items);
	viewportContainer.css({'overflow':'hidden','position':'relative'});
	if(sliderDirection == 'vertical'){
		viewportContainer.css({'height':viewportDimension,'clear':'both'});
		contentContainer.css({'height':contentDimension,'margin-top':'0px'});
	} else if(sliderDirection == 'horizontal'){
		viewportContainer.css({'width':viewportDimension,'clear':'both'});
		contentContainer.css({'width':contentDimension,'margin-left':'0px'});
	}
	// End construction
	
	// Calculates next margin value to scroll to.
	// Parameter 'value' accepts strings 'positive' or 'negative'
	function nextOffset(value){
		if(sliderDirection == 'vertical'){
			var offsetNow = parseFloat(contentContainer.css('margin-top'));
		} else if(sliderDirection == 'horizontal'){
			var offsetNow = parseFloat(contentContainer.css('margin-left'));
		}
		if(value == 'positive'){
			if(slidePer == 'viewport'){
				if(sliderDirection == 'vertical'){
					var offsetNext = offsetNow + (itemHeight * itemsPerViewport);
				} else if(sliderDirection == 'horizontal'){
					var offsetNext = offsetNow + (itemWidth * itemsPerViewport);
				}
			} else if(slidePer == 'item'){
				if(sliderDirection == 'vertical'){
					var offsetNext = offsetNow + itemHeight;
				} else if(sliderDirection == 'horizontal'){
					var offsetNext = offsetNow + itemWidth;
				}
			}
		} else if(value == 'negative'){
			if(slidePer == 'viewport'){
				if(sliderDirection == 'vertical'){
					var offsetNext = offsetNow - (itemHeight * itemsPerViewport);
				} else if(sliderDirection == 'horizontal'){
					var offsetNext = offsetNow - (itemWidth * itemsPerViewport);
				}
			} else if(slidePer == 'item'){
				if(sliderDirection == 'vertical'){
					var offsetNext = offsetNow - itemHeight;
				} else if(sliderDirection == 'horizontal'){
					var offsetNext = offsetNow - itemWidth;
				}
			}
		}
		return offsetNext;
	}
	
	function edgeSlide(dir){
	edgeSlideInProgress = true;
	switch(dir){
		case 'top':
			$(upLeftArrow).unbind('.tngSliderScrollEvents');
			$(downRightArrow).unbind('.tngSliderScrollEvents');
			contentContainer.animate({'margin-top':'0px'},edgeSlideSpeed,function(){
				edgeSlideInProgress = false;
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideDown();
				});
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					edgeSlide('bottom');
				});
			});
			break;
		case 'bottom':
			$(upLeftArrow).unbind('.tngSliderScrollEvents');
			$(downRightArrow).unbind('.tngSliderScrollEvents');
			contentContainer.animate({'margin-top':maxOffset},edgeSlideSpeed,function(){
				edgeSlideInProgress = false;
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideUp();
				});
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					edgeSlide('top');
				});
			});
			break;
		case 'left':
			$(upLeftArrow).unbind('.tngSliderScrollEvents');
			$(downRightArrow).unbind('.tngSliderScrollEvents');
			contentContainer.animate({'margin-left':'0px'},edgeSlideSpeed,function(){
				edgeSlideInProgress = false;
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideRight();
				});
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					edgeSlide('right');
				});
			});
			break;
		case 'right':
			$(upLeftArrow).unbind('.tngSliderScrollEvents');
			$(downRightArrow).unbind('.tngSliderScrollEvents');
			contentContainer.animate({'margin-left':maxOffset},edgeSlideSpeed,function(){
				edgeSlideInProgress = false;
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideLeft();
				});
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					edgeSlide('left');
				});
			});
			break;
		}
	}
	
	// Functions for moving the slider
	function slideDown(automated){
		$(upLeftArrow).unbind('.tngSliderScrollEvents');
		$(downRightArrow).unbind('.tngSliderScrollEvents');
		var offset_next = nextOffset('negative');
		if(offset_next >= maxOffset){
			contentContainer.animate({'margin-top':offset_next},slideSpeed,function(){
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideUp();
				});
				if(offset_next == maxOffset){
					if(stopOnEdge == false){
						$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
							edgeSlide('top');
						});
					}
				} else {
					$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
						slideDown();
					});
				}
			});
		} else {
			if(automated == true){
				edgeSlide('top');
			} else {
				contentContainer.animate({'margin-top':maxOffset},slideSpeed,function(){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						slideUp();
					});
					if(stopOnEdge == false){
						$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
							edgeSlide('top');
						});
					}
				});
			}
		}
	}
	
	function slideUp(){
		$(upLeftArrow).unbind('.tngSliderScrollEvents');
		$(downRightArrow).unbind('.tngSliderScrollEvents');
		var offset_next = nextOffset('positive');
		if(offset_next <= 0){
			contentContainer.animate({'margin-top':offset_next},slideSpeed,function(){
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideDown();
				});
			if(offset_next == 0){
				if(stopOnEdge == false){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						edgeSlide('bottom');
					});
				}
			} else {
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideUp();
				});
			}
		});
		} else {
			contentContainer.animate({'margin-top':'0px'},slideSpeed,function(){
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideDown();
				});
				if(stopOnEdge == false){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						edgeSlide('bottom');
					});
				}
			});
		}
	}
	
	function slideLeft(){
		$(upLeftArrow).unbind('.tngSliderScrollEvents');
		$(downRightArrow).unbind('.tngSliderScrollEvents');
		var offset_next = nextOffset('positive');
		if(offset_next <= 0){
			contentContainer.animate({'margin-left':offset_next},slideSpeed,function(){
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideRight();
				});
			if(offset_next == 0){
				if(stopOnEdge == false){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						edgeSlide('right');
					});
				}
			} else {
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideLeft();
				});
			}
		});
		} else {
			contentContainer.animate({'margin-left':'0px'},slideSpeed,function(){
				$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
					slideRight();
				});
				if(stopOnEdge == false){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						edgeSlide('right');
					});
				}
			});
		}
	}
	
	function slideRight(automated){
		$(upLeftArrow).unbind('.tngSliderScrollEvents');
		$(downRightArrow).unbind('.tngSliderScrollEvents');
		var offset_next = nextOffset('negative');
		if(offset_next >= maxOffset){
			contentContainer.animate({'margin-left':offset_next},slideSpeed,function(){
				$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
					slideLeft();
				});
				if(offset_next == maxOffset){
					if(stopOnEdge == false){
						$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
							edgeSlide('left');
						});
					}
				} else {
					$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
						slideRight();
					});
				}
			});
		} else {
			if(automated == true){
				edgeSlide('left');
			} else {
				contentContainer.animate({'margin-left':maxOffset},slideSpeed,function(){
					$(upLeftArrow).bind('click.tngSliderScrollEvents',function(){
						slideLeft();
					});
					if(stopOnEdge == false){
						$(downRightArrow).bind('click.tngSliderScrollEvents',function(){
							edgeSlide('left');
						});
					}
				});
			}
		}
	}
	
	// Initialize methods for scrolling, depending on sliding direction
	if(sliderDirection == 'vertical'){
		this.slideDown = slideDown;
		this.slideUp = slideUp;
		if(autoScroll == true){
			var tngAutoScroller = window.setInterval(function(){
				if(mouseOverControls == false && mouseOverSlider == false && edgeSlideInProgress == false){
					slideDown(true);
				}	
			}, autoScrollDelay);
		}
	} else if(sliderDirection == 'horizontal'){
		this.slideLeft = slideLeft;
		this.slideRight = slideRight;
		if(autoScroll == true){
			var tngAutoScroller = window.setInterval(function(){
				if(mouseOverControls == false && mouseOverSlider == false && edgeSlideInProgress == false){
					slideRight(true);
				}
			}, autoScrollDelay);
		}
	}
	
	// Bind selectors given to sliding functions
	$(upLeftArrow).bind({
		'click.tngSliderScrollEvents': function(){
			if(sliderDirection == 'horizontal'){
				slideLeft();
			} else if(sliderDirection == 'vertical'){
				slideUp();
			}
		},
		'mouseenter.tngSliderMouseOverControlsEvents': function(){
			mouseOverControls = true;
		},
		'mouseleave.tngSliderMouseOverControlsEvents': function(){
			mouseOverControls = false;
		}
	});
	$(downRightArrow).bind({
		'click.tngSliderScrollEvents': function(){
			if(sliderDirection == 'horizontal'){
				slideRight();
			} else if(sliderDirection == 'vertical'){
				slideDown();
			}
		},
		'mouseenter.tngSliderMouseOverControlsEvents': function(){
			mouseOverControls = true;
		},
		'mouseleave.tngSliderMouseOverControlsEvents': function(){
			mouseOverControls = false;
		}
	});
	viewportContainer.bind({
		'mouseenter.tngSliderMouseOverControlsEvents': function(){
			mouseOverSlider = true;
		},
		'mouseleave.tngSliderMouseOverControlsEvents': function(){
			mouseOverSlider = false;
		}
	});
}
