﻿/**
 * central jQuery init block
 * @project WTK_Hybrid_new_old
 * @notes alle CSS-Abhängigkeiten sind ggf. projektspezifisch anzupassen!
 * @see http://docs.jquery.com/Selectors
 */

var currentFancybox = ''; 

// cookie functions http://www.quirksmode.org/js/cookies.html
jQuery.fn.createCookie = function(name,value,days) {
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
    
    //alert('Click-createCookie: '+name);
}

jQuery.fn.readCookie = function(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++)
    {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) {
                //alert('Click-readCookie: '+c.substring(nameEQ.length,c.length));
                return c.substring(nameEQ.length,c.length);
        }
    }

    return null;
}

jQuery.fn.eraseCookie = function(name) {
    $(this).createCookie(name,"",-1);
    //alert('Click-eraseCookie');
}

// Language definition for QuickSearch
var quickSearchText = {
    "de" : "Sucheingabe",
    "en" : "Search Term",
  "cn" : "关键词",
  "hr" : "Search Term",
  "si" : "Search Term"
};

// Language definition for ticketForm
var ticketFormText = {
    "de" : "Bahnhof / Haltestelle",
    "en" : "Station"
};

// Language definitions for jQuery.UI.Datepicker:
$.datepicker.regional['de'] = {
  closeText: 'schließen',
  prevText: '&#x3c;zurück',
  nextText: 'Vor&#x3e;',
  currentText: 'heute',
  monthNames: [
        'Januar',
        'Februar',
        'März',
      'April',
      'Mai',
      'Juni',
      'Juli',
      'August',
      'September',
      'Oktober',
      'November',
      'Dezember'
  ],
  monthNamesShort: [
      'Jan',
      'Feb',
      'Mär',
      'Apr',
      'Mai',
      'Jun',
      'Jul',
      'Aug',
      'Sep',
      'Okt',
      'Nov',
      'Dez'
  ],
  dayNames: [
      'Sonntag',
      'Montag',
      'Dienstag',
      'Mittwoch',
      'Donnerstag',
      'Freitag',
      'Samstag'],
  dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
  dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
  dateFormat: 'dd.mm.yy',
  firstDay: 1,
  isRTL: false
};

$.datepicker.regional['fr'] = {
  closeText: 'Fermer',
  prevText: '#x3c;Préc',
  nextText: 'Suiv&#x3e;',
  currentText: 'Courant',
  monthNames: [
      'Janvier',
      'Février',
      'Mars',
      'Avril',
      'Mai',
      'Juin',
      'Juillet',
      'Août',
      'Septembre',
      'Octobre',
      'Novembre',
      'Décembre'
  ],
  monthNamesShort: [
      'Jan',
      'Fév',
      'Mar',
      'Avr',
      'Mai',
      'Jun',
      'Jul',
      'Aoû',
      'Sep',
      'Oct',
      'Nov',
      'Déc'
  ],
  dayNames: [
      'Dimanche',
      'Lundi',
      'Mardi',
      'Mercredi',
      'Jeudi',
      'Vendredi',
      'Samedi'
  ],
  dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
  dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
  dateFormat: 'dd/mm/yy',
  firstDay: 1,
  isRTL: false
};

$.datepicker.regional['cn'] = {
  monthNames: ['一月','二月','三月','四月','五月','六月',
  '七月','八月','九月','十月','十一月','十二月'],
  monthNamesShort: ['一','二','三','四','五','六',
  '七','八','九','十','十一','十二'],
  dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
  dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
  dayNamesMin: ['日','一','二','三','四','五','六'],
  dateFormat: 'yy-mm-dd', firstDay: 1,
  prevText: '&#x3c;上月', prevStatus: '显示上月',
  prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '显示上一年',
  nextText: '下月&#x3e;', nextStatus: '显示下月',
  nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '显示下一年',
  currentText: '今天', currentStatus: '显示本月',
  todayText: '今天', todayStatus: '显示本月',
  clearText: '清除', clearStatus: '清除已选日期',
  closeText: '关闭', closeStatus: '不改变当前选择',
  yearStatus: '选择年份', monthStatus: '选择月份',
  weekText: '周', weekStatus: '年内周次',
  dayStatus: '选择 m月 d日, DD', defaultStatus: '请选择日期',
  isRTL: false
};

