/*

highlight v3

Highlights arbitrary terms.

<http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>

MIT license.

Johann Burkard
<http://johannburkard.de>
<mailto:jb@eaio.com>

*/

jQuery.fn.highlight = function(pat) {
 function innerHighlight(node, pat) {
  var skip = 0;
  if (node.nodeType == 3) {
   var pos = node.data.toUpperCase().indexOf(pat);
   if (pos >= 0) {
    var spannode = document.createElement('span');
    spannode.className = 'highlight';
    var middlebit = node.splitText(pos);
    var endbit = middlebit.splitText(pat.length);
    var middleclone = middlebit.cloneNode(true);
    spannode.appendChild(middleclone);
    middlebit.parentNode.replaceChild(spannode, middlebit);
    skip = 1;
   }
  }
  else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
   for (var i = 0; i < node.childNodes.length; ++i) {
    i += innerHighlight(node.childNodes[i], pat);
   }
  }
  return skip;
 }
 return this.each(function() {
  innerHighlight(this, pat.toUpperCase());
 });
};

jQuery.fn.removeHighlight = function() {
 return this.find("span.highlight").each(function() {
  this.parentNode.firstChild.nodeName;
  with (this.parentNode) {
   replaceChild(this.firstChild, this);
   normalize();
  }
 }).end();
};





$(document).ready(function(){ 

// fix pngs
$(document).pngFix();

// colorbox for solutionsoverview
$('a[href$="solutionsoverview.html"]').colorbox({ 
  inline : true, 
  href : '#cbs-img', 
  onOpen: function() { $('body').addClass('whiteColorBox') } , 
  onClosed: function() { $('body').removeClass('whiteColorBox') } 
});

// menu event for hinding
$('#main-menu-level-2').mouseleave(function(){
  $('#main-menu-level-2').hide();  
});


// menu event for showing
$('#main-menu a').mouseenter(function(eventData) {
  var subMenu = $(this).siblings('ul');
  var innerContainer = $('#main-menu-level-2 .pad');
  var outerContainer = $('#main-menu-level-2');
  
  var title = $(this).clone(false, false);
  var leftPosition = 46 + $(this).position().left - ((outerContainer.width() - $(this).outerWidth()) / 2);
  innerContainer.empty();
  innerContainer.append(title);
  outerContainer.height($(document).height());
  outerContainer.css('left', leftPosition);

  title.wrap('<h4></h4>');
  
  outerContainer.show();

  if (subMenu.length) {
    var clone = subMenu.clone(false);    
    clone.find('li a').each(function() { $(this).wrapInner('<span></span>'); });
    
     
    innerContainer.append(clone);
    clone.hide();
    
    clone.slideDown(450, 'linear');
  }
});



// highlight searchwords
try
{
  var searchWordsRegEx = /^.*[\\?&](q|p|tx_indexedsearch%5Bsword%5D)=(.*?)(&.*)?$/;
  var matches = document.referrer.match(searchWordsRegEx);
  
  if(matches && matches.length > 2)
  {
    var searchWords = decodeURI(matches[2]).split('+');
  
    $(searchWords).each(function(index, searchWord) {
      searchWord = jQuery.trim(searchWord);
      
      if(searchWord != '')
      {
        $('#content').highlight(searchWord);
      }
    });
  }
}
catch(exception)
{
}


// accordion
var accordionRoot = $("#content-column");

if($( "#content-column .tab-content").length > 0)
{
  accordionRoot = $( "#content-column .tab-content, #content-column .tab-pages" );
}

accordionRoot.accordion({
  header: '.accordion-page h3.accordion-header', 
  active: false,
  collapsible: true,
  autoHeight: false,
  clearStyle: true
});

var accordionToActivate = null;

$('.accordion-page').each(function(index, accordionPage) {
    if(accordionToActivate == null && $(accordionPage).find('.accordion-content .highlight').length > 0)
    {
      accordionToActivate = accordionPage;      
      $( "#content-column" ).accordion('activate', index);
      
      $(accordionPage).find('.accordion-header').first().triggerHandler('click');
    }
});


// build tab pages
var tabPages = $('.tab-page');
var headerToActivate = null;

if(tabPages.length > 0) {
  var menuContainer = $('<div />').addClass('tabs-menu').insertBefore(tabPages.first());
  var contentContainer = $('<div />').addClass('tabs-content').insertBefore(tabPages.first());
  
  tabPages.each(function(indexTabPage, tabPage) {
    var header = $(tabPage).children('.tab-header').first();
    var content = $(tabPage).children('.tab-content').first();
    
    if(indexTabPage == tabPages.length - 1)
    {
      header.addClass('last');
    }
    
    if(headerToActivate == null && content.find('.highlight').length > 0)
    {
      headerToActivate = header;
    }
  
    menuContainer.append(header);
    contentContainer.append(content);

    header.click(function() {
      contentContainer.children('.tab-content').each(function() { $(this).hide(); });
      menuContainer.children('.tab-header').each(function() { $(this).removeClass('active'); });
      
      content.show();
      header.addClass('active'); 
    });
    
    $(tabPage).show();
  });
  
  menuContainer.append('<div class="clearer"></div>');
  menuContainer.children('.tab-header').first().triggerHandler('click');
  
  // activate first tab with search words
  if(headerToActivate != null)
  {
    headerToActivate.trigger('click');
  }
}



// equalize content-columns
$('.two-columns').each(function() {
  var colLeft = $(this).find('.column-left .pad');
  var colRight = $(this).find('.column-right .pad');
  if(colRight.height() > colLeft.height()) {
    colLeft.height(colRight.height());
  }
});


$(".tabs-menu").each(function() {
  $(this).data("offset.top", $(this).offset().top);
});



});

$(window).scroll(function() {
  $(".tabs-menu").each(function(index, tabMenu) {
    if($(this).data("offset.top") - $(window).scrollTop() < 10) {
      $(this).addClass("fixed-menu");
    }
    else {
      $(this).removeClass("fixed-menu");
    }    
  });
});
