jQuery.noConflict();

var vpm = vpm || {};


/**
* @fn void vpm.initHistoryDisplay()
* Bereitet die Darstellung der Unternehmensgeschichte auf/um, sodaß jQueryUI-Effekte darauf angewandt werden können.
* @author Alexander Rothe
* @date 2011-03-10
*/
vpm.initHistoryDisplay = function() {
  var container_id = 'publisher-history';
  var $content_blocks = jQuery('#' + container_id + ' > div.ce_text');
  
  // Container für Tabsteuerung erstellen
  jQuery('#' + container_id).prepend('<ul id="tab-control"></ul>');
  var $tab_control = jQuery('#tab-control');
  
  // Durchlaufen alle Contao-Artikelblöcke und
  // ... verschieben der h1 in die Tab-Control
  // ... festlegen einer ID inkl. Verlinkung
  $content_blocks.each(function(index) {
    var block_id = 'history-tab-' + index;
    
    // Übertragen der selbst festgelegten Klassen und Entfernen der Contao-Standard-Klassen
    jQuery(this).removeClass('ce_text block');
    var block_classes = jQuery(this).attr('class');
    
    // Jahrzehnt-Headline wird in Listenelement mit Anker-Link umgewandelt und in die TabControl-UL verschoben
    jQuery(this).find('h1').wrapInner('<li />').find('li').addClass(block_classes).unwrap().wrapInner('<a href="#' + block_id + '" />').detach().appendTo($tab_control);
    
    // der zugehörige Textblock wird mit dem Anker versehen
    jQuery(this).attr('id', block_id);
    
  });
  
  var initial_tab = $content_blocks.length - 1; // => letzter Tab
  
  jQuery('#publisher-history').tabs({ selected: initial_tab });
};



/**
* @fn void vpm.initMagazineTextExpander()
* Prüft, ob der aktuelle Textbereich (bei den Zeitschriften-Details) länger als das definierte Maximum ist.
* Kürzt ggfls. die Höhe des verfügbaren Textblocks und integriert einen Ausklapp-Button, welcher im 2. Schritt mit Funktionalität belegt wird.
* @author Alexander Rothe
* @date 2011-03-01
*/
vpm.initMagazineTextExpander = function() {
  var max_text_height = 272;
  jQuery('#main .magazine .text').each(function() {
    if (jQuery(this).height() > max_text_height + 10) {
      jQuery(this).append('<span class="text_expand"><a href="#">...mehr</a></span>')
      jQuery(this).css('height', max_text_height + 'px');
    }
  });
  
  jQuery('#main .magazine .text_expand a').click(function() {
    jQuery(this).parent().hide().parent().css('height', 'auto');
    return false;
  });
};

/**
* @fn void vpm.initContactDetails()
* Verarbeiten ausgewählte Kontakt-Details (Telefon & Fax, ...), damit der Value ein Icon vorangestellt bekommt (wird per CSS geregelt)
* Diese Details befinden sich (aktuell) immer in Tabellen.
* @author Alexander Rothe
* @date 2011-03-11
*/
vpm.initContactDetails = function() {
  // Alle Telefonnummern in Kontaktlisten mit entsprechender Klasse versehen
  jQuery('td:contains("fon") ~ td').contents().not('span').wrap('<span class="phone" />');
  
  // Alle Faxnummern in Kontaktlisten mit entsprechender Klasse versehen
  jQuery('td:contains("fax") ~ td').contents().not('span').wrap('<span class="fax" />');
};

/**
* @fn void vpm.initContentLinks()
* Verarbeiten alle Spezial-Links (email-Adressen, externe Links, ...)
* @author Alexander Rothe
* @date 2011-03-11
*/
vpm.initContentLinks = function() {
  // Mailto-Links suchen und mit entsprechender Klasse versehen
  jQuery('#main a[href^="mailto"]').addClass('email');
  
  // Verlinkte Bilder => keine gepunktete Linie
  jQuery('a > img').parent().addClass('no_border').removeClass('email');
  
  // Externe Links in neuem Fenster öffnen
  /*
  jQuery('#main a[href^="http://"][rel^="lightbox"], #main a[href^="https://"], a.external').not(jQuery('#ctrl_filter_field_category a')).click( function() {
    window.open(jQuery(this).attr('href'));
    return false;
  });
  */
  
  jQuery('a[href^="http"], a[href$="pdf"]').not(jQuery('#ctrl_filter_field_category a, a.no_new_window')).click( function() {
    window.open(jQuery(this).attr('href'));
    return false;
  });
};