$.datepicker.regional['sl'] = {
  monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
  'Julij','Avgust','September','Oktober','November','December'],
  monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
  'Jul','Avg','Sep','Okt','Nov','Dec'],
  dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','&#x10C;etrtek','Petek','Sobota'],
  dayNamesShort: ['Ned','Pon','Tor','Sre','&#x10C;et','Pet','Sob'],
  dayNamesMin: ['Ne','Po','To','Sr','&#x10C;e','Pe','So'],
  dateFormat: 'dd.mm.yy', firstDay: 1,
  prevText: '&lt;Prej&#x161;nji', prevStatus: 'Prika&#x17E;i prej&#x161;nji mesec',
  prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',
  nextText: 'Naslednji&gt;', nextStatus: 'Prika&#x17E;i naslednji mesec',
  nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',
  currentText: 'Trenutni', currentStatus: 'Prika&#x17E;i trenutni mesec',
  todayText: 'Trenutni', todayStatus: 'Prika&#x17E;i trenutni mesec',
  clearText: 'Izbri&#x161;i', clearStatus: 'Izbri&#x161;i trenutni datum',
  closeText: 'Zapri', closeStatus: 'Zapri brez spreminjanja',
  yearStatus: 'Prika&#x17E;i drugo leto', monthStatus: 'Prika&#x17E;i drug mesec',
  weekText: 'Teden', weekStatus: 'Teden v letu',
  dayStatus: 'Izberi DD, d MM yy', defaultStatus: 'Izbira datuma',
  isRTL: false
};

$.datepicker.regional['si'] = {
  monthNames: ['Januar','Februar','Marec','April','Maj','Junij',
  'Julij','Avgust','September','Oktober','November','December'],
  monthNamesShort: ['Jan','Feb','Mar','Apr','Maj','Jun',
  'Jul','Avg','Sep','Okt','Nov','Dec'],
  dayNames: ['Nedelja','Ponedeljek','Torek','Sreda','&#x10C;etrtek','Petek','Sobota'],
  dayNamesShort: ['Ned','Pon','Tor','Sre','&#x10C;et','Pet','Sob'],
  dayNamesMin: ['Ne','Po','To','Sr','&#x10C;e','Pe','So'],
  dateFormat: 'dd.mm.yy', firstDay: 1,
  prevText: '&lt;Prej&#x161;nji', prevStatus: 'Prika&#x17E;i prej&#x161;nji mesec',
  prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',
  nextText: 'Naslednji&gt;', nextStatus: 'Prika&#x17E;i naslednji mesec',
  nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',
  currentText: 'Trenutni', currentStatus: 'Prika&#x17E;i trenutni mesec',
  todayText: 'Trenutni', todayStatus: 'Prika&#x17E;i trenutni mesec',
  clearText: 'Izbri&#x161;i', clearStatus: 'Izbri&#x161;i trenutni datum',
  closeText: 'Zapri', closeStatus: 'Zapri brez spreminjanja',
  yearStatus: 'Prika&#x17E;i drugo leto', monthStatus: 'Prika&#x17E;i drug mesec',
  weekText: 'Teden', weekStatus: 'Teden v letu',
  dayStatus: 'Izberi DD, d MM yy', defaultStatus: 'Izbira datuma',
  isRTL: false
};
$.datepicker.regional['hr'] = {
  monthNames: ['Siječanj','Veljača','Ožujak','Travanj','Svibanj','Lipanj',
  'Srpanj','Kolovoz','Rujan','Listopad','Studeni','Prosinac'],
  monthNamesShort: ['Sij','Velj','Ožu','Tra','Svi','Lip',
  'Srp','Kol','Ruj','Lis','Stu','Pro'],
  dayNames: ['Nedjelja','Ponedjeljak','Utorak','Srijeda','Četvrtak','Petak','Subota'],
  dayNamesShort: ['Ned','Pon','Uto','Sri','Čet','Pet','Sub'],
  dayNamesMin: ['Ne','Po','Ut','Sr','Če','Pe','Su'],
  dateFormat: 'dd.mm.yy', firstDay: 1,
  prevText: '&#x3c;', prevStatus: 'Prikaži prethodni mjesec',
  prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',
  nextText: '&#x3e;', nextStatus: 'Prikaži slijedeći mjesec',
  nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',
  currentText: 'Danas', currentStatus: 'Današnji datum',
  todayText: 'Danas', todayStatus: 'Današnji datum',
  clearText: 'izbriši', clearStatus: 'Izbriši trenutni datum',
  closeText: 'Zatvori', closeStatus: 'Zatvori kalendar',
  yearStatus: 'Prikaži godine', monthStatus: 'Prikaži mjesece',
  weekText: 'Tje', weekStatus: 'Tjedan',
  dayStatus: '\'Datum\' D, M d', defaultStatus: 'Odaberi datum',
  isRTL: false
};
var timeRegional = {
    "de": {
        time: function (hour) { return " Uhr" },
        dateFormat: "dd.mm.yy"
    },
    "en": {
        time: function (hour) { return " h" },
        dateFormat: "dd/mm/yy"
    },
    "hr": {
        time: function (hour) { return " h" },
        dateFormat: "dd/mm/yy"
    },
    "si": {
        time: function (hour) { return " h" },
        dateFormat: "dd/mm/yy"
    },
    "cn": {
        time: function (hour) { return " h" },
        dateFormat: "yy/mm/dd"
    },
    "fr": {
        time: function (hour) { return " h" },
        dateFormat: "dd/mm/yy"
    }
};
var getNowFormatted = function () {

    // internal ~private~ function
    function /*String*/twoDigitNumber(/*{Number}*/number) {
        iNumber = parseInt(number);
        if (!isNaN(iNumber) && iNumber < 10) {
            number = "0" + iNumber;
        }
        return "" + number;
    }

    var dateTime = "01.01.1900, 00:00 Uhr";
    
    var today  = new Date();
    var year   = today.getFullYear();
    var month  = twoDigitNumber(today.getMonth() + 1); // +1, we do NOT want zero-based month index
    var day    = twoDigitNumber(today.getDate());
    var hour   = twoDigitNumber(today.getHours());
    var minute = twoDigitNumber(today.getMinutes());
    var curDateFormat = timeRegional[currentPageLanguage].dateFormat;

    dateTime = curDateFormat.replace("yy", year)
                            .replace("mm", month)
                            .replace("dd", day)
                            + ", "
                            + hour
                            + ":"
                            + minute
                            + timeRegional[currentPageLanguage].time(today.getHours());
    
    return dateTime;
}

