 /**
 * Anzeigefunktionen  
 **/
 
var small = 45;
var fullwidth = 240; 
var hiddenpos = 300;
var fastspeed = 500;
var slowspeed = 0;
var opac = 0.01;
var margintop = 145;
var base = $("base").attr("href");


function showmenu(fast) {
  hidemenu(fast);
  //openmenu(fast);
}

function hidemenu(fast) {

  //Balken identifizieren
  var aktiv = $(".oldactive");
  var untergeordnet = aktiv.nextAll(".balken").children(".oldsetactive").parent();
  
  var oldset = untergeordnet.children(".oldsetactive");
  var newset = untergeordnet.children(".setactive");
  var oldisnew = ((oldset.length > 0) && (newset.length >0) && (oldset[0] == newset[0]));
  
  
    
  if ((fast) || (untergeordnet.length == 0) || (oldisnew)) {

    openmenu(fast);
  }
  else {
  
   //Animation
   var speed = fast?slowspeed:fastspeed;
   //aktiv.animate ({left: hiddenpos+"px"},speed);     
   untergeordnet.animate ({left: hiddenpos+"px"},speed,function () { 

     openmenu(fast); 
   });
}
}

function openmenu (fast) {

  //Initialisieren  
  var speed = fast?slowspeed:fastspeed;
  var untergeordnet_aktiv = $(".balken.active").nextAll(".balken").children(".setactive").parent();
  var untergeordnet_inaktiv = $(".balken").filter(function() {return ($(this).children(".setactive").length == 0) } );
  //$(".balken.active").nextAll(".balken").children(".menuset:not(.setactive)").parent();  
  var uebergeordnet = $(".balken.active").prevAll(".balken").andSelf();
 
 //Überdeckung des aktiven Balkens entfernen
 $('.balken.active .smallbar').fadeTo(0,0).hide();
  
  //Menusets ausblenden und einblenden
  $(".menuset:not(.setactive)").hide();
  $(".balken .menuset.setactive").show();
 
 //Marker positionieren
 $(".marker").each(function () {
   var pointto = $(this).closest(".balken").prev(".balken").find(".setactive .menuactive");
   if (pointto.length > 0) { 
     var pos = pointto.position().top;
     $(this).animate({top:pos+"px"},0);
     
     //Set positionieren
     var set = $(this).closest(".balken").find(".setactive");
     if (set.length > 0) {
       var setheight = (set.children("div:last").position().top)- set.children("div:first").position().top ;
       var setpos = pos - (setheight / 2)
       setpos = setpos > margintop?setpos:margintop;
       set.animate({marginTop:setpos+"px"},0);
     }       
   }  
   
 
 });
 
 var lastmenu = $(".setactive .menuactive").filter(function () {
     return ($(this).closest(".balken").next(".balken").find(".setactive").length == 0 )
 } ); 
 var lastheader = $(".setactive .menuheader.headerlink").filter(function () {
     return ($(this).closest(".balken").next(".balken").find(".setactive").length == 0 )
 } );  
 
 if (lastmenu.length > 0 ) {
   $("#marker_c").show(speed / 2).animate({top:lastmenu.position().top+"px"},speed); 
 } 
 else if (lastheader.length > 0 ) {
   $("#marker_c").show(speed / 2).animate({top:lastheader.position().top+"px"},speed);
 } 
 else  
 {
   
   $("#marker_c").hide(speed);
 }  
 
 
 
 
  //Untergeordnete Balken 
  untergeordnet_inaktiv.each( function () {
    $(this).animate({left: hiddenpos+"px"},speed);
    //$(this).children(".marker").hide();
  });
 
  untergeordnet_aktiv.each( function () {
    var pos = fullwidth - ((untergeordnet_aktiv.length - untergeordnet_aktiv.index(this)) * small); 
    
    $(this).animate({left: pos+"px"},speed);      
    //$(this).children(".marker").show();
 });   
  
 
  //Aktiver und übergeordnete Balken
  uebergeordnet.each( function () {
   var pos = ($(".balken").index(this) * small);  
   $(this).animate({left: pos+"px"},speed,function () {
   
 });
 
 
 
 $('.balken:not(.active) .smallbar').fadeTo(0,0).show().fadeTo(200,opac);
   });
  
 

  
}

