var MARC = function() {
	return {
		getCurrentPageName: function() {
			return document.location.href.substring(document.location.href.lastIndexOf('/')+1);
		}
	}
}();

MARC.ajax = function($){
	
	var ajaxCall = function(params) {
		var settings = $.extend({
			url: '',
			spinner: undefined,
			dataType: 'html',
			cache: false,
			success: function(){}
		}, params);
		
		$.ajax({
			beforeSend: function() {
				$(settings.spinner).fadeIn('fast');
			},
			url: settings.url,
			dataType: settings.dataType,
			success: settings.success,
			complete: function() {
				$(settings.spinner).hide();
			}
		});
	}
	
	return {
		getProductionViaAjax: function(el) {
			var thisUrl = el.attr('href');
			ajaxCall({
				spinner: '#spinner',
				url: thisUrl,
				success: function(myHtml) {
					$('#rep_detail_col').hide().html(myHtml).fadeIn();
					$("#production_slideshow").easySlider({
						auto:true,
						controlsShow: false,
						continuous: true,
						speed: 2500,
						pause: 5000
					});
				}
			});
			el.parent().siblings().children('.ajax').removeClass('active');
			el.addClass('active');
		},
		getViaAjax : function(params) {
			var settings = $.extend({
				url: '',
				spinner: undefined,
				dataType: 'html',
				cache: false,
				success: function(){}
			}, params);

			$.ajax({
				beforeSend: function() {
					$(settings.spinner).fadeIn('fast');
				},
				url: settings.url,
				dataType: settings.dataType,
				success: settings.success,
				complete: function() {
					$(settings.spinner).hide();
				}
			});
		} 
	};
	
}(jQuery);


MARC.slider = function(){
	var open = false;
	var hover = false;
	
	var activate_year = function(el) {
		el.addClass('year_active');
		el.find("> div > div.big_number").addClass('big_number_on');
		el.find('.clickto').show();
	}
	
	var deactivate_year = function(el) {
		el.removeClass('year_active');
		el.find("> div > div").removeClass('big_number_on');
		el.find('.clickto').hide();
	}
	
	var deactivate_year_siblings = function(el) {
		el.siblings('.year').removeClass('open').removeClass('year_active');
		el.siblings('.year').find("> div > div").removeClass('big_number_on');
		el.siblings('.year').find('.clickto').hide();
		el.siblings('.year').find('.expand').html('expand');
	}
	
	var toggle_year = function(el) {
		if ((hover == true) && !(el.hasClass('open'))) {			//hover and closed
			activate_year(el);
			el.find('.expand').html('expand');
		} else if (hover == false && !(el.hasClass('open'))) {		//hover off and closed
			deactivate_year(el);
			el.find('.expand').html('expand');
		} else if (hover == true && el.hasClass('open')) {			//hover on and open
			activate_year(el);
			el.find('.expand').html('close');
		} else if (hover == false && el.hasClass('open')) {			//hover off but open
			activate_year(el);
			el.find('.expand').html('close');
		} else {													//default to deactivated
			deactivate_year(el);
		}
	}
	
	return{
		init: function() {
			$('.prod').hide(); //hide prods initially
			$('.clickto').hide();
			
			$('.year').hover(function(){
				hover = true;
				toggle_year($(this));
			}, function(){
				hover = false;
				toggle_year($(this));
			});
			
			$('.year').click(function(){
				//SHOW HIDE CONTENT
				var current = $(this).next('.schedule_detail').children('.prod');
				var visible = $(this).siblings('.year').next('.schedule_detail').children('.prod:visible');
				visible.slideUp(500);
				current.slideToggle(500);
				
				//BIG YEAR HIGHLIGHTING
				deactivate_year_siblings($(this));
				$(this).toggleClass('open');
				toggle_year($(this));
			});
			
		} //schedule_setup
	} //end return
	
}();

