function calculate_width(layer2_group) {
  var width = 0;
  layer2_group.children().each(function() {
    width += $(this).width();
  });
  
  layer2_group.css("width", (width+10) + "px");      
}

function initializeNavigation() {
  // initialize current menu entry
  var current = $("#header_navigation_ul li.current");
  
  if (current.html() != null) {
    $("#header_navigation_ul").removeClass("with_background");
  }  

  $("#header_navigation_ul .layer2_group").each(function() { 
    $(this).css("display", "block");
    calculate_width($(this));
    $(this).css("display", "none");    
  });
  
  $("#header_navigation_ul li.layer1").hover(function() {
    //calculate_width($(this).find(".layer2_group"));
    current.removeClass("current");
    $("#header_navigation_ul").removeClass("with_background");
  },function(){
    current.addClass("current");
    if (current.html() == null) $("#header_navigation_ul").addClass("with_background");
  });
  
  $("#header_navigation_ul li.layer1_last").hover(function() {
    //calculate_width($(this).find(".layer2_group"));
    current.removeClass("current");
    $("#header_navigation_ul").removeClass("with_background");
    
  },function(){
    current.addClass("current");
    if (current.html() == null) $("#header_navigation_ul").addClass("with_background");
  });  
}


function initializeDynamicHeightHorizontalColumns() {
  var old_page_height = $("#page").height();
  var old_height_second = $("#content_two_horizontal_columns_second").height();

  var height_first = $("#content_two_horizontal_columns_first").height();

  $("#content_two_horizontal_columns_second").css("height", "auto");
  var height_second = $("#content_two_horizontal_columns_second").height();
  if (height_second > old_height_second) {
    $("#page").height(old_page_height - old_height_second + height_second);  
    $("#content").height(height_first + height_second);
  }
}

function initializeDynamicHeightVerticalColumns() {
  var old_page_height = $("#page").height();
  var old_height_first = $("#content_two_vertical_columns_first").height();
  var old_height_second = $("#content_two_vertical_columns_second").height();
  
  $("#content_two_vertical_columns_first").css("height", "auto");
  $("#content_two_vertical_columns_second").css("height", "auto");
  var height_first = $("#content_two_vertical_columns_first").height();
  var height_second = $("#content_two_vertical_columns_second").height();
  
  if (height_first > height_second && height_first > old_height_first) {
    $("#page").height(old_page_height - old_height_first + height_first);  
    $("#content").height(height_first);
    $("#content_two_vertical_columns_first").height(height_second);  
  } 
  
  if (height_first < height_second && height_second > old_height_second) {
    $("#page").height(old_page_height - old_height_second + height_second);  
    $("#content").height(height_second);
    $("#content_two_vertical_columns_first").height(height_second);  
  }
}

function initializeDynamicHeight() {
  // zwei vertikale Spalten
  var dynamic_content_two_vertical_columns = $("#content_two_vertical_columns.dynamic");
  if (dynamic_content_two_vertical_columns.html()) {
      initializeDynamicHeightVerticalColumns();
  }
  
  // zwei horizontale Spalten
  var dynamic_content_two_horizontal_columns = $("#content_two_horizontal_columns.dynamic");
  if (dynamic_content_two_horizontal_columns.html()) {
      initializeDynamicHeightHorizontalColumns();
  }
}

var slider;

function initializeContentSlider() {
    var content_slider = $("#content_slider");
    if (content_slider.html()) {
        var startingSlide = 0;
        var sliderSpeed = 800, sliderPause = 4000, sliderDeley = 0;
        
        var anchor = jQuery.url.attr("anchor");
        if (anchor) {
            startingSlide = parseInt(anchor.substr(1, anchor.length));
        }
        
        $.each(content_slider.attr("class").split(" "), function(i, n) {
          var attribute = n.split("_")[0];
          var value = parseInt(n.split("_")[1]);
          
          switch (attribute) {
            case "speed":
              sliderSpeed = value;
              break;
            case "pause":
              sliderPause = value;
              break;
            case "delay":
              sliderDelay = value;
              break;
            default:
              break;
          }
        });
        
        slider = $('#content_slider').bxSlider({
            auto: true,
            autoControls: false,
            autoHover: true,
            autoStart: false,
            captions: true,
            captionsSelector: '#content_slider_image_caption',
            controls: false,
            pager: false,
            pause: sliderPause,
            speed: sliderSpeed,
            startingSlide: startingSlide
        });
        
        $('#content_slider_prev').click(function() {
            slider.goToPreviousSlide();
            return false;
        });
        
        $('#content_slider_next').click(function() {
            slider.goToNextSlide();
            return false;
        })
        
        updatePictureDescription();
        
        $(window).load(function () {
          var slideShowDelayTimer = setTimeout("slider.startShow()", sliderDelay);
        });
    }
}

