var wWidth;
var wHeight;

var menuActive = false;
var articleActive = false;
var thumbsPanelActive = false;
var infoPanelActive = false;
var pagePanelActive = false;
var currentImageHasInfo = false;
var introActive = false;
var infoWidth = 0;
var numSlides = 0;
var _currentIndex;
var _currentArticle;
var _galleryPlayState = "paused";
/*
* log
*/
function log() {
	if (window.console && window.console.log)
			window.console.log('[site] ' + Array.prototype.join.call(arguments,' '));
};


/*
* initalize
*/
function initalize( site_url, page )
{	
	
	$("#loader").remove();
	
	//if(page == "")
	//	$.cookie("nina_large_site", "not_visited");
	
	// ---------------------------------------------------------------------------------------
	// set cookies for intial nina logo display
	// ---------------------------------------------------------------------------------------
	if($.cookie("nina_large_site") != 'visited')
	{		
		introActive = true;
		//
		$('#header_thumbs').hide();
		$('#header_info').hide();
		$('#footer').hide();
		
		//
		_showIntroMenu();
		
		// add intro slide
		$("#slides").prepend("<li id='logo_slide' class='slideshowItem'><div id='logo_slide_content'><div class='centerVerticle'><div id='loaderLogo'></div></div></div></li>");

		//
		$('#header_nav').hide().delay(4000).fadeIn(1000);
		$('#controls').hide().delay(3000).fadeIn(1000);
		
		// pause intro
		pauseSlideShow();
		
		//
		$('.slideshowArrow').css('display','block');
		//
		$.cookie("nina_large_site", "visited", { });
		
	}else{
		$('#header_nav').show();
		$('#header_thumbs').show();
		$('#header_info').show();
		$('#footer').show();
		
		introActive = false;
	}
	
	
	$(".slideshowControl").hover(
	  function () {
	    $('.slideshowArrow',this).fadeIn(100);
	  }, 
	  function () {
	    $('.slideshowArrow',this).fadeOut(100);
	  }
	);
	
	
	// ---------------------------------------------------------------------------------------
	// navigation / menu funtionality
	// ---------------------------------------------------------------------------------------
	
	$('#home').click(function(){
		$.cookie("nina_large_site", "not_visited");
		$('#wrapper').hide();
	});
	
	//
	$('ul.topnav li .parent').bind('mouseenter', function (e) {
	  	//Following events are applied to the subnav itself (moving subnav up and down)
		$(this).parent().find("ul.subnav").show(); //Drop down the subnav on click
		//
		setDisplay('menu');
		
		//
		$(this).parent().find("ul.subnav").bind('mouseleave', function (e) {
			
			// return to original state
			setDisplay();
			//
			closeMenu();
			
		});
	})
	
	
	// set up artists onclick
	$('#artist_list ul').hide();
	
	// show / hide articles content onclick
	$('#artist_list').click(function(){
		$('ul',this).toggle();
	})
	
	
	// ---------------------------------------------------------------------------------------
	// thumbnails display
	// ---------------------------------------------------------------------------------------
	
	
	$("#thumbnailsControl").click(function() { 
		closeMenu();
		setDisplay('thumbnails')
	});
	
	// ---------------------------------------------------------------------------------------
	// image info display
	// ---------------------------------------------------------------------------------------

	$("#infoControl").click(function() { 
		
		closeMenu();
		
		(articleActive) ?
			setDisplay('gallery'):		
			setDisplay('info');	

	});
	
	// ---------------------------------------------------------------------------------------
	// links
	// ---------------------------------------------------------------------------------------
	
	// return to default gallery state links
	$(".galleryReturnLink").click(function() { 
		setDisplay('gallery');
	});
	
	
	// ---------------------------------------------------------------------------------------
	// slideshow
	// ---------------------------------------------------------------------------------------
	
	//
	numSlides = $('#slides li.slideshowItem').length;
	
	//
	if(numSlides > 1)
	{	
		log('building slideshow numSlides :: ' + numSlides);
		
		// intiate slide show
		$('#slides').cycle({
			fx: 'scrollBothWays',
			//fx: 'fadeout', // choose your transition type, ex: fade, scrollUp, shuffle, etc...
			speed :1000,
			timeout: 6000,
			pager:'#thumbnails',
			prev:'#slideshowControlPrev',
			next:'#slideshowControlNext',
			delay: (introActive) ? 6000 : 0,
			after:function(curr, next, opts){
				//
				if( $(curr).attr('id') == 'logo_slide' && !introActive)
				{
					log("removing slide count : " + opts.slideCount);
					
					if(opts.removeSlide)
						opts.removeSlide();
					
					log("removing slide count after : " + opts.slideCount);
					
				}
				
			},
			pagerAnchorBuilder: function(idx, slide) {
				return '#thumbnails li:eq(' + idx + ') a';
			},
			onPrevNextEvent: function( isNext, nIdx, slideElement ){
				// updateDisplay( nIdx );
				log('onPrevNextEvent');
				if(introActive)
					_resetDisplay();
					
				pauseSlideShow();
				_gaq.push(['_trackEvent', 'Gallery', 'New/Prev Event','Slide (' + nIdx + ')' ]);
			},
			onPagerEvent : function(  nIdx, slideElement )
			{
				if(hidethumbnailsOnSelection == "Yes") 
											setDisplay('gallery');
					
				log('onPagerEvent');				
				pauseSlideShow();
				
				_gaq.push(['_trackEvent', 'Gallery', 'Pager Event', 'Slide (' + nIdx + ')' ]);
				// updateDisplay( nIdx );
			},
			before:function(currSlideElement, nextSlideElement, opts, forwardFlag)
			{
				updateDisplay( $(nextSlideElement).index() );
			}
		});
		
		(autoPlaySlideshow == 'Yes' && !introActive) ? resumeSlideShow() : pauseSlideShow();
		//
		log("Autoplay Slideshow : " + autoPlaySlideshow + " : gallery state " + _galleryPlayState)
		//
		$('#slideshowControl').click(function(){
			(_galleryPlayState == 'paused') ? resumeSlideShow(): pauseSlideShow();
		});
		
	}else{
		
		$('#slideshowControlWrapper').hide();
		$('#slideshow #controls').hide();
		$("ul#thumbnails li").click(function(){ setDisplay('gallery'); });
		
	}
	
	// we need to update all the images sizes onload 
	$('#slides img').load(function () {
         updateSize();
     });

	// ---------------------------------------------------------------------------------------
	// articles
	// ---------------------------------------------------------------------------------------
	
	//
	var hasArticle = false;
	//	
	$('#slides li.slideshowItem').each(function( index ){
		// add an indcator to the image
		if($(this).has('.infoContent').length == 0) 
		{
			$("#thumbnails li:eq("+index+") .articleIcon").hide();
		}
		else{
			if($("#articles").has("."+$(".infoArticle", this).attr('id')).length == 0)
				$("#articles").append( "<li class="+$(".infoArticle", this).attr('id')+">"+$(".infoArticle", this).html()+"</li>" );


			hasArticle = true;
		}
	});
	
	// if we dont have any articles then hid eth earticle holder.
	if(!hasArticle)
	{
		$('#articleThumbsWrapper').hide();
	}
	
	// ---------------------------------------------------------------------------------------
	// pages
	// ---------------------------------------------------------------------------------------
	
	// add listeners for page links
	$('.page_link').click(function( index ){
		var pageID = $(this).attr('href').replace('#','');
		//		
		$('.page').hide();
		//
		$('#'+pageID).show();
		//
		setDisplay('page');
	});
	
	// ---------------------------------------------------------------------------------------
	// thumbnails
	// ---------------------------------------------------------------------------------------
	
	// add thumbnail paging
	$("ul#thumbnails").quickPager({pageSize:16});
	// add article thumbs paging
	$("ul#articles").quickPager({pageSize:16});
	
	
	// ---------------------------------------------------------------------------------------
	// general listeners
	// ---------------------------------------------------------------------------------------


	// update sizes on window resize event listener
	$(window).resize(function(){
		updateSize();
	})
	
	// ---------------------------------------------------------------------------------------
	// intial updates
	// ---------------------------------------------------------------------------------------
	
	// set intial display
	updateDisplay(0);
	
	// check if we are showing info on load
	if($('#slideshow').hasClass('show_info'))
	{
		setDisplay('info');
	}
	//
	// do initial size update
	updateDisplay(0);	
	
	$('#slideshow').fadeIn();
}
/*
* resets the display after an intro slide
*/
function _resetDisplay(){
	introActive = false;
	//
	setDisplay();
	closeMenu();
	
	$('#header_thumbs').fadeIn();
	$('#header_info').fadeIn();
	$('#footer').fadeIn();
}
/*
* set the menu to show for the intro state
*/
function _showIntroMenu()
{
	$("ul.subnav").show();
	menuActive = true;
}
/*
*
*/
function viewArticle($articleID)
{
	log('viewArticle : '+ $articleID );
	
	if(_currentArticle != $articleID){
		//
		var articleInfoElement = $("#"+$articleID);
		// copy info dialog into article holder this is done because the current info would be hidden below the panel wrapper
		$("#infoHolder").empty().append( $(articleInfoElement).html() );
		// copy current article into the article holder with the current image
		$('#articleHolder').empty().append( $('.infoArticleContent', articleInfoElement).html() );
		
		//
		$('#infoHolder .articleLink').text('Back to gallery').click(function(){ setDisplay('gallery');});
		//
		$('#articleHolder img.infoArticleImage').resizeImg({
		    maxHeight: 300,
			maxWidth:400
		});
		
		//
		$('.totop').click(function(){
			var link = this
			$.smoothScroll({
			     scrollTarget: link.hash
			 });
		});
		
		//
		_currentArticle = $articleID;
		
		_gaq.push(['_trackEvent', 'View Article', $articleID]);
	}
	
	//
	setDisplay('article');
	
	//
}
/*
*
*/
function updateDisplay( nIdx ){
	
	
	_currentIndex = nIdx;
	log(nIdx);
	//
	var slideElement = $("#slides li.slideshowItem:eq("+nIdx+")");
	//
	log(slideElement + " : " + $('.infoContent', slideElement ).length);
	
	// set image title in top navigation	
	var image = $(slideElement).find('.slide');
	
	//
	$('#image_title').text( (($(image).attr('title')) ? $(image).attr('title') : "No image assigned")   );
	$('#image_index').text( (nIdx+1)+" of "+numSlides+"");
	//$('#image_detail').empty().text( $('.infoInfo', slideElement ).text() );
	$('#image_detail').empty().append( $('.infoInfo', slideElement).html() );
	//
	if( $('.infoContent',slideElement).length == 0 ){
		// hid earticel idcator
		$("#article_indicator").hide();
		
		// if show info
		if(infoPanelActive){
			infoWidth = 0;
		}
		//
		currentImageHasInfo = false;
		
		$('.infoPanel',slideElement).hide();
		
	}else{
		// if slide has some info content then show the artcle icon
		$("#article_indicator").show();
		//
		if(infoPanelActive){
			infoWidth = 370;
		}
		
		currentImageHasInfo = true;
		
	}
	
	// return to default gallery state links
	$(".galleryReturnLink").click(function() { 
		setDisplay('gallery');
	});
	
	
	updateSize();
	
}

