// <span id="javascripts.js_read_more">...</span><span id="javascripts.js_extra_content" style="display: none">
// </span><a href="#" class="readmore" onclick="reveal(this, 'javascripts.js');">Read More</a>
function reveal(sender, id_prefix, replace_content, alt_label) {
  if (replace_content) {
    if ($(id_prefix + '_read_more') && $(id_prefix + '_extra_content')) {
      $(id_prefix + '_read_more').innerHTML = $(id_prefix + '_extra_content').innerHTML;
    }
  } else {
    $(id_prefix + '_extra_content').show();
    if ($(id_prefix + '_read_more')) $(id_prefix + '_read_more').hide();
  }
  var original_text = $(sender).innerHTML;
  $(sender).innerHTML = alt_label || "Read Less";
  $(sender).onclick = function() { collapse(sender, id_prefix, replace_content, original_text); }
  return false;
}

function collapse(sender, id_prefix, replace_content, alt_label) {
  $(id_prefix + '_extra_content').hide();
  if ($(id_prefix + '_read_more')) {
    $(id_prefix + '_read_more').show();
  }
  var original_text = $(sender).innerHTML;
  $(sender).innerHTML = alt_label || "Read More";
  $(sender).onclick = function() { reveal(sender, id_prefix, replace_content, original_text); }
  return false;
}

function takeATour(){
  newWindow = window.open('http://www.adready.com/static/tour/take_a_tour.html', 'tour_window', 'toolbar=no, location=no, scrollbars=no, width=720, height=540');
  return false;
}

Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) == 6;
Prototype.Browser.IEAntediluvian = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) < 6;
var Page = {
  msie6NuclearOption: function() {
    if (Prototype.Browser.IE6 || Prototype.Browser.IEAntediluvian) {
      var links = '<a href="http://www.mozilla.org/firefox/">Firefox</a>';
      links += ' | <a href="http://www.apple.com/safari/">Safari</a>';
      links += ' | <a href="http://www.microsoft.com/windows/internet-explorer/default.aspx">Explorer 8</a>';
      links += ' | <a href="http://www.google.com/chrome/">Chrome</a>';
      var message = "Because many AdReady features may not function properly in this older browser, we will " +
      "soon be phasing out support for it. For optimal performance and consistent behavior, please use one " +
      "of these more modern browsers.<br/><center>" + links + "</center>";
      Notification.flashInfo(message, new Hash());
    }
  },

  msie6LandingPageGreeting: function() {
    if (Prototype.Browser.IE6 || Prototype.Browser.IEAntediluvian) {
      var links = '<a href="http://www.mozilla.org/firefox/" title="Firefox"><img src="http://www.adready.com/images/browser-logos/firefox-logo.png" border="0" alt="Firefox"></a>';
      links += '&nbsp;<a href="http://www.apple.com/safari/" title="Safari"><img src="http://www.adready.com/images/browser-logos/safari-logo.png" border="0" alt="Safari"></a>';
      links += '&nbsp;<a href="http://www.microsoft.com/windows/internet-explorer/default.aspx" title="Explorer 8"><img src="http://www.adready.com/images/browser-logos/ie8_logo.png" border="0" alt="Explorer 8"</a>';
      links += '&nbsp;<a href="http://www.google.com/chrome/" title="Chrome"><img src="http://www.adready.com/images/browser-logos/chrome-logo.png" border="0" alt="Chrome"></a>';
      Element.insert($('other_browsers'), {top: links});
      $('flash-info').show();
      $('other_browsers').show();
    }
  }
};
var Notification = {
  appear: function(e) {
    var element = $(e);
    var dimensions = null;
    var height = null;
    try {
      if (e) { dimensions = e.getDimensions(); }
      if (dimensions) { height = dimensions['height'] };
    } catch (err) {}
    // Getting and setting the height seems necessary to work around an annoying bug in the BlindDown behavior
    // whereby after the BlindDown element is done rendering, Scriptaculous set it's height 0 which makes it
    // overlap whatever element(s) are "beneath" it on the page. 07/17/2009 -- RHA
    new Effect.Parallel(
      [new Effect.BlindDown(element, { sync: true, scaleMode: 'contents' }),
        new Effect.Appear(element, { sync: true })],
      { duration: 0.5,
        afterFinish: function() { if (height) { e.setStyle('height: ' + height + 'px;'); }; Notification.ensureInViewport(e); }});
  },
  ensureInViewport: function(e) {
    var element = $(e);
    if (element.viewportOffset()[1] < 0 ||
        document.viewport.getScrollOffsets()[1] + document.viewport.getHeight() < element.cumulativeOffset()[1]) {
      element.scrollTo();
    }

  },
  disappear: function(e) {
    var element = $(e);

    new Effect.Parallel(
      [new Effect.BlindUp(element, { sync: true }),
        new Effect.Fade(element, { sync: true })],
      { duration: 0.5 });

  },

  flashError: function(message, options) {
    this.flash("error", message, options);
  },

  flashWarning: function(message, options) {
    this.flash("warning", message, options);
  },

  flashMessage: function(message, options) {
    this.flash("message", message, $H({ selfDestruct: true, closeable: true }).merge(options));
  },

  flashInfo: function(message, options) {
    this.flash("info", message, $H({ closeable: true }).merge(options));
  },

  flashHide: function() {
    ['error', 'warning', 'message', 'info'].each(function(topic) {
      var selector = ".flash." + topic;
      $$(selector).invoke('hide');
    });
  },

  flash: function(topic, message, opts) {
    var options = $H({ selfDestruct: false }).merge(opts);
    var flash = this.getFlash(topic, options);

    this.flashHide();

    if (flash) {
      var container = flash.down(".fcontainer");
      var content = container.down(".content");
      var destructor = topic + "Destructor";

      content.update(message );

      if (options.selfDestruct) {
        this.armFlashDestructor(topic, flash);
      }

      if (!flash.visible()) {
        this.appear(flash);
      } else {
        new Effect.Pulsate(container, { pulses: 2, from: 0.3, duration: 0.5 });
      }
    }
  },

  getFlash: function(topicOrFlash, options) {
    if ("object" == typeof(topicOrFlash)) {
      return $(topicOrFlash);
    }

    var selector = ".flash." + topicOrFlash;
    var near = $(options.get('near'));
    var at = $(options.get('at') + '_' + topicOrFlash);

    var flash;

    if (near) {
      // TODO: support indirect ancestor-previous
      flash = near.previous(selector);
    } else if(at) {
      flash = at;
    } else {
      flash = $$(selector).first();
    }

    return flash;
  },

  hideFlash: function(topicOrFlash, options) {
    this.disappear(this.getFlash(topicOrFlash, $H(options)));
  },

  armFlashDestructor: function(topic, flash) {
    var destructor = topic + "Destructor";

    if (this[destructor]) {
      this[destructor].stop();
    }

    this[destructor] = new PeriodicalExecuter(function(executor) {
      Notification.hideFlash(flash);
      executor.stop();
    }, 10);
  }
};
Page.msie6NuclearOption();