function opensite (target) {
  if (target != undefined) { 
    window.location = base+target;
  }  
}


/* 
 * Funktionen für Events, 
 * Status der Menükomponenten setzen
 */
   
function openBar () {
 //Alten BAnlken markieren
 $('.oldactive').removeClass("oldactive");
 $('.balken.active').addClass("oldactive");
 
 //Neuen Balken markieren
 $('.balken').removeClass("active");   
 $(this).parent().addClass("active");
 
 showmenu(false);    
}

function menuclick () {
  //$("#content").prepend(maxheight());
 //Markierung setzen
 //$(this).parent().parent().find(".smallbar").empty();
 //$(this).parent().parent().find(".smallbar").append($(this).html());
 
 //Alten BAnlken markieren
 $('.oldactive').removeClass("oldactive");
 $('.balken.active').addClass("oldactive");

  //Altes Set markieren
  $(this).parent().parent().nextAll("div").children(".menuset").removeClass("oldsetactive");
  $(this).parent().parent().nextAll("div").children(".menuset.setactive").addClass("oldsetactive");   
 
 //Menüpunkt markieren
  $(this).parent().parent().find(".menu").removeClass("menuactive");
 $(this).addClass("menuactive");
 
 //Nächsten Balken markieren
 var num = $(this).attr("id").substr(4); 
   if ($("#set"+num).length > 0) {
   $('.balken').not(":last").removeClass("active");
   $(this).parent().parent().next("div").addClass("active");  
   
   //Set markieren
   $(this).parent().parent().nextAll("div").children(".menuset").removeClass("setactive");   
   $("#set"+num).addClass("setactive");
 
 } else {
    //Sets schließen
   $(this).parent().parent().nextAll("div").children(".menuset").removeClass("setactive");
 }
 //Seite öffnen
 var target = $(this).find("a").attr("href");
 opensite(target);
 
 showmenu(false);
 
 
}

function menuheaderclick () {
 //Alten BAnlken markieren
// $('.oldactive').removeClass("oldactive");
 //$('.balken.active').addClass("oldactive");
 
 //Neuen Balken markieren
 //$('.balken').not(":first").removeClass("active");    
 //$(this).parent().parent().prev("div").addClass("active");

  var target = $(this).find("a").attr("href");
  if (target != undefined) { 
    $(this).parent().parent().find(".menu").removeClass("menuactive");
    opensite(target);   
   showmenu(false);
 }      
 
}

function markerclick () {
 //Alten BAnlken markieren
 $('.oldactive').removeClass("oldactive");
 $('.balken.active').addClass("oldactive");
 
 //Neuen Balken markieren
 $('.balken').not(":first").removeClass("active");    
 $(this).parent().parent().prev("div").addClass("active");
 
 showmenu(false);    
 
}


/**
 * Menuaufbauen
 **/
  
