function handleError() {
  return true;
}

window.onerror = handleError;

function setBW() {

  changeLayout(false); //use old functions
  changeVersionText(); //use old functions

}

jQuery(document).ready(function(){

  $("a.favorite").click(function(){
    track_wt_convenience_tool('bookmark');
    setBookmark();
    return false;
  });
  $("a.blackandwhite").click(function(){
    track_wt_convenience_tool('blackandwhite');
    setBW();
    return false;
  });

  $("a.print").click(function(){
	track_wt_convenience_tool('print');
	printUrl = document.URL;
	if(printUrl.indexOf('?')>1){
		printUrl += "&print=1"
	}else{
		printUrl += "?print=1"
	}
	window.location.href = printUrl;
	return false;
  });

  //content_resize ---------
  init_plugin('.body_tools a.enlarge',
       function(el) {
        el.hide_rightcol();
      });




  //small sliding teasers ---------
  init_plugin('ul.small_teasers',
       function(el) {
        el.small_teasers();
      });

  //teasers with numbered items ---------
  init_plugin('.teaser ul.numbers',
       function(el) {
        el.numbered_teasers();
      });

  //tabs ---------
  init_plugin('.tab_box',
       function(el) {
        el.my_tabs();
      });

  //toogleboxes ---------
  init_plugin('#toolscol',
       function(el) {
        el.toogleboxes();
      });

  //Accordion ---------
  init_plugin('ul.accordion',
       function(el) {
        $('ul.accordion').accordion({
          txt_open: accordion_txt_open,
          txt_close: accordion_txt_close
        });
      });

  //Image Lightbox ---------
  init_plugin('a.image',
       function(el) {
        el.lightBox({
          txtImage: 'Bild',
          txtOf: 'von'
        });

      });

  //intro teasers ---------
  init_plugin('.teaser_animation',
       function(el) {
        el.intro_teasers();

      });


  if ($('#tool_list').size() > 0) {
    var is_open = false;
    $('#tool_list > li:not(.icon) > a').hover(function(e){
                      var a_self = $(this);
                      var li_tag = a_self.parent();

                      li_tag.addClass('hovered');
                      li_tag.siblings().removeClass('hovered').find('.hide_bg').hide();

                      var is_new = false;
                      if (a_self.next().next().size() == 0) {
                        var is_new = true;
                        li_tag.append('<div class="hide_bg"></div>');


                      }
                      var bg = a_self.next().next();
                      var sub = a_self.next();

                      var w = sub.width() + 20;
                      var h = sub.height() + 20;

                      var cssObj = {
                        'width' : w + 'px',
                        'height' : h + 'px'
                      }
                      bg.css(cssObj);
                      bg.show();

                      if (is_new) {
                        bg.hover(function(e){
                              var bg_self = $(this);
                              bg_self.hide();
                              bg_self.parent().removeClass('hovered');
                              return false;
                          },
                          function(e){ }
                        );
                      }


                      return false;
                    },
                    function(e){

                    }
    );

  }


  if ($(".body_tools .details ul.links li a[href^='#']").size() > 0) {
    initAnchorsToAccordion(".body_tools .details ul.links li a[href^='#']");
  }


  /*
  jQuery("a.theme_light_square[rel^='prettyPhoto']").prettyPhoto({theme:'light_square', allowresize: false, btnText:close_btn});

  jQuery('.gallery a.image').lightBox({
      txtImage: 'Bild',	// (string) Specify text "Image"
      txtOf: 'von'
  });
  */
});

function init_plugin (element_selector,callback_fn) {
  var plugin_el = $(element_selector);
  if (plugin_el.length > 0) {
    if (typeof(callback_fn) == 'function') {
      callback_fn(plugin_el);
    }
  }
}

jQuery.cookie = function (key, value, options) {
    // key and value given, set cookie...
    if (arguments.length > 1 && (value === null || typeof value !== "object")) {
        options = jQuery.extend({}, options);

        if (value === null) {
            options.expires = -1;
        }

        if (typeof options.expires === 'number') {
            var days = options.expires, t = options.expires = new Date();
            t.setDate(t.getDate() + days);
        }

        return (document.cookie = [
            encodeURIComponent(key), '=',
            options.raw ? String(value) : encodeURIComponent(String(value)),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            //options.path ? '; path=' + options.path : '',
            '; path=/',
            options.domain ? '; domain=' + options.domain : '',
            options.secure ? '; secure' : ''
        ].join(''));
    }
    // key and possibly options given, get cookie...
    options = value || {};
    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};

