
 // ----------------------------------------------------------------------------------------------------------------
 // Konfiguration
 // ----------------------------------------------------------------------------------------------------------------
 
    var _SELECTOR_LIFESTREAM_MENU = "#menuLifestream";
    var _SELECTOR_LIFESTREAM_NAV =  _SELECTOR_LIFESTREAM_MENU+" div a";
    
 // ----------------------------------------------------------------------------------------------------------------
 // Projekt-Map 
 // ----------------------------------------------------------------------------------------------------------------
 
    function projektMap(projekt)
    {    
    // Fallabhängig antworten
       if (projekt == "facebook")              { var antwort = ""; }
       if (projekt == "facebookFreunde")       { var antwort = ""; }
       if (projekt == "facebookNotifications") { var antwort = "Facebook ist mein Soziales Netzwerk. Es zeigt hier (gefiltert) die ca. 10 neuesten Ereignisse in meinem Netzwerk an."; }
       if (projekt == "facebookLinks")         { var antwort = "Facebook ist mein Soziales Netzwerk. Hier zeige ich Freunden Links, die ich beachtenswert finde."; }
       if (projekt == "youtubeFavoriten")      { var antwort = "Youtube ist klasse. Meine 25 j&uuml;ngsten Favoriten werden hier angezeigt."; }
       if (projekt == "twitter")               { var antwort = "Twitter benutze ich eigentlich nur zum Testen von Anwendungen. Ich finde Twittern ein wenig langweilig..."; }
       if (projekt == "misterwong")            { var antwort = "Mister Wong ist das Social Bookmarking-Portal meiner Wahl: Hier speichere ich alle Links."; }
       if (projekt == "trendwork")             { var antwort = "Der Trendwork Blog von KMF: Hier bin ich Administrator, Redakteur und Entwickler."; }
       if (projekt == "web20lexikon")          { var antwort = "Das Web 2.0-Lexikon im KMF Trendwork Blog erkl&auml;rt die wichtigsten Fachbegriffe des Web 2.0."; }
       if (projekt == "blogsefzignet")         { var antwort = "Mein Blog: Ich bin kein Blogger - enjoy!"; }
       if (projekt == "sprueche")              { var antwort = "Manche Sachen m&uuml;sen einfach mal gesagt werden."; }
       if (projekt == "zeitgeist")             { var antwort = "Zeitgeist war mal ein interessantes Experiment mit Javascript und Wordpress. In dem Blog ist nichts mehr los..."; }
       if (projekt == "ajaxoffice")            { var antwort = "Ajax-office.de war mein erster Gehversuch mit Blogs, Wordpress und so. In dem Blog ist nichts mehr los..."; }
       if (projekt == "fytch")                 { var antwort = "Mit Fytch kommentiere ich Webseiten und Inhalte."; }

    // Antworten
       return antwort;
    }
 
 // ----------------------------------------------------------------------------------------------------------------
 // Default: Begrüssung
 // ----------------------------------------------------------------------------------------------------------------
  
 // Hash aus Adressleiste lesen
    var hash = jsHistoryHashUrl("kurz");
    
    if ((!hash) || (hash == ""))
    {
    // Begrüssung in Adressleiste schreiben
       window.location.hash = "#willkommen";
       
    // Begrüssung in Titel schreiben
       document.title = "Sefzig.net | willkommen";
    }
          
 // ----------------------------------------------------------------------------------------------------------------
 // Document Ready
 // ----------------------------------------------------------------------------------------------------------------
 
    $(document).ready(function()
    {
    // -------------------------------------------------------------------------------------------------------------
    // Änderungen im URL-Hash bemerken
    // -------------------------------------------------------------------------------------------------------------

    // Hash aus Adressleiste lesen
       var hash = jsHistoryHashUrl("kurz");
    
    // Wenn ohne Hash gestartet
       if (hash == "willkommen")
       {
       // Konfiguration aus Attribut lesen
          var hash =  $("#menus").attr("default");
       }
       
    // Konfiguration aus Attribut lesen
       var timeout =  $("#menus").attr("timeout");
       var interval = $("#menus").attr("interval");
    
    // Ein Interval ist nicht gerade elegant, allerdings gibt es keine Events von der Location...
       var interval = 'window.location.hash = "#'+hash+'"; setInterval("jsHistory();", '+interval+');';

    // Zeitversetzt Interval mit jsHistory() starten
       window.setTimeout(interval, timeout);

    // -------------------------------------------------------------------------------------------------------------
    // Steuerung initialisieren
    // -------------------------------------------------------------------------------------------------------------
    // Mit .each() skalierbar für eine (vor dieser Funktion im document.ready) dynamisch generierte Steuerung 
    // -------------------------------------------------------------------------------------------------------------

       $(_SELECTOR_LIFESTREAM_NAV).not(".yahoo").each(function(intIndex)
       {
       // ----------------------------------------------------------------------------------------------------------
       // Zunächst HTML entsprechend Cookie ändern
       // ----------------------------------------------------------------------------------------------------------
          
       // Cookie-Namen ermitteln
          var stream = $(this).attr("stream"); 
          
       // Default-Status ermitteln
          var status_default = $(this).attr("status"); 
          
       // Status aus Cookie lesen    
          var status_cookie = cookies(stream);
          
          if ((!status_cookie) || (status_cookie == ""))
          {
          // Status in Cookie schreiben
             cookies(stream,status_default);
          }          
          
          if (status_cookie != status_default)
          {
          // Status in HTML schreiben
             $(this).attr("status",status_cookie);
          }
          
       // ----------------------------------------------------------------------------------------------------------
       // Startkonfiguration in Anzeige-Attribut schreiben
       // ----------------------------------------------------------------------------------------------------------
          
       // Status einlesen
          var status = $(this).attr("status"); 
          
       // Bisherigen String einlesen
          var stream_alt = $(_SELECTOR_LIFESTREAM_MENU).attr("anzeige");
          
       // Zusätzlichen String einlesen
          var stream_neu = $(this).attr("stream"); 
          
       // String ergänzen
          if ((stream_alt) && (stream_alt != ""))
          {
             if (status == "1")
             {
             // Nur bei Status 1 ergänzen
                var stream = stream_alt+", ."+stream_neu;
             }
             else
             {
             // Sonst nicht ergänzen
                var stream = stream_alt;
             }
          }
          else
          {
             if (status == "1")
             {
             // Nur bei Status 1 ergänzen
                var stream = "."+stream_neu;
             }
          }
          
       // String einsetzen
          $(_SELECTOR_LIFESTREAM_MENU).attr("anzeige",stream);

       // ----------------------------------------------------------------------------------------------------------
       // Startkonfiguration in Params-Attribut schreiben
       // ----------------------------------------------------------------------------------------------------------
          
       // Bisherige Params einlesen
          var params_alt = $(_SELECTOR_LIFESTREAM_MENU).attr("params");
          
       // Zusätzliches Param einlesen
          var params_neu = $(this).attr("stream"); 
          
       // Params ergänzen
          if ((params_alt) && (params_alt != ""))
          {
             var params = params_alt+";"+params_neu+","+params_neu;
          }
          else
          {
             var params = params_neu+","+params_neu;
          }
          
       // String einsetzen
          $(_SELECTOR_LIFESTREAM_MENU).attr("params",params);

       // ----------------------------------------------------------------------------------------------------------
       // Startkonfiguration in Links anpassen
       // ----------------------------------------------------------------------------------------------------------
       
          var text = $(this).text();
       
          $(this).empty().append('<img src="img/nav_'+status+'.png" width="11" height="11" border"0"> '+text);

       // ----------------------------------------------------------------------------------------------------------
       // Title-Attribut anpassen
       // ----------------------------------------------------------------------------------------------------------
       
       // Status einlesen
          var stream = $(this).attr("stream"); 
          
       // Title-Attribut aktualisieren
          $(this).attr("title",projektMap(stream));
       });
       
    // -------------------------------------------------------------------------------------------------------------
    // Klick: Navigation
    // -------------------------------------------------------------------------------------------------------------
    
       $(_SELECTOR_LIFESTREAM_NAV).click(function()
       {    
          var status = $(this).attr("status");
          var stream = $(this).attr("stream");
          var filter = "."+stream;
          
          if(status == 1)
          {
          // Status Ändern und Bild wechseln  
             $(this).attr("status",0).children().filter("img").attr("src","img/nav_0.png");

          // Elemente verstecken
             $(filter).css("display","none");
          // $(filter).slideUp(); // Performance...
          
          // Status in Cookie schreiben          
             cookies(stream,"0");
          }
          else if(status == 0)
          {
          // Status Ändern und Bild wechseln  
             $(this).attr("status",1).children().filter("img").attr("src","img/nav_1.png");

          // Elemente zeigen
             $(filter).css("display","block");
          // $(filter).slideDown(); // Performance...
          
          // Status in Cookie schreiben          
             cookies(stream,"1");
          }
       
       // Funktion beenden
          return false;
       });
       
    // -------------------------------------------------------------------------------------------------------------
    // Klick: Menü-Items toggeln
    // -------------------------------------------------------------------------------------------------------------
    
       $(".menu h2 a").click(function()
       {
       // Toggle-Daten einlesen
          var element =  $(this).parent().next().attr("id");
          var klasse =   $(this).parent().next().attr("class");
          
       // Adressleiste aktualisieren
          var hash =     $(this).parent().parent().attr("rel");
          window.location.hash = "#"+hash;
          
       // Helper: Layer Toggle
       // toggleLayers(element,klasse);
       // Toggle wird von der jsHistory() übernommen
       
       // Funktion beenden
          return false;
       });
       
    // Document Ready Ende
    // -------------------
    });

 // ----------------------------------------------------------------------------------------------------------------
 // Funktion: Änderung des URL-Hashs bemerken und entsprechend togglen
 // ----------------------------------------------------------------------------------------------------------------
 
    function jsHistory()
    {       
    // Hash ermitteln
       var hash = jsHistoryHashUrl("kurz");
       
    // Bisherigen Hash ermitteln
       var hash_alt = $("#menus").attr("current");
       
    // Wenn kein Hash gesetzt ist
       if ((!hash) || (hash == ""))
       {
       // Default-Hash verwenden
          var hash = $("#menus").attr("default");
       }
       
       if (hash != hash_alt)
       {
       // Selector zusammensetzen
          var selector = "div[rel = "+hash+"]";
       
       // Toggle-Daten einsammeln
          var element =  $(selector).attr("id");
          var element =  element+"Inhalt";
          var klasse =   $(selector).attr("class");
          var klasse =   klasse+"Inhalt";
          var schalter = "an";
          
       // Layer togglen
          toggleLayers(element,klasse,schalter);
       
       // Neuen Titel einsetzen
          document.title = "Sefzig.net | "+hash;
       
       // Neuen Hash einsetzen
          window.location.hash = "#"+hash;
       
       // Neuen Bisherigen Hash einsetzen
          $("#menus").attr("current",hash);
       }
       
    // Funktion beenden
       return false;
    }

 // ----------------------------------------------------------------------------------------------------------------
 // Funktion: Layer toggeln
 // ----------------------------------------------------------------------------------------------------------------
 
    function toggleLayers(element,klasse,schalter)
    {
    // Fallback
       if ((!element) || (element == ""))
       {
       // Funktion beenden
          return false;
       }   
       
    // Fallabhängig Klasse verbergen
       if ((klasse) && (klasse != ""))
       {
       // Klasse verbergen
       // $("."+klasse).css("display","none");
          $("."+klasse).slideUp(300);
       }   
       
    // Fallabhängig CSS Display setzen
       if (schalter == "an")
       {
       // Inhalt anzeigen
          var display = "block"; 
       }   
       else if (schalter == "aus")
       {
       // Inhalt verbergen
          var display = "none"; 
       }
       else
       {
       // Display ermitteln
          var display = $("#"+element).css("display"); 
          
       // Fallabhängig CSS Display setzen
          if (display == "none")
          {
          // Display anzeigen
             var display = "block"; 
          }           
          else if (display == "block")
          {
          // Display verbergen
             var display = "none";
          }    
          else
          {
          // Inhalt verbergen
             var display = "none"; 
          }
       }
       
    // Inhalt toggeln
    // $("#"+element).css("display",display);
       
       if (display == "block")
       {
       // Inhalt anzeigen
          $("#"+element).slideDown(300);
       }   
       else
       {
       // Inhalt verbergen
          $("#"+element).slideUp(300);
       }
       
    // Funktion beenden
       return false;
    }

 // ----------------------------------------------------------------------------------------------------------------
 // Helper: Hash aus URL lesen
 // ----------------------------------------------------------------------------------------------------------------

    function jsHistoryHashUrl(format)
    {
       var hashUrl = window.location.hash;

       if (format == "kurz") { var hashUrl = hashUrl.replace("#",""); }

       return hashUrl;
    }

 // ----------------------------------------------------------------------------------------------------------------
 // Helper: Cookies
 // ----------------------------------------------------------------------------------------------------------------
 // Jquery Cookie Plugin, http://plugins.jquery.com/project/cookie
 // ----------------------------------------------------------------------------------------------------------------
          
    function cookies(name,value)
    {
       if ((value) && (value != ""))
       {
          $.cookie("Sefzig-net_"+name, value, { expires: 30, path: '/', domain: 'sefzig.net', secure: false });
       }
       else
       {
          var value = $.cookie("Sefzig-net_"+name);
          
       // Wert antworten
          return value;
       }
    }