<?php
// Purpose: This template provides a generic layout for all Tripal nodes (page)

// get the template type of node (e.g. if type == chado_organism then template type == organism)
$ttype = $variables['type'];
$ttype = preg_replace('/chado_/','', $ttype);

// get the template settings
$template_settings = theme_get_setting('tripal');

// toggle the sidebar if desired
$no_sidebar = 0;
if (is_array($template_settings['tripal_no_sidebar']) and 
   $template_settings['tripal_no_sidebar'][$ttype]) {
  $no_sidebar = 1;
}

if ($teaser) { 
  print theme('tripal_' . $ttype . '_teaser', $variables); 
} 
else { ?>

<script type="text/javascript">
(function ($) {
  Drupal.behaviors.<?php print $ttype?>Behavior = {
    attach: function (context, settings){ <?php
      // hide the resource sidbar if requested and strech the details section
      if ($no_sidebar) { ?>    
        $(".tripal_toc").hide();
        $(".tripal_details").addClass("tripal_details_full");
        $(".tripal_details_full").removeClass("tripal_details"); <?php
      } 
      // use default resource sidebar
      else { ?>        
        $(".tripal-info-box").hide();

        // set the widths of the details and sidebar sections so they can work 
        // seemlessly with any theme.
        total_width = $(".tripal_contents").width();
        details_width = (total_width * 0.70) - 52; // 52 == 20  x 2 left/right padding + 10 right margin + 2pt border
        toc_width = (total_width * 0.30) - 42;  // 42 == 20 x 2 left/right padding + 2pt border
        // don't let sidebar get wider than 200px
        if (toc_width > 200) {
          details_width += toc_width - 200;
          toc_width = 200;
        }
        $('#tripal_<?php print $ttype?>_toc').width(toc_width);
        $('#tripal_<?php print $ttype?>_details').width(details_width);
        <?php
      } ?>
 
      // iterate through all of the info boxes and add their titles
      // to the table of contents
      $(".tripal-info-box-title").each(function(){
        var parent = $(this).parent();
        var id = $(parent).attr('id');
        var title = $(this).text();
        $('#tripal_<?php print $ttype?>_toc_list').append('<li><a href="#'+id+'" class="tripal_<?php print $ttype?>_toc_item">'+title+'</a></li>');
      });

      // when a title in the table of contents is clicked, then
      // show the corresponding item in the details box
      $(".tripal_<?php print $ttype?>_toc_item").click(function(){
        $(".tripal-info-box").hide();
        href = $(this).attr('href');
        if(href.match(/^#/)){
           //alert("correct: " + href);
        }
        else{
          tmp = href.replace(/^.*?#/, "#");
          href = tmp;
          //alert("fixed: " + href);
        }
        $(href).fadeIn('slow');
        // we want to make sure our table of contents and the details
        // box stay the same height
        $("#tripal_<?php print $ttype?>_toc").height($(href).parent().height());
        return false;
      }); 

      // we want the base details to show up when the page is first shown 
      // unless we're using the feature browser then we want that page to show
      var block = window.location.href.match(/[\?|\&]block=(.+?)\&/)
      if(block == null){
        block = window.location.href.match(/[\?|\&]block=(.+)/)
      }
      if(block != null){
        $("#tripal_<?php print $ttype?>-"+block[1]+"-box").show();
      }
      else {
        $("#tripal_<?php print $ttype?>-base-box").show();
      }

      // make sure the sidebar and details sections are the same hieght
      base_height = $("#tripal_<?php print $ttype?>_details").height();
      toc_height = $("#tripal_<?php print $ttype?>_toc").height();
      if (toc_height > base_height) {
        $("#tripal_<?php print $ttype?>_details").height(toc_height);
      }
      else {
        $("#tripal_<?php print $ttype?>_toc").height(base_height);
      }
    }
  };
})(jQuery);
</script>

<div id="tripal_<?php print $ttype?>_content" class="tripal_contents">
  <div id="tripal_<?php print $ttype?>_details" class="tripal_details">
  
     <!-- Resource Blocks CCK elements --> <?php
     if (property_exists($node, 'field_resource_titles')) {
       for ($i = 0; $i < count($node->field_resource_titles); $i++){
         if ($node->field_resource_titles[$i]['value']){ ?>
           <div id="tripal_<?php print $ttype?>-resource_<?php print $i?>-box" class="tripal_<?php print $ttype?>-info-box tripal-info-box">
             <div class="tripal_<?php print $ttype?>-info-box-title tripal-info-box-title"><?php print $node->field_resource_titles[$i]['value'] ?></div>
             <?php print $node->field_resource_blocks[$i]['value']; ?>
           </div> <?php
         }
       } 
     }?>
     <!-- Let modules add more content -->
     <?php
       foreach ($content as $key => $values) {
         if (array_key_exists('#value', $values)) {
           print $content[$key]['#value'];
         }
       }
     ?>
     
  </div>
  
  <!-- Table of contents -->
  <div id="tripal_<?php print $ttype?>_toc" class="tripal_toc">
     <div id="tripal_<?php print $ttype?>_toc_title" class="tripal_toc_title">Resources</i></div>
     <span id="tripal_<?php print $ttype?>_toc_desc" class="tripal_toc_desc"></span>
     <ul id="tripal_<?php print $ttype?>_toc_list" class="tripal_toc_list">
     
       <!-- Resource Links CCK elements --><?php
       if(property_exists($node, 'field_resource_links')) {
         for($i = 0; $i < count($node->field_resource_links); $i++){
           if($node->field_resource_links[$i]['value']){
             $matches = preg_split("/\|/",$node->field_resource_links[$i]['value']);?>
             <li><a href="<?php print $matches[1] ?>" target="_blank"><?php print $matches[0] ?></a></li><?php
           }
         }
       }
       ?> 
     </ul>
  </div>
</div> 
<?php 
} ?>