/*****************************************************************************
/*
/*  Define some vars
/*
******************************************************************************/
var debug             = false;  // Falls wir Entwicklungen durchführen
var bottomreached     = false;
var statviewed        = false;
var statreload        = false;
var TrackEvents       = true;  // Falls wir Events merken möchten
var TransferEvents    = true;  // Falls wir Events zu Google Analytics melden möchten
var AnimSpeed         = 150;   // Wie schnell in ms laufen unsere Animationen?

if($('html').attr('lang') == 'de') { // deutsch
  var closertitletag        = 'schließen';
  var DiagrammTitletaghide  = 'Ausblenden des Diagramms';
  var DiagramTitletagshow   = 'Diagramm einblenden';
}

if($('html').attr('lang') == 'en') { // englisch
  var closertitletag        = 'close';
  var DiagrammTitletaghide  = 'hide chart';
  var DiagramTitletagshow   = 'show chart';
}

/*****************************************************************************
/*
/*  Form-Livevalidierung clientseitig
/*
******************************************************************************/
var ValidateForm = function(formname) {
  
  // Definition der Validierungsparameter
  var MessageMinLength              = 2;
  var MessageMaxLength              = 1500;
  var FotoMessageMinLength          = MessageMinLength;
  var FotoMessageMaxLength          = MessageMaxLength;
  var SurnameMinLength              = MessageMinLength;
  var SurnameMaxLength              = 250;
  var LastnameMinLength             = SurnameMinLength;
  var LastnameMaxLength             = SurnameMaxLength;
  var PhoneMinLength                = 5;
  var PhoneMaxLength                = 18;
  var AddressZIPMinLength           = 4;
  var AddressZIPMaxLength           = 20;
  
  var TitleMinLength                = MessageMinLength;
  var TitleMaxLength                = 50;
  var CompanyMinLength              = MessageMinLength;
  var CompanyMaxLength              = SurnameMaxLength;
  
  var publicationnameMinLength      = MessageMinLength;
  var publicationnameMaxLength      = SurnameMaxLength;
  
  var AddressMinLength              = MessageMinLength;
  var AddressMaxLength              = SurnameMaxLength;
  var PlaceMinLength                = MessageMinLength;
  var PlaceMaxLength                = SurnameMaxLength;
  
  // Sprachen vorbereiten
  if($('html').attr('lang') == 'de') { // deutsch
    var MessageReqMSG                   = ' Bitte geben Sie eine Nachricht ein.';
    var MessageMinLengthMSG             = BuildValMsg('Die Nachricht', SurnameMinLength);
    var MessageMaxLengthMSG             = BuildValMsg('Die Nachricht', SurnameMinLength);
    
    var FotoMessageReqMSG               = ' Bitte geben Sie mindestens ein Bild ein.';
    var FotoMessageMinLengthMSG         = BuildValMsg('Die Bildbestellung', SurnameMinLength);
    var FotoMessageMaxLengthMSG         = BuildValMsg('Die Bildbestellung', SurnameMinLength);
    
    var SurnameReqMSG                   = ' Bitte geben Sie einen Vornamen ein.';
    var SurnameMinLengthMSG             = BuildValMsg('Der Vorname', SurnameMinLength);
    var SurnameMaxLengthMSG             = BuildValMsg('Der Vorname', SurnameMaxLength, 'max');
    
    var LastnameReqMSG                  = ' Bitte geben Sie einen Nachnamen ein.';
    var LastnameMinLengthMSG            = BuildValMsg('Der Nachname', LastnameMinLength);
    var LastnameMaxLengthMSG            = BuildValMsg('Der Nachname', LastnameMaxLength, 'max');

    var EmailReqMSG                     = ' Bitte geben Sie eine E-Mail-Adresse ein.';
    var EmailEmailMSG                   = ' Bitte geben Sie eine gültige E-Mail-Adresse ein.';
    
    var PhoneReqMSG                     = ' Bitte geben Sie eine Telefonnummer an';
    var PhoneMinLengthMSG               = BuildValMsg('Die Telefonnummer', PhoneMinLength);
    var PhoneMaxLengthMSG               = BuildValMsg('Die Telefonnummer', PhoneMaxLength, 'max');
    
    var AddressCityReqMSG               = ' Bitte wählen Sie einen Ort aus in dem Sie suchen möchten.';
    
    var AddressZIPReqMSG                = ' Bitte geben Sie eine Postleitzahl ein.';
    var AddressZIPMinLengthMSG          = BuildValMsg('Die Postleitzahl', AddressZIPMinLength);
    var AddressZIPMaxLengthMSG          = BuildValMsg('Die Postleitzahl', AddressZIPMaxLength, 'max');
    
    var CompanyReqMSG                   = ' Bitte geben Sie einen Firmennamen ein.';
    var CompanyMinLengthMSG             = BuildValMsg('Der Firmenname', CompanyMinLength);
    var CompanyMaxLengthMSG             = BuildValMsg('Der Firmenname', CompanyMaxLength, 'max');
    
    var publicationnameReqMSG           = ' Bitte geben Sie den Namen Ihrer Publikation/Zeitschrift ein.';
    var publicationnameMinLengthMSG     = BuildValMsg('Der Name Ihrer Publikation/Zeitschrift', CompanyMinLength);
    var publicationnameMaxLengthMSG     = BuildValMsg('Der Name Ihrer Publikation/Zeitschrift', CompanyMaxLength, 'max');
    
    var AddressReqMSG                   = ' Bitte geben Sie eine Adresse ein.';
    var AddressMinLengthMSG             = BuildValMsg('Die Adressangabe', AddressMinLength);
    var AddressMaxLengthMSG             = BuildValMsg('Die Adressangabe', AddressMaxLength, 'max');
    
    var PlaceReqMSG                     = ' Bitte geben Sie Ihren Ort ein.';
    var PlaceMinLengthMSG               = BuildValMsg('Der Ort', PlaceMinLength);
    var PlaceMaxLengthMSG               = BuildValMsg('Der Ort', PlaceMaxLength, 'max');
  }
  if($('html').attr('lang') == 'en') { // englisch
    var MessageReqMSG                   = ' Please write a message.';
    var MessageMinLengthMSG             = BuildValMsg('Your message', MessageMinLength);
    var MessageMaxLengthMSG             = BuildValMsg('Your message', MessageMaxLength, 'max');
    
    var FotoMessageReqMSG               = ' Please fill in a picturename.';
    var FotoMessageMinLengthMSG         = BuildValMsg('The picture-request', SurnameMinLength);
    var FotoMessageMaxLengthMSG         = BuildValMsg('The picture-request', SurnameMinLength);
    
    var SurnameReqMSG                   = ' Please fill in your surname.';
    var SurnameMinLengthMSG             = BuildValMsg('Your surname-input', SurnameMinLength);
    var SurnameMaxLengthMSG             = BuildValMsg('Your surname-input', SurnameMaxLength, 'max');
    
    var LastnameReqMSG                  = ' Please fill in your lastname.';
    var LastnameMinLengthMSG            = BuildValMsg('Your lastname-input', LastnameMinLength);
    var LastnameMaxLengthMSG            = BuildValMsg('Your lastname-input', LastnameMaxLength, 'max');
    
    var PhoneReqMSG                     = ' Please fill in a phone-number.';
    var PhoneMinLengthMSG               = BuildValMsg('Your phone-number-input', PhoneMinLength);
    var PhoneMaxLengthMSG               = BuildValMsg('Your phone-number-input', PhoneMaxLength, 'max');
    
    var EmailReqMSG                     = ' Please fill in your email-address.';
    var EmailEmailMSG                   = ' Please fill in a valid email-address.';
    
    var AddressCityReqMSG               = ' Please choose a place where you want to search in.';
    
    var AddressZIPReqMSG                = ' Please fill in a zip-code.';
    var AddressZIPMinLengthMSG          = BuildValMsg('Your zip-code-input', AddressZIPMinLength);
    var AddressZIPMaxLengthMSG          = BuildValMsg('Your zip-code-input', AddressZIPMaxLength, 'max');
    
    var CompanyReqMSG                   = ' Please type in your company-name.';
    var CompanyMinLengthMSG             = BuildValMsg('Your company-input', CompanyMinLength);
    var CompanyMaxLengthMSG             = BuildValMsg('Your company-input', CompanyMaxLength, 'max');
    
    var publicationnameReqMSG           = ' Please type in the title of your newspaper / magazine.';
    var publicationnameMinLengthMSG     = BuildValMsg('The title of your newspaper / magazine', CompanyMinLength);
    var publicationnameMaxLengthMSG     = BuildValMsg('The title of your newspaper / magazine', CompanyMaxLength, 'max');
    
    var AddressReqMSG                   = ' Please type in your address.';
    var AddressMinLengthMSG             = BuildValMsg('Your address-input', AddressMinLength);
    var AddressMaxLengthMSG             = BuildValMsg('Your address-input', AddressMaxLength, 'max');
    
    var TitleMinLengthMSG               = BuildValMsg('Your title-input', TitleMinLength);
    var TitleMaxLengthMSG               = BuildValMsg('Your title-input', TitleMaxLength, 'max');
    
    var PlaceReqMSG                     = ' Please type in your place.';
    var PlaceMinLengthMSG               = BuildValMsg('Your place-input', PlaceMinLength);
    var PlaceMaxLengthMSG               = BuildValMsg('Your place-input', PlaceMaxLength, 'max');
  }
  
  switch (formname){
    case 'contactform':
      // Validierung des Kontaktformulars
      $("form#contactform").validate({
        errorClass:     "form-msg-error",
        errorElement:   "span",
        rules: {
          "formhandler[message]": {
            required:   true,
            minlength:  MessageMinLength,
            maxlength:  MessageMaxLength
          },
          "formhandler[company]": {
            minlength:  CompanyMinLength,
            maxlength:  CompanyMaxLength
          },
          "formhandler[surname]": {
            required:   true,
            minlength:  SurnameMinLength,
            maxlength:  SurnameMaxLength
          },
          "formhandler[lastname]": {
            required:   true,
            minlength:  LastnameMinLength,
            maxlength:  LastnameMaxLength
          },
          "formhandler[address]": {
            minlength:  AddressMinLength,
            maxlength:  AddressMaxLength
          },
          "formhandler[zip]": {
            minlength:  AddressZIPMinLength,
            maxlength:  AddressZIPMaxLength
          },
          "formhandler[place]": {
            minlength:  PlaceMinLength,
            maxlength:  PlaceMaxLength
          },
          "formhandler[phone]": {
            required:   true,
            minlength:  PhoneMinLength,
            maxlength:  PhoneMaxLength
          },
          "formhandler[email]": {
            required:  true,
            email:     true
          }
        },
        messages: {
          "formhandler[message]": {
            required:  MessageReqMSG,
            minlength: MessageMinLengthMSG,
            maxlength: MessageMaxLengthMSG
          },
          "formhandler[company]": {
            minlength: CompanyMinLengthMSG,
            maxlength: CompanyMaxLengthMSG
          },
          "formhandler[surname]": {
            required:  SurnameReqMSG,
            minlength: SurnameMinLengthMSG,
            maxlength: SurnameMaxLengthMSG
          },
          "formhandler[lastname]": {
            required:  LastnameReqMSG,
            minlength: LastnameMinLengthMSG,
            maxlength: LastnameMaxLengthMSG
          },
          "formhandler[address]": {
            minlength: AddressMinLengthMSG,
            maxlength: AddressMaxLengthMSG
          },
          "formhandler[zip]": {
            minlength: AddressZIPMinLengthMSG,
            maxlength: AddressZIPMaxLengthMSG
          },
          "formhandler[place]": {
            minlength: PlaceMinLengthMSG,
            maxlength: PlaceMaxLengthMSG
          },
          "formhandler[phone]": {
            required:  PhoneReqMSG,
            minlength: PhoneMinLengthMSG,
            maxlength: PhoneMaxLengthMSG
          },
          "formhandler[email]": EmailEmailMSG
        }
      });
      break;
    case "fotobestellform":
      // Validierung des Kontaktformulars
      $("form#fotobestellform").validate({
        errorClass:     "form-msg-error",
        errorElement:   "span",
        rules: {
          "formhandler[fotomessage]": {
            required:   true,
            minlength:  FotoMessageMinLength,
            maxlength:  FotoMessageMaxLength
          },
          "formhandler[publicationname]": {
            required:   true,
            minlength:  publicationnameMinLength,
            maxlength:  publicationnameMaxLength
          },
          "formhandler[surname]": {
            required:   true,
            minlength:  SurnameMinLength,
            maxlength:  SurnameMaxLength
          },
          "formhandler[lastname]": {
            required:   true,
            minlength:  LastnameMinLength,
            maxlength:  LastnameMaxLength
          },
          "formhandler[phone]": {
            required:   true,
            minlength:  PhoneMinLength,
            maxlength:  PhoneMaxLength
          },
          "formhandler[email]": {
            required:  true,
            email:     true
          }
        },
        messages: {
          "formhandler[fotomessage]": {
            required:  FotoMessageReqMSG,
            minlength: FotoMessageMinLengthMSG,
            maxlength: FotoMessageMaxLengthMSG
          },
          "formhandler[publicationname]": {
            required:  publicationnameReqMSG,
            minlength: publicationnameMinLengthMSG,
            maxlength: publicationnameMaxLengthMSG
          },
          "formhandler[surname]": {
            required:  SurnameReqMSG,
            minlength: SurnameMinLengthMSG,
            maxlength: SurnameMaxLengthMSG
          },
          "formhandler[lastname]": {
            required:  LastnameReqMSG,
            minlength: LastnameMinLengthMSG,
            maxlength: LastnameMaxLengthMSG
          },
          "formhandler[phone]": {
            required:  PhoneReqMSG,
            minlength: PhoneMinLengthMSG,
            maxlength: PhoneMaxLengthMSG
          },
          "formhandler[email]": EmailEmailMSG
        }
      });
      break;
    default:
  }
}


