/*
 * Media Gallery
 *
 * @function MediaGallery
 *   Creates photo and video galleries
 */
var MediaGallery = function(settings) 
{
	// Static
	var _galleryID			= settings['id'];
	var _galleryType		= settings['type'];
	var _galleryAlbum		= settings['album'];

	// Gallery
	var _mediaTotal;
	var _currentIndex;
	
	// Album
	var _mediaAlbumTotal;
	var _currentPhotoIndex;
	
	// Pagination
	var _prevPageTransition	= false;
	var _loadingTransition	= false;
	
	var _currentShareID		= 'share';
	
	this.init = function()
	{
		_loadingTransition = false;
		
		_mediaTotal 			= jQuery(_galleryID + ' .gallery-list').children().size();
		_currentIndex 			= 0;
	
		jQuery(_galleryID + ' .band-photo-thumb').click(function()
		{
			_currentIndex = jQuery(_galleryID + ' .band-photo-thumb').index(this);
			
			if(!_galleryAlbum)
			{
				displaySelectedMedia(nodeToElement(_currentIndex));
			}
			else 
			{
				displaySelectedAlbum(nodeToElement(_currentIndex));
			}
		});
		
		if(_prevPageTransition)
		{
			_currentIndex 		= (_mediaTotal-1);
			_prevPageTransition = false;
		}
		
		displaySelectedMedia(nodeToElement(_currentIndex));
	}
	
	this.setupGallery = function()
	{
		jQuery(_galleryID + ' .gallery-controls .next').click(function() { paginateMedia('next'); });
		jQuery(_galleryID + ' .gallery-controls .prev').click(function() { paginateMedia('prev'); });
	}
	
	function paginateMedia(type)
	{		
		if(!_loadingTransition) 
		{
			var _continueLoad = false;
			
			if(_galleryAlbum)
			{
				if(type == "next" && _currentPhotoIndex == (_mediaAlbumTotal-1)  && _mediaAlbumTotal != 1 && jQuery(_galleryID + ' .pager-next a').length > 0)
				{
					_currentPhotoIndex 	= 0;
					_loadingTransition	= true;
					
					jQuery(_galleryID + ' .pager-next a').trigger('click');
					
					jQuery(_galleryID + ' .media-content .container .media-details').fadeOut('fast');
					jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeOut('fast');
				}
				else if (type == "prev" && _currentPhotoIndex == 0 && jQuery(_galleryID + ' .pager-previous a').length > 0)
				{
					_prevPageTransition = true;
					_loadingTransition	= true;
					
					jQuery(_galleryID + ' .pager-previous a').trigger('click');
		
					jQuery(_galleryID + ' .media-content .container .media-details').fadeOut('fast');
					jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeOut('fast');
				}
				else if(type == "next" && _currentPhotoIndex < (_mediaAlbumTotal-1))
				{
					_currentPhotoIndex++;
					_continueLoad = true;
				}
				else if(type == "prev" && _currentPhotoIndex != 0)
				{
					_currentPhotoIndex--;
					_continueLoad = true;
				}
				
				if(_continueLoad)
				{
					displaySelectedMedia(nodeToElement(_currentIndex));
				}
			}
			else if(!_galleryAlbum)
			{
				if(type == "next" && _currentIndex == (_mediaTotal-1)  && _mediaTotal != 1 && jQuery(_galleryID + ' .pager-next a').length > 0)
				{
					_currentIndex 		= 0;
					_loadingTransition	= true;
					
					jQuery(_galleryID + ' .pager-next a').trigger('click');
					
					jQuery(_galleryID + ' .media-content .container .media-details').fadeOut('fast');
					jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeOut('fast');
				}
				else if (type == "prev" && _currentIndex == 0 && jQuery(_galleryID + ' .pager-previous a').length > 0)
				{
					_prevPageTransition = true;
					_loadingTransition	= true;
					
					jQuery(_galleryID + ' .pager-previous a').trigger('click');
		
					jQuery(_galleryID + ' .media-content .container .media-details').fadeOut('fast');
					jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeOut('fast');
				}
				else if(type == "next" && _currentIndex < (_mediaTotal-1))
				{
					_currentIndex++;
					_continueLoad = true;
				}
				else if(type == "prev" && _currentIndex != 0)
				{
					_currentIndex--;
					_continueLoad = true;
				}
				
				if(_continueLoad)
				{
					displaySelectedMedia(nodeToElement(_currentIndex));
				}
			}
		}
	}
	
	this.loadAlbum = function()
	{
		displaySelectedAlbum(nodeToElement(_currentIndex));
	}
	
	function displaySelectedAlbum(album)
	{
		jQuery(_galleryID + ' .media-content .container .gallery-media-container').hide();
		jQuery(_galleryID + ' .gallery-tab-wrap').show();
		jQuery(_galleryID + ' .gallery-thumbnails').hide();
		
		jQuery(_galleryID + ' .gallery-tab-wrap ul.pager').click(function() { returnToGallery(); });
		
		_currentPhotoIndex	= 0;
		_mediaAlbumTotal 	= album.children('.album').children('.item-list').children('ul').children().size();

		displaySelectedMedia(album);
	}
	
	function displaySelectedMedia(media) 
	{
		var _mediaContent;
		var _mediaHTML;
		
		if(_galleryAlbum)
		{
			_mediaContent = 
			{
				photos:	media.children('.album').children('.item-list').children('ul'),
				title:	media.children('.title').html(),
				atitle:	media.children('.link-title').html(),
				cmnts:	media.children('.comments').html(),
				share:	media.children('.share').html(),
				shrurl:	media.children('.share-url').html(),
				media:	media.children('.media').text(),
				type:	media.children('.type').html(),
				desc:	media.children('.description').html(),
				user:	media.children('.user').html(),
			};
	
			_mediaHTML = _mediaContent['photos'].find('li').get(_currentPhotoIndex).innerHTML;
		}
		else if(!_galleryAlbum)
		{	
			_mediaContent = 
			{
				title:	media.children('.title').html(),
				atitle:	media.children('.link-title').html(),
				cmnts:	media.children('.comments').html(),
				share:	media.children('.share').html(),
				shrurl:	media.children('.share-url').html(),
				media:	media.children('.media').text(),
				type:	media.children('.type').html(),
				desc:	media.children('.description').html(),
				user:	media.children('.user').html(),
			};
			
			if(_galleryType == "photos")
			{
				_mediaHTML = 	'<img src="';
				_mediaHTML += 	_mediaContent['media'];
				_mediaHTML += 	'" />';
			} 
			else if(_galleryType == "videos")
			{
				_mediaHTML =	'<iframe title="'+_mediaContent['title']+'" width="650" height="350" src="http://www.youtube.com/embed/';
				_mediaHTML += 	_mediaContent['media'];
				_mediaHTML +=	'?wmode=transparent&rel=0&autoplay=0&autohide=1&showinfo=1&controls=1" frameborder="0" allowfullscreen></iframe>';
			}
		}
		
		_loadingTransition = true;
		
		if(!_galleryAlbum)
		{
			jQuery(_galleryID + ' .media-content .container .media-details').fadeOut('fast');
		}
		
		jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeOut('fast', function() 
		{
			var mediaContainer = _galleryID + ' .gallery-tab-wrap .gallery-media-container';

			jQuery(mediaContainer).html(_mediaHTML);
			
			jQuery(_galleryID + ' .gallery-tab-wrap h1').html(_mediaContent['atitle']);
			jQuery(_galleryID + ' .gallery-tab-wrap .comments').html(_mediaContent['cmnts']);
			jQuery(_galleryID + ' .gallery-tab-wrap .user').html('SUBMITTED BY: ' + _mediaContent['user']);
			jQuery(_galleryID + ' .gallery-tab-wrap p').html(_mediaContent['desc']);
			
			/* start Share */ 
			
			var _previousShareID = _currentShareID;
			
			//_currentShareID = 'share_'+randomString(6);
			//jQuery(_galleryID + ' .gallery-tab-wrap .' + _previousShareID).html(_mediaContent['share']).removeClass(_previousShareID).addClass(_currentShareID);
			//jQuery(_galleryID + ' .gallery-tab-wrap .' + _previousShareID).html(_mediaContent['share']);
			
			addthis.update('share', 'url', _mediaContent['shrurl']);
			addthis.update('share', 'title', _mediaContent['title']);
	
			/* end Share */
			
			if(_galleryType == "photos") 
			{
				jQuery(mediaContainer).find('img').load(function() 
				{
					jQuery(_galleryID + ' .media-content .container .media-details').fadeIn('fast');
					jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeIn('fast', function()
					{
						_loadingTransition = false;	
						initAddThis();
					}); 
				});
			} 
			else 
			{
				jQuery(_galleryID + ' .media-content .container .media-details').fadeIn('fast');
				jQuery(_galleryID + ' .media-content .container .gallery-media-container').fadeIn('fast', function()
				{
					_loadingTransition = false;	
					initAddThis();
				});  
			}	
		});
	}
	
	function returnToGallery()
	{
		jQuery(_galleryID + ' .gallery-tab-wrap').hide();
		jQuery(_galleryID + ' .gallery-thumbnails').show();
	}
	
	function nodeToElement(id)
	{
		return jQuery(_galleryID + ' .gallery-list .content-container').eq(id);
	}
	
	function initAddThis()
	{
		addthis.init();
		//alert('whutev');
	}
	
	function randomString(length) 
	{
		var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
		
		if (! length) {
			length = Math.floor(Math.random() * chars.length);
		}
		
		var str = '';
		for (var i = 0; i < length; i++) {
			str += chars[Math.floor(Math.random() * chars.length)];
		}
		return str;
	}

	
	// Load static settings on first load
	this.setupGallery();
}