var level = 0;     
var num = "01";
var levelcount = 0;
function buildmenu(i) {
 level++;
      
 //Balken einfügen
 if ($(".level"+level).length == 0) {
 
 $("#mainmenu").append("<div class=\"balken menusets menusets"+level+" level"+level+"\"><div class=\"smallbar\"></div></div>");
 if (level > 1) {
   $(".level"+level).prepend("<div class=\"balken_rand\"><div class=\"marker\" id=\"marker_l"+level+"\"></div></div>");
 }
 }

 
 //Menuset im Level einfügen
 $(".menusets"+level).append("<div id=\"set"+num+"\" class=\"menuset\"></div>");
 
 //Menuitems einfügen
 var index = 0;
 
  $(this).children("li").each( function (){
  index++;     
  var menunum = (index).toString(); while (menunum.length < 2) {menunum = "0"+menunum;}    
  

   
 var menulink = $(this).children("*:not(ul)");
 var menutext = menulink.clone(); //html();
     
  //Menuitem einfügen   
  $("#set"+num).append("<div id=\"menu"+num+menunum+"\" class=\"menu\"></div>");
  
   //Untermenü
   num = num + menunum;
   $(this).children("ul").each(buildmenu);
   
   //Überschrift einfügen
    $("#set"+num).prepend("<div id=\"menuheader"+num+"\" class=\"menuheader\"></div>");
    $("#menuheader"+num).append(menutext);
    if ($(menutext).find("a").attr("href") != undefined) {$("#menuheader"+num).addClass("headerlink"); } 
    
  
   num = num.slice(0,num.length-2);  
     
  //Ggf. Aktiv setzen
  if ($(this).hasClass("current")) {
    
    actnum = num+menunum;
    
    if ($("#set"+actnum).length > 0) {
      $("#set"+actnum).addClass("setactive");
      $("#set"+actnum).parent().addClass("active");
    } else
    {
      $(".level"+level).addClass("active");
    }
    
    while (actnum.length > 0) {
      
      $("#menu"+actnum).addClass("menuactive");
      
      
      
      actnum = actnum.slice(0,actnum.length-2);  
      $("#set"+actnum).addClass("setactive");        
    }     
  }
  
  //Inhalt einfügen    
  $("#menu"+num+menunum).append(menulink);

 });
level--;
}

function setsize () {

  

 //Balkenhöhe anpassen
 var s = $(document).height();//maxheight() + margintop;
 w = $(window).height();
 s = s > w?s:w;
 s = s > 550?s:550;
 s--;

 //$("#content").prepend(s);
 
  $("#left").height(s); 
  $("#menu_divider").height(s);
  $("#contentarea").height(s);
   
}
  
  
function getheight(menu) {
  if (menu.length == 0) {
    return 0;
  }
  
  var set = menu.closest(".menuset");
  var num = set.attr("id").substr(3);
  
  var setheight = set.height();  
  setheight = setheight + getheight($("menu"+num));
  

  return setheight;
}
  
function maxheight() {

  var max_height = 0;
  var b = 0;
  var set_height = 0;
  var set_bottom = 0;
  
  $(".menuset").each( function () {
    
    //setheight = ($(this).children("div:last").position().top)- $(this).children("div:first").position().top ;    
    //var num = $(this).attr("id").substr(3);
    
    
    
    set_bottom = getheight($(this).children("div:last"));    
    max_height = (set_bottom > max_height)? set_bottom:max_height;
       
  } );
  
  return max_height;
}

function showEvents() {
  $(this).parent().children("tbody").animate({height:100+"%"},1000);
}
/**
 *  Initialisierung
 */
      
 $(document).ready(function(){


  
   

  //Styles anpassen
  $("#left").css("position","absolute");
  $("#left").css("left","0px");
  $("#left").css("top","0px");
  $("#left").css("float","none");
  $("#mainmenu").css("position","absolute");
  $("#wrapper_box2").css("background","none");
  
  //Menü aufbauen
  $("#menulist").hide(); 
  $("#menulist > ul").each(buildmenu);
  levelcount = $(".balken").length-1;  
  
  //Ggf. markieren
  if ($(".balken.active").length == 0) {
    $(".balken.level1").addClass("active");
  }
  if ($(".menuset.setactive").length == 0) {
    $("#set01").addClass("setactive");
  }
    
  //Fallback ausblenden, Javascript-Menü einblenden  
  $("#menulist").empty();
  showmenu(true);  
   
  setsize();
  

  
   
  //Events binden
  $(".balken .smallbar").bind('click',openBar);
  $(".menu").click(menuclick);
  $(".menuheader.headerlink").click(menuheaderclick);
  $(".marker").click(markerclick);
 
//  $(".eventlist > thead").click(showEvents);
//  $(".eventlist > tbody").hide().animate({height:0+"px"},0);;
  

  $(window).bind('resize',setsize);
  
  $("#b1").change( setcolors);
  $("#b2").change( setcolors);
  $("#b3").change( setcolors);
  $("#cc_button").change( setcolors);
  
  function setcolors () {
 $(".level1").css("background-color","#"+$("#b1").val());
 $(".level2").css("background-color","#"+$("#b2").val());
 $(".level3").css("background-color","#"+$("#b3").val());
 
  }     
 });

