function bannerScroll(opts){
/*
	opts = js object with following available parameters (* = required):
		*bannerContainer = jquery selector for container div (e.g.: $("#banner"))
		*bannerList = array of banner images, with an optionsl sub object for animated banners
		overlays = array of overlay images that are clickable (e.g.: a facebook link over one of the banners)
		*slideDuration = duration in milliseconds to display each
		bannerNav = an object:
			defaultImage: non-selected image,
			onBanner: selected image,
			idPrefix: prefix string for image id,
			width: width of one nav object,
			height: height of one nav object,
			position: {
				vBoundary: "bottom" or "top",
				vOffset: number of pixels to offset from vertical boundary,
				hBoundary: "left" or "right",
				hOffset: number of pixels to offset from horizontal boundary
			}
*/

	this.banner = opts.bannerContainer || false;
	this.bannerList = opts.bannerList || false;
	this.slideDuration = opts.slideDuration || false;
	this.overlays = opts.overlays || false;
	this.bannerNav = opts.bannerNav || false;
	this.curNav = 0;
	
	if(!this.banner){
		console.log("Missing required parameter: bannerContainer");
	}

	if(!this.bannerList){
		console.log("Missing required parameter: bannerList");
	}

	if(!this.slideDuration){
		console.log("Missing required parameter: slideDuration");
	}
	
	if(!this.banner || !this.bannerList || !this.slideDuration){
		return false;
	}

	//Create banner strip with images
	var stripWidth = this.banner.width() * this.bannerList.length;
	var bannerStrip = "<div id='bannerStrip' style='height: 190px; position: relative; top: 0; left: 0;'>";
	for(var i in this.bannerList){
		bannerStrip += "<img src='" + this.bannerList[i] + "' style='z-index: 1' />";
	}
	bannerStrip += "</div>";
			
	//Place banner strip into bannerContainer
	this.banner.append(bannerStrip);
	$("#bannerStrip").css("width", stripWidth + "px");
	$("#bannerStrip img").css("width", this.banner.width());
	
	//Build bannerNav
	if(this.bannerNav){
		if(this.bannerNav.position.vBoundary == "bottom")
			this.bannerNav.position.vOffset = this.banner.height() - this.bannerNav.height - this.bannerNav.position.vOffset;

		if(this.bannerNav.position.hBoundary == "right")
			this.bannerNav.position.hOffset = this.banner.width() - (this.bannerNav.width * this.bannerList.length) - this.bannerNav.position.hOffset;
		
		var navOverlay = "<div id='bannerNav' style='cursor: pointer; z-index: 5; position: absolute; top: " + this.bannerNav.position.vOffset + "px; left: " + this.bannerNav.position.hOffset + "px;'>";
		for(var i=0; i<this.bannerList.length; i++){
			navOverlay += "<img src='" + this.bannerNav.defaultImage + "' id='" + this.bannerNav.idPrefix + i.toString() + "' />";
		}
		navOverlay += "</div>";
		this.banner.append(navOverlay);
	}

	
	//Assign class variables
	
	var bannerClass = this;

//special for homepage banners
	this.animLeft = 0 - $("#bannerStrip img:last").position().left;	
	var ebLeft = $("#bannerStrip img:last").position().left;

	$("#bannerStrip").append("<img src='banner_images/pointer-hand-for-08.png' id='pointerHand' /><img src='banner_images/glowing-palm-for-08.png' id='glowingPalm' /><img src='banner_images/left-animation-for-08.png' id='leftText' /><img src='banner_images/right-animation-for-08.png' id='rightText' />");
	
	this.showAnimation = function(){
		//animate pointerHand
		//animate glowingPalm & leftText
		//animate rightText

		//Set starting values for elements
		$("#pointerHand").css({
			position: "absolute",
			top: "115px",
			left: (ebLeft + 75) + "px",
			width: "91px",
			height: "86px",
			"z-index": 3
		});
		
		$("#glowingPalm").css({
			position: "absolute",
			top: "0",
			left: ebLeft + "px",
			width: "975px",
			height: "190px",
			"z-index": 2,
			"opacity": 0
		});
				
		$("#leftText").css({
			position: "absolute",
			"z-index": 3,
			top: "76px",
			left: (ebLeft + 409) + "px",
			width: "0",
			height: "0"
		});
				
		$("#rightText").css({
			position: "absolute",
			"z-index": 3,
			top: "77px",
			left: (ebLeft + 593) + "px",
			width: "0",
			height: "0"
		});
		
		
		//Define animations
		this.rightText = { "animCSS": {
			width: "285px",
			height: "67px"
		}, "animOpts": {
			"duration": 500
		} };

		this.glowingPalm = { "animCSS": {
			"opacity": 1
		}, "animOpts": {
			"duration": 200
		} };

		this.leftText = { "animCSS": {
			width: "276px",
			height: "103px",
			left: (ebLeft + 100) + "px"
		}, "animOpts": {
			"duration": 500,
			"complete": function(){
				$("#rightText").animate(bannerClass.rightText.animCSS, bannerClass.rightText.animOpts);
			}
		} };

		this.pointerHand = { "animCSS": {
			top: "37px",
			left: (ebLeft + 450) + "px"
		}, "animOpts": {
			"duration": 300,
			"complete": function(){
				$("#glowingPalm").animate(bannerClass.glowingPalm.animCSS, bannerClass.glowingPalm.animOpts);
				$("#leftText").animate(bannerClass.leftText.animCSS, bannerClass.leftText.animOpts);
			}
		} };
				
	//===============

		$("#pointerHand").animate(this.pointerHand.animCSS, this.pointerHand.animOpts);
	}
	
//============================



	//Check for overlays
	if(this.overlays){
		for(var b in this.bannerList){
			var curImg = this.bannerList[b];
			if(typeof(curImg) == "string"){
				for(var o in bannerClass.overlays){
					var curOverlay = bannerClass.overlays[o];
					var coLeft = curOverlay.left + (b * this.banner.width());
	
					if(curOverlay.baseImage == curImg){
						var overlay = "<img src='" + curOverlay.overlayImage + "' />";
						$("#bannerStrip").append(overlay);
						 
						var tOverlay = $("img[src='" + curOverlay.overlayImage + "']");
						tOverlay.css({
							"position": "absolute",
							"z-index": curOverlay.zIndex,
							"width": curOverlay.width + "px",
							"height": curOverlay.height + "px",
							"top": curOverlay.top + "px",
							"left": coLeft
						});
						
						switch(typeof(curOverlay.click)){
							case "function":
								tOverlay.click(curOverlay.click).css("cursor", "pointer");
								break;
							case "string":
								tOverlay.css("cursor", "pointer").click(function(){
									location = curOverlay.click;
								});
								break;
						}
					}
				}
			}
		}
	}

	
	
	//Assign function to rotate banners
	this.rotateBanner = function(){
		var curLeft = $("#bannerStrip").css("left").replace("px", "");		//Determine current position
		var cycleWidth = (0 - $("#bannerStrip").width());		//Get reset position
		if(curLeft - this.banner.width() == cycleWidth){	//If @ reset position then reset to position 0
			$("#bannerStrip").css("left", this.banner.width() + "px");
			curLeft = this.banner.width();
		}

		//Animate strip to show next banner
		$("#bannerStrip").animate({ "left": (curLeft - this.banner.width()) + "px" }, {
			duration: 1000,
			easing: "linear",
			complete: function(){		//Special for home page banner animation
				if($(this).position().left == bannerClass.animLeft){
//					bannerClass.showAnimation();
				}
			}
		});

		//Update nav
		var curNav = Math.abs(curLeft - this.banner.width()) / this.banner.width();
		$("#bannerNav img").attr("src", this.bannerNav.defaultImage);
		$("#" + this.bannerNav.idPrefix + curNav.toString()).attr("src", this.bannerNav.onBanner);
		this.curNav = curNav;
	}


	//Set interval to rotate banners
	this.bannerAnimate = setInterval(function(){
		bannerClass.rotateBanner();
	}, this.slideDuration);
	

	//Assign navigation
	$("#bannerNav img").click(function(){	
		var bannerNum = $(this).attr("id").replace(bannerClass.bannerNav.idPrefix, "");		//Determine which banner
		var bannerLeft = 0 - (bannerClass.banner.width() * bannerNum);		//Determine selected position
		var animDur =  Math.abs(bannerClass.curNav - bannerNum) * 200;		//Animate strip slide
		
		$("#bannerStrip").animate({ "left": bannerLeft + "px" }, animDur);	//Animate banner strip to selected position
//		$("#bannerStrip").css("left", bannerLeft + "px");		//Move banner strip to selected position
		$("#bannerNav img").attr("src", bannerClass.bannerNav.defaultImage);	//Clear nav images
		$(this).attr("src", bannerClass.bannerNav.onBanner);	//Set selected nav image
		bannerClass.curNav = bannerNum;							//Set curNav = to selected postion
		
		//Reset rotation interval
		clearInterval(bannerClass.bannerAnimate);
		bannerClass.bannerAnimate = setInterval(function(){
			bannerClass.rotateBanner();
		}, bannerClass.slideDuration);
	});
	
	
	//Set initial nav image
	$("#bannerNav img:first").attr("src", this.bannerNav.onBanner);
	
	
//Special for home page banner animation
	$("#bannerNav img:last").click(function(){
//		bannerClass.showAnimation();
	});
//=======================
}
