/* Kapselung des jQuery-Objects, damit andere Javascript-Frameworks mit $-Funktion laufen koennen */
var SB_JS = {};
SB_JS.jquery = jQuery.noConflict(true);

(function($){

    /* ACHTUNG: Bitte jegliches Javascript in dieser Function anlegen!
    * (wird auf document.ready ausgefuehrt)
    */
    $(document).ready(function(){

        /* Javascript nur ausfuehren, wenn der Browser Styles anzeigen kann, d.h. im speziellen Fall wird geprueft, ob Styles geladen sind anhand des Parameters "background-repeat" (default = repeat, hier: repeat-x). Und zwar, weil sich die Anzeige ohne Styles teilweise anders verhalten muss. Die meisten Javascript-Features sind naemlich nur fuer optische Effekte gedacht.
        */
        if(!($('body').css('background-repeat') == 'repeat-x')){
            return false;
        }

        //~ Wenn JS aktiviert ist, wird der Kopfbereich fixiert, da im CSS die Hoehe per em angegeben ist und diese beim Zoomen mitwaechst
        $('#kopf, #logo').height('174px');

        /* spezielle Klasse, die fuer eingesetzt Faelle eingesetzt werden kann, bei denen eine spezielle Anzeige nur gelten soll, falls Javascript aktiviert ist (Beispiel: Werbebanner rechts)
        */
        $('html').addClass('js_enabled');

        /* alles, was ohne javascript unsichtbar ist, sichtbar machen */
        $(".js-unsichtbar").show();


        /* divs unterhalb dem span.klapper verbergen */
        $("a.klapper").parent().next('div').hide();

        /* class fuer Pfeil und title-Attribut nur ueber Javascript setzen */
        $("a.klapper").removeClass('klapper').addClass('aufklappen').attr({title: 'aufklappen'});

        /* class fuer Pfeil und title-Attribut fuer ausgeklappte Boxen */
        $("a.nonklapper").removeClass('nonklapper').addClass('zuklappen').attr({title: 'zuklappen'});

        /* Auf- und Zuklappen auf click (und Enter fuer Tastaturnutzer) */
        $("a.aufklappen,a.zuklappen")
        .click(function(){
            aufundzu(this);
            return false;
        });

        /* Tabs basierend auf jQuery UI */
        $("div.tabs div ul.sprungmarken").tabs( { fx: { opacity: 'toggle', duration: 'fast' } } );

          /* ein kleine Kruecke, nur fuer den alten gebrechlichen IE6 */
          /* flackernde Hintergrundgrafiken auf hover unterbinden siehe hier:
          http://www.mister-pixel.com/#Content__state=is_that_simple
          */

          if($.browser.msie && $.browser.version.substr(0,3)=="6.0"){
            try {
                document.execCommand("BackgroundImageCache", false, true);
            } catch(err) {}
          }

          /* Funktionen zum Ausklappen der Haupt- und Servicenavigation auf Mouseover
             nicht fuer IE 7 diesr hat ein Zoom Problem und kann die Hoehen und Weiten nicht ausrechnen, daher dort NUR per CSS
          */
          //~ #navi
          if(!$.browser.msie ||($.browser.msie && $.browser.version.substr(0,1)!="7")){
            $('#navi > li')
            .mouseover(function(){
                /* Rendering Bug im IE6: augeklappte Menues werden von select-Boxen ueberdeckt und Menuepunkte sind deshalb nicht mehr lesbar */
                $('select').css( { visibility:"hidden" } );
                showNaviFlyer(this);
            })
            .mouseout(function(){
                destroyNaviFlyer(this);
                $('select').css( { visibility:"visible" } );
            });
          }
          //~ Ausklappen der Hauptnavi Punkte bei Steuerung mit der Tastatur
          $('#navi li ul a')
          .focus(function(){
             if($.browser.msie && $.browser.version.substr(0,1)!="7"){
              showNaviFlyer($(this).parents('li[id]'));
            }else{
              $(this).parents('ul').addClass('aufklapp');
            }
          })
           .blur(function(){
            if($.browser.msie && $.browser.version.substr(0,1)!="7"){
              destroyNaviFlyer($(this).parents('li["id"]'));
            }else{
              $('#navi li ul').removeClass('aufklapp')
            }
          })
          ;

        //~ #service
        $('#service li.aufklapp')
        .mouseover(function(){
          showServiceFlyer(this);
        })
        .mouseout(function(){
          destroyServiceFlyer(this);
        })
        ;

        //~ Ausklappen der Service Punkte bei Steuerung mit der Tastatur (alle Browser)
        var oListenLi = $('#service li');
        $('li a',oListenLi)
        .focus(
          function(){
            showServiceFlyer($(this).parents('li.aufklapp'));
         }
        )
        .blur(
          function(){
            destroyServiceFlyer($(this).parents('li.aufklapp'));
          }
        )
        ;


          /**
          * allgemein benoetigte Funktionen
          */
            /* Function zum Aufklappen der service aufklapp Flyer */
            function showNaviFlyer(oEl){
              //~ pixelgenaue Ausrichtung der Dropdown-Menues
              var liOffset      = $(oEl).offset();
              var liOuterHeight = $(oEl).outerHeight(true);
              var menuTop       = liOffset.top + liOuterHeight-2;
              var menuLeft      = liOffset.left;
              $('ul',oEl).css(
                                {
                                  'position':'absolute'
                                  ,'z-index':'1000'
                                  ,'left':menuLeft
                                  ,'top':menuTop
                                }
                              );
            }
            /* Function zum Zuklappen der service aufklapp Flyer */
            function destroyNaviFlyer(oEl){
              $('ul',oEl).removeClass('aufklapp');
              $(oEl).removeClass('aufklappen');
              $('ul',oEl).removeAttr('style');
            }

            /* Function zum Aufklappen der service aufklapp Flyer */
            function showServiceFlyer(oEl){
              $(oEl).addClass('aufklappen');
              $('ul',oEl).addClass('aufklapp');
              //~ pixelgenaue Ausrichtung der Dropdown-Menues
              var liOffset      = $(oEl).offset();
              var liOuterHeight = $(oEl).outerHeight(true);
              var menuTop       = liOffset.top + liOuterHeight;
              var menuLeft      = liOffset.left;

              if($.browser.msie && $.browser.version.substr(0,1)=="7"){
                menuTop       = '12.2em';
                menuLeft      = '21.6em';
                if($(oEl).attr('id') == 'hilfe'){
                  menuLeft      = '26.7em';
                }

              }
              $('ul',oEl).css(
                                {
                                  'position':'absolute'
                                  ,'z-index':'1000'
                                  ,'left':menuLeft
                                  ,'top':menuTop
                                }
                              );
            }
            /* Function zum Zuklappen der service aufklapp Flyer */
            function destroyServiceFlyer(oEl){
              $('ul',oEl).removeClass('aufklapp');
              $(oEl).removeClass('aufklappen');
              $('ul',oEl).removeAttr('style');
            }

            /* Function fuers Auf- und Zuklappen auf click */
            function aufundzu(meineBox) {
                var meinDiv     = $(meineBox).parent().next('div');
                var meinAnker   = $(meineBox);

                meinDiv.toggle({ fx: { opacity: 'toggle', duration: 'fast' } } );

                /* wenn der Inhalt ausgeklappt ist */
                if(meinAnker.hasClass('.aufklappen')){
                    meinAnker.removeClass('aufklappen').addClass('zuklappen').attr({title: 'zuklappen'});
                } else {
                    meinAnker.removeClass('zuklappen').addClass('aufklappen').attr({title: 'aufklappen'});
                }
            }
    });
})(SB_JS.jquery);
