document.observe('dom:loaded', function() {

    /**
    * Slideshow Tabs
    */
    var myTabSet = new TabGroup([
    //new Tab($('promo_trigger4'), $('promo_tab4')),
		new Tab($('promo_trigger_chevy'), $('promo_chevy')),
		new Tab($('promo_trigger1'), $('promo_tab1')),
		new Tab($('promo_trigger2'), $('promo_tab2')),
		new Tab($('promo_trigger3'), $('promo_tab3')),
		new Tab($('promo_trigger5'), $('promo_tab5')),
		new Tab($('promo_trigger6'), $('promo_tab6'))
	], { 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');
    }

    function hoverTab4(event) {
        $('promo_tab4').select('a')[0].addClassName('cta_link_hover');
    }

    function outTab4(event) {
        $('promo_tab4').select('a')[0].removeClassName('cta_link_hover');
    }
    
//     function hoverTab6(event) {
//        $('promo_tab6').select('a')[0].addClassName('cta_link_hover');
//    }

//    function outTab6(event) {
//        $('promo_tab6').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];
        //if (showingBubble != undefined) {
            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) {
            alert(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);
        }
    });
});