/* 
* setDisplay
*/
function setDisplay( displayType )
{
	log('setDisplay ' + displayType);
	
	// do a quick reset
	$('#slideshow .infoPanel').removeClass('transparent');
	$('#panelsWrapper').addClass('transparent');
	$('#panelsWrapper').hide();
	
	// reset
	$('#slideshowWrapper').show();
	$('#articlePanel').hide();
	$('#pagePanel').hide();
	
	//
	$('#slides').cycle( (_galleryPlayState == 'playing') ? 'resume' : 'pause');
	
	
	//
	if(thumbsPanelActive && (displayType == 'info' || displayType == 'gallery' || displayType == 'article' || displayType == 'page'))
	{
		hideThumbnails()
	}

	//
	switch(displayType)
	{
		case "menu":
			
			if(!introActive)
			{
				if(infoPanelActive)
				{
					$('#slideshow .infoPanel').removeClass('transparent');
					$('#panelsWrapper').addClass('transparent');
				}

				$('#panelsWrapper').show();	
			}
			
			
			//
			menuActive = true;
			//
			break;
		case "article":
			articleActive = true;
			//
			$('#articlePanel').show();
			$('#panelsWrapper').show();
			//
			$('#slideshowWrapper').hide();
			pauseSlideShow();
			
			$('#infoControl').text('Back to gallery');
			$("#article_indicator").show();
			//
			break;
			
		case "page":
			$('#pagePanel').show();
			$('#panelsWrapper').show();			
			closeMenu();
			pagePanelActive = true;
			//
			break;
		case "thumbnails":
			(!thumbsPanelActive) ? showThumbnails() : hideThumbnails();
			break;
		case "info":
			
			closeMenu();

			$('#panelsWrapper').removeClass('transparent');	
			$('#slideshow .infoPanel').addClass('transparent');
			
			(!infoPanelActive) ? showArticleInfo() : hideArticleInfo();
			break;
		case 'gallery':
			menuActive = false;
			articleActive = false;
			$('#panelsWrapper').hide();
			
			$('#panelsWrapper').removeClass('transparent');	
			$('#slideshow .infoPanel').addClass('transparent');
			
			//log('gallery ' + infoPanelActive + " : " + currentImageHasInfo);
			
			(infoPanelActive && currentImageHasInfo) ? showArticleInfo() : hideArticleInfo();
			updateDisplay(_currentIndex);
			break;
		default:
			if(thumbsPanelActive){
				log('thumbnails panels is active');
				$('#panelsWrapper').show();
				
				return;
			} // do nothing
			else if (pagePanelActive){
				$('#pagePanel').show();
				$('#panelsWrapper').show();
			}
			else if(infoPanelActive){
				$('#slideshow .infoPanel').addClass('transparent');
			} // do nothing
			else
				$('#panelsWrapper').hide();
			//
			menuActive = false;
	}
	
	// return to default gallery state links
	$(".galleryReturnLink").click(function() { 
		setDisplay('gallery');
	});
	
	updateSize();
}
/*
*
*/
function pauseSlideShow()
{
	log('pauseSlideShow');
	_galleryPlayState = "paused";
	$('#slideshowControl').text('Play Slideshow');
	$('#slides').cycle('pause');
	
}
/*
*
*/
function resumeSlideShow()
{
	log('resumeSlideShow');
	_galleryPlayState = "playing";
	$('#slideshowControl').text('Pause Slideshow');
	$('#slides').cycle('resume');
}
/*
*
*/
function closeMenu()
{
	if(!introActive)
	{
		$('ul.subnav').unbind('mouseleave');
		$("ul.subnav").hide(); //When the mouse hovers out of the subnav, move it back up
		menuActive = false;
	}
}
/*
*
*/
function showThumbnails()
{
	$("#thumbnailsPanel").show(); //Drop down the subnav on click
	$("#thumbnailsControl").text('Hide thumbs'); //Drop down the subnav on click
	$('#panelsWrapper').show();
	thumbsPanelActive = true;
	
	_gaq.push(['_trackEvent', 'Display', 'View Thumbnails']);
	
}