function updatePictureDescription() {
  var pd = $(".picture_description");
  if (pd.html()) {
    var ct = pd.parent().parents(".content_text");
    var ci = ct.prev(".content_image");

    if (ct.html()) {
      // two vertical columns
      var height = ct.parent().height() - 20;
      if (ci.html()) {
        height = height - ci.outerHeight();
      }
      
      ct.css("height", height);
      ct.css("position", "relative");
      pd.parent().parent().css("position", "absolute");
      pd.parent().parent().css("bottom", "0px");    
    } else {
      // other layouts
      pd.parent().parent().parent().css("position", "relative");
      pd.parent().parent().css("position", "absolute");
      pd.parent().parent().css("bottom", "0px");
    }
  }  
}

function initializePictureDescription() {
  var pd = $(".picture_description");
  
  if (pd.html() && !$("#content_slider").html()) {
    var ct = pd.parents(".content_text");
    var ci = ct.prev(".content_image");

    if (ct.html()) {
      // two vertical columns
      var height = ct.parent().height() - 20;
      if (ci.html()) {
        height = height - ci.outerHeight();
      }
      ct.css("height", height);
      ct.css("position", "relative");
      pd.css("position", "absolute");
      pd.css("bottom", "0px");      
    } else {
      // other layouts
      pd.parent().css("position", "relative");
      pd.css("position", "absolute");
      pd.css("bottom", "0px");      
    }
  }
}


var browseAutoDelayTimer;
function initializeBrowseAuto() {
  var bac_start = $(".browse_auto_control_start");
  var bac_stop = $(".browse_auto_control_stop");
  var browse_auto = $(".browse_auto");
  
  if (bac_start.html() || bac_stop.html()) {
    
    console.log($.cookie('browse_auto'));
    if (browse_auto.attr('class').indexOf("yes") >= 0 || $.cookie('browse_auto')) {
      bac_start.hide();
    } else {
      bac_stop.hide();
    }
    
    bac_start.click(function() {
      bac_start.hide();
      bac_stop.show();
      $.cookie('browse_auto', true, {path: '/', domain: jQuery.url.attr("host")});
      executeBrowseAuto();
    });

    bac_stop.click(function() {
      bac_start.show();
      bac_stop.hide();
      $.cookie('browse_auto', null, {path: '/', domain: jQuery.url.attr("host")});
      clearTimeout(browseAutoDelayTimer);
    });
  }
}

function executeBrowseAuto() {
  var browse_auto = $(".browse_auto");
  if (browse_auto.html()) {
    var browsePause = 4000, browseAutoStart = false;
  
    $.each(browse_auto.attr("class").split(" "), function(i, n) {
      var attribute = n.split("_")[0];
      var value = parseInt(n.split("_")[1]);
    
      switch (attribute) {
        case "pause":
          browsePause = value;
          break;
        case "autostart":
          browseAutoStart = true;
          break;
        default:
          break;
      }
    });
    
    browse_auto.click(function() { 
      location.href = this.href;
    });    
    
    if (browseAutoStart || $.cookie('browse_auto')) {
      $.cookie('browse_auto', true, {path: '/', domain: jQuery.url.attr("host")});
      browseAutoDelayTimer = setTimeout(function() {
        $(".browse_auto").trigger('click')
      }, browsePause);
    }
  }  
}

$(document).ready(function() {
  initializeNavigation();
  initializeDynamicHeight();
  initializeContentSlider();
  initializePictureDescription();
  initializeBrowseAuto();
  executeBrowseAuto();
});