/*****************************************************************************
/*
/*  Validierungsnachrichten zusammensetzen
/*
******************************************************************************/
var BuildValMsg = function(preface, chars, mode) {
  if(!mode) { var mode = 'min'; } // default, Wenn kein Modus angegeben wurde
  
  if($('html').attr('lang') == 'de') { // deutsch
    var minmax = 'mindestens';
    if(mode == 'max') { var minmax = 'maximal'; }
    var string = ' '+preface+' sollte '+minmax+' aus '+chars+' Zeichen bestehen.';
  }
  
  if($('html').attr('lang') == 'en') { // englisch
    var minmax = 'shorter';
    if(mode == 'max') { var minmax = 'longer'; }
    var string = ' '+preface+' should not be '+minmax+' than '+ chars +' chars.';
  }
  
  return string;
}


/*****************************************************************************
/*
/*  Nach Vorhandensein im Array suchen
/*
/*  Helferfunktion
/*
/*  @param: arr (array), val (mixed)
/*
******************************************************************************/
var isValueInArray = function(arr, val) {
	inArray = false;
	for (i = 0; i < arr.length; i++)
		if (val == arr[i])
			inArray = true;
	return inArray;
}


/*****************************************************************************
/*
/*  Elemente hin- und herschütteln
/*
******************************************************************************/
var shaker = function(obj, prop, endVal) {
  var speed = 60;
  var variant = 'linear';
  
  if(prop == 'right') {
    obj.animate({ right:20 }, speed, variant, function(){
      obj.animate({ right:0 }, speed, variant, function(){
        obj.animate({ right:20 }, speed, variant, function(){
          obj.animate({ right:0 }, speed, variant, function(){
            obj.animate({ right:20 }, speed, variant, function(){
              obj.animate({ right:endVal }, speed, variant);
            });
          });
        });
      });
    });
  }
}