/**
 * Schriftvergroesseerung mit extra Files
 * - gebunden an 'title' vom 'rel="alternate stylesheet"'
 * @see CookieName: MSTstyle
 */
$.fn.switchStylestyle = function(styleName){

    $('link[rel*=style][title]').each(function(i) 
    {
        this.disabled = true;
        if (this.getAttribute('title') == styleName) this.disabled = false;
    });
    $(this).createCookie('VTstyle', styleName, 365);
}

/**
 * Schriftvergroesseerung in Stufen
 * - hier sind es 3
 * - gebunden an 'li class="AAA"'
 * @see CookieName: VTstyle
 */
var SchriftVT = {
    s_id:0,                     //internal Brain 4 status
    s: [12, 13, 15 ],   //here the 3 Fontsizes in px - or better in em?
    
    /* 4the future oso */
    init: function() {
    },
    next: function() {

            this.s_id = (this.s_id<2    ?   this.s_id+1 :   0);

            $('body').css('font-size', ''+this.s[this.s_id]+'px');
            $(this).createCookie('VTstyle', this.s_id, 365);
    },
    /* get the current Cookie and use it */
    get: function() {
        var c = $(this).readCookie('VTstyle');

        //0 is valid!!
        c = (c != '' && parseInt(c)<3 ? parseInt(c) : 0);

        this.s_id = c; //dort machen wir weiter
        $('body').css('font-size', ''+this.s[this.s_id]+'px');
    }
}

/**
 * All the rest for the navigation CSS can't do ...
 */
var tabNavigationFix = function () {
    /*
        Here could be checked the positioning of the layer for the second level
        navigation. I. e. wether the layer would overlap the right page limit in
        default position, this may be fixed here ... 
        
    */
    
    /* Fixes the missing LI:hover for IE6 ... */
    if (
        false && // nobody wants this ;-)
        $.browser.msie &&
        $.browser.version.indexOf("6") === 0
    ) {
        $(".TabNavigation>UL>LI").mouseover(
            function () {
                $(this).children("DIV.second-level").css("display", "block")
            }
        );
        $(".TabNavigation>UL>LI").mouseout(
            function () {
                $(this).children("DIV.second-level").css("display", "none")
            }
        );
    }
}

/**
 * Animiert einen Slider für den History Zeitstrahl.
 * @author Robert Agthe
 */
