document.observe('dom:loaded', function() {

	/**
	 * Slideshow Tabs
	 */
	var myTabSet = new TabGroup([
		new Tab($('promo_trigger_chevy'), $('promo_chevy')),
		new Tab($('promo_trigger_earnhardt'), $('promo_earnhardt')),
		new Tab($('promo_trigger1'), $('promo_tab1')),
		new Tab($('promo_trigger2'), $('promo_tab2')),
		new Tab($('promo_trigger_champs'), $('promo_tab_champs'))
	], {triggerClass: 'active_tab', animate: true, autoRotate: true, autoRotateDuration: 10000});	
	
	
	/**
	 * Rollover Effects
	 */

		$('promo_tab1').observe('mouseover', hoverTab1);
		$('promo_tab1').observe('mouseout', outTab1);
		
		$('promo_tab2').observe('mouseover', hoverTab2);
		$('promo_tab2').observe('mouseout', outTab2);
		

		function hoverTab1(event) {
				$('promo_tab1').select('a')[0].addClassName('medium_cta_link_hover');
		}
	
		function outTab1(event) {
				$('promo_tab1').select('a')[0].removeClassName('medium_cta_link_hover');
		}
		
		function hoverTab2(event) {
				$('promo_tab2').select('a')[0].addClassName('cta_link_hover');
		}
	
		function outTab2(event) {
				$('promo_tab2').select('a')[0].removeClassName('cta_link_hover');
		}
		
		function hoverTab3(event) {
				$('promo_tab3').select('a')[0].addClassName('cta_link_hover');
		}
	
		function outTab3(event) {
				$('promo_tab3').select('a')[0].removeClassName('cta_link_hover');
		}
	
	/**
	 * Speech Bubbles
	 */
	var quoteBubbles = [];
	var sources = {};
	var quotes = [];
	var bubbleTypes = ["bubble_large", "bubble_med", "bubble_small"];
	var unusedBubbles = {
		bubble_large: [],
		bubble_med: [],
		bubble_small: []
	};
	var opacities = {
		bubble_large: 1,
		bubble_med: .875,
		bubble_small: .75
	};
	var showingBubbles = {};
	var cycleTime = 18000;
	var showingQuote = -1;

	function selectQuote(event) {

		var element = event.element();
		while(element.ancestors().length && !Element.readAttribute(element, "quote"))
			element = element.up();
		if(element)
			window.open(quotes[parseInt(Element.readAttribute(element, "quote"))].url);
	}
	
	function showQuoteType(type){

		if(++showingQuote >= quotes.length) showingQuote = 0;
		var showingBubble = unusedBubbles[type].splice(Math.round((unusedBubbles[type].length - 1) * Math.random()), 1)[0];
		showQuote(showingBubble, showingQuote);

		if(showingBubbles[type] == undefined)
			setInterval(function(){ showQuoteType(type); }, cycleTime);
		else{
			var hidingBubble = showingBubbles[type];
			setTimeout(function(){ hidingBubble.fade({duration: 1.2}); unusedBubbles[type].push(hidingBubble); }, 2000);
		}
		showingBubbles[type] = showingBubble;
	}
	
	function showQuote(quoteElement, n){

		var quote = quotes[n];
		var className = quoteElement.className.split(' ')[0];
		var sizes = {
			bubble_small: 18,
			bubble_med: 22,
			bubble_large: 27
		};

		var content = '<div class="' + className + '_inner">' + quote.message + '</div>';
		if(quote.source) content += '<div class="' + className.split('bubble_').join('bubble_icon_') + '_facebook"><img src="' + sources[quote.source] + '" alt="" width="' + sizes[className] + '" height="' + sizes[className] + '" /></div>';
		quoteElement.innerHTML = content;
		Element.writeAttribute(quoteElement, "quote", n);
		quoteElement.appear({duration: 1.2, from: 0, to: opacities[className]});
	}

	new Ajax.Request('/xml/speech_bubbles.xml', {
		method: 'get',
		onException: function(request, exception) {
			console.log(exception);
		},
		
		onSuccess: function(request) {
			var xml = request.responseXML;
			var quoteXML = xml.getElementsByTagName('quote');
			var sourceXML = xml.getElementsByTagName('source');
			
			quoteBubbles = Element.childElements($('social_content'));
			var len = quoteBubbles.length;
			for(var i = 0; i < len; ++i){
				var className = Element.classNames(quoteBubbles[i]).toString().split(' ')[0];
				if(className.indexOf('bubble_') == -1){
					quoteBubbles.splice(i--, 1);
					--len;
					continue;
				}
				unusedBubbles[className].push(quoteBubbles[i]);
				quoteBubbles[i].observe("click", selectQuote);
			}
			
			// parse sources
			len = sourceXML.length;
			for(i = 0; i < len; ++i)
				sources[sourceXML[i].getAttribute("id")] = sourceXML[i].getAttribute("img");

			// parse quotes
			len = quoteXML.length;
			for(i = 0; i < len; ++i){
				var quoteNode = quoteXML[i];
				quotes.push({
					source: quoteNode.getAttribute("source"),
					url: quoteNode.getAttribute("url"),
					message: quoteNode.getElementsByTagName('message')[0].childNodes[0].nodeValue
				});
			}
			
			showQuoteType("bubble_large");
			setTimeout(function(){ showQuoteType("bubble_med"); }, 6000);
			setTimeout(function(){ showQuoteType("bubble_small"); }, 12000);
		}
	});
});