/*****************************************************************************
/*
/*  Headerlogin hin- und herschütteln
/*
******************************************************************************/
var shakeHeaderLogin = function(_obj, prop, endVal) {      
  var obj = _obj;
  obj.animate({ left:-142 }, 80, 'linear', function(){
    obj.animate({ left:-122 }, 80, 'linear', function(){
      obj.animate({ left:-142 }, 80, 'linear', function(){
        obj.animate({ left:-122 }, 80, 'linear', function(){
          obj.animate({ left:-142 }, 80, 'linear', function(){
            obj.animate({ right: -132 }, 80, 'linear');
          });
        });
      });
    });
  });
}


/*****************************************************************************
/*
/*  Validierung der Headersuche
/*
******************************************************************************/
var SearchInput = function(objname) {
  switch (objname) {
    case "search":
      var objinput    = $("#tx-indexedsearch-searchbox-sword");
      var objshake    = $("div.tx-indexedsearch-form");
      var objform     = $("#tx_indexedsearch");
      break;
    case "headersearch":
      var objinput    = $("input#headerSearchString");
      var objshake    = $(".tx-macinasearchbox-pi1 div.inputframing");
      var objform     = $("#searchform");
      break;
    default:
      var objinput    = $("input#headerSearchString");
      var objshake    = $("div#headersearchform");
      var objform     = $("#searchform");
      break;
  }
  
  objform.submit(function () {
    if(objinput.val().length < 1){  // submit stoppen
      shaker(objshake,'right',0); // shake it!
      return false;
    } 
  });
}