var historyTimeSlider = function() {
  if($('div.Time').length)
  {
    var debug = false;
    var mid;
    var now;
    var next;
    var active;
    var move;
    var init;
    var index_year;
    var elements;
    var all_a = new Array();
    var ie = 0;

    $('div.Time a').each(function(i,val){
      all_a.push($(this).position());
    })

    // Werte Updaten
    var update = function(){
      mid = $('div.HistoryContent').width()/2;
      now = $('div.Time a').position().left;
      active = ($('div.Time a.active').position().left)+($('div.Time a.active').width()/2);
      init = (mid-active);
      index_year = $('div.Time a').index($('div.Time a.active'));
      elements = $('div.Time a').length;
      if(index_year<(elements-1))
      {
        next = ($('a.active').next().position().left)+($('a.active').next().width()/2);
      }
      move = Math.abs(next-active)
      if($.browser.msie && $.browser.version < 8){
        ie = 14
      }

      // Debug Ausgabe für Console
      if(debug)
      {
        console.log('---');
        console.log(elements+' a Elemente vorhanden');
        console.log(index_year+1+' tes Element aktiv');
        console.log('Pixel von Links zur Mitte: '+mid);
        console.log('Start a Left: '+now);
        console.log('Pixel von Links zum nächsten Active: '+next);
        console.log('Aktuell: '+active);
        console.log('zu Verschieben: '+move+' init:'+init);
      }
    }

    // Werte Updaten 
    update();

    // Initialisieren und Zeitstrahl zum aktuellen Element schieben
    $('div.Time a').animate({left:init+ie},'slow');
    $('div.HistoryContent div').eq(index_year).fadeIn('fast');

    // Event wenn ich auf eine Jahrezahl klicke
    $('div.Years a').live('click',function(){
      $('div.Years a').removeClass('active');
      $(this).addClass('active');
      $('div.Time a').animate(
        {
          left: (mid-(all_a[$(this).index()].left+($('div.Time a.active').width()/2)))+ie},'slow',function(){
          update();
          $('div.HistoryContent div').eq(index_year).fadeIn('fast');
        });
      $('div.HistoryContent div').fadeOut('fast');
      
    });

    // Event Rechtsklick
    $('div.arrowRight').live('click',function(){
      index_year++;
      if(index_year < elements)
      {
        var element = $('a.active');
        element.next().addClass('active');
        element.removeAttr('class');
        $('div.HistoryContent div').fadeOut('fast');
        $('div.Time a').animate({left:'-='+move},'slow',function(){
          update();
          $('div.HistoryContent div').eq(index_year).fadeIn('fast');
        });
      }
    })

    // Event Linksklick
    $('div.arrowLeft').live('click',function(){
      index_year--;
      if(index_year > Number(-1))
      {
        var element = $('a.active');
        element.prev().addClass('active');
        element.removeAttr('class');
        $('div.HistoryContent div').fadeOut('fast');
        $('div.Time a').animate({left:'+='+move},'slow',function(){
          update();
          $('div.HistoryContent div').eq(index_year).fadeIn('fast');
        });
      }
    })
  }
}

/*
 * Zeigt bei einen Map Rollover einen Layer mit weiteren
 * Informationen an.
 *
 * @author Robert Agthe
 */
var orgLayer = function() {

  // Klassen für die Selektoren
  // festlegen
  var class_maps = 'orgMaps';
  var class_layers = 'orgLayer';
  $('div.orgMaps').parent().attr({style: "position:relative;z-index:1700"})
  // Prüfen ob HTML Elemente existieren...
  if($('div.'+class_maps).length && $('div.'+class_layers).length) {

    // Variablen für die aktuellem
    // Mouspositionen
    var mousex;
    var mousey;

    // Alle Layer selektieren
    var allLayer = $('.'+class_layers);

    // Tracken der Mausbewegungen
    /*$(document).mousemove(function(e){
      mousex = e.pageX;
      mousey = e.pageY;
    });*/

    /*
     * Funktion zum festlegen der Events für die Image Map
     * @author Robert Agthe
     */
    var orgMapChange = function(area,imgtag,img1,img2,layer) {

      // Event für Info Click definieren
      $(area).live('click', function(){

        // Sicherstellen das alle Layer ausgeblendet sind!
        allLayer.hide();

        // Layer Positionieren und einblenden
        $(layer).css({
          position:'absolute',
          opacity:0,
          //left:mousex+10,
          //top:mousey-($(layer).height()/2)
          left: $('div.orgMaps').position().left+295+'px',
          top: $('div.orgMaps').position().top+45+'px'
        }).show();

        // Layer einfaden
        $(layer).animate({opacity:1},'slow');

      });

      $('div.orgClose').live('click', function(){
        // Langsam ausblenden
        $(layer).animate({opacity:0},'slow',function(){
          $(this).hide();
        });
      })
      // Event für Mouseover definieren
      $(area).live('mouseover', function(){

        // Bild wechseln
        $(imgtag).attr('src',img2);

      })

      // Event für Mouseout definieren
      $(area).live('mouseout', function() {
        // Bild zum Ausgangsbild wechseln
        $(imgtag).attr('src',img1);
      })

    }

    // Events für Transit Karte definieren
    orgMapChange(
      '#org_map_transit_1', 			// Selektor Area Tag
      'div.orgMapTransit img', 		// Selektor Image Map Bild
      'images/org_map_transit_1.png', // Pfad Ausgangsbild
      'images/org_map_transit_2.png', // Pfad Rolloverbild
      'div#orgLayerTransit1' 			// Selektor Layer Div
    );

    // Events für Region Karte definieren
    orgMapChange(
      '#org_map_regions_1',
      'div.orgMapRegions img',
      'images/org_map_regions_1.png',
      'images/org_map_regions_5.png',
      'div#orgLayer1'
    );
    orgMapChange(
      '#org_map_regions_2',
      'div.orgMapRegions img',
      'images/org_map_regions_1.png',
      'images/org_map_regions_4.png',
      'div#orgLayer2'
    );
    orgMapChange(
      '#org_map_regions_3',
      'div.orgMapRegions img',
      'images/org_map_regions_1.png',
      'images/org_map_regions_3.png',
      'div#orgLayer3'
    );
    orgMapChange(
      '#org_map_regions_4',
      'div.orgMapRegions img',
      'images/org_map_regions_1.png',
      'images/org_map_regions_2.png',
      'div#orgLayer4'
    );
  }
}

