$(document).ready(function(){
    /*** Cornish Pop-Up Showcase Gallery
    * 
    * TODO: dealing with linkChunks this way seems error prone and should be fixed.
    * if the url structure changes this will likely fail since the segments are hard-coded
    ***/
    $('#body #extended-body p a').live('click', function(){
	$.address.value($(this).attr('href'));
	return false;
    });

    $('#photo-gallery li a, .gallery-launch').bind('click', function(){
	$.address.value($(this).attr('data-galleryurl'));
	return false;
    });

     
    $('#extended-body section.paginate a').live('click', function(){
	var link = $(this).attr('href');
	var linkChunks = link.split('/');
	if(linkChunks[3] == 'student_life'){
	    $('#extended-body').loadShiv(link + ' #extended-body > *');
	}
	else {
	    $('#extended-body').loadShiv(link + ' #extended-body section.target');
	}
	return false;
    });
   


    var galleryVisible = false;
    var slides = '';
    var curSlide = 0;
    var slideStage = '';
    

    $.address.change(function(event){
	_gaq.push(['_trackPageview', event.value]);
	var link = event.value.split('?')[0];
	var linkChunks = link.split('/');

	if(linkChunks[1] == 'news' || linkChunks[1] == 'student_life'){
	    updateNews(linkChunks);
	}	
	else if(linkChunks[2] === undefined){
	    hideGallery();
	}
	else if(!galleryVisible){
	    setupGallery(linkChunks[3], linkChunks[4]);
	}
	else{
	    curSlide = translateRowId(linkChunks[4]);
	    if(curSlide === undefined){
		hideGallery();
	    }
	    else{
		updateSlide();
	    }
	}
    });




    function updateNews(linkChunks){
	    $('#body article').html('loading...');
	    
	    $.getJSON('http://www.cornish.edu/json/'+linkChunks[1] +'/' +linkChunks[2] +'/', '', function(data){
		if(data == null){
		    $('#body article').html('Sorry, we couldn\'t find that article.');
		}
		else {
		    var dateChunks = data.date.split(' ');
		    
		    var article = '';
		    if(data.imageUrl !== undefined){
			article = '<img src="'+data.imageUrl+'">';
		    }
		    article = article + data.body;
		    
		    /* update html to new story */
		    $('span.entry-date').html(dateChunks[1]).append('<span>' + dateChunks[2] + '</span>');
		    $('#body h2').html('<a href="/'+linkChunks[1]+'/'+ data.url+'/">'+ data.title +'</a>');
		    
		    $('#body article').html(article);
		    
		    document.title = data.title + ' - '+linkChunks[1]+' - Cornish College of the Arts';
		    if(data.extended != undefined){
			$('#blog article').append('<p class="read-more"></p><div class="hide hide-0">' + data.extended + '</div>');
			resetReadmore();
		    }
		    
		    /* update tweet button to new story */
		    $('#tweetButtonHolder').empty().append('<a href="http://twitter.com/share" class="twitter-share-button" data-text="' + data.title +'" data-url="http://www.cornish.edu/'+ linkChunks[1] + '/'+ data.url+'/" data-via="cornishcollege">Tweet</a>');
		    
		    $('a.twitter-share-button').each(function(){
			var tweet_button = new twttr.TweetButton( $( this ).get(0) );
			tweet_button.render();
		    });
		    
		    /* update facebook like button to new story */
		    $('#facebookButtonHolder').empty().append('<fb:like show_faces="false" layout="button_count" href="http://www.cornish.edu/'+linkChunks[1]+'/' + data.url +'/"></fb:like>');
		    
		    FB.XFBML.parse(document.getElementById('#facebookButtonHolder'));
		}
	    });
    }




    /*** Gallery Code! 
    * 
    * takes the url_title of a gallery to load, and a unique imageId to begin on 
    * (this is usually the row_id from the EE showcase blog + matrix plugin)
    ****/
    
    function setupGallery(galleryUrl, imageId){
	$('#main-content').hide('slide', {direction: 'down'}, 500);	
	$('#page-head').after('<div id="showcase" class="unitx8" style="display:none;"><img src="/content/images/exhibitions/bfa2009/1-0.gif"></div>');
	var showcase = $('#showcase');
	showcase.show('slide', {direction: 'up'}, 300);
	galleryVisible = true;
	
	$('#page-head').css({'width':'990px', 'background':'#000', 'margin-top':'-22px', 'padding':'22px 00 90px 00'});
	$('#breadcrumbs').css({'padding-top':'22px'});
	$('nav.quick-links').css({'margin-top':'22px'});

	$.getJSON('http://www.cornish.edu/json/showcase/'+galleryUrl+'/', '', function(data){
	    var category = data.category.toLowerCase().replace(/ /, '_');

	    /*setup showcase html */
	    showcase.html('<div id="showcase-navigation"><ul><li id="close-gallery"><a href="/'+ category +'/showcase/" class="close">Close</a></li></ul></div>');	    
	    showcase.append('<header><h1 style="color:#fff;"><strong>Showcase</strong><span> | </span>' + data.galleryTitle + '</h1></header>');
//	    showcase.append('<div id="overlay" style="width:990px; height:500px; position:absolute; opacity:0.8; background-color:#ffffff"><img src="/content/images/exhibitions/bfa2009/1-0.gif" style="margin-top:249px; margin-left:470px;"></div>');
	    showcase.append('<div id="slide" style="margin-bottom: 18px;"></div>');


	    /* init variables */
	    slideStage = $('#slide');
	    slides = data.slides;
	    curSlide = 0;
	    if(imageId !== undefined){
		curSlide = translateRowId(imageId);
	    }

	    $.address.value('/'+ category + '/showcase/' + data.urlTitle +'/'+ slides[curSlide].rowId+'/');
	    updateSlide();


	    /* if there's more than one slide, set up some nav links & add thumbnails */
	    if(slides.length > 1){
		$('#close-gallery').remove();
		$('#showcase-navigation > ul').append('<li id="show-thumbnails"><a href="show-thumbs" class="show-thumbs">Show Thumbnails</a></li>');
		$('#showcase-navigation > ul').append('<li id="previous-slide"><a href="prev" class="prev-slide">Previous</a></li>');
		$('#showcase-navigation > ul').append('<li id="next-slide"><a href="next" class="next-slide">Next</a></li>');
		$('#showcase-navigation > ul').append('<li id="close-gallery"><a href="/' + category + '/showcase/" class="close">Close</a></li>');

		showcase.append('<div id="thumbs"><ul></ul><div style="clear: both;"></div></div>');
		$('#thumbs').hide();
		if(data.urlTitle == '2012_art_faculty_show'){
			for(var i = 0; i < slides.length; i++){
				$('#thumbs > ul').append('<li><a href="/'+ category + "/showcase/" + data.urlTitle +'/'+ slides[i].rowId+'" class="galleryThumb"><img src="'+slides[i].thumbnail+'" alt="'+ slides[i].title+'"><span><span>'+ slides[i].title +'</span></span></a></li>');
			}
		}else{
			for(var i = 0; i < slides.length; i++){
				$('#thumbs > ul').append('<li><a href="/'+ category + "/showcase/" + data.urlTitle +'/'+ slides[i].rowId+'" class="galleryThumb"><img src="'+slides[i].thumbnail+'" alt="'+ slides[i].title+'"></a></li>');
			}
		}
		
		$('a.show-thumbs').bind('click', function(){
		    $('#thumbs').fadeIn();
		    if($('#thumbs').height() > 600){
			var footMargin = $('#thumbs').height() - 566;
			$('#page-foot').css( { marginTop: footMargin } );
		    } 
		    return false;
		});			
	    }

	    $('a.close').bind('click', 	function(){
		$.address.value('/'); 
		return false;
	    });

	    $('.galleryThumb').bind('click', function(){
		//curSlide = $(this).attr('href');
		//updateSlide();
		$.address.value($(this).attr('href'));
		$('#page-foot').css({ marginTop: '00' });
		$('#thumbs').fadeOut();
		return false;
	    });

	    $('.next-slide').bind('click', function(){
		curSlide++;
		if(curSlide == slides.length){
		    curSlide = 0;
		}
		$.address.value('/'+ category + "/showcase/" + data.urlTitle +'/'+ slides[curSlide].rowId+'/');
		return false;
	    });
	    
	    $('.prev-slide').bind('click', function(){
		curSlide--;
		if(curSlide < 0){
		    curSlide = (slides.length - 1);
		}
		$.address.value('/'+ category + "/showcase/" + data.urlTitle +'/'+ slides[curSlide].rowId+'/');
		return false;
	    });
	    
	});
    }

    
    function hideGallery(){
	$('#showcase').hide('fade', 400, function(){
	    $(this).remove();
	    $('#main-content').show('slide', {direction: 'up'}, 400);
	    $('#page-foot').css({ marginTop: '00' });

		$('#breadcrumbs').css({'padding-top':'00'});
		$('nav.quick-links').css({'margin-top':'00'});


    	$('#page-head').css({'width':'486px', 'background':'transparent', 'margin-top':'00', 'padding':'00'});
	});
	galleryVisible = false;
	return false;
    }


    function updateSlide(){
	$('#overlay').show();
	slideStage.animate({ opacity: '.1'}, 200, null, function(){
	    if(slides[curSlide].vimeo_id !== undefined){
		$(this).html('<div id="view-video"><iframe src="http://player.vimeo.com/video/' + 
			     slides[curSlide].vimeo_id + '?title=0&amp;byline=0&amp;portrait=0&amp;color=ff3300" width="612" height="486" frameborder="0"></iframe>'	   
			     + '<section id="caption">' + slides[curSlide].caption + '</section></div>' + '<section id="description"><h2>' + slides[curSlide].title + '</h2><section id="image-title">' + slides[curSlide].description + '</section></section>' + '');
		var newHeight = $('h2', slideStage).outerHeight(true) + $('iframe', this).outerHeight(true);
		$('p', this).each(function(){
		    newHeight += $(this).outerHeight(true);
		});
		newHeight += 36;
		$(this).animate({ opacity: '1', height: newHeight}, 500);
		$('#caption').css({ height: 'auto' });
	    }
	    
	    else {
	    	
	    	
		$(this).html('<div id="view-image"><img src="' + slides[curSlide].image_path + '"><section id="caption">' + slides[curSlide].caption + '</section></div>' + '<section id="description"><h2>' + slides[curSlide].title + '</h2><section id="image-title">' + slides[curSlide].description + '</section></section>' + '');
		
		
		
		
//		$('#caption', slideStage).hide();
		$('img', this).load(function(){
		    var newHeight = $('h2', slideStage).outerHeight(true) + $('img', slideStage).outerHeight(true);
		    $('p', slideStage).each(function(){
			newHeight += $(this).outerHeight(true);
		    });
		    slideStage.animate({ opacity: '1', height: newHeight}, 500);
		    var newTop = '-'+ $('img', slideStage).outerHeight(true) + "px";
		    var newWidth = $('img', slideStage).outerWidth(true) - 36;
		    newHeight = $('img', slideStage).outerHeight() - 50;
//		    $('.caption-toggle').hover(function(){ $('#caption').fadeIn(150); }, function(){ $('#caption').fadeOut(100);});
//		    $('.caption-toggle').css({ bottom: '200px', position: 'absolute', marginLeft: (((slideStage.outerWidth(true) + $('img', slideStage).outerWidth(true)) / 2) - 50)});
//		    $('#caption').css({ height: newHeight + 10, width: newWidth, top: '150px', marginLeft: ((slideStage.outerWidth(true) - $('img', slideStage).outerWidth(true)) / 2)});
		});
	    }
	    Cufon.refresh();
	    $('#overlay').hide();
	});
    }

    function translateRowId(rowId){
	for(var i = 0; i < slides.length; i++){
	    if(slides[i].rowId === rowId){
		return i;
	    }
	}
    }


});


