﻿var bog = bog || {};

/**
* @fn String initScrollbar()
* initialisiert grafische Scrollbar
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.initScrollbar = function() {
  $("#content_data_scroller").jScrollPane({
    showArrows: true, 
    dragMaxHeight: 62, 
    dragMinHeight: 62,
    scrollbarWidth: 15,
    maintainPosition: false
  });
};

/**
* @fn String initLightbox()
* initialisiert das Lightboxplugin Fancybox
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.initLightbox = function() {
  $("a.lightbox").fancybox({
    'enableEscapeButton': true,
    'type': 'iframe',
    'width': 600,
    'height': 525,
    'padding': 0,
    'margin': 0,
    'scrolling': 'no',
    'titleShow': false,
    'showCloseButton': false
  });
};

/**
* @fn String resetSelectField(id)
* Setzt ein Select-Feld auf den Standardwert zurück (index 0)
* @param String id Feld-ID des SELECT-Feldes, das zurückgesetzt werden soll
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.resetSelectField = function(id) {
  var foo = document.getElementById(id);
  if (foo) {
    if (foo.selectedIndex != null) {
      foo.selectedIndex = 0;
    } 
  }
}

/**
* @fn String startSelectedInterest(action)
* leitet zur übergebenen Seite weiter
* @param String action URL, auf die weitergeleitet werden soll
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.startSelectedInterest = function(action) {
  document.location.href = action; 
}

/**
* @fn String getSelectedInterest()
* ist keine Auswahl getroffen wird der Ergebnisbereich ausgeblendet
* ist eine Auswahl getroffen (oder), wird aus der Ergebnistabelle die jeweils 'eigene' Spalte ausgeblendet
* gibt es mindestens einen Case unter den Ergebnissen, wird der entsprechende Link gesetzt und eingeblendet
* die Scrollbar wird initialisiert
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.getSelectedInterest = function() {
  var foo_branche   = document.getElementById('ctrl_filter_field_branche');
  var foo_kompetenz = document.getElementById('ctrl_filter_field_kompetenz');

  if (   foo_branche
      || foo_kompetenz
  ) {
    if (   foo_branche.selectedIndex == 0
        && foo_kompetenz.selectedIndex == 0
    ) {
      $('.mod_cataloglist').hide();
    }
    else {
      var filter;
      var result;
      var parameter;
      
      if (foo_branche.selectedIndex != 0) {
        filter = $("#ctrl_filter_field_branche option:selected").attr('value');
        //$('.result_box_branche').hide();
        $('li.field_branche').hide();
      }
      else if (foo_kompetenz.selectedIndex != 0) {
        filter = $("#ctrl_filter_field_kompetenz option:selected").attr('value');
        //$('.result_box_kompetenz').hide();
        $('li.field_kompetenz').hide();
      }
      
      $(".case_study_link a").click(function() {
        result = filter.match(/^(http:\/\/)(.+)\/interesse\/(.+)\/(.+)\.html$/);
        if (result) {
          parameter = '?' + RegExp.$3 + '=' + RegExp.$4;
          document.location.href = $(this).attr('href') + parameter;
        }
        return false;
      });
      bog.paginateSelectedInterestResults(filter);
    }
  }  
}

/**
* @fn String paginateSelectedInterestResults()
* Paginierung erstellen für "blättern" in der Ergebnisliste
* @author: Peter Adelmann
* @date: 2010-09.21
*/
bog.paginateSelectedInterestResults = function(link) {
  // Anzahl der Seiten ermitteln
  var results_per_page = 18;
  var result = parseInt($('span.result-entries').text(), 10);
  var pages = parseInt(result / results_per_page);
  if (result%results_per_page !== 0) {
    pages++;
  }
  
  // Scrollbar initialisieren für Ergebnisse
  $('#content_data_catalog_scroller').jScrollPane({
    showArrows: true, 
    dragMaxHeight: 62, 
    dragMinHeight: 62,
    scrollbarWidth: 15,
    //maintainPosition: false,
    animateTo: true
  });
  $content = $('#content_data_catalog_scroller');
  
  // Blättern-Links zusammenstellen
  var links = '<li>Treffer</li>';
  for (var i = 0; i < pages; i++) {
    links += '<li>'
           + '<a class="pagination-results" href="' + link + '#result-block-' + (i + 1) + '">'
           + (i * results_per_page + 1)
           + ' &minus; '
           ;
    if (i < pages - 1) {
      links += i * results_per_page + results_per_page;
    }
    else {
      links += result;
      pages[i] = result;
    }
    links += '</a>'
           + '</li>'
           ;
    if (i < pages - 1) {
      links += '<li>|</li>';
    }
  }
  
  if (pages > 1) {
    // Blättern-Element erstellen
    $('div.case_study_link').append(
      $('<div />').attr('class', 'pagination').append(
        $('<ul />').append(links)
      )
    );
  }

  if (result <= (results_per_page / 2)) {
    $('div.results ul.interesse li.right').hide();
  }
  
  $('a.pagination-results:first').addClass('active');
  
  $('#content_data_catalog_scroller, ul.interesse').show();
  
  // Klickereignisse auf Blätternlinks legen
  $("a[href*='#result-block-']").click(function() {
    $('a.pagination-results').removeClass('active');
    $(this).addClass('active');
    var href = $(this).attr('href');
    var anchor = href.match(/^(.+)#result-block-(.+)$/);
    var target = '#result-block-' + RegExp.$2
    var actual_page = parseInt(RegExp.$2, 10);
    
    if (   actual_page == pages
        && (actual_page * results_per_page) - (results_per_page / 2) >= result
    ) {
      $('div.results ul.interesse li.right').hide();
    }
    else {
      $('div.results ul.interesse li.right').show();
    }
    $('.result-block').hide();
    $(target).show();
    //$content[0].scrollTo('#' + target);
    return false;
  });
}

/**
* @fn String setCaseStudyAction(action, type)
* der Link wird korrekt aufgebaut/bereinigt in abhängigkeit der aktuellen action und des gewünschten action
* Mischformen, die durch die Auswahl entstehen werden auf die benötigten Grundwerte zurückgestellt
* interesse\/branche oder interesse\/kompetenz werden bereinigt auf die benötigte Form (branche oder kompetenz)
* @param String action Aktuelle Action (ggf Fehlerbehaftet)
* @param String type Was ich haben möchte
* @return bereinigte action
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.setCaseStudyAction = function(action, type) {
  var result;
  var new_action;

  result = action.match(/^(http:\/\/)(.+)\/interesse\/(.+)\.html$/);
  if (result) {
    new_action = 'http://' + RegExp.$2 + '/interesse/' + type + '/';
  }

  result = action.match(/^(http:\/\/)(.+)\/interesse\/branche\/(.+)\/kompetenz\/(.+)\.html$/);
  if (result) {
    if (type == 'branche') {
      new_action += RegExp.$3;
    }
    else {
      new_action += RegExp.$4;
    }
    return new_action + '.html';
  }

  result = action.match(/^(http:\/\/)(.+)\/interesse\/kompetenz\/(.+)\/branche\/(.+)\.html$/);
  if (result) {
    if (type == 'branche') {
      new_action += RegExp.$4;
    }
    else {
      new_action += RegExp.$3;
    }
    return new_action + '.html';
  }
  
  return action;
}

/**
* @fn String resetSelectedInterest()
* entfernt automatische, durch das CMS gesetzte Attribute
* setzt neue, eigene Attribute:
* bei klick wird das jeweils andere Feld zurückgesetzt
* danach erst wird auf die Ergebnisseite der Auswahl weitergeleitet (bzw die neue Action gesetzt)
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.resetSelectedInterest = function() {
  //automatische Funktionalität Filter entfernen
  $('#ctrl_filter_field_branche').removeAttr('onchange');
  $('#ctrl_filter_field_kompetenz').removeAttr('onchange');
  
  //Filter Branche
  $('#ctrl_filter_field_branche').change(function() {
    bog.resetSelectField('ctrl_filter_field_kompetenz');
    bog.startSelectedInterest(bog.setCaseStudyAction($('#ctrl_filter_field_branche option:selected').attr('value'), 'branche'));
  });
  
  //Filter Kompetenz
  $('#ctrl_filter_field_kompetenz').change(function() {
    bog.resetSelectField('ctrl_filter_field_branche');
    bog.startSelectedInterest(bog.setCaseStudyAction($('#ctrl_filter_field_kompetenz option:selected').attr('value'), 'kompetenz'));
  });
  
}

/**
* @fn String setContentFlowProperties()
* Setzt die Eigenschaften für das PlugIn Contentflow und initialisiert es
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.setContentFlowProperties = function() {
  var cf_container = document.getElementById('contentFlowContainer');
  if (cf_container) {
    $(cf_container).show();
  }
}

/**
* @fn String getSWFObject()
* Bindet die SWF-js-Erweiterung ein (läd das Modul nach)
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.getSWFObject = function() {
  var script = document.createElement('script');
  script.setAttribute('src', '/tl_files/js2/swfobject.js'); //URL zuweisen
  script.setAttribute('type','text/javascript');
  script.setAttribute('language','javascript');
  document.getElementsByTagName('head')[0].appendChild(script);
}

/**
* @fn String showPartnerFlash()
* initialisiert das Flash für die Partneransicht
* korrigiert die Position
* @author: Peter Adelmann
* @date: 2010-09.20
*/
showPartnerFlash = function() {
  bog.showPartnerFlash();
}
bog.showPartnerFlash = function() {
  bog.getKundenPartnerFlash('partner');
  $('#flash_data').css({
    'top': '249px'
  });
}

/**
* @fn String showKundenFlash()
* initialisiert das Flash für die Kundenansicht
* korrigiert die Position
* @author: Peter Adelmann
* @date: 2010-09.20
*/
showKundenFlash = function() {
  bog.showKundenFlash();
}
bog.showKundenFlash = function() {
  bog.getKundenPartnerFlash('kunden');
  $('#flash_data').css({
    'top': '284px'
  });
}

/**
* @fn String getKundenPartnerFlash(id)
* bindet das SWF-Object ein (über eine externe Funktion)
* setzt die Flashinhalte in Abhängigkeit des übergebenen Parameter
* @param String id die Ansicht die geladen werden soll
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.getKundenPartnerFlash = function(id) {
  //bog.getSWFObject();
  
  //$('#contentFlowContainer').hide();
  

  $(window).load( function() {
    var check_flashversion = 9;
  
    //if (typeof flashversion != "undefined") {
      //check_flashversion = 99;
    //}
    
    bog.version = deconcept.SWFObjectUtil.getPlayerVersion();
    if (bog.version['major'] > check_flashversion) {
      var flash = new SWFObject('/tl_files/flash/' + id + '/main.swf', 'flash', '760', '260', '9');
      
      flash.addVariable('imageXML', '/tl_files/flash/' + id + '/config.xml');
      
      flash.addParam('menu', 'true');
      flash.addParam('wmode', 'transparent');
      flash.addParam('menu', 'false');
      flash.write('flash_data');
    }
    else {
      $('#contentFlowContainer').show();
    }
  
  
  });  
}

/**
 * @var portfolio_elements
 * Definition der Portfolio-Elemente
 */
// Startposition des portfolio_elements-Feld und Feld-Position im Sprite
bog.portfolio_elements = [
  {'name': 'Strategy',               'position': 0, 'layer': '#infobox_strategy',               'flashid': 'strategy' },
  {'name': 'Advertising',            'position': 1, 'layer': '#infobox_advertising',            'flashid': 'advertising' },
  {'name': 'Corporate Finance',      'position': 2, 'layer': '#infobox_corporate_finance',      'flashid': 'corporate_finance' },
  {'name': 'Corporate Presentation', 'position': 3, 'layer': '#infobox_corporate_presentation', 'flashid': 'corporate_presentation' },
  {'name': 'Human Resources',        'position': 4, 'layer': '#infobox_human_resources',        'flashid': 'human_resources' },
  {'name': 'Marketing',              'position': 5, 'layer': '#infobox_marketing',              'flashid': 'marketing' },
  {'name': 'M & A',                  'position': 6, 'layer': '#infobox_m_und_a',                'flashid': 'm_und_a' },
  {'name': 'Public Relations',       'position': 7, 'layer': '#infobox_public_relations',       'flashid': 'public_relations' },
  {'name': 'Sales',                  'position': 8, 'layer': '#infobox_sales',                  'flashid': 'sales' }
];
bog.position = 0;

/**
* @fn String showPortfolioFlash()
* bindet das SWF-Object ein (über eine externe Funktion)
* Anzeige des Portfolio-Rades
* ggf No-Flash-Inhalte
* @author: Peter Adelmann
* @date: 2010-09.20
*/
showPortfolioFlash = function() {
  bog.showPortfolioFlash();
}
bog.showPortfolioFlash = function() {
  //bog.getSWFObject();

  $(window).load( function() {
    var portfolio_flash = new SWFObject('tl_files/flash/wheel/main.swf', 'portfolio_flash', '380', '466', '9');
    portfolio_flash.addParam('wmode', 'transparent');

    $('#portfolio_rad_javascript').empty();
    $('.nav_portfolio #right').css({
      'position': 'absolute',
      'top': '-3px',
      'right': '1px',
      'background-image': 'none'
    });
    
    $('.nav_portfolio #main .infobox').css({
      'background-image': 'url(/tl_files/pics/portfolio_infobox.gif)',
      'background-position': '343px -41px',
      'background-repeat': 'no-repeat'
    });

    portfolio_flash.write('portfolio_rad_javascript');
    portfolio();
  });
}

/**
* @fn String portfolio(id)
* diese Funktion wird vom Flash aufgerufen, um den Inhalt zur Radauswahl anzuzeigen
* es werden die internen Verwaltungs-ID zugeordnet
* alle Layer ausgeblendet
* den neu benötigten Layer eingeblendet
* @param String id aus dem Flash übergebener Parameter für die Inhaltsanzeige
* @author: Peter Adelmann
* @date: 2010-09.20
*/
function portfolio(id) {
  var portfolio = 2;
  if (id) {
    if (id == 'strategy') {
      portfolio = 0;
    }
    else if (id == 'advertising') {
      portfolio = 1;
    }
    else if (id == 'corporate_finance') {
      portfolio = 2;
    }
    else if (id == 'corporate_presentation') {
      portfolio = 3;
    }
    else if (id == 'human_resources') {
      portfolio = 4;
    }
    else if (id == 'marketing') {
      portfolio = 5;
    }
    else if (id == 'm_und_a') {
      portfolio = 6;
    }
    else if (id == 'public_relations') {
      portfolio = 7;
    }
    else if (id == 'sales') {
      portfolio = 8;
    }
  }
  var foo = document.getElementById('portfolio');
  if (foo) {
    $('.nav_portfolio #portfolio .infobox').hide();
    $(bog.portfolio_elements[portfolio]['layer']).show();
  }
}

/**
* @fn String showPortfolio(id)
* JS-Version des Rades
* Rad wird neu angezeigt (CSS-Sprite)
* @param String id Anzuzeigender Bereich
* @author: Peter Adelmann
* @date: 2010-09.20
*/
showPortfolio = function(id) {
  bog.showPortfolio(id);
}
bog.showPortfolio = function(id) {
  var foo = document.getElementById('portfolio');
  if (foo) {
    $('.nav_portfolio #portfolio .infobox').hide();
    
    if (id  !== 0) {
      
      // schauen, welches Feld gewünscht wird
      var check = bog.portfolio_elements[id];
      
      // solange drehen, bis das gewünschte Feld auf Anfang steht (letztes Array-Element nehmen und vorne einfügen)
      while (bog.portfolio_elements[0]['name'] !== check['name']) {
        bog.portfolio_elements.push(portfolio_elements.shift());
      }
      
      // Position des ausgewählten Feld im Sprite berechnen
      bog.position = 315 * bog.portfolio_elements[0]['position'];
    }
    // Sprite neu setzen/ausrichten
    // Layer einblenden
    $('.nav_portfolio #right').hide();
    $('.nav_portfolio #right').css('background-position', '0px -' + bog.position + 'px').show();
    $(bog.portfolio_elements[0]['layer']).show();
  }
}

/**
* @fn String setCaseStudyResultListStyle()
* Layoutänderungen in Abhängigkeit der Ergebnisanzahl für Kundenspezifische Darstellung
* es wird damit das Floating beeinflusst
* @author: Peter Adelmann
* @date: 2010-09.20
*/
bog.setCaseStudyResultListStyle = function() {
  var foo = document.getElementById('casestudy_result_list');
  if (foo) {
    var case_study_length = $('#casestudy_result_list li').length;
    if (case_study_length > 4) {
      $('#casestudy_result_list').css('width', '717px');
    }
    else if (case_study_length > 2) {
      $('#casestudy_result_list').css('width', '478px');
    }
    else {
      $('#casestudy_result_list').css('width', '239px');
    }
  }
}


$(document).ready(function() {
  bog.initScrollbar();
  bog.initLightbox();
  bog.resetSelectedInterest();
  bog.getSelectedInterest();  
  bog.showPortfolio(0);
  bog.setContentFlowProperties();
  bog.setCaseStudyResultListStyle();
});

$(window).load(function() {
});