function reloadImagesBlackandwhite(modus) {
  $.each($('img.has_blackandwhite'), function(){
    var parts = $(this).attr('src').toString().split('/');
    var len = parts.length;
    var new_path = "";
    for (var i = 0; i < len; i++) {
      if (modus) {
        if (i < (len-1)) {
          if (new_path != "") new_path += "/";
          new_path += parts[i];
        }
        else new_path += "/blackandwhite/"+parts[i];
      } else {
        if (parts[i] != "blackandwhite") {
          if (new_path != "") new_path += "/";
          new_path += parts[i];
        }
      }
    }

    $(this).attr('src', new_path);
  });


}

var AncorRelToAccordion = new Array();

function initAnchorsToAccordion(sel_ancors) {
  var content_el = $('#content .body .text');
  $.each($(sel_ancors), function(){
              var pos = $(this).attr('href');
              pos = pos.substring(1, pos.length);
              var li_el = content_el.find("a[name='"+pos+"']").parent().parent();

              if (li_el.hasClass('acc') == true) {
                AncorRelToAccordion[pos] = li_el.children().eq(0);

                $(this).click(function(e){
                  var pos = $(this).attr('href');
                  pos = pos.substring(1, pos.length);
                  if (!AncorRelToAccordion[pos].parent().hasClass('active')) AncorRelToAccordion[pos].trigger('click');
                });

              }
  });

}



/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
  $.fn.superfish = function(op){

    var sf = $.fn.superfish,
      c = sf.c,
      $arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
      over = function(){
        var $$ = $(this), menu = getMenu($$);
        clearTimeout(menu.sfTimer);
        $$.showSuperfishUl().siblings().hideSuperfishUl();
      },
      out = function(){
        var $$ = $(this), menu = getMenu($$), o = sf.op;
        clearTimeout(menu.sfTimer);
        menu.sfTimer=setTimeout(function(){
          o.retainPath=($.inArray($$[0],o.$path)>-1);
          $$.hideSuperfishUl();
          if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
        },o.delay);
      },
      getMenu = function($menu){
        var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
        sf.op = sf.o[menu.serial];
        return menu;
      },
      addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

    return this.each(function() {
      var s = this.serial = sf.o.length;
      var o = $.extend({},sf.defaults,op);
      o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
        $(this).addClass([o.hoverClass,c.bcClass].join(' '))
          .filter('li:has(ul)').removeClass(o.pathClass);
      });
      sf.o[s] = sf.op = o;

      $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
        if (o.autoArrows) addArrow( $('>a:first-child',this) );
      })
      .not('.'+c.bcClass)
        .hideSuperfishUl();

      var $a = $('a',this);
      $a.each(function(i){
        var $li = $a.eq(i).parents('li');
        $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
      });
      o.onInit.call(this);

    }).each(function() {
      var menuClasses = [c.menuClass];
      if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
      $(this).addClass(menuClasses.join(' '));
    });
  };

  var sf = $.fn.superfish;
  sf.o = [];
  sf.op = {};
  sf.IE7fix = function(){
    var o = sf.op;
    if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
      this.toggleClass(sf.c.shadowClass+'-off');
    };
  sf.c = {
    bcClass     : 'sf-breadcrumb',
    menuClass   : 'sf-js-enabled',
    anchorClass : 'sf-with-ul',
    arrowClass  : 'sf-sub-indicator',
    shadowClass : 'sf-shadow'
  };
  sf.defaults = {
    hoverClass	: 'sfHover',
    pathClass	: 'overideThisToUse',
    pathLevels	: 1,
    delay		: 800,
    animation	: {opacity:'show'},
    speed		: 'normal',
    autoArrows	: true,
    dropShadows : true,
    disableHI	: false,		// true disables hoverIntent detection
    onInit		: function(){}, // callback functions
    onBeforeShow: function(){},
    onShow		: function(){},
    onHide		: function(){}
  };
  $.fn.extend({
    hideSuperfishUl : function(){
      var o = sf.op,
        not = (o.retainPath===true) ? o.$path : '';
      o.retainPath = false;
      var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
          .find('>ul').hide().css('visibility','hidden');
      o.onHide.call($ul);
      return this;
    },
    showSuperfishUl : function(){
      var o = sf.op,
        sh = sf.c.shadowClass+'-off',
        $ul = this.addClass(o.hoverClass)
          .find('>ul:hidden').css('visibility','visible');
      sf.IE7fix.call($ul);
      o.onBeforeShow.call($ul);
      $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
      return this;
    }
  });

})(jQuery);

