/* nycma2 layout adjustment to prevent named anchors from hiding content */

var nycma2 = { "version":"1.0" }

nycma2.init = function() {
  // make #Nav, #Main, and (#Right-95) the same height
  var dimNav = getElementDimensions( $('Nav') );
  var dimMain = getElementDimensions( $('Main') );
  var dimRight = getElementDimensions( $('Right') );
  dimRight.h = dimRight.h + 95;
  var maxh = Math.max( Math.max( dimNav.h, dimMain.h ), dimRight.h );
  log( "Dimensions Nav, Main, Right:",dimNav.h, dimMain.h, dimRight.h, "Max:", maxh );
  $("Nav").style.minHeight = maxh + "px";
  $("Main").style.minHeight = maxh + "px";
  $("Right").style.minHeight = ( maxh - 95 - 95 ) + "px";
  $("Main").heightControl = true;
  log("Domload layout changes made. maxh", maxh, "Nav, Main, Right", $("Nav").style.minHeight, $("Main").style.minHeight, $("Right").style.minHeight );
  
  if ( $('Orgbar') ) {
    var dimObject = getElementDimensions( $('Object') );
    var dimOrgbar = getElementDimensions( $('Orgbar') );
    var maxch = Math.max( dimObject.h, dimOrgbar.h );
    $("Object").style.minHeight = maxch + "px";
    $("Orgbar").style.minHeight = maxch + "px";
  }
  else {
    var dimObject = getElementDimensions( $('Object') );
    var dimSidebar = getElementDimensions( $('Sidebar') );
    var maxch = Math.max( dimObject.h, dimSidebar.h );
    $("Object").style.minHeight = maxch + "px";
    $("Sidebar").style.minHeight = maxch + "px";
  }
  
  connect( window, "onload", function() {
    var dimNav = getElementDimensions( $('Nav') );
    var dimMain = getElementDimensions( $('Main') );
    var dimRight = getElementDimensions( $('Right') );
    dimRight.h = dimRight.h + 95;
    var maxh = Math.max( Math.max( dimNav.h, dimMain.h ), dimRight.h );
    log( "Dimensions now (Nav, Main, Right)",dimNav.h, dimMain.h, dimRight.h, " (Maxh)", maxh );
    $("Nav").style.minHeight = maxh + "px";
    $("Main").style.minHeight = maxh + "px";
    $("Right").style.minHeight = ( maxh - 95 -95 ) + "px";
     log("Onload final layout changes made. maxh", maxh, "Nav, Main, Right", $("Nav").style.minHeight, $("Main").style.minHeight, $("Right").style.minHeight );
    
    if ( $('Orgbar') ) {
      var dimObject = getElementDimensions( $('Object') );
      var dimOrgbar = getElementDimensions( $('Orgbar') );
      var maxch = Math.max( dimObject.h, dimOrgbar.h );
      $("Object").style.minHeight = maxch + "px";
      $("Orgbar").style.minHeight = maxch + "px";
    }
    else {
      var dimObject = getElementDimensions( $('Object') );
      var dimSidebar = getElementDimensions( $('Sidebar') );
      var maxch = Math.max( dimObject.h, dimSidebar.h );
      $("Object").style.minHeight = maxch + "px";
      $("Sidebar").style.minHeight = maxch + "px";
    }
  } );
}

connect( window, "ondomload", nycma2, "init" );

// slides object
var slides = { "version":"1.0" }

slides.activeslide = false;

slides.showslide = function ( id ) {
  var slide = $(id);
  if ( !slide ) return;
  if ( !hasElementClass( slide, "slide" ) ) return;
  if ( this.activeslide ) {
    this.activeslide.style.display = 'none';
    signal( this.activeslide, "deactivate" );
  }
  this.activeslide = slide;
  this.activeslide.style.display = 'block';
  var videoid = getNodeAttribute( slide, "videoid" );
  if ( videoid ) {
    log("Playing",videoid);
    window.setTimeout( "$('flowplayer"+videoid+"').DoPlay()", 1000 );
  }
  signal( this.activeslide, "activate" );
}

slides.clickhandler = function ( e ) {
  e.stop();
  e.src().blur();
  var id = e.src().hash.substr(1);
  this.showslide( id );
}

slides.init = function() {
  // find slidenav links
  iterateElementsByTagAndClassName ( "a", "slidenav", $('Contents'), function( navs, i ) {
    connect( navs[i], "onclick", slides, "clickhandler" );
    var slideid = navs[i].hash.substr(1);
    var slide = $(slideid);
    if ( slide ) {
      connect( slide, "activate", function() { addElementClass( navs[i].firstChild, "active" ) } );
      connect( slide, "deactivate", function() { removeElementClass( navs[i].firstChild, "active" ) } );
    }
  });
  // set activeslide to cover
  var covers = getElementsByTagAndClassName( "div", "cover", $("Object") );
  if (covers.length) {
    this.activeslide = covers[0];
  }
  // show a different slide if requested
  if ( window.location.hash ) {
    var id = window.location.hash.substr(1);
    if ( !$(id) ) {
      log("Will turn to allslides to find id not present on this page",id,allslides);
      for( i=0; i<allslides.length; i++ ) {
        if ( allslides[i].name==id ) {
          log( "Slide found on page with cstart",allslides[i].cstart );
          window.location = '?cstart=' + allslides[i].cstart + '#' + id;
        }
      }
    }
    else {
      log("Showing slide on this page",id);
      this.showslide( id );
    }
  }
}

connect( window, "ondomload", slides, "init" );
