function showTip(event, content)
{
  var eventSrc = window.event ? window.event.srcElement : event.currentTarget;

  var tipBox = document.createElement('DIV');
  tipBox.innerHTML  = content;
  tipBox.id         = 'tipBox';
  tipBox.style.left = '0px';
  tipBox.style.top  = '0px';
  tipBox.visibility = 'hidden';

  document.body.appendChild(tipBox);

  tipBox.style.left = (getPageOffsetLeft(eventSrc) + eventSrc.clientWidth - tipBox.offsetWidth) + 'px';
  tipBox.style.top  = (getPageOffsetTop(eventSrc) - tipBox.offsetHeight) + 'px';
  tipBox.visibility = 'visible';
} // end func showTip


function hideTip()
{
  var tipBox;

  if (tipBox = getNode('tipBox'))
    tipBox.parentNode.removeChild(tipBox);
} // end func hideTip


function showMovie(event, content)
{
  with (window.event ? window.event.srcElement : event.currentTarget) {
    blur();
  }

  var movieBox = getNode('movieBox');
  if (movieBox)
    movieBox.parentNode.removeChild(movieBox);

  movieBox = document.createElement('DIV');
  movieBox.id = 'movieBox';
//  movieBox.innerHTML = '<object data="' + content + '" type="application/x-shockwave-flash" width="460" height="316"><param name="movie" value="' + content + '" /><param name="menu" value="false" /><param name="wmode" value="opaque" /></object><br /><img id="hideMovieIcon" src="/img/icon.close.gif" width="13" height="13" onclick="hideMovie()" />';
  getNode('contentLeft').appendChild(movieBox);

  var so = new SWFObject(content, 'jab', 460, 316, 8, '#333333');
  so.addParam('menu', false);
  so.addParam('wmode', 'opaque');
  so.write('movieBox');

  return false;
} // end func showMovie

function hideMovie()
{
  var movieBox;

  if (movieBox = getNode('movieBox'))
    movieBox.parentNode.removeChild(movieBox);
} // end func hideMovie


var contentPagerItems  = new Array();
var contentPagerImages = new Array();

function registerPager()
{
  var node = getNode('contentPager');
  if (!node)
    return;

  var items = node.getElementsByTagName('A');

  contentPagerItems = new Array();
  for (var i = 0, j = items.length; i < j; ++i)
    contentPagerItems[contentPagerItems.length] = items[i];
} // end func registerPager


function loadTeaser(e, idx)
{
  var eventSrc = window.event ? window.event.srcElement : e.currentTarget;
  eventSrc.blur();

  with (window.event ? window.event.srcElement : e.currentTarget) {
    blur();
  }
  for (i = 0, j = contentPagerItems.length; i < j; ++i)
    contentPagerItems[i].className = i == idx ? 'selected' : '';
  getNode('teaser').src = contentPagerImages[idx];

  return false;
} // end func loadTeaser


function initThumbnails(thumbsWidth)
{
  var children      = getNode('children');
  var thumbnailBox  = getNode('thumbnailBox');
  var thumbnailBar  = getNode('thumbnailBar');
  var thumbnails    = getNode('thumbnails');

  with (thumbnailBox) {
    style.cssFloat   = 'left';
    style.height     = '84px';
    style.styleFloat = 'left';
    style.width      = '400px';
  }

  with (thumbnailBar) {
//    style.clip     = 'rect(0px, 30px, 40px, 0px)';
    style.overflow = 'hidden';
    style.position = 'relative';
    style.height   = '84px';
    style.width    = '400px';
  }

  with (thumbnails) {
    style.left     = '0px';
    style.position = 'absolute';
    style.top      = '0px';
    style.width    = thumbsWidth + 'px';
  }

  if (thumbsWidth < 430)
    return;

  var rightButton = document.createElement('img');
  with (rightButton) {
    alt              = '»';
    id               = 'thumbnailButtonRight';
    src              = '/img/arrow.right.gif'
    style.cssFloat   = 'right';
    style.cursor     = 'pointer';
    style.styleFloat = 'right';
    style.width      = '29px';
    style.height     = '84px';
  }
  children.insertBefore(rightButton, thumbnailBox);
  registerEvent(rightButton, 'mouseover', function() {ma_move('thumbnailBar', 'thumbnails', 10, 0);});
  registerEvent(rightButton, 'mouseout', function() {ma_stop('thumbnailBar', 'thumbnails');});

  var leftButton = document.createElement('img');
  with (leftButton) {
    alt              = '«';
    id               = 'thumbnailButtonLeft';
    src              = '/img/arrow.left.gif'
    style.cssFloat   = 'left';
    style.cursor     = 'pointer';
    style.styleFloat = 'left';
    style.width      = '29px';
    style.height     = '84px';
  }
  children.insertBefore(leftButton, thumbnailBox);
  registerEvent(leftButton, 'mouseover', function() {ma_move('thumbnailBar', 'thumbnails', -10, 0);});
  registerEvent(leftButton, 'mouseout', function() {ma_stop('thumbnailBar', 'thumbnails');});
} // end func loadTeaser

