function switchToNextElement( referenceNode ) {
  var children = referenceNode.parentNode.childNodes;
  var numberOfChildren = children.length;
  var nextVisible = false;

  for ( i=0; i<numberOfChildren; i++ ) {
    var current = children[i];

    if ( current.nodeName.toLowerCase() == 'div' ) {
      if ( nextVisible == true ) {
	current.style.display='block';
	referenceNode.style.display='none';
	break;
      }
    }

    if ( current == referenceNode ) {
      nextVisible = true;
    }
  }
}
function switchToPreviousElement( referenceNode ) {
  var children = referenceNode.parentNode.childNodes;
  var numberOfChildren = children.length;
  var lastElement = null;

  for ( i=0; i<numberOfChildren; i++ ) {
    var current = children[i];

    if ( current.nodeName.toLowerCase() == 'div' ) {
      if ( current == referenceNode ) {
	if ( lastElement != null ) {
	  lastElement.style.display='block';
	  current.style.display='none';
	}
	break;
      }
      else {
	lastElement = current;
      }
    }
  }
}

function toggleDivVisibility( referenceNode ) {
  var children = referenceNode.parentNode.childNodes;
  var numberOfChildren = children.length;
  var nextVisible = false;

  var extension = 1;
  for ( var i=0; i<numberOfChildren; i++ ) {
    var current = children[i];

    var arrowImage = getImageChild( current );
    //var arrowImage = null;

    if ( current.nodeName.toLowerCase() == 'div' ) {
      var correspondingRightElement = document.getElementById( "box_"+extension );

      if ( nextVisible == true ) {
	var currentVisibility = current.style.display;
	current.style.display='block';
	if ( correspondingRightElement != null ) {
	  correspondingRightElement.style.display='block';
	}
	nextVisible = false;
      }
      else {
	current.style.display='none';
	if ( correspondingRightElement != null ) {
	  correspondingRightElement.style.display='none';
	}
      }
      extension++;
    }

    if ( current == referenceNode ) {
      nextVisible = true;
      if ( arrowImage != null ) {
	arrowImage.src = "fileadmin/templates/images/arrow_down.gif";
      }
    }
    else {
      if ( arrowImage != null ) {
	arrowImage.src = "fileadmin/templates/images/arrow.gif";
      }
    }
  }
}

/* Find the first img child tag below the first a tag of referenceNode */
function getImageChild( referenceNode ) {
  var children = referenceNode.childNodes;
  var numberOfChildren = children.length;

  for ( var i=0; i<numberOfChildren; i++ ) {
    var current = children[i];
    if ( current.nodeName.toLowerCase() == 'a' ) {
      var grandChildren = current.childNodes;
      var numberOfGrandChildren = grandChildren.length;

      for ( j=0; j<numberOfGrandChildren; j++ ) {
	var currentGrandChild = grandChildren[j];
	if ( currentGrandChild.nodeName.toLowerCase() == 'img' ) {
	  return( currentGrandChild );
	}
      }
    }
  }
  return( null );
}

/* ******************************************************************************* */

FadeEffect.prototype.FADE_DURATION = 2.0

FadeEffect.prototype.replaceFadeElements = FadeEffect_replace_fade_elements;
FadeEffect.prototype.replaceElement = FadeEffect_replace_element;
FadeEffect.prototype.startFading = FadeEffect_start_fading;

function FadeEffect( logoNames, logoLinks, imageBaseDirectory ) {
  this.currentIndex = 3;
  this.logoNames = logoNames;
  this.logoLinks = logoLinks;
  this.imageBaseDirectory = imageBaseDirectory;
}

function FadeEffect_replace_fade_elements() {
  for( var i=0; i<4; i++ ) {
    this.currentIndex++;
    if ( this.currentIndex >= this.logoNames.length ) {
      this.currentIndex = 0;
    }
    var currentImage = this.imageBaseDirectory + this.logoNames[this.currentIndex];
    var currentLink = this.logoLinks[this.currentIndex];
    this.replaceElement( i+1, currentImage, currentLink );
  }

  new Effect.Opacity('fadeOut', {from: 0.0, to: 1.0, duration: FadeEffect.prototype.FADE_DURATION} );
}

function FadeEffect_start_fading() {
  new Effect.Opacity('fadeOut', {from: 1.0, to: 0.0, duration: FadeEffect.prototype.FADE_DURATION} );
  window.setTimeout( "fader.replaceFadeElements();", FadeEffect.prototype.FADE_DURATION * 1000 );
  /*
  window.setTimeout( "new Effect.Opacity('fadeOut', {from: 0.0, to: 1.0, duration: FadeEffect.prototype.FADE_DURATION} );",
		     FadeEffect.prototype.FADE_DURATION * 1000 );
  */
}

function FadeEffect_replace_element( theIndex, theImage, theLink ) {
  var linkToReplace = document.getElementById( "fadeLink" + theIndex );
  var parentDiv = linkToReplace.parentNode;

  parentDiv.style.backgroundImage = "url(" + theImage + ")";
  linkToReplace.setAttribute( "href", theLink );
  linkToReplace.setAttribute( "onclick", "window.open('" + theLink + "');return(false);" );
}

function FadeEffect_replace_elementOld( theIndex, theImage, theLink ) {
  var imageToReplace = document.getElementById( "fadeImage" + theIndex );
  var linkToReplace = document.getElementById( "fadeLink" + theIndex );

  imageToReplace.src = theImage;
  linkToReplace.setAttribute( "href", theLink );
  linkToReplace.setAttribute( "onclick", "window.open('" + theLink + "');return(false);" );
}

