/* Banner Object */
function bannerAd(){
	/* Object Properties */
	this.varName = "";
	this.curBannerPos = 1;
	this.interval = 0;
	this.rotationSpeed;
	this.isFading;
	this.transitionSpeed;
	this.bannerID;
	this.numOfBanners = 0;
	this.bannerWidth = 0;
	this.totalWidth = 0;
	this.cssRight = 0;
	this.bannerControlDiv;
	this.pausePlay = "";
	this.backButton;
	this.forwardButton;
	this.isPaused = false;
	this.bannerLinks;

	/* Object Methods */
	/* Initialize the Banner Ad */
	this.init = function(name,id,rSpeed,fade,tSpeed,width){
		this.varName = name;
		this.rotationSpeed = rSpeed;
		this.isFading = fade;		
		this.transitionSpeed = tSpeed;		
		this.bannerID = id;
		this.numOfBanners = parseInt($("#"+this.bannerID+" ul li").size());
		if(this.isFading){$("#"+this.bannerID+" ul li").css("position","absolute");}
		
		/* Dynamic Width */
		this.bannerWidth = width;
		$("#"+this.bannerID+" ul li").width(this.bannerWidth+"px");
		$("#"+this.bannerID+"").width(this.bannerWidth+"px");
		$("#"+this.bannerID+"").next(".banner-control").width(this.bannerWidth+"px");

		/* CSS Controlled Width */
		//this.bannerWidth = parseInt($("#"+this.bannerID+" ul li").width());
		//alert( $("#"+this.bannerID+" ul li img")[0].width  );

		this.setSliderWidth();
		this.bannerButtons = $("#"+this.bannerID+"").next(".banner-control").children("div").children(".banner-control-button");
		this.bannerLinks = $("#"+this.bannerID+"").next(".banner-control").children("div").children(".banner-links-group-container").children(".banner-links-group");
		this.pausePlay = $("#"+this.bannerID+"").next(".banner-control").children("div").children(".banner-control-pause-play");
		this.backButton = $("#"+this.bannerID+"").next(".banner-control").children("div").children(".back");
		this.forwardButton = $("#"+this.bannerID+"").next(".banner-control").children("div").children(".forward");
		this.setZIndex(0);
		this.setButtonActive(this.curBannerPos);
		if(this.numOfBanners > 1){
			this.applyEvents();
			this.startRotation();
		}
		this.showAdLinks(this.curBannerPos);
	}
	/* Alert all inital properties */
	this.alertProps = function(){
		var dName = "Variable Name: "+this.varName;
		var dPos = "Current Position: "+this.curBannerPos;
		var dInterval = "Current Interval: "+this.interval;
		var drSpeed = "Current Rotational Speed: "+this.rotationSpeed;
		var dFade = "Current Fade Setting: "+this.isFading;
		var dtSpeed = "Current Transition Speed: "+this.transitionSpeed;
		var dID = "Banner ID: "+this.bannerID;
		var dnBanners = "Number of Banners: "+this.numOfBanners;
		var dbWidth = "Width of an Individual Banner: "+this.bannerWidth;
		var dtWidth = "Combine Total Width of all Banners: "+this.totalWidth;
		var dRight = "Initial Right Position: "+this.cssRight;
		alert(dName+"\n"+dID+"\n"+dbWidth+"\n"+dtWidth+"\n"+dnBanners+"\n"+dPos+"\n"+dInterval+"\n"+drSpeed+"\n"+dFade+"\n"+dtSpeed+"\n"+dRight);
	}
	/* Set UL length */
	this.setSliderWidth = function(){	
		var length = this.numOfBanners;
		var w = this.bannerWidth;
		var r = ((length-1)*w)*-1;					
		var width = parseInt((length * w));
		this.totalWidth = width;
		this.cssRight = r;
		if(this.isFading){$("#"+this.bannerID+" ul").css("right",this.bannerWidth+"px");}
		else{$("#"+this.bannerID+" ul").width(width+"px").css("right",r+"px");}
	}
	
	/* Move one position to the left */
	this.slideLeft = function(){				
		var o = this.curBannerPos;			
		this.curBannerPos=parseInt(this.curBannerPos)+1;		
		if(this.curBannerPos <= this.numOfBanners){this.moveTo(this.curBannerPos,o);}
		else{this.curBannerPos=parseInt(1);this.moveTo(this.curBannerPos,o);this.setButtonActive(this.curBannerPos);}	
	}
	/* Move one position to the right */
	this.slideRight = function(){			
		var c = this.numOfBanners;	
		var o = this.curBannerPos;
		this.curBannerPos=parseInt(this.curBannerPos)-1;	
		if(this.curBannerPos >= 1){this.moveTo(this.curBannerPos,o);this.setButtonActive(this.curBannerPos);}
		else{this.curBannerPos=parseInt(c);this.moveTo(this.curBannerPos,o);}		
	}
	/* Alert current z-index status of all banner divs */
	this.alertZIndex = function(){
		var output = "";
		for(i=0;i<this.numOfBanners;i++){
			output = output+"\nBanner at position "+i+" has a z-index of "+$("#"+this.bannerID+" ul li:eq("+i+")").css("z-index")+" and a display of "+$("#"+this.bannerID+" ul li:eq("+i+")").css("display");
		}
		alert(output);
	}
	/* Disable Buttons */
	this.disableActions = function(){
		this.pausePlay.unbind();
		this.forwardButton.unbind();
		this.backButton.unbind();
		this.bannerButtons.unbind();
	}
	/* Perform the move */
	this.moveTo = function(n,o){		
		clearInterval(this.interval);
		if(!this.isPaused){this.startRotation();}				
		this.curBannerPos = n;				
		var w = this.bannerWidth;
		var count = this.numOfBanners;
		var right = ((count-1)*w)*-1;
		var move = (n-1) * w;
		var newRight = right + move;				
		if(this.isFading){												
			var obj = this;						
			$("#"+this.bannerID+" ul li:eq("+parseInt(n-1)+")").css("z-index",2);			
			this.disableActions();
			$("#"+this.bannerID+" ul li:eq("+parseInt(o-1)+")").fadeOut(this.transitionSpeed,function(){
				$("#"+this.bannerID+" ul li:eq("+parseInt(o-1)+")");
				obj.setZIndex(parseInt(n-1));
				obj.applyEvents();
			});
		}
		else{$("#"+this.bannerID+" ul").animate({right:newRight},this.transitionSpeed);}					
		this.setButtonActive(this.curBannerPos);
		this.showAdLinks(this.curBannerPos);		
	}

	/* Show the links for the current Ad */
	this.showAdLinks = function(n){
		//alert(this.bannerLinks.html());
		var l = this.numOfBanners;		
		n = n-1;
		for(i=0;i<l;i++){
			var link = this.bannerLinks.slice(i);
			if(i == n){link.show();}
			else{link.hide();}			
		}

	}

	/* Activate Button */
	this.setButtonActive = function(n){
		var l = this.numOfBanners;
		for(i=0;i<l;i++){			
			var button = this.bannerButtons.slice(i);
			if(i == (n-1)){button.addClass("banner-control-button-active");}
			else{button.removeClass("banner-control-button-active");}
		}
	}
	/* Start Rotation */
	this.startRotation = function(){
		this.interval = setInterval(this.varName+'.slideLeft()',this.rotationSpeed);	
	}
	/* Set Inital Z-Index */
	this.setZIndex = function(n){				
		for(i=0;i<this.numOfBanners;i++){
			if(i==n){$("#"+this.bannerID+" ul li:eq("+i+")").css("z-index","3").show();}
			else{$("#"+this.bannerID+" ul li:eq("+i+")").css("z-index","1").show();}			
		}		
	}	
	/* Apply Events */
	this.applyEvents = function(){	
		var obj = this;
		this.pausePlay.click(function(){						
			var c = $(this).attr("class");			
			if(c.indexOf("active") != -1){obj.isPaused = false; $(this).removeClass("banner-control-pause-play-active");obj.slideLeft();}
			else{obj.isPaused = true;$(this).addClass("banner-control-pause-play-active");clearInterval(obj.interval);}			
		});		
		this.forwardButton.click(function(){obj.slideLeft();});					
		this.backButton.click(function(){obj.slideRight();});
		this.bannerButtons.click(function(){obj.moveTo($(this).html(),obj.curBannerPos);});		
	}
}