ma_speed = 100;


function productLoader(event, nodeId, languageId)
{
  if (AjaxRequest.getXmlHttpRequest() == null)
    return true;

  var eventSrc = window.event ? window.event.srcElement.parentNode : event.currentTarget;
  eventSrc.blur();

  var siblings = getNode('thumbnails').getElementsByTagName('A');
  for (var i = 0, j = siblings.length; i < j; ++i)
    siblings[i].className = '';
  eventSrc.className = 'selected';

  AjaxRequest.get(
    {
      'url':        '/productLoader.php?nodeId=' + nodeId + '&lang=' + languageId,
      'onSuccess':  processLoaderResult
    }
  );

  return false;
} // end func productLoader


function processLoaderResult(request)
{
  try {
    eval('var result = ' + request.xmlHttpRequest.responseText);
  } catch (e) {
    alert(e);
    return false;
  }

  hideMovie();

  // background
  if (result.background != null) {
    document.body.style.backgroundImage = 'url(' + result.background + ')';
  }

  // pager
  contentPagerImages = result.images;
  var cntPager = getNode('contentPager');

  // rebuild pager
  if (cntPager) {
    if (contentPagerImages.length < contentPagerItems.length) {
      for (i = contentPagerImages.length, j = contentPagerItems.length; i < j; ++i) {
        var p = contentPagerItems[i].parentNode;
        p.removeChild(contentPagerItems[i]);
        cntPager.removeChild(p);
      }
    } else if (contentPagerImages.length > contentPagerItems.length) {
      for (i = contentPagerItems.length, j = contentPagerImages.length; i < j; ++i) {
        var li = document.createElement('LI');
        cntPager.appendChild(li);
        var a  = document.createElement('A');
        a.onclick = new Function('event', 'loadTeaser(event, ' + i + ')');
        a.innerHTML = i + 1;
        li.appendChild(a);
      }
    }
  }
  registerPager();

  // teaser
  var teaser;
  if (teaser = getNode('teaser')) {
    teaser.src = contentPagerImages[0];
    for (i = 1, j = contentPagerItems.length; i < j; ++i)
      contentPagerItems[i].className = '';
    contentPagerItems[0].className = 'selected';
  }

  // title
  document.title = document.title.replace(/» [^»]+?$/, '» ' + result.title);

  // contents
  getNode('contentHeading').innerHTML = result.heading;
  getNode('contentRight').innerHTML   = result.body.replace(/(?:\\r|\\n)+/g, '\n');

  // tip
  if (result.tip) {
    getNode('contentRight').innerHTML += sprintf(
      "<div class='print' id='infoBox'><h3>» %s</h3><p>%s</p></div>",
      result.tipLabel,
      result.tip.replace(/\r\n|\r|\n|\\r\\n|\\r|\\n/g, '<br/>')
    );

    var tipLink = getNode('tipLink');
    if (tipLink == null) {
      tipLink = document.createElement('A');
      tipLink.className  = 'tipLink';
      tipLink.id         = 'tipLink';
      tipLink.onmouseout = hideTip;
      tipLink.innerHTML  = '» ' + result.tipLabel;
      getNode('contentFooter').appendChild(tipLink);
    }

    tipLink.style.visibility = 'visible';
    tipLink.onmouseover = new Function('event', 'showTip(event, "' + result.tip.replace(/\r\n|\r|\n|\\r\\n|\\r|\\n/g, '<br/>') + '")');
  } else if (getNode('tipLink')) {
    getNode('tipLink').style.visibility = 'hidden';
  }

  // feature boxes
  var fbList = getNode('featureItems');
  if (fbList == null) {
    fbList = document.createElement('DIV');
    fbList.id = 'featureItems';
    getNode('featureCol').appendChild(fbList);
  } else {
    var fbItems = fbList.childNodes;
    for (var i = fbItems.length - 1; i >= 0; --i) {
      if (fbItems[i].className == 'fb')
        fbList.removeChild(fbItems[i]);
    }
  }
  if (result.fb.length) {
    if (first = fbList.firstChild) {
      for (i = 0, j = result.fb.length; i < j; ++i) {
        var fb = document.createElement('LI');
        fb.className = 'fb';
        fb.innerHTML = result.fb[i];
        fbList.insertBefore(fb, first);
      }
    } else {
      for (i = 0, j = result.fb.length; i < j; ++i) {
        var fb = document.createElement('LI');
        fb.className = 'fb';
        fb.innerHTML = result.fb[i];
        fbList.appendChild(fb, first);
      }
    }
  }

  // movie link
  var movieLink = getNode('movieLink');
  if (result.movie != null) {
    if (movieLink == null) {
      movieLink = document.createElement('A');
      movieLink.id         = 'movieLink';
      movieLink.innerHTML  = '» ' + result.movieLabel;
      var listItem = document.createElement('LI');
      listItem.appendChild(movieLink);
      getNode('featureItems').appendChild(listItem);
    }

    movieLink.parentNode.style.visibility = 'visible';
    movieLink.onclick = new Function('event', 'return showMovie(event, "' + result.movie + '");');
  } else if (movieLink) {
    movieLink.parentNode.style.visibility = 'hidden';
  }

  // featureClip
  featureClip = getNode('header-feature-film');
  if (result.feature != null) {
    if (featureClip == null) {
      featureClip = document.createElement('OBJECT');
      featureClip.id               = 'header-feature-film';
      featureClip.width            = 285;
      featureClip.height           = 116;
      featureClip.type             = 'application/x-shockwave-flash';
      featureClip.style.visibility = 'hidden';
      getNode('contentCol').insertBefore(featureClip, getNode('contentCol').firstChild);

      featureMovie = document.createElement('PARAM');
      featureMovie.id    = 'header-feature-movie';
      featureMovie.name  = 'movie';
      featureClip.appendChild(featureMovie);

      var m = document.createElement('PARAM');
      featureMovie.name  = 'menu';
      featureMovie.value = 'false';
      featureClip.appendChild(m);

      var m = document.createElement('PARAM');
      featureMovie.name  = 'opaque';
      featureMovie.value = 'wmode♦';
      featureClip.appendChild(m);
    } else {
      featureMovie = getNode('header-feature-movie');
    }

    featureClip.data = featureMovie.value = result.feature;
    featureClip.style.visibility = 'visible';
  } else if (featureClip) {
    featureClip.style.visibility = 'hidden';
  }

  setTargets(getNode('contentRight'));
} // end func productLoader

function preloadImages()
{
  for (var i = 0, j = preloads.length; i < j; ++i) {
/*
    var img = document.createElement('IMG');
    with (img.style) {
     position = 'absolute';
     left     = '-1000px';
     top      = '-1000px';
    }
*/
//    document.body.appendChild(img);
    var img = new Image();
    img.src = preloads[i];
//    document.body.removeChild(img);
  }
} // end func preloadImages

/*
saveOnUnload = function (evt)
{
  if (window.attachEvent) {
    evt.returnValue = 'Sie haben Änderungen vorgenommen, die Sie nicht gespeichert haben.';
  } else {
    return "Sie haben Änderungen vorgenommen, die Sie nicht gespeichert haben.";
  }
} // end func saveOnUnload

if (window.attachEvent) {
  window.attachEvent('onbeforeunload', saveOnUnload);
} else {
  window.onbeforeunload = saveOnUnload;
}
*/