/*****************************************************************************
/*
/*  Feststellen ob Element gerade sichtbar wäre
/*
******************************************************************************/
var visibleelement = function(el){
  if(!el) { var el = $('#prefooter'); }
  var offset       = el.offset();
  var ElTop        = Math.round(offset.top);
  var ElBot        = ElTop + el.outerHeight();
  var ViewportTop = $(window).scrollTop(); // Oberkante
  var ViewportBot = ViewportTop + $(window).height(); // Unterkante
  if(
      (ElTop < ViewportBot) &&
      (ElBot > ViewportTop)
    )  {
    return true;
    console.log('sichtbar!');
  } else {
    return false;
    console.log('unsichtbar');
  };
}


/*****************************************************************************
/*
/*  Browserkompatibilität für HTML-Aktionen abfragen können...
/*
******************************************************************************/
var browserCompat = function() {
  if(
      (jQuery.browser.mozilla && parseFloat(jQuery.browser.version) >= 3) ||
      (jQuery.browser.safari  && parseFloat(jQuery.browser.version) >= 3) ||
      (jQuery.browser.opera   && parseFloat(jQuery.browser.version) >= 8) ||
      (jQuery.browser.webkit  && parseFloat(jQuery.browser.version) >= 3) ||
      (jQuery.browser.msie    && parseFloat(jQuery.browser.version) >= 9)
    ) {
    return true;
  }
  
  if(
    (jQuery.browser.msie && parseFloat(jQuery.browser.version) <= 8)
    ) {
    return false
  }
  
}