/*
 * Ändert die gewöhnliche Selectbox in ein div konstrukt das Stylebar ist
 * @author Robert Agthe
 */
$.fn.select2div = function (after_select) {

  // Variablen deklarieren
  var element = this;
  var options_arr = element.find('option');
  var selected_val = element.val();
  var selected_text = element.find('option:selected').text();

  // Konstruiert das Dropdown 
  var dropdown_construct = function () {
    // Prüfen ob Dropdown layer schon vorhanden ist..
    if(element.find('.select2div_dropdown').length == 0){
      // Layer DIV einfügen
      $(this).after('\
        <div class="select2div_dropdown" style="display:none;">\
          <ul>\
          \
          </ul>\
        </div>\
      ');

      // Optionen iterieren und anhängen
      $.each(options_arr, function(i,val) {
        element
          .find('.select2div_dropdown ul')
          .append('\
            <li>\
              <a rel="'+options_arr[i].value+'">\
                '+options_arr[i].text+'\
              </a>\
            </li>'
          );
      })

      element.find('.select2div_dropdown').slideDown('fast');
    }
    else
    {
      element.find('.select2div_dropdown').slideUp('fast',function(){
        $(this).remove();
      });
    }
  }

  // Aktionen nach einem Klick auf ein Item
  var accept_item = function() {
    selected_val = $(this).attr('rel');
    selected_text = $(this).text();
    element.find('.select2div_select span').text(selected_text);
    element.find('.select2div_select span').addClass("active");
    element.find('.select2div_dropdown').slideUp('slow',function(){
      $(this).remove();
    });

    // Funktion ausführen um parameter weiterzuleiten
    if(typeof(after_select) == 'function') {
      after_select.call(this, selected_val);
    }
    
  }

  // Selectbox löschen und DIV Container erstellen
  element
    .find('select')
    .replaceWith('\
      <div class="select2div_select">\
        <span>'+selected_text+'</span>\
      </div>\
    ');

  // Event definieren, wenn DIV Konstrukt angeklickt wird
  element
    .find('.select2div_select')
    .live('click', dropdown_construct);

  // Event, wenn auf ein neues Listelement geklickt wird
  element
    .find('.select2div_dropdown ul li a')
    .live('click', accept_item);
}



