/**
* @fn void vpm.roundAboutCycle()
* Dreht die ImageRotation zum nächsten Element
* @author Alexander Rothe
* @date 2011-04-07
*/
vpm.roundAboutCycle = function(element, duration) {
  element.roundabout_animateToNextChild();
  return setInterval(function() {
    element.roundabout_animateToNextChild();
  }, duration);
};



/**
* @fn void vpm.initRoundaboutNew()
* Initialisierung des roundAbout-Plugins für rotierende Bildergalerie
* Dreht alle Galerien nacheinander
* @author Alexander Rothe
* @date 2011-04-07
* @date 2011-04-19 Peter Adelmann: zufälliges Startcover je Kategorie, Var-Namen, Aufruf ohne mehrere Intervall
*/
vpm.initRoundaboutNew = function() {
  jQuery('.js #cycle_cover .cycle_wrapper').css('display', 'block');

  var duration = 2000;  // Zeit (in Millisekunden), nach welcher die jeweils nächste Rotation beginnt
  var waiting = 200;
  
  var categories = jQuery('#main ul.cycle');
  var categories_length = categories.length;
  var category = 0;

  categories.roundabout({
    startingChild: (Math.floor(Math.random() * categories.length) + 1),
    duration: duration,
    minOpacity: 0.6,
    minScale: 0.7,
    clickToFocus: false,
    tilt: -3.0
  });
  
  vpm.startRoundaboutCycling(categories_length, 0, duration, waiting);
};

/**
* @fn void vpm.startRoundaboutCycling()
* nächste Kategorie auswählen, Cover weiterdrehen, nächsten Aufruf starten
* Dreht alle Galerien nacheinander
* @author Alexander Rothe
* @date 2011-04-07
* @date 2011-04-19 Peter Adelmann: zufälliges Startcover je Categorie, Var-Namen, Aufruf ohne mehrere Intervall
*/
vpm.startRoundaboutCycling = function(categories_length, category, duration, waiting) {
  category++;
  if (category > categories_length) {
    category = 1;
  }
  
  if (jQuery('#cycler' + category + ' li').length > 1) { 
    window.setTimeout(
      function() {
        jQuery('#cycler' + category).roundabout_animateToNextChild();
        vpm.startRoundaboutCycling(categories_length, category, duration, waiting);
      }, (duration + waiting)
    );
  }
  else {
    vpm.startRoundaboutCycling(categories_length, category, duration, waiting);
  }
};

/**
* @fn void vpm.initRoundabout()
* [DEMO!!!]
* Initialisierung des roundAbout-Plugins für rotierende Bildergalerie
* Dreht alle Galerien nacheinander
* @author Alexander Rothe
* @date 2011-04-07
*/
vpm.initRoundabout = function() {
  var image_lists = jQuery('#main ul.cycle');
  var cycle_time = 2000;  // Zeit (in Millisekunden), nach welcher die jeweils nächste Rotation beginnt
  var item_count = image_lists.length;
  
  image_lists.roundabout({
    duration: cycle_time + 200,
    minOpacity: 0.6,
    minScale: 0.7,
    clickToFocus: false
  });

  var i = 1;
  var interval = setInterval( function() {
    vpm.roundAboutCycle(jQuery('#cycler' + i), cycle_time * item_count);
    i++;
    
    if (i > item_count) {
      clearInterval(interval);
    };
    
  }, cycle_time);
  
  jQuery('.js #cycle_cover .cycle_wrapper').css('display', 'block');

};


jQuery(document).ready(function() {
  vpm.initContentLinks();
  vpm.initContactDetails();
  
  vpm.initMagazineTextExpander();  
  
  if (jQuery('#publisher-history').length > 0) { 
    vpm.initHistoryDisplay();
  }
  
  if (jQuery('#cycle_demo_single').length > 0) { 
    vpm.initRoundabout();
  }
  
  if (jQuery('#cycle_cover').length > 0) { 
    vpm.initRoundaboutNew();
  }
  
});
