igalleryClass = new Class
({

initialize: function(preload,lboxPreload,host,galleryFolder,numPics,thumbContainer,
lboxThumbContainer,thumbTable,lboxThumbTable,desContainer,lboxDesContainer,
largeImgDiv,lboxLargeImgDiv,scrollBoundry,scrollSpeed,
lboxScrollBoundry,lboxScrollSpeed,fade,lboxFade,lightbox,
lightboxWidth,showScrollBar,showLboxScrollBar,darkDiv,whiteDiv,closeImage,upArrow,
downArrow,leftArrow,rightArrow,lboxUpArrow,lboxDownArrow,lboxLeftArrow,lboxRightArrow,
showUpDown,showLeftRight,lboxShowUpDown,lboxShowLeftRight,magnify,allowComments,allowRating,
lboxAllowComments,lboxAllowRating,idArray,guest,ratingsContainer,ratingsInfoDiv,ratingForm,
ratingFormImgId,ratingFormImgRating,ratingsMessageContainer,ratedContainer,numRatingsSpan,
commentsAmountDiv,commentsDataContainer,commentsContainer,commentsForm,commentsTextarea,
commentsImgId,commentsGif,commentsMessageContainer,lboxCommentsMessageContainer,lboxRatingsContainer,lboxRatingsInfoDiv,lboxRatingForm,lboxRatingFormImgId,
lboxRatingFormImgRating,lboxRatingsMessageContainer,lboxRatedContainer,lboxNumRatingsSpan,
lboxCommentsAmountDiv,lboxCommentsContainer,lboxCommentsForm,lboxCommentsTextarea,
lboxCommentsImgId,lboxCommentsGif,showLargeImage,slideshow,slideshowControls,slideshowPause,slideshowAutostart,
slideshowPlay,slideshowForward,slideshowRewind,lboxSlideshow,lboxSlideshowControls,
lboxSlideshowPause,lboxSlideshowAutostart,
lboxSlideshowPlay,lboxSlideshowForward,lboxSlideshowRewind,showThumbs,showDescriptions,
lboxShowThumbs,lboxShowDescriptions,imgholder)
{
	
	
	this.preload = preload;
	this.lboxPreload = lboxPreload;
	this.host = host;
	this.galleryFolder = galleryFolder;
	this.numPics = numPics;
	this.thumbContainer = thumbContainer;
	this.lboxThumbContainer = lboxThumbContainer;
	this.thumbTable = thumbTable;
	this.lboxThumbTable = lboxThumbTable;
	this.desContainer = desContainer;
	this.lboxDesContainer = lboxDesContainer;
	this.largeImgDiv = largeImgDiv;
	this.lboxLargeImgDiv = lboxLargeImgDiv;
	this.scrollBoundry = scrollBoundry;
	this.scrollSpeed = scrollSpeed;
	this.lboxScrollBoundry = lboxScrollBoundry;
	this.lboxScrollSpeed = lboxScrollSpeed;
	this.fade = fade;
	this.lboxFade = lboxFade;
	this.lightbox = lightbox;
	this.lightboxWidth = lightboxWidth;
	this.showScrollBar = showScrollBar;
	this.showLboxScrollBar = showLboxScrollBar;
	this.darkDiv = darkDiv;
	this.whiteDiv = whiteDiv;
	this.closeImage = closeImage;
	this.upArrow = upArrow;
	this.downArrow = downArrow;
	this.leftArrow = leftArrow;
	this.rightArrow = rightArrow;
	this.lboxUpArrow = lboxUpArrow;
	this.lboxDownArrow = lboxDownArrow;
	this.lboxLeftArrow = lboxLeftArrow;
	this.lboxRightArrow = lboxRightArrow;
	this.showUpDown = showUpDown;
	this.showLeftRight = showLeftRight;
	this.lboxShowUpDown = lboxShowUpDown;
	this.lboxShowLeftRight = lboxShowLeftRight;
	this.magnify = magnify;
	this.allowComments = allowComments;
	this.allowRating = allowRating;
	this.lboxAllowComments = lboxAllowComments;
	this.lboxAllowRating = lboxAllowRating;
	this.idArray = idArray;
	this.guest = guest;
	this.ratingsContainer = ratingsContainer;
	this.ratingsInfoDiv = ratingsInfoDiv;
	this.ratingForm = ratingForm;
	this.ratingFormImgId = ratingFormImgId;
	this.ratingFormImgRating = ratingFormImgRating;
	this.ratingsMessageContainer = ratingsMessageContainer;
	this.ratedContainer = ratedContainer;
	this.numRatingsSpan = numRatingsSpan;
	this.commentsAmountDiv = commentsAmountDiv;
	this.commentsDataContainer = commentsDataContainer;
	this.commentsContainer = commentsContainer;
	this.commentsForm = commentsForm;
	this.commentsTextarea = commentsTextarea;
	this.commentsImgId = commentsImgId;
	this.commentsGif = commentsGif;
	this.commentsMessageContainer = commentsMessageContainer;
	this.lboxCommentsMessageContainer = lboxCommentsMessageContainer;
	this.lboxRatingsContainer = lboxRatingsContainer;
	this.lboxRatingsInfoDiv = lboxRatingsInfoDiv;
	this.lboxRatingForm = lboxRatingForm;
	this.lboxRatingFormImgId = lboxRatingFormImgId;
	this.lboxRatingFormImgRating = lboxRatingFormImgRating;
	this.lboxRatingsMessageContainer = lboxRatingsMessageContainer;
	this.lboxRatedContainer = lboxRatedContainer;
	this.lboxNumRatingsSpan = lboxNumRatingsSpan;
	this.lboxCommentsAmountDiv = lboxCommentsAmountDiv;
	this.lboxCommentsContainer = lboxCommentsContainer;
	this.lboxCommentsForm = lboxCommentsForm;
	this.lboxCommentsTextarea = lboxCommentsTextarea;
	this.lboxCommentsImgId = lboxCommentsImgId;
	this.lboxCommentsGif = lboxCommentsGif;
	this.showLargeImage = showLargeImage;
	this.slideshow = slideshow;
	this.slideshowControls = slideshowControls;
	this.slideshowPause = slideshowPause;
	this.slideshowAutostart = slideshowAutostart;
	this.slideshowPlay = slideshowPlay;
	this.slideshowForward = slideshowForward;
	this.slideshowRewind = slideshowRewind;
	this.lboxSlideshow = lboxSlideshow;
	this.lboxSlideshowControls = lboxSlideshowControls;
	this.lboxSlideshowPause = lboxSlideshowPause;
	this.lboxSlideshowAutostart = lboxSlideshowAutostart;
	this.lboxSlideshowPlay = lboxSlideshowPlay;
	this.lboxSlideshowForward = lboxSlideshowForward;
	this.lboxSlideshowRewind = lboxSlideshowRewind;
	this.showThumbs = showThumbs;
	this.showDescriptions = showDescriptions;
	this.lboxShowThumbs = lboxShowThumbs;
	this.lboxShowDescriptions = lboxShowDescriptions;
	this.imgholder = imgholder;

	
	//make the filename array from the thumb filenames
	this.thumbPathsArray = $(this.thumbTable).getElements('img');
	this.imgFileNameArray = new Array();
	this.thumbPathsArray.each(function(el,index)
	{
		this.imgPathParts = el.src.split("/");
		this.imgFileName = this.imgPathParts.pop();
		this.imgFileNameArray[index] = this.imgFileName;
	}.bind(this));
	
	
	
	
	
	//insert the large image
	this.ImageAsset = new Asset.images([this.host + 'images/stories/igallery/' + this.galleryFolder + '/large/' + this.imgFileNameArray[0] ], 
	{
		onComplete: function()
		{
			this.ImageAsset.injectTop( $(this.imgholder) )
			this.ImageAssetInjected = $(this.imgholder).getElement('img');
			
			this.imageAssetSizeArray = this.ImageAssetInjected.getSize();
			this.imageWidth = this.imageAssetSizeArray.size.x;
			this.imageHeight = this.imageAssetSizeArray.size.y;
			//$(this.imgholder).empty();
			
			
			this.imageToFadeInEl = new Element('img', 
			{
		    	'src': null
			});
			
			this.imageToFadeInEl.setStyle('opacity',0);
			this.imageToFadeInEl.injectTop(this.largeImgDiv);
			this.imageToFadeInEl.setProperty('src', this.host + 'images/stories/igallery/' + this.galleryFolder + '/large/' + this.imgFileNameArray[0]);
			this.imageToFadeInEl.setProperty('class', 'large_img');
			
			this.largeImgDivSizeArray = $(this.largeImgDiv).getSize();
			
			this.imageToFadeInLeftMargin = (this.largeImgDivSizeArray.size.x - this.imageWidth) /2;
			this.imageToFadeInTopMargin = (this.largeImgDivSizeArray.size.y - this.imageHeight) /2;
			
			this.imageToFadeInEl.setStyles
			({
				display: 'block',
				position: 'absolute',
				left: this.imageToFadeInLeftMargin,
				top: this.imageToFadeInTopMargin,
				opacity: 1
			});
		
			
			//make lightbox slideshow object
			if(this.lboxSlideshow == 1 && this.lightbox == 1)
			{
				this.lboxSlideShow = new slideShowClass(false,null,this.lboxLargeImgDiv,this.host,
				this.galleryFolder,'lightbox',this.imgFileNameArray,1,this.numPics,this.lboxSlideshowPause,
				this.lboxSlideshowPlay,this.guest,this.lboxAllowRating,this.idArray,this.ratingsContainer,this.lboxRatingsInfoDiv,
				this.lboxRatingForm,this.lboxRatingFormImgId,this.lboxRatingFormImgRating,this.lboxRatingsMessageContainer,this.ratedContainer,this.lboxNumRatingsSpan,
				this.lboxAllowComments,this.lboxCommentsAmountDiv,this.commentsDataContainer,this.lboxCommentsContainer,this.lboxCommentsForm,this.lboxCommentsTextarea,
				this.lboxCommentsImgId,this.lboxCommentsGif,this.darkDiv,this.lboxCommentsMessageContainer,this.lboxDesContainer,
				this.lboxShowDescriptions,this.lightbox,this.lboxSlideshowControls,this.imgholder,null,null,this.thumbTable);
			}
			else
			{
				this.lboxSlideShow = null;
			}
			
			//make the lightbox behaviors class
			if(this.lightbox == 1)
			{	
					this.lboxBehaviors = new addBehaviors(this.lboxThumbContainer,this.lboxScrollBoundry,
					this.lboxScrollSpeed,this.lboxThumbTable,this.lboxFade,false,this.lboxLargeImgDiv,this.host,
					this.galleryFolder,'lightbox',this.imgFileNameArray,this.lightbox,this.lboxDesContainer,
					this.lightboxWidth,this.darkDiv,this.whiteDiv,this.closeImage,this.lboxLargeImgDiv,
					this.lboxPreload,this.lboxUpArrow,this.lboxDownArrow,this.lboxLeftArrow,this.lboxRightArrow,
					this.lboxShowUpDown,this.lboxShowLeftRight,null,0,this.numPics,this.lboxPreload,
					this.lboxDesContainer,this.lboxAllowComments,this.lboxAllowRating,this.idArray,this.guest,
					this.ratingsContainer,this.lboxRatingsInfoDiv,this.lboxRatingForm,this.lboxRatingFormImgId,
					this.lboxRatingFormImgRating,this.lboxRatingsMessageContainer,this.ratedContainer,
					this.lboxNumRatingsSpan,this.lboxCommentsAmountDiv,this.commentsDataContainer,
					this.lboxCommentsContainer,this.lboxCommentsForm,this.lboxCommentsTextarea,
					this.lboxCommentsImgId,this.lboxCommentsGif,this.lboxCommentsMessageContainer,this.lboxRatingsInfoDiv,this.lboxRatingForm,
					this.lboxRatingFormImgId,this.lboxRatingFormImgRating,this.lboxRatingsMessageContainer,
					this.lboxNumRatingsSpan,this.lboxCommentsForm,this.lboxCommentsAmountDiv,
					this.lboxCommentsContainer,this.lboxCommentsForm,this.lboxCommentsTextarea,
					this.lboxCommentsImgId,this.lboxCommentsGif,this.lboxAllowComments,this.lboxAllowRating,
					this.showLargeImage,this.slideShow,this.lboxSlideShow,this.lboxSlideshowAutostart,
					this.commentsMessageContainer,this.lboxCommentsMessageContainer,
					this.lboxShowThumbs,this.showThumbs,this.lboxShowThumbs,
					this.lboxShowDescriptions,this.showDescriptions,this.lboxShowDescriptions,
					this.imgholder);
			}
			
			//make the main behaviors class
			this.mainBehaviors = new addBehaviors(this.thumbContainer,this.scrollBoundry,this.scrollSpeed,
			this.thumbTable,this.fade,true,this.largeImgDiv,this.host,this.galleryFolder,
			'large',this.imgFileNameArray,this.lightbox,this.desContainer,this.lightboxWidth,
			this.darkDiv,this.whiteDiv,this.closeImage,this.lboxLargeImgDiv,this.preload,this.upArrow,
			this.downArrow,this.leftArrow,this.rightArrow,this.showUpDown,this.showLeftRight,null,
			this.magnify,this.numPics,this.lboxPreload,this.lboxDesContainer,
			this.allowComments,this.allowRating,this.idArray,this.guest,this.ratingsContainer,
			this.ratingsInfoDiv,this.ratingForm,this.ratingFormImgId,this.ratingFormImgRating,
			this.ratingsMessageContainer,this.ratedContainer,this.numRatingsSpan,this.commentsAmountDiv,
			this.commentsDataContainer,this.commentsContainer,this.commentsForm,this.commentsTextarea,
			this.commentsImgId,this.commentsGif,this.commentsMessageContainer,this.lboxRatingsInfoDiv,this.lboxRatingForm,
			this.lboxRatingFormImgId,this.lboxRatingFormImgRating,this.lboxRatingsMessageContainer,
			this.lboxNumRatingsSpan,this.lboxCommentsForm,this.lboxCommentsAmountDiv,
			this.lboxCommentsContainer,this.lboxCommentsForm,this.lboxCommentsTextarea,
			this.lboxCommentsImgId,this.lboxCommentsGif,this.lboxAllowComments,this.lboxAllowRating,
			this.showLargeImage,this.slideShow,this.lboxSlideShow,this.lboxSlideshowAutostart,
			this.commentsMessageContainer,this.lboxCommentsMessageContainer,
			this.showThumbs,this.showThumbs,this.lboxShowThumbs,
			this.showDescriptions,this.showDescriptions,this.lboxShowDescriptions,this.imgholder);
			
			
			//insert the magnify image
			if (this.magnify == 1) 
			{
				this.insertMagnify = new insertMagnifyClass(this.largeImgDiv,this.host,this.imageWidth,this.imageHeight);
			}
			
			
			//set the behavior for the first big image
			this.firstThumbLink = $(this.thumbTable).getElement('a')
			this.linkClass = this.firstThumbLink.getProperty('class');
			this.linkTarget = this.firstThumbLink.getProperty('target');
			
			if(this.linkClass == 'picture_link')
			{	
				$(this.largeImgDiv).setStyle('cursor', 'pointer');
				
				$(this.largeImgDiv).removeEvents('click');
				
				$(this.largeImgDiv).addEvent('click', function(e)
				{
					if (this.linkTarget == '_blank') 
					{
						window.open(this.firstThumbLink);
					}
					else
					{
						window.location = this.firstThumbLink;
					}
				}.bind(this));
			}
			
			if(this.lightbox == 1)
			{
				
				if(this.linkClass == 'no_link' )
				{
					$(this.largeImgDiv).removeEvents('click');
					
					$(this.largeImgDiv).setStyle('cursor', 'pointer');
					
					$(this.largeImgDiv).addEvent('click', function(e)
					{	
						this.mainBehaviors.igniteLightBox(0);
					}.bind(this));
				}
			
			}
			
				//make slideshow object
				if(this.slideshow == 1)
				{
					this.slideShow = new slideShowClass(true,this.magnify,this.largeImgDiv,this.host,
					this.galleryFolder,'large',this.imgFileNameArray,1,this.numPics,this.slideshowPause,
					this.slideshowPlay,this.guest,this.allowRating,this.idArray,this.ratingsContainer,this.ratingsInfoDiv,
					this.ratingForm,this.ratingFormImgId,this.ratingFormImgRating,this.ratingsMessageContainer,this.ratedContainer,this.numRatingsSpan,
					this.allowComments,this.commentsAmountDiv,this.commentsDataContainer,this.commentsContainer,this.commentsForm,this.commentsTextarea,
					this.commentsImgId,this.commentsGif,this.darkDiv,this.commentsMessageContainer,this.desContainer,
					this.showDescriptions,this.lightbox,this.slideshowControls,this.imgholder,this.mainBehaviors,this.lboxSlideShow,this.thumbTable);
				}
				else
				{
					this.slideShow = null;
				}
				this.mainBehaviors.slideShow = this.slideShow;
				
				
				
				if(this.slideshow == 1)
				{
					if(this.slideshowControls == 1)
					{
						$(this.slideshowPlay).addEvent('click', function(e)
						{
							this.slideShow.startSlideShow(false);
						
						}.bind(this));
						
						$(this.slideshowForward).addEvent('click', function(e)
						{
							this.slideShow.clearSlideShow();
							this.slideShow.slideShowFunction(true);
						
						}.bind(this));
						
						$(this.slideshowRewind).addEvent('click', function(e)
						{
							this.slideShow.clearSlideShow();
							this.slideShow.slideShowFunction(false);
						
						}.bind(this));
						
					}
					
					if(this.slideshowAutostart == 1)
					{
						this.slideShow.startSlideShow(true);
					}
				}
				
				if(this.lboxSlideshow == 1 && this.lightbox == 1)
				{
					if(this.lboxSlideshowControls == 1)
					{
						$(this.lboxSlideshowPlay).addEvent('click', function(e)
						{
						
							this.lboxSlideShow.startSlideShow(false);
						
						}.bind(this));
						
						$(this.lboxSlideshowForward).addEvent('click', function(e)
						{
							this.lboxSlideShow.clearSlideShow();
							this.lboxSlideShow.slideShowFunction(true);
						
						}.bind(this));
						
						$(this.lboxSlideshowRewind).addEvent('click', function(e)
						{
							this.lboxSlideShow.clearSlideShow();
							this.lboxSlideShow.slideShowFunction(false);
						
						}.bind(this));
						
					}
					
					
				
				}
			
			
		}.bind(this)
	});
	
	
	//make the comments/rating classes
	if(this.allowRating == 1)
	{
		this.mainRatings = new ratingsClass(this.guest,this.idArray,this.host,0,this.ratingsContainer,
		this.ratingsInfoDiv,this.ratingForm,this.ratingFormImgId,this.ratingFormImgRating,this.ratingsMessageContainer,
		this.ratedContainer,this.numRatingsSpan);
	}
	
	if(this.allowComments == 1)
	{
		this.mainComments = new commentsClass(this.guest,this.idArray,this.host,this.commentsAmountDiv,
		this.commentsDataContainer,this.commentsContainer,
		this.commentsForm,this.commentsTextarea,this.commentsImgId,this.commentsGif,0,this.darkDiv,
		this.commentsMessageContainer,this.lightbox);
	}
	
	if(this.lboxAllowRating == 1 && this.lightbox == 1)
	{
		this.mainRatings = new ratingsClass(this.guest,this.idArray,this.host,0,this.ratingsContainer,
		this.lboxRatingsInfoDiv,this.lboxRatingForm,this.lboxRatingFormImgId,this.lboxRatingFormImgRating,this.lboxRatingsMessageContainer,
		this.ratedContainer,this.lboxNumRatingsSpan);
	}
	
	if(this.lboxAllowComments == 1 && this.lightbox == 1)
	{
		this.mainComments = new commentsClass(this.guest,this.idArray,this.host,this.lboxCommentsAmountDiv,
		this.commentsDataContainer,this.lboxCommentsContainer,
		this.lboxCommentsForm,this.lboxCommentsTextarea,this.lboxCommentsImgId,this.lboxCommentsGif,0,
		this.darkDiv,this.lboxCommentsMessageContainer,this.lightbox);
	}
	

	
}

});//end igallery class

	