$(document).ready(
    function(){
    // Umwandeln der Selectbox in ein div
    $('div.selectOrg').select2div(function(data){
        var tmp = data.split('::');
        if(tmp[0] == 'int') {
          $(this).attr('target', '_self');
          $(this).attr('href', urlPrefix+tmp[1]);
        } else {
          $(this).attr('target', '_blank');
          $(this).attr('href', tmp[1]);
        }
      });

        if (typeof(jsPathPrefix) === "undefined") {
            jsPathPrefix = "";
        }

        //supersleight
        if (
            $.browser.msie &&
            parseFloat($.browser.version) < 7
        ) {
            $('div#PageWrapper').supersleight();
        }

    //Menuelayer geht nach links auf wenn der Menuepunkt zu weit rechts steht, damit der Layer nicht nach rechts rausragt
    var offsetDiv = $('div.TabNavigation').offset();
    $('div.TabNavigation>ul>li').each(function(){
      var offsetLi = $(this).offset();
      //alert(offsetLi.left - offsetDiv.left);
      if ((offsetLi.left - offsetDiv.left) > 456) {
        $(this).find('div.second-level').attr({style: "left: auto; right: 0px; background-position: right bottom !important;"});
      }
    });


        //Tabellen einfaerben
        $('div#ContentContainer div.ContentCol table tr:nth-child(2n)').addClass("even");
        $('div#ContentContainer div.ContentCol table tr:first-child').addClass("head");
        //kein Trenner nach im ersten Sitetool
        $('ul.Sitetools li:first-child').attr({style: "background-image: none;"});

        //Teaser automatisch ausrichten: hier für 2- und 3-spaltige Ausgabe!
        if (!$('div#ContentContainer').hasClass("Wide")) {
            var boxWidthCounter = 0;
            $('div#ContentContainer div.ContentCol div.Content2Cols,div#ContentContainer div.ContentCol div.Content>div.DownloadTeaser,div#ContentContainer div.ContentCol>div.Box').each(
                function (idx, elm) {
                    if ($(elm).hasClass("Content2Cols")) {
                        boxWidthCounter++;
                    } else if ($(elm).hasClass("DownloadTeaser") || $(elm).hasClass("Box")) {
                       boxWidthCounter = 0;
                    }
                    if (boxWidthCounter == 2) {
                        $(elm).addClass("RightContentCol").after('<br class="clear" />');
                        boxWidthCounter = 0;
                    }
                }
            );
        } else {
            // Ausnahmen fuer die breite Seite
            $('div#ContentContainer.Wide div.ContentCol div.Content2Cols').each(
                function (idx, elm) {
                    if (idx % 3 == 2) {
                        $(elm).addClass("RightContentCol").after('<br class="clear" />');
                    }
                }
            )
        }
        //Wenn Navigationspunkt Unterpunkte enthaelt, dann Pfeil nach unten
        $('div#Navigation li ul').parent().addClass("open"); // hier für FIONA dann addClass("active open")
        $('div#Navigation ul ul li ul').parent().removeClass("open");
        $('div#Navigation li.active ul li.active').parent().parent().removeClass("active");
        //kein Margin oben bei ContentImg am Anfang
        $('div#ContentContainer div.ContentCol div.Content div.ContentImage:first').attr({style: "margin-top: 0px;"});
        //Abstand nach Galerie-Thumbs
        $('div#ContentContainer div.gallery-image:last-child').attr({style: "margin-bottom: 30px;"}).after('<br class="clear" />');
  //Sortierung Regionenlayer Gesellschaften und Marken
        $('div.orgLayer div.orgLayerItem:even').addClass("RightContentCol").after('<br class="clear" />');

        //Inline-editing: disable sortbuttons
        $('div.ContentCol div.editContent:first div.inlinebuttons a.editbutton.sort-up').addClass("disabled");
        $('div.ContentCol div.editContent:last div.inlinebuttons a.editbutton.sort-down').addClass("disabled");
        $('div#Navigation li.editContent:first-child > div.inlinebuttons > a.editbutton.sort-up').addClass("disabled");
        $('div#Navigation li.editContent:last-child > div.inlinebuttons > a.editbutton.sort-down').addClass("disabled");

//Downloads(uä Links) via CSS-Klasse mit Typ-Icon versehen: hier ist der Link innerhalb eines li und die class muss dort ran! 
        $('ul.LinkList li > a[href$=.pdf]').parent().addClass("PDF");
        $('ul.LinkList li > a[href$=.doc]').parent().addClass("DOC");
        $('ul.LinkList li > a[href$=.rtf]').parent().addClass("DOC");
        $('ul.LinkList li > a[href$=.xls]').parent().addClass("XLS");
        $('ul.LinkList li > a[href$=.zip]').parent().addClass("ZIP");
        $('ul.LinkList li > a[href$=.mov]').parent().addClass("MOV");
        $('ul.LinkList li > a[href$=.mp3]').parent().addClass("MP3");
        $('ul.LinkList li > a[href$=.txt]').parent().addClass("TXT");
        $('ul.LinkList li > a[href$=.png]').parent().addClass("IMG");
        $('ul.LinkList li > a[href$=.jpg]').parent().addClass("IMG");
        $('ul.LinkList li > a[href$=.gif]').parent().addClass("IMG");
        $('ul.LinkList li > a[href$=.bmp]').parent().addClass("IMG");
        //alle absoluten URIs im extra Fenster öffnen
        $("a[href^='http'],area[href^='http']").click(
            function () {
                this.target = "_blank";
            }
        );

        //PageTop
        $('#Totop').animate( { scrollTop: 0 }, 'slow' );

        //Schriftgrößen: Variante mit festen Größen
        //a) größe setzen
        SchriftVT.get();
        //b) größe aendern
        $('li.AAA').click(function() {
                SchriftVT.next();
        });

        // Banner-Tabs
        //$('#tabs').tabs({ fx: { opacity: 'toggle', duration:'normal'} });
        $('#tabs').tabs({ fx: {} });
        $("#tabs UL LI.tabs A").click( // pimpin' tabs to change the tabs-content's bg color
            function () {
                $("div#tabs").removeClass("White40 White60 White80 White100 Black40 Black60 Black80 Black100").addClass(this.rel);
            }
        );


















        $("A.fancybox").fancybox({
            'titleShow'     : true,
            'transitionIn'  : 'elastic',
            'transitionOut' : 'elastic',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',
            'titleFormat'   : function (title) {
                var retValue = "";
                retValue += '<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main"><p>';
                retValue += title;
                retValue += '</p>';
                var parentContainer = $(this.orig[0]).parent().parent().parent().parent();
                if (parentContainer.hasClass("DownloadTeaser")) {
                    retValue += "<ul class=\"LinkList\">" + $("DIV.content UL.LinkList", parentContainer).html() + "</ul>";
                }
                retValue += '</span><span id="fancybox-title-right"></span></span>';
                // <div class="Corners"><div class="BottomLeft"></div><div class="BottomRight"></div></div> 
                return retValue;
            }
        });
        $("DIV.fancybox").click(
            function () {
                $("A.fancybox", $(this).parent()).click();
            }
        );

        // forms and default iframe
        $("A.fancybox-iframe").fancybox({
            'autoScale'     : true,
            'autoDimensions': true,
            'width'			: 540,
            'height'        : 720,
            'transitionIn'  : 'none',
            'transitionOut' : 'none',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'iframe',
            'titleShow'     : false,
            'scrolling'     : 'auto'
        });
        $("A.fancybox-ajax").fancybox({
            'autoScale'     : true,
            'autoDimensions': true,
            'transitionIn'  : 'fade',
            'transitionOut' : 'fade',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'ajax',
            'titleShow'     : false,
            'onComplete'    : function () {
                $("fancybox-inner").css("overflow-x", "hidden");
                $.fancybox.resize();
            }
        });

        $("A.fancybox-media").fancybox({
            'autoScale'     : true,
            'autoDimensions': true,
            'transitionIn'  : 'fade',
            'transitionOut' : 'fade',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'ajax',
            'titleShow'     : false,
            'onComplete'    : function () {
                jQuery(html5media);
                $.fancybox.resize();
            },
            'onCleanup'     : function () {
            }
        });

        // Disruption
        $("A.fancybox-iframe-disruption").fancybox({
            'autoScale'     : true,
            'width'			: 540,
            'height'        : 185, //690,
            'transitionIn'  : 'none',
            'transitionOut' : 'none',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'iframe',
            'titleShow'     : false,
            'scrolling'     : 'no'
        });
        $("A.fancybox-iframe-bookmarks").fancybox({
            'autoScale'     : true,
            'width'			: 260,
            'height'        : 35, //350,
            'transitionIn'  : 'none',
            'transitionOut' : 'none',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'iframe',
            'titleShow'     : false,
            'scrolling'     : 'no',
            'onComplete'    : function () {
                $("#fancybox-frame").addClass("bookmarks");
            },
            'onClosed'    : function () {
                $("#fancybox-frame").removeClass("bookmarks");
            }
        });
        $("A.fancybox-ajax-bookmarks").fancybox({
            'autoScale'     : true,
            'autoDimensions': true,
            'width'			: 260,
            'height'        : 35, //350,
            'transitionIn'  : 'fade',
            'transitionOut' : 'fade',
            'easingIn'      : 'easeOutBack',
            'easingOut'     : 'easeInBack',            
            'type'			: 'ajax',
            'titleShow'     : false,
            'scrolling'     : 'no',
            'onComplete'    : function () {
                $("#fancybox-frame").addClass("bookmarks");
            },
            'onClosed'    : function () {
                $("#fancybox-frame").removeClass("bookmarks");
            }
        });
        /* * /
        if (
            $('body').hasClass("Form") &&
            top.currentFancybox != self.location.href // resizing fancybox procate a new content loading, so we have to check, to prevent eternal loop!
        ) {
            //alert("height: " + document.body.offsetHeight);
            //alert("width: " + document.body.offsetWidth);
            top.$('#fancybox-frame').css('height', document.body.offsetHeight + 10 + 'px');
            top.$('#fancybox-frame').css('width', document.body.offsetWidth + 10 + 'px');
            top.currentFancybox = self.location.href;
            top.$('#fancybox-frame').src = self.location.href;
            //top.$("#fancybox-outer").width(document.body.offsetWidth + 10);
            //top.$("#fancybox-outer").height(document.body.offsetHeight + 10);
            parent.$.fancybox.resize();
        }
        /* */
       //Video ohne Scrollbalken
       $('span#fancybox_media_tag').parent().attr({style: "overflow:hidden !important;"});

        $(".accordion").accordion({ animated: 'slide', collapsible: true });
        $(".accordion .ui-accordion-header:first-child").addClass("first");
       // $(".BoxContent.accordion").accordion({ fillSpace: true});

    tabNavigationFix();

        var datePickerLanguage = '';
        if (
            typeof(currentPageLanguage) !== "undefined" &&
            currentPageLanguage !== "en" &&
            typeof($.datepicker.regional[currentPageLanguage].closeText) !== "undefined"
        ) {
            datePickerLanguage = currentPageLanguage;
        }
        $.datepicker.setDefaults($.datepicker.regional[datePickerLanguage]);
        /*
        $("INPUT.DateField").datepicker(
            {
                showOn: 'button',
                buttonImage: ($.browser.msie && $.browser.version.indexOf("6") === 0) ? jsPathPrefix+'images/icon_calendar.gif' : jsPathPrefix+'images/icon_calendar.png',
                buttonImageOnly: false
            }
        );
        */
        $("INPUT.DateField").each(function(){
          var storeElementId = '#'+ $(this).attr('id') + '_store';
                $(this).datepicker(
                    {
                        showOn: 'button',
                        buttonImage: ($.browser.msie && $.browser.version.indexOf("6") === 0) ? jsPathPrefix+'images/icon_calendar.gif' : jsPathPrefix+'images/icon_calendar.png',
                        buttonImageOnly: false,
                altField: storeElementId, 
                    altFormat: 'dd.mm.yy'
                    }
                );
        });
        $(".Disruptions DIV.BoxContent H5").html(getNowFormatted());

        $("INPUT#QuickSearch").val(quickSearchText[currentPageLanguage]);
        $("INPUT#QuickSearch").focus(
            function () {
                if (this.value === quickSearchText[currentPageLanguage]) {
                    this.value = "";
                }
                $("div.TabNavigation ul li.QuickSearch div.suggest-layer").css("top", $("div.TabNavigation").height()).show();
                $("div.TabNavigation ul li.QuickSearch DIV.tagcloud").tagcloud(
                    {
                        //type: "sphere", power: .3, // power only works with 'sphere'
                        //type: "cloud", seed: 23, // seed only works with 'cloud'!
                        type: "list", 
                        sizemin: 11,
                        sizemax: 20,
                        colormin: "9C9C9C",
                        colormax: "000000",
                        height: 120
                    }
                );
            }
        );
        $("INPUT#QuickSearch").keyup(
            function () {
                if (this.value.length >= 3) {
                    // get by ajax the suggestions
                    var query = this.value;
          if (typeof(suggestUrl) !== "undefined") {
            
          
                      $.ajax(
                          {
                              url: suggestUrl + "&q=" + query,
                              context: $(".QuickSearch .suggest-layer .content"),
                              dataType: "html",
                              success: function (data, txtStatus, xhr) {
                                  this.html(
                    data.replace(
                      (
                        new RegExp(
                          '(href="[^"]*">)([^<]*)(' + query + ')([^<]*<)',
                          "gim"
                        )
                      ),
                      '$1$2<span class="TermHighlight">$3</span>$4'
                    )
  
                                  );
                                  $("div.TabNavigation ul li.QuickSearch div.suggest-layer div.content P.head").show();
                                  $("div.TabNavigation ul li.QuickSearch div.suggest-layer div.content UL.suggestions").show();
                              }
                          }
                      );
          }
          
                }
                if (this.value.length < 3) {
                    $("div.TabNavigation ul li.QuickSearch div.suggest-layer div.content UL.suggestions").hide();
                    $("div.TabNavigation ul li.QuickSearch div.suggest-layer div.content P.head").hide();
                }
            }
        );
        $("INPUT#QuickSearch").blur(
            function () {
                window.setTimeout(
                    function () {
                        if (this.value === "") {
                            this.value = quickSearchText[currentPageLanguage];
                        }
                        $("div.TabNavigation ul li.QuickSearch div.suggest-layer").hide();
                    },
                    1000
                );
            }
        );

        $("INPUT#from,INPUT#to").focus(
            function () {
                if (this.value === ticketFormText[currentPageLanguage]) {
                    this.value = "";
                }
            }
        ).blur(
            function () {
                if (this.value === "") {
                    this.value = ticketFormText[currentPageLanguage];
                }                
            }
        ).val(ticketFormText[currentPageLanguage]);

        $("div.ContentCol DIV.tagcloud").tagcloud(
            {
                //type: "sphere", power: .3, // power only works with 'sphere'
                //type: "cloud", seed: 23, // seed only works with 'cloud'!
                type: "list", 
                sizemin: 11,
                sizemax: 20,
                colormin: "9C9C9C",
                colormax: "000000",
                height: 120
            }
        );


        
        $("INPUT.NumberField").keyup(function() {
          $(this).val(this.value.replace(/\D/, ""));
        });

        /* outlet list an accordion */
        $(".outlet-list.accordion H3 A").click(
            function (evnt) {
                evnt.stopPropagation();
                return true;
            }
        );
        if (self.location.search.indexOf("outletid") !== -1) {
            var outletId = self.location.search.replace(/[\?\&]outletid=([^\&\#]*)/, "$1");
            $("H3#" + outletId).click();
        }

    // Gesellschaften und Marken: 
    // OrgMapsLayer Funktion ausführen!
    // @author Robert Agthe
    if(typeof(orgLayer) == 'function'){
      orgLayer();
    }

    // History Time Slider aktivieren
    // @author Robert Agthe
    if(typeof(historyTimeSlider) == 'function'){
      historyTimeSlider();
    }
    }
);

$(window).load(
    function(){
        /*  */
        // ContentImages in Content with caption / legend needs a width fix
        // found @http://www.blogrammierer.de/jquery-bildbreite-ermitteln-um-bildunterschriften-korrekt-darzustellen/ 
        $(".ContentImage").each(
            function(){
                var width = $(this).children(".ContentImageWrapper").children("IMG").width() || $(this).children(".ContentImageWrapper").children("A").children("IMG").width();
                $(this).css("width", width);
                $(this).children("SPAN").css("width", width - $(this).children("DIV.fancybox").width() - 1);
            }
        ); 
        /*  */
    }
);