MARC.rotateBigWord = function(obj) {
	
	var tracker = Math.floor(Math.random() * obj.length);
	var delay = 6000;
	
	var setTracker = function() {
		//sequential
		//(tracker < obj.length-1) ? tracker++ : tracker=0; 
		
		//random
		var random = Math.floor(Math.random() * obj.length);
		if (random === tracker) {
			setTracker();
		} else {
			tracker = random;
		}
	}
	
	var size_control = function(word) {
		if (word.length > 8) {
			return "<span class='long_word'>" + word + "</span>";
		} else {
			return word;
		}
	}
	
	function toggleWord() {
		if ($('#crossfade').is(':visible')) {
			$('#crossfade').fadeOut(700);
			delay = 500;
		} else {
			$('#crossfade').find('h2').html( size_control(obj[tracker].word) );
			$('p.source').html("- " + obj[tracker].name);
			$('#crossfade').fadeIn(700);
			delay = 4000;
			setTracker();
		}
		setTimeout(function(){
			toggleWord();
		}, delay);
	};
	
	setTimeout(function(){
		toggleWord();
	}, delay);
	
}






$(document).ready(function(){	
	var page = MARC.getCurrentPageName();
	
	switch (page) {
		case 'productions.php' : 
			MARC.ajax.getProductionViaAjax($('a.ajax:first'));
			$('a.ajax').each(function(){
				$(this).click(function(e){
					MARC.ajax.getProductionViaAjax($(this));
					e.preventDefault();
				});
			});
			
			$("#production_slideshow").easySlider({
				auto:true,
				controlsShow: false,
				continuous: true,
				speed: 2500,
				pause: 5000
			});
			break;
			
		case 'schedule.php' :
			MARC.slider.init();
			break;
			
		case 'resume.php' :
			MARC.slider.init();
			break;
			
		case 'gallery.php' :
			// We only want these styles applied when javascript is enabled
			$('div.navigation').css({'width' : '300px', 'float' : 'left'});
			$('div.content').css('display', 'block');

			// Initially set opacity on thumbs and add
			// additional styling for hover effect on thumbs
			var onMouseOutOpacity = 0.67;
			$('#thumbs ul.thumbs li').opacityrollover({
				mouseOutOpacity:   onMouseOutOpacity,
				mouseOverOpacity:  1.0,
				fadeSpeed:         'fast',
				exemptionSelector: '.selected'
			});

			// Initialize Advanced Galleriffic Gallery
			var gallery = $('#thumbs').galleriffic({
				delay:                     2500,
				numThumbs:                 15,
				preloadAhead:              10,
				enableTopPager:            false,
				enableBottomPager:         true,
				maxPagesToShow:            7,
				imageContainerSel:         '#slideshow',
				controlsContainerSel:      '#controls',
				captionContainerSel:       '#caption',
				loadingContainerSel:       '#loading',
				headerContainerSel:    	   '.header', 
				renderSSControls:          false,
				renderNavControls:         false,
				playLinkText:              'Play Slideshow',
				pauseLinkText:             'Pause Slideshow',
				prevLinkText:              '&lsaquo; Previous Photo',
				nextLinkText:              'Next Photo &rsaquo;',
				nextPageLinkText:          'Next &rsaquo;',
				prevPageLinkText:          '&lsaquo; Prev',
				enableHistory:             false,
				autoStart:                 false,
				syncTransitions:           true,
				defaultTransitionDuration: 900,
				onSlideChange:             function(prevIndex, nextIndex) {
					// 'this' refers to the gallery, which is an extension of $('#thumbs')
					this.find('ul.thumbs').children()
						.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
						.eq(nextIndex).fadeTo('fast', 1.0);
				},
				onPageTransitionOut:       function(callback) {
					this.fadeTo('fast', 0.0, callback);
				},
				onPageTransitionIn:        function() {
					this.fadeTo('fast', 1.0);
				}
			});
			
			break;
			
		case 'contact.php' :
			$("#contactForm").validate();
			break;
			
		default : //assume it's the homepage
			//AJAX
			MARC.ajax.getViaAjax({
				url : 'json.php',
				dataType : 'json',
				success : function(jason) {
					MARC.rotateBigWord(jason);
				}
			});
	}	
});

