$(document).ready(function(){
	
	$.easing.easeOutQuint = function(x,t,b,c,d){
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	};
	
	// GENERIC
	/* Section Nav
	------------------------------------------------------------------------------- */	
	$('#sectionNav .level1').click(function(){
		// collapse all
		$('#sectionNav > ul > li > .level2').each(function(){
			$(this).slideUp({direction: "up", duration:500, easing:'easeOutQuint'});
		});
		// check if it has a tertiary nav, perform accordion and return false.
		if($(this).siblings('.level2').size() > 0){
			if($(this).parent('li').hasClass('on')){
				$(this).siblings('.level2').slideUp({direction: 'up', duration:500, easing:'easeOutQuint'});
				rmOnClass('#sectionNav > ul > li', 'on');
			}
			else{
				rmOnClass('#sectionNav > ul > li', 'on');
				$(this).siblings('.level2').slideDown({direction: 'up', duration:500, easing:'easeOutQuint'}).parent('li').addClass('on');
			}
			return false;
		}
		// otherwise follow through with link.
		else{
			return true;
		}
	});

	
	// EXPLORE
	/* Explore Row and Text View Hover
	------------------------------------------------------------------------------- */
	$('div.exploreListingText tr:gt(0), div.exploreListingRow ul li').each(function(){
		// assigning linkage to row.															
		createLinks($(this));
		// adding rollover.
		$(this).hover(function(){ $(this).addClass('hover'); }, function(){ $(this).removeClass('hover'); });
	});
	
	/* Explore Detail info
	------------------------------------------------------------------------------- */
	var edItem = $('#exploreDetail-info .item');
	edItem.addClass('close');
	edItem.children('.bd').slideUp('fast');
	edItem.children('.hd').toggle(function(){
		edItem.removeClass('close');
		edItem.children('.bd').slideDown({duration:500, easing:'easeOutQuint'});
	}, function(){
		edItem.addClass('close');
		edItem.children('.bd').slideUp({duration:500, easing:'easeOutQuint'});
	});
	
	
	// WHATS ON	
	/* Program Results
	------------------------------------------------------------------------------- */
        var categoryHide = function(elem){
		$(elem).each(function(){
			$(this).slideUp({duration:500, easing:'easeOutQuint'});
		});
	}
	categoryHide('div.relatedPrograms div.content');

	categoryHide('ul.programResults div.content');
	
	$('ul.programResults li strong').click(function(){
		categoryHide('ul.programResults div.content');
		if($(this).parent('li').hasClass('open')){
			$(this).siblings('div.content').slideUp({duration:500, easing:'easeOutQuint'});
			rmOnClass('ul.programResults li', 'open');
		}
		else{
			rmOnClass('ul.programResults li', 'open');
			$(this).parent('li').addClass('open');
			$(this).siblings('div.content').slideDown({duration:500, easing:'easeOutQuint'});
		}
	});
	
	
	/* calendar Hover
	------------------------------------------------------------------------------- */
	$('#calendar tr').each(function(){
		$('td:gt(2) div', this).addClass('lastThree');
	});
	$('#calendar td span').hover(function(e){
		var ulTarget = $(e.target).siblings('ul');
		if(ulTarget.size() > 0){
			ulTarget.fadeIn(100);
		}
	}, function(e){
		var ulTarget = $(this).siblings('ul');
		ulTarget.fadeOut(100);
	});
	
	
	
	
	/* Calendar Pop Up
	------------------------------------------------------------------------------- */
	$('div.chooseView span.calendarView').parent('li').hover(function(e){
		$(this).find('#calendarHolder').fadeIn(100);
	}, function(){
		$(this).find('#calendarHolder').fadeOut(100);
	});
	
	/* Content Promo Module Rollover
	------------------------------------------------------------------------------- */
	$('div.contentPromoModule, div.contentPromoModuleWide').each(function(){
		var cpModule = $(this);
		if(!cpModule.find('ul').size() > 0){ //if doesn't have list in child
			/* createLinks(cpModule); */
			cpModule.addClass('contentPromoModule-noList');
		}
	});
	
	/* Content Promo Module Caption Rollover
	------------------------------------------------------------------------------- */
	$('div.contentPromoModuleCaption').hover(function(){
		$(this).find('div').fadeIn(100);
		$(this).addClass('iconCaptionHover');
	}, function(){
		$(this).find('div').fadeOut(100);
		$(this).removeClass('iconCaptionHover');
	});
	
      /* Feature Article Image Caption Rollover
	------------------------------------------------------------------------------- */
	$('div.featureArticleCaption span.icon').hover(function(){
		$(this).siblings('div.details').fadeIn(100);
		$(this).parent().addClass('iconCaptionHover');
	}, function(){
		$(this).siblings('div.details').fadeOut(100);
		$(this).parent().removeClass('iconCaptionHover');
	});
	


	
	/* Relevance Module Rollover
	------------------------------------------------------------------------------- */
	$('div.relevanceModule').each(function(){
		var cpModule = $(this);
		if(!cpModule.find('ul').size() > 0){ //if doesn't have list in child
			createLinks(cpModule);
			cpModule.addClass('relevanceModule-noList');
		}
	});
	
	/* Relevance Module Artwork Expand
	------------------------------------------------------------------------------- */
	$('div.relevanceModuleArtwork div.more').toggle(function(){
		var target = $(this).prev('ul');
		target.find('li').each(function(){
			if(!$(this).hasClass('open')){
				$(this).slideDown({duration:500, easing:'easeOutQuint'});
			}
		});
		$(this).addClass('listOpen');
	}, function(){
		var target = $(this).prev('ul');
		target.find('li').each(function(){
			if(!$(this).hasClass('open')){
				$(this).slideUp({duration:500, easing:'easeOutQuint'});
			}
		});
		$(this).removeClass('listOpen');
	});
	
	/* Exhibition Page Priority Module Rollover
	------------------------------------------------------------------------------- */
	if($('div.priorityExhibitionModule').size() > 0){
		createLinks($('div.priorityExhibitionModule'));
	}
		
	/* Browse Artists A to Z 
	------------------------------------------------------------------------------- */
	$('div.browseArtistsAZ tr').hover(function(){
		$(this).addClass('trHover');
		createLinks($(this));
	}, function(){
		$(this).removeClass('trHover');
	});

        /* Filter Select Custom Drop Down
	------------------------------------------------------------------------------- */
	$('div.moduleHeader div.headerControls div.filterSelect').hover(function(){
		$(this).find('ul').slideDown({duration:200, 
                      easing:'easeOutQuint'}).end().find('div.filterSelectBottom').show();
	}, function(){
		$(this).find('ul').slideUp({duration:200, 
                      easing:'easeOutQuint'}).end().find('div.filterSelectBottom').hide();
	});

	
});

function createLinks(items) {

	items.css('cursor', 'pointer');
	items.bind("click", function () {
		var link = $(this).find('a');
		if (link.length > 0) { location.href = link.attr('href'); }
		return false;
	});

} 

function rmOnClass(selector, className){
	$(selector).each(function(){
		$(this).removeClass(className);
	});
}