/*
 * Supersubs v0.2b - jQuery plugin
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 *
 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
 * their longest list item children. If you use this, please expect bugs and report them
 * to the jQuery Google Group with the word 'Superfish' in the subject line.
 *
 */

;(function($){ // $ will refer to jQuery within this closure

  $.fn.supersubs = function(options){
    var opts = $.extend({}, $.fn.supersubs.defaults, options);
    // return original object to support chaining
    return this.each(function() {
      // cache selections
      var $$ = $(this);
      // support metadata
      var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
      // get the font size of menu.
      // .css('fontSize') returns various results cross-browser, so measure an em dash instead
      var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
        'padding' : 0,
        'position' : 'absolute',
        'top' : '-999em',
        'width' : 'auto'
      }).appendTo($$).width(); //clientWidth is faster, but was incorrect here
      // remove em dash
      $('#menu-fontsize').remove();
      // cache all ul elements
      $ULs = $$.find('ul');
      // loop through each ul in menu
      $ULs.each(function(i) {
        // cache this ul
        var $ul = $ULs.eq(i);
        // get all (li) children of this ul
        var $LIs = $ul.children();
        // get all anchor grand-children
        var $As = $LIs.children('a');
        // force content to one line and save current float property
        var liFloat = $LIs.css('white-space','nowrap').css('float');
        // remove width restrictions and floats so elements remain vertically stacked
        var emWidth = $ul.add($LIs).add($As).css({
          'float' : 'none',
          'width'	: 'auto'
        })
        // this ul will now be shrink-wrapped to longest li due to position:absolute
        // so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
        .end().end()[0].clientWidth / fontsize;
        // add more width to ensure lines don't turn over at certain sizes in various browsers
        emWidth += o.extraWidth;
        // restrict to at least minWidth and at most maxWidth
        if (emWidth > o.maxWidth)		{ emWidth = o.maxWidth; }
        else if (emWidth < o.minWidth)	{ emWidth = o.minWidth; }
        emWidth += 'em';
        // set ul to width in ems
        $ul.css('width',emWidth);
        // restore li floats to avoid IE bugs
        // set li width to full width of this ul
        // revert white-space to normal
        $LIs.css({
          'float' : liFloat,
          'width' : '100%',
          'white-space' : 'normal'
        })
        // update offset position of descendant ul to reflect new width of parent
        .each(function(){
          var $childUl = $('>ul',this);
          var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
          $childUl.css(offsetDirection,emWidth);
        });
      });

    });
  };
  // expose defaults
  $.fn.supersubs.defaults = {
    minWidth		: 9,		// requires em unit.
    maxWidth		: 25,		// requires em unit.
    extraWidth		: 0			// extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
  };

})(jQuery); // plugin code ends

/* bgIframe
 *
 * Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (http://www.opensource.org/licenses/mit-license.php)
 *
 * Version 2.1.2
 */
(function(a){a.fn.bgiframe=(a.browser.msie&&/msie 6\.0/i.test(navigator.userAgent)?function(d){d=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},d);var c='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+d.src+'"style="display:block;position:absolute;z-index:-1;'+(d.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(d.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":b(d.top))+";left:"+(d.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":b(d.left))+";width:"+(d.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":b(d.width))+";height:"+(d.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":b(d.height))+';"/>';return this.each(function(){if(a(this).children("iframe.bgiframe").length===0){this.insertBefore(document.createElement(c),this.firstChild)}})}:function(){return this});a.fn.bgIframe=a.fn.bgiframe;function b(c){return c&&c.constructor===Number?c+"px":c}})(jQuery);