/*****************************************************************************
/*
/*  Pop-Up-Links bauen
/*
******************************************************************************/
var buildFancyLinks = function() {
  // mehrere mit rel markieren um durchklicken zu ermöglichen
  if($('a.lightbox').length>1) {
    $('a.lightbox').attr('rel','gallery'); // mehrere zur Galerie zusammenfassen
  }
  
  // Mit Aktion belegen
  $('a.lightbox').fancybox({
    'autoDimensions'     : true,
    'autoScale'			     : true,
    'centerOnScroll'     : true,
    'enableEscapeButton' : true,
    'hideOnOverlayClick' : true,
    'padding'            : 0,
    'overlayShow'        :	true,
    'overlayColor'       : '#fff',
    'overlayOpacity'     : 0.85,
    'titleShow'          : true,
    'transitionIn'       : 'elastic',
    'transitionOut'      : 'elastic',
    'speedIn'            : 200,
    'speedOut'           : 200,
    'showNavArrows'      : true,
    'changeSpeed'        : 200
	});
}


/*****************************************************************************
/*
/*  Events definieren die beobachtet und ausgewertet werden sollen
/*
******************************************************************************/
var TrackSiteEvents = function() {
  // Alle Links in #main nach extern
  $('#main a').filter(function() {
    if(this.hostname && this.hostname !== location.hostname) { // Wenn es ein interner Link ist
      $(this).click(function(event) { // Bei Klick
        var TrackArr = ['_trackEvent', 'externe Links', 'externen Link besucht', $(this).attr('href'), 0];
        tranferStats(TrackArr);
      });
    }
  });
  
  // Footer-Navigation geklickt
  $('div#footer a').click(function(event){
    var TrackArr = ['_trackEvent', 'Footer-Navigation', 'Footer-Navigation geklickt', $(this).attr('href'), 1];
    tranferStats(TrackArr);
  });
  
  // Startseiten-Live-Teaser
  $('body#PUID4 div.slide a').click(function(event){
    var TrackArr = ['_trackEvent', 'Teaser', 'Zitat groß', $(this).find('blockquote').text(), 2];
    tranferStats(TrackArr);
  });
  
  // CTA Kontakt
  $('p.button a').click(function(event){
    var TrackArr = ['_trackEvent', 'CTA', 'Kontakt', $('html title').text(), 3];
    tranferStats(TrackArr);
  });
  
  $('p.button.download a').click(function(event){
    var TrackArr = ['_trackEvent', 'CTA', 'Download', $('html title').text(), 3];
    tranferStats(TrackArr);
  });
  
  // CTA Kontakt
  $('p.panel a').click(function(event){
    var TrackArr = ['_trackEvent', 'Teaser', 'Zitat klein', $(this).find('blockquote').text(), 2];
    tranferStats(TrackArr);
  });
  
  $('div.blockquotelist div.item').click(function(event){
    var TrackArr = ['_trackEvent', 'Zitat', 'Zitat geklickt', $(this).find('blockquote').text(), 2];
    tranferStats(TrackArr);
  });
  
  // Logo-Klick
  $('a.logolink').click(function(event){
    var TrackArr = ['_trackEvent', 'Header', 'Logo geklickt', 1];
    tranferStats(TrackArr);
  });
  
  // Bild gezoomt (Welche Seite, welches Bild, welche Aktion)
  $('a.lightbox').click(function(event){ // Branchenbuch Imagezoom
    if($('div.addr_detailview h1').length > 0) {
      var TrackArr = ['_trackEvent', 'Branchenbuch', 'Bild vergrößert', $('div.addr_detailview h1').text(), 3];
    } else { // Imagezoom
      var TrackArr = ['_trackEvent', 'Bild', 'Bild vergrößert', 'http://www.rostock-port.de/'+$(this).attr('href'), 1];
    }
    tranferStats(TrackArr);
  });
}


