var RightImageOn = "right_on.gif"
var RightImageOff = "right_off.gif"
var LeftImageOn = "left_on.gif"
var LeftImageOff = "left_off.gif"

function FeatureSlider( elementId, leftArrowId, rightArrowId, displayItemsCount , scrollItemsCount, imgSrc ){
	this.elementId = elementId;
	this.leftArrowId = leftArrowId;
	this.rightArrowId = rightArrowId;
	this.displayItemsCount = displayItemsCount;		
	this.scrollItemsCount = scrollItemsCount;		
	this.itemArray = new Array();
	this.itemIndex = 0;
	this.imgSrc = imgSrc;
	this.leftImgOff =  this.imgSrc + LeftImageOff;
	this.leftImgOn =  this.imgSrc + LeftImageOn;
	this.rightImgOff = this.imgSrc + RightImageOff;
	this.rightImgOn = this.imgSrc+  RightImageOn;
}

function FeatureItem( url , imgUrl , footerText, deck ){
	this.url = url;
	this.imgUrl = imgUrl;
	this.footerText = footerText;
	this.deck = deck;
	this.parentBrowser = null;
}						

FeatureSlider.prototype.showButtons = function(){
	if (document.createElement){
	
		//begin left arrow
		FeatureLeftArrow = document.getElementById(this.leftArrowId);
		//create image
		isOff = (this.itemIndex == 0);
		FeatureLeftArrowImg = document.createElement("IMG");
		state = (isOff) ? this.leftImgOff : this.leftImgOn;
		FeatureLeftArrowImg.setAttribute("src", state );
		FeatureLeftArrowImg.setAttribute("name", "imgLeftArrow"); 
				
		//create anchor
		if (!isOff){
			FeatureLeftArrowAnchor = document.createElement( "A" );
			FeatureLeftArrowAnchor.setAttribute("href", "javascript:sliderObj.update(0)");
			FeatureLeftArrowAnchor.appendChild(FeatureLeftArrowImg);
			FeatureLeftArrow.appendChild(FeatureLeftArrowAnchor);
		} else {
			FeatureLeftArrow.appendChild(FeatureLeftArrowImg);
		}
		//end left arrow

		//begin right arrow
		FeatureRightArrow = document.getElementById(this.rightArrowId);
		//create image
		isOff = ((this.itemIndex + this.displayItemsCount) >= this.itemArray.length);
		FeatureRightArrowImg = document.createElement("IMG");
		state = (isOff) ? this.rightImgOff : this.rightImgOn;
		FeatureRightArrowImg.setAttribute("src", state );
		FeatureRightArrowImg.setAttribute("name", "imgRightArrow"); 
		//create anchor
		if (!isOff){	
			FeatureRightArrowAnchor = document.createElement("A");
			FeatureRightArrowAnchor.setAttribute("href" , "javascript:sliderObj.update(1)");
			FeatureRightArrowAnchor.appendChild(FeatureRightArrowImg);
			FeatureRightArrow.appendChild(FeatureRightArrowAnchor);
		} else {
			FeatureRightArrow.appendChild(FeatureRightArrowImg);
		}	
		//end right arrow
	}
}


FeatureItem.prototype.write = function(  ){
	if( document.createElement ){
		parentElement = document.getElementById( this.parentBrowser.elementId );
		if( parentElement.tagName == "TABLE" && this.parentBrowser.getBodyRow ){
			
			tdObj = document.createElement( "TD" );
			FeatureObj = document.createElement( "DIV" );
		    FeatureObj.classname = "FeatureItem";
		    
		    //Build Image and its link, i.e. FeatureImage div tag contents
		    if (this.imgUrl != "")
		    {
			    FeatureImageObj = document.createElement( "DIV" );
			    FeatureImageObj.className = "FeatureImage";
			    FeatureImageLinkObj = document.createElement( "A" );
			    FeatureImageLinkObj.setAttribute( "href" , this.url );
			    FeatureImageImgObj = document.createElement( "IMG" );
			    FeatureImageImgObj.setAttribute( "src" , this.imgUrl );
			    FeatureImageImgObj.setAttribute( "alt" , this.footerText );
			    FeatureImageLinkObj.appendChild( FeatureImageImgObj );
			    FeatureImageObj.appendChild( FeatureImageLinkObj );
			    FeatureObj.appendChild( FeatureImageObj );
			}
			
			//Build Title and its linke, i.e. FeatureTitle div tag contents
			FeatureTitleObj = document.createElement( "DIV" );
			FeatureTitleObj.className = "FeatureTitle";
			FeatureTitleLinkObj = document.createElement( "A" );
			FeatureTitleLinkObj.setAttribute( "href" , this.url );
			if (this.imgUrl != "") {FeatureTitleLinkObj.style.fontSize = "13px";}


			FeatureTitleLinkObj.appendChild( document.createTextNode( this.footerText ) );
			FeatureTitleObj.appendChild( FeatureTitleLinkObj);
			FeatureObj.appendChild( FeatureTitleObj );
			
			
			//Build Deck, i.e. 
			if (this.imgUrl == "")
			{
			    FeatureDeckObj = document.createElement( "DIV" );
			    FeatureDeckObj.className = "FeatureDeck";
			    FeatureDeckObj.appendChild( document.createTextNode( this.deck ) );
			    FeatureObj.appendChild( FeatureDeckObj );
			}
			

			tdObj.appendChild( FeatureObj );
			this.parentBrowser.getBodyRow().appendChild( tdObj );	
		}
	}
}							
							
FeatureSlider.prototype.addItem = function( item ){
	if( item instanceof FeatureItem ){
		item.parentBrowser = this;
		this.itemArray.push( item );
	}
}			
							
FeatureSlider.prototype.update = function( doMoveRight ){
	tableObj = document.getElementById( this.elementId );
	
	//increment index count
	var origIndex = this.itemIndex;
	this.itemIndex = (doMoveRight) ? this.itemIndex + this.scrollItemsCount : this.itemIndex - this.scrollItemsCount;
	
	//set upper and lower bounds
	this.upperBound = this.itemArray.length - this.displayItemsCount;
	this.itemIndex = ((this.itemIndex + this.displayItemsCount) > this.itemArray.length) ? this.itemArray.length-this.displayItemsCount : this.itemIndex;
	this.itemIndex = (this.itemIndex < 0) ? 0 : this.itemIndex;
	
	//update button images
	this.deleteAllChildrenOf(document.getElementById(this.leftArrowId));
	this.deleteAllChildrenOf(document.getElementById(this.rightArrowId));
	this.showButtons();
	
	if (origIndex != this.itemIndex){
		//clear 
		this.deleteAllChildrenOf( this.getBodyRow() );
		
		// re-populate
		for( iUpdate=this.itemIndex ; iUpdate < (this.itemIndex + this.displayItemsCount) ; iUpdate++ ){
			this.itemArray[iUpdate].write();
		}
	}
}

FeatureSlider.prototype.getBodyRow = function(){
	return document.getElementById( this.elementId ).getElementsByTagName( "TBODY" )[0].getElementsByTagName( "TR" )[0];
}

FeatureSlider.prototype.deleteAllChildrenOf = function( elementObj ){
	while (elementObj.hasChildNodes()) elementObj.removeChild(elementObj.firstChild);
}