/*
*
*/
function hideThumbnails()
{
	$("#thumbnailsPanel").hide(); //Drop down the subnav on click
	$("#thumbnailsControl").text('Show thumbs'); //Drop down the subnav on click
	$('#panelsWrapper').hide();
	thumbsPanelActive = false;
}

/*
*
*/
function showArticleInfo()
{
	$("#slideshow .infoPanel").show(); //Drop down the subnav on click
	$("#infoControl").text('Hide Related Article'); //Drop down the subnav on click
	infoPanelActive = true;
	infoWidth = 370;
	//pauseSlideShow();
	
	_gaq.push(['_trackEvent', 'Display', 'Show Article Info']);
}

/*
*
*/
function hideArticleInfo( keepActive )
{
	$("#slideshow .infoPanel").hide(); //Drop down the subnav on click
	$("#infoControl").text('Show Related Article'); //Drop down the subnav on click
	infoPanelActive = (keepActive == null) ? false : true;
	infoWidth = 0;
	
	_gaq.push(['_trackEvent', 'Display', 'Hide Article Info']);
	
}

/*
* updateSize
*/
function updateSize()
{
	wWidth = ( $(window).width() > 1024) ? $(window).width() : 1024;
	wHeight = ( $(window).height() > 768) ? $(window).height() : 768;
	
	$('#panelsWrapper').height(wHeight - 60);
	
	//
	$('#slides').width(wWidth - 40);
	$('#slides').height(wHeight - 128);
	
	//
	$('.slideshowItem').width(wWidth - 40);
	$('.slideshowItem').height(wHeight - 128);
	
	//
	$('#slideshow #controls').width(wWidth - (40 + infoWidth));
	$('#slideshow #controls').height(wHeight - 128);
	
	//
	$("#slides img.slide").resizeImg({
	    scale: 10, // 0.5 = 50%
	    maxWidth: wWidth - 40,
	    maxHeight: wHeight - 128,
		minHeight: wHeight - 128
	});
}
