// hero gallery swap
var idToIgnore = false;
if (typeof(tracker) == 'undefined') {
    tracker = false;
}

var galleryDelegate = {

    trackingNameForSection: function(tracker, id, section) {
        if (id == idToIgnore) {
            return false;
        }
        return id;
    },

    trackEndStateLink: function(link) {
        link.observe('mousedown', function(evt) {
            document.cookie = 's_iphone_nav=video nav; domain=.apple.com; path=/';
            link = link.toString();
            var name = link.substring(link.lastIndexOf('/')+1, link.lastIndexOf('#'));
            s.prop13 = ''; // do not want the click depth stuff to be picked up
            var properties = {
                prop3: name + ' - video'
            };
            AC.Tracking.trackClick(properties, true, 'o', name + ' - video');
        });
    },

    didAppendContent: function(view) {
        if (view.viewMasterId == 'swap') {
            tracker.setDelegate(this);

            var incoming = view.currentSection;
            var container = view.view.view();

            var newHeight = incoming.content.getHeight();
            var currentHeight = view.view.view().getHeight();

            var percent = (newHeight / currentHeight) * 100;
            new Effect.Scale(container, percent, { scaleX:false, scaleContent:false, duration:view.options.animationDuration })

            if (incoming.id == 'video') {
                this.video(view, incoming);
            }
        }
    },

    video: function(view, section) {
        // create close button
        var close = document.createElement('a');
        close.className = 'close '+view.triggerClassName;
        close.href = '#'+view.orderedSections[0];
        close.innerHTML = 'Close';
        section.content.insertBefore(close, section.content.firstChild);

        // create end state buttons
        if (section.endState) {
            var linksForTracking = section.endState.select('a');
            linksForTracking.each(this.trackEndStateLink.bind(this));

            var reference = section.endState.down('li');
            if (reference) {
                // button template
                var template = $(document.createElement('li'));
                template.appendChild($('hero').down('a.swap[href*="#video"]').cloneNode(true));
                template.down('a').className = '';
                template.innerHTML = template.innerHTML.replace(/<[^>]* class="more">[^<]*<\/[^>]*>/, '');

                // replay movie
                var replay = template.cloneNode(true);
                replay.innerHTML = replay.innerHTML.replace(/(<[^>]* class="title">)([^<]*)(<\/[^>]*>)/, '$1Watch $2 again$3')

                replay.down('a').observe('click', function(evt) {
                    Event.stop(evt);
                    this.replayMovie();
                }.bindAsEventListener(section));

                reference.insert({ after:replay });
            }
        }
    }
};


Event.observe(window, 'load', function() {
    if (tracker == false) {
        tracker = new AC.ViewMaster.Tracker('click');
    }
	tracker.setDelegate(galleryDelegate);
    // view master sections
    var sections = [];

    // grab the default section
    sections.push($('image'));
    idToIgnore = sections[0].id;
    // set the height of the container to the height of the first content
    var height = sections[0].getHeight();
    $('image').style.height = height+'px';

    // For IE we need to remove this node before swap view takes over
    // because swap view's innerHTML = '', breaks the splash
    sections[0].remove();

    // set up the view master
    var gallery = new AC.ViewMaster.Viewer(sections, 'swap', 'swap', { initialId:'image', ensureInView:true, animationDuration:.4 });
    gallery.viewMasterId = 'swap';
    gallery.setDelegate(galleryDelegate);
    gallery.didAppendContent(gallery);

});
