/* ========================================================================
 * DOM-based Routing
 * Based on http://goo.gl/EUTi53 by Paul Irish
 *
 * Only fires on body classes that match. If a body class contains a dash,
 * replace the dash with an underscore when adding it to the object below.
 *
 * .noConflict()
 * The routing is enclosed within an anonymous function so that you can
 * always reference jQuery with $, even when in .noConflict() mode.
 * ======================================================================== */

(function($) {

  // Use this variable to set up the common and page specific functions. If you
  // rename this variable, you will also need to rename the namespace below.
  var Sage = {
    // All pages
    'common': {
      init: function() {
        // JavaScript to be fired on all pages
        var FullSize = function() {
          var SELECTOR = ".js-full-height";
          var AT_LEAST_CLASS = "js-full-height-at-least";
          var NOT_MOBILE_CLASS = "js-full-height-not-mobile";
          var TOP_NAV_CLASS = ".navbar-fixed-top";
          var height;
          var newHeight;

          this.init = function() {
            $(window).bind("load resize orientationchange", scaleAll);
          }

          scaleAll = function() {
            height = $(window).height();
            $(TOP_NAV_CLASS).each(function() {
              if($(this).is(":visible")) {
                height -= $(this).height();
              }
            });

            $(SELECTOR).each(function() {
              if(shouldScale($(this))) {
                $(this).css("height", height + "px");
              }
            });
          }

          shouldScale = function(ele) {
            if(ele.attr("data-min-height") != undefined && ele.attr("data-min-height") > height) {
              newHeight = parseInt(ele.attr("data-min-height"));
            }

            if(ele.hasClass(NOT_MOBILE_CLASS) && $(window).width() < 720) {
              ele.css("height", "auto");
              return false;
            }
            return true;
          }
        }

        var fs = new FullSize();
        fs.init();

      },
      finalize: function() {
        // JavaScript to be fired on all pages, after page specific JS is fired
      }
    },
    // Home page
    'home': {
      init: function() {
        // JavaScript to be fired on the home page
      },
      finalize: function() {
        // JavaScript to be fired on the home page, after the init JS
      }
    },
    // About us page, note the change from about-us to about_us.
    'about_us': {
      init: function() {
        // JavaScript to be fired on the about us page
      }
    }
  };

  // The routing fires all common scripts, followed by the page specific scripts.
  // Add additional events for more control over timing e.g. a finalize event
  var UTIL = {
    fire: function(func, funcname, args) {
      var fire;
      var namespace = Sage;
      funcname = (funcname === undefined) ? 'init' : funcname;
      fire = func !== '';
      fire = fire && namespace[func];
      fire = fire && typeof namespace[func][funcname] === 'function';

      if (fire) {
        namespace[func][funcname](args);
      }
    },
    loadEvents: function() {
      // Fire common init JS
      UTIL.fire('common');

      // Fire page-specific init JS, and then finalize JS
      $.each(document.body.className.replace(/-/g, '_').split(/\s+/), function(i, classnm) {
        UTIL.fire(classnm);
        UTIL.fire(classnm, 'finalize');
      });

      // Fire common finalize JS
      UTIL.fire('common', 'finalize');
    }
  };

  // Load Events
  $(document).ready(UTIL.loadEvents);

})(jQuery); // Fully reference jQuery after this point.