/*****************************************************************************
/*
/*  Events senden
/*
******************************************************************************/
var tranferStats = function(_TrackArr) {
  if(debug) {
    console.log(_TrackArr);
  } else {
    if(TransferEvents) { _gaq.push(_TrackArr); }
  }
}


/*****************************************************************************
/*
/*  Nach oben scrollen 
/*
******************************************************************************/
var scrollToTop = function() {
  $('a.totoplink').click(function(event){
    event.preventDefault(); // HREF stoppen
    $('html, body').betterSlide('#header');       // Zur Scrollen zur Sprungmarke auslösen
  });
}


/***************************************************
*
* betterSlide
* Autor: unknown with mods of Thomas Oswald
* Elementposition suchen und dort hin scrollen
*
***************************************************/
$.fn.betterSlide = function betterSlide(destination) {
  var dest = Math.floor($(destination).offset().top); // where in px from top is the element?

  jQuery(this).show(1, function() { // show the element and as callback scroll it into the viewport (if not animated)
		$("html:not(:animated),body:not(:animated)").animate({ scrollTop: dest}, 200, 'swing' );
	});
};



/*****************************************************************************
/*
/*  String-Umbrüche entfernen
/*
******************************************************************************/
var trim = function(str) {
  return str.replace(/[\n\r]/g, '').replace(/ +/g, ' ').replace(/^\s+/g, '').replace(/\s+$/g, '');
}


