if(Prototype.Browser.WebKit)
{
  var viewport_element = $$("body").first();
}
else
{
  var viewport_element = $$("html").first();
}

Object.prototype.hasClass = function(className) {
 var pattern = new RegExp('(^|\\s)' + className + '(\\s|$)'); //use this regexp
 return pattern.test(this.className); //to check for the class
}

Object.prototype.addClass = function(className) {
 if (!this.hasClass(className)) { //if the class isn't there already
    this.className += (' ' + className); //append it to the end of the class list
 }
}

Object.prototype.removeClass = function(className) {
 var pattern = new RegExp('(^|\\s)' + className + '(\\s|$)');
 this.className = this.className.replace(pattern, ' ');
}

var Tracker = {
  log: function(link, title) {
    if(typeof(clicky) == 'function')
    {
      clicky.log(link, title)
    }
  }
}

var Story = {
  chapter_options: { duration: 2.5, transition: 'easeFromTo' },
  scroll_to_top: function(){
    Tracker.log('#home/top', "Top of Homepage")
    viewport_element.scrollTo(($('absolute-header').cumulativeOffset().top + 1024), { duration: 2, transition: 'easeFrom', position: 'end' })
                    .scrollTo($('absolute-header').cumulativeOffset().top, { duration: .85, transition: 'bounce', position: 'end' });
  },
  scroll_to_prologue: function(){
    Tracker.log('#home/prologue', "Prologue")
    viewport_element.scrollTo($('prologue-1').cumulativeOffset().top, { duration: 2, transition: 'easeInOutCirc', position: 'end' })
                    .scrollTo($('prologue-1-utterance').cumulativeOffset().top, { duration: 2, transition: 'easeInCirc', position: 'end' })
                    .scrollTo($('prologue-2').cumulativeOffset().top, { duration: 2, transition: 'easeOutCirc', position: 'end' })
                    .scrollTo($('prologue-2-utterance').cumulativeOffset().top, { duration: 2, transition: 'easeInCirc', position: 'end' })
                    .scrollTo($('chapter-1').cumulativeOffset().top, { duration: 2, transition: 'easeOutCirc', position: 'end' });
  },
  scroll_to_chapter: function(chapter){
    Tracker.log('#home/chapter-' + chapter, "Chapter " + chapter)
    viewport_element.scrollTo($('chapter-' + chapter).cumulativeOffset().top, Story.chapter_options);
  },
  scroll_to_epilogue: function() {
    Tracker.log('#home/epilogue', "Epilogue on homepage")
    viewport_element.scrollTo(($('absolute-footer-character').cumulativeOffset().top - 1024), { duration: 2, transition: 'easeFrom', position: 'end' })
                    .scrollTo($('absolute-footer-character').cumulativeOffset().top, { duration: .75, transition: 'bounce', position: 'end' });
  }
}

var FixedRibbon = {

  initialize: function() {
    $('more-link').on('click', function() {
      $('fixed-hint').morph('opacity: 0;', { duration: 1, transition: 'flicker' });
      if ($('chapter-1').viewportOffset().top > 0) {
        Story.scroll_to_prologue()
      } else if ($('chapter-2').viewportOffset().top > 0) {
        Story.scroll_to_chapter(2);
      } else if ($('chapter-3').viewportOffset().top > 0) {
        Story.scroll_to_chapter(3);
      } else if ($('chapter-4').viewportOffset().top > 0) {
        Story.scroll_to_chapter(4)
      } else if ($('chapter-5').viewportOffset().top > 0) {
        Story.scroll_to_chapter(5)
      } else if ($('chapter-6').viewportOffset().top > 0) {
        Story.scroll_to_chapter(6)
      } else if ($('absolute-footer-character').viewportOffset().top > 0) {
        Story.scroll_to_epilogue()
      }
    })

    $('tomato-link').on('click', function() {
      Story.scroll_to_top();
    });
  
    $('start-link').on('click', function() {
      Story.scroll_to_prologue()
    })
    $('chapter-1-link').on('click', function() {
      Story.scroll_to_chapter(1)
    });
    $('chapter-2-link').on('click', function() {
      Story.scroll_to_chapter(2)
    });
    $('read-on').on('click', function() {
      Story.scroll_to_chapter(2)
    });
    $('chapter-3-link').on('click', function() {
      Story.scroll_to_chapter(3)
    });
    $('what-they-say').on('click', function() {
      Story.scroll_to_chapter(3)
    });
    $('chapter-4-link').on('click', function() {
      Story.scroll_to_chapter(4)
    });
    $('see-why').on('click', function() {
      Story.scroll_to_chapter(4)
    });
    $('chapter-5-link').on('click', function() {
      Story.scroll_to_chapter(5)
    });
    $('plans-prices').on('click', function() {
      Story.scroll_to_chapter(5)
    });
    $('chapter-6-link').on('click', function() {
      Story.scroll_to_chapter(6)
    });
    $('new-account-button').on('click', function() {
      viewport_element.scrollTo($('chapter-6').cumulativeOffset().top, { duration: 1.5, transition: 'easeFromTo', position: 'end' });
    })
    $('sign-up-link').observe('click', function() {
      viewport_element.scrollTo($('chapter-5').cumulativeOffset().top, { duration: 2, transition: 'easeFromTo', position: 'end' });
    })
    $('back-to-sign-up').observe('click', function() {
      viewport_element.scrollTo($('chapter-6').cumulativeOffset().top, { duration: 2, transition: 'easeFromTo', position: 'end' });
    })
  
    $('watch-the-screencast').observe('click', function() {
      $('placeholder-box').setStyle('display: none;');
      $('video-box').setStyle('display: block;');
    })
    $('sign-in-link').observe('click', function() {
      if (!$('sign-in-link').hasClass('active')) {
        $('absolute-description').morph('top:7.2em', { duration: .5, transition: 'easeFrom' });
        $('sign-in-link').addClass('active');
      } else {
        $('absolute-description').morph('top:3.6em', { duration: .5, transition: 'easeFrom' });
        $('sign-in-link').removeClass('active');
      }
    })

    $('absolute-description').setStyle('top:3.6em;');
    $('fixed-ribbon').setStyle('top:-72em;')
                     .morph('top:-24em;', { duration: 1, delay: 1.5, transition: 'easeFrom' })
                     .morph('top:-16em;', { duration: 2, transition: 'spring' });
    $('fixed-hint').morph('opacity: 1;', { duration: 3, delay: 4, transition: 'flicker' });
  }
}

FixedRibbon.initialize();
