// pageviewer-cover.js

(function ($) {

// IE用 consoleエラーよけコード
if(!window.console){(function(){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)window.console[names[i]]=function(){}})();}
// ココマデ
  
  var $window = $(window);
  var $document = $(document);

  var $container = $("<div>", {
    "class": "dynamicLayout fullscreen"
  });

  var $navContainer = $.as.pageViewer.navContainer();
  var $sliderContainer = $.as.pageViewer.sliderContainer();
  var $infoContainer = $.as.pageViewer.infoContainer();
  
  var $html, $body, $globalNav, $slideImage;
  
  var isCompleteNavContainer = false;
  var isCompleteInfoContainer = false;
  
  var navContainerHeight, sliderBackgroundColor;
  var navContainerMode = $.as.pageViewer.navContainer.mode;

  var siteNameHTML, copyrightHTML;


  // !初期化

  if (!$.delta.resizeEvents.active) {
    $.delta.resizeEvents($window, { interval: 200 });
  }

  $document.bind("ready", onReadyDocument);


  // !イベントハンドラ
  function onReadyDocument(e) {
    
    $html = $("html");
    
    $html.css({
      height: "100%"
    });
    
    $body = $("body");

    $globalNav = $body.find(".globalNav");
    $slideImage = $body.find("ul.coverImage > li > img");
    $infoContents = $body.find("aside.information.articleList > ul > li > a");

    siteNameHTML  = $body.find(".staticLayout > header > h1").html();
    copyrightHTML = $body.find(".staticLayout > footer > .copyright").html();

    sliderBackgroundColor = $body.css("background-color");
    
    $body.css("background-color", "");
    $body.empty();
    $body.append($container);
    $body.css({
      height: "100%",
      display: "block"
    });
    
    $container.append($navContainer, $sliderContainer, $infoContainer);

    $navContainer.bind("complete", onCompleteNavContainer);
    $navContainer.init(siteNameHTML, copyrightHTML, $globalNav);

    $infoContainer.bind("complete", onCompleteInfoContainer);
    $infoContainer.init($infoContents);

    $window.bind("resizeend", onResizeEndWindow);
  }
  
  function onCompleteNavContainer(e) {

    isCompleteNavContainer = true;
      
    navContainerHeight = $navContainer.height();
      
    if (navContainerHeight < $window.height()) {
      $navContainer.changeMode(navContainerMode.fixed, 0);
    }
    else {
      $navContainer.changeMode(navContainerMode.relative, 0);
    }

    $navContainer.showSiteName(600);
    $navContainer.showCopyright(600);

    if (isCompleteInfoContainer) {
      setTimeout(initSlider, 600);
    }
    
    $navContainer.unbind("complete");
  }
  
  function onCompleteInfoContainer(e) {
    
    isCompleteInfoContainer = true;
    
    if (isCompleteNavContainer) {
      initSlider();
    }
    
    $infoContainer.unbind("complete");
  }
  
  function onCompleteSlider(e) {

    var $target = $(e.target);

    if ($target.get(0) !== $sliderContainer.get(0)) {
      return;
    }
    
    $navContainer.showGlobalNav(1200, true);
    $infoContainer.showContainer();
    $sliderContainer.showSlider();
  }
  
  function onResizeEndWindow(e) {
      
    if (navContainerHeight < $window.height()) {
      $navContainer.changeMode(navContainerMode.fixed, 800, "easeInOutQuint");
    }
    else {
      $navContainer.changeMode(navContainerMode.relative, 800, "easeInOutQuint");
    }
  }
  
  
  // !プライベート関数
  function initSlider() {
    $sliderContainer.bind("complete", onCompleteSlider);
    $sliderContainer.init($slideImage, sliderBackgroundColor);
  }
  
})(jQuery);