/*****************************************************************************
/*
/*  Header-Animationen bauen (Coda-Slider)
/*
******************************************************************************/
function buildHeaderSlide() {
  if($('#slides').length) { // Coda-Slider auf der Startseite  
    $('#slides').slides({ // Initialize Slides
      preload:              true,
      preloadImage:         '/fileadmin/img/loading.gif',
      generatePagination:   true,
      play:                 10000,
      pause:                2500,
      hoverPause:           false,
      start:                1
		});
  }
}

/*****************************************************************************
/*
/*  Header-Animationen bauen (Coda-Slider)
/*
******************************************************************************/
function buildSmallSlide() {
  // Coda-Slider auf der Startseite
  $('#coda-slider-2').codaSlider({
    autoSlide:                true,
    autoSlideInterval:        10000,
    dynamicArrows:            false,
    autoSlideStopWhenClicked: true,
    dynamicArrowLeftText:     "&#171;",
		dynamicArrowRightText:    "&#187;",
		panelTitleSelector:       "",
		slideEaseDuration:        250,
		dynamicTabsPosition:      "bottom",
		dynamicTabsAlign:         "none"
  });
}


/*****************************************************************************
/*
/*  Zitateliste mit Funktionen versehen
/*
******************************************************************************/
function BuildCites() {
  $('div.blockquotelist div.item').each(function(index){
    var obj = $(this);
    // Klassennamen vergeben
    if (index%2) {
      obj.addClass('odd');
    } else {
      obj.addClass('even');
    }
    obj.addClass('num-'+index);
    
    // Aktionen vergeben
    obj.click(function(){
      if(obj.find('blockquote').is(':visible')) {
        obj.find('blockquote').hide(AnimSpeed); // Großes Zitat wieder ausblenden
        obj.find('cite').show(); // erst jetzt das kleine Zitat wieder einblenden
        obj.find('a.closer').remove();
        var author = obj.find('p.author');
        author.text(author.text().slice(0,author.text().length-1)); // das letzte Zeichen (:) entfernen
        // Den Autor von links nach rechts fahren lassen
        author.animate({
          right: 5,
          width: (parseInt(obj.find('p.author').width())-9)
        },AnimSpeed,function() {
          
          obj.removeClass('expanded'); // Markierung im DOM entfernen
        });
      } else {
        obj.find('blockquote').show(AnimSpeed); // langes Zitat einblenden
        obj.find('cite').hide();  // kurzes Zitat ausblenden
        obj.addClass('expanded'); // Offene Items im DOM markieren
        var author = obj.find('p.author');
        // Den Autor von rechts nach Links fahren lassen
        author.animate({
          /*
            Position = Gesamtbreite - Elementbreite
            Zum Schluss noch in der Breite eine kleine Rundungskorrektur
          */
          right: (parseInt($('.blockquotelist').width()) - 10 - parseInt(obj.find('p.author').width())),
          width: (parseInt(obj.find('p.author').width())+10)
        },AnimSpeed,function() {
          author.text(author.text()+":"); // Nach der Animation noch einen Doppelpunkt hinzufügen
          //einen span hinzufügen für das schließicon:
          $('<a class="closer" href="'+window.location.protocol+'//'+window.location.hostname+ window.location.pathname+'#'+index+'" title="Zitat schlie&szlig;en"><span>schlie&szlig;en</span></a>').appendTo(obj.find('div.smallcite'));
        });
      }
      
    });
    
  });
}


/*****************************************************************************
/*
/*  Beim Fertig laden der Seite
/*
******************************************************************************/
$().ready(function() {
  if($('#slides').length) { buildHeaderSlide(); }
  if($('#coda-slider-2').length) { buildSmallSlide(); }
  if($('#contactform').length) { ValidateForm('contactform'); }
  if($('#PUID21').length) { BuildCites(); }
  if($('a.lightbox')) { buildFancyLinks(); }
  if(TrackEvents) { TrackSiteEvents(); }
});

