/* 
  - Author(s): J.Leuckel
  - Date: 15.09.2004
  - Version: 1.00
  - Description: required JavaScriptfunctions for the DHTML-scroller
  -
  - Change history:
  -
 */

writeScrollerStyles += '<style type="text/css">\n';

for (i = 0; i < scrollerDivAmount; i++) {
	
writeScrollerDivs += '<div id="scroller-content-' + i + '">';

  contentParentIds[i]  = 'contentParent_'  + i;
  contentChildIds[i]   = 'contentChild_'   + i;
  scrollParentIds[i]   = 'scrollParent_'   + i;
  scrollChildIds[i]    = 'scrollChild_'    + i;
  scrollHideIds[i]     = 'scrollHide_'      + i;
  scrollUpIds[i]       = 'scrollUp_'       + i;
  scrollDownIds[i]     = 'scrollDown_'     + i;

  scrollbarLeft        = contentParentAttributes[i]["left"]    + contentParentAttributes[i]["width"] + horizontalScrollbarPadding;
  scrollbarTop         = contentParentAttributes[i]["top"]     + verticalScrollbarPadding;
  scrollbarHeight      = contentParentAttributes[i]["height"]  + scrollbarSpanning;

  writeScrollerStyles += '#' + contentParentIds[i]  + '{position:absolute; visibility:'+ contentParentAttributes[i]["visibility"] +'; left:' + contentParentAttributes[i]["left"] + 'px; top:' + contentParentAttributes[i]["top"] + 'px; width:' + contentParentAttributes[i]["width"] + 'px; height:' + contentParentAttributes[i]["height"] + 'px; z-index:' +  contentParentAttributes[i]["z-index"] + ';     overflow:hidden; clip:rect(2px ' + contentParentAttributes[i]["width"] + 'px ' + (contentParentAttributes[i]["height"] - 0) + 'px 0px);}\n';
  writeScrollerStyles += '#' + contentChildIds[i]   + '{position:relative; left:0px;  top:0px; width:' + contentParentAttributes[i]["width"] + 'px;z-index:' +  contentParentAttributes[i]["z-index"] + ';     overflow:hidden;}\n';
  writeScrollerStyles += '#' + scrollParentIds[i]   + '{position:absolute; visibility:hidden; left:' + (scrollbarLeft-1) + 'px;                      top:' + (scrollbarTop-1) + 'px;                      width:' + sliderWidth + 'px;                         height:' + (scrollbarHeight-4) + 'px;                      z-index:' + (contentParentAttributes[i]["z-index"]+1) + ';  overflow:hidden; background-image:url('+ scrollerBgImage +');}\n';
  writeScrollerStyles += '#' + scrollChildIds[i]    + '{position:relative;                    left:0px;                                          top:0px;                                         width:' + sliderWidth + 'px;                         height:' + sliderHeight + 'px;                         z-index:' + (contentParentAttributes[i]["z-index"]+1) + ';  overflow:hidden;}\n';
  writeScrollerStyles += '#' + scrollHideIds[i]     + '{position:relative;                    left:0px;                                          top:-' + sliderHeight + 'px;                     width:' + sliderWidth + 'px;                         height:' + sliderHeight + 'px;                         z-index:' + (contentParentAttributes[i]["z-index"]+2) + ';  overflow:hidden;}\n';

  scrollerArrowLeft    = scrollbarLeft  + horizontalArrowPadding;
  scrollerArrowUpTop   = scrollbarTop   - arrowSquareSize + verticalArrowUpPadding;
  scrollerArrowDownTop = scrollbarTop   + scrollbarHeight + verticalArrowDownPadding;

  writeScrollerStyles += '#' + scrollUpIds[i] +   '{position:absolute; visibility:hidden; left:' + scrollerArrowLeft + 'px;top:' + (scrollerArrowUpTop - 3) + 'px;  width:' + arrowSquareSize + 'px;   height:'+ arrowSquareSize + 'px;  overflow:hidden;z-index:' + (contentParentAttributes[i]["z-index"]+1) + ';}\n';
  writeScrollerStyles += '#' + scrollDownIds[i] + '{position:absolute; visibility:hidden; left:' + scrollerArrowLeft + 'px;top:' + (scrollerArrowDownTop - 3) + 'px;width:' + arrowSquareSize + 'px;   height:'+ arrowSquareSize + 'px;overflow:hidden;z-index:' + (contentParentAttributes[i]["z-index"]+1) + ';}\n';

  writeScrollerDivs   += '<div name="' + scrollParentIds[i] + '" id="' + scrollParentIds[i] + '" onmouseover="divNum = '+ i +';" onclick="enableSliderMove();">\n'
                      +  '<div name="' + scrollChildIds[i] + '"  id="' + scrollChildIds[i] + '" onmousedown="startDragging('+ i +');" ondragstart="return false;"><img id="swap_slider_'+i+'" src="' + scrollerSliderImage + '" width="' + sliderWidth + '" height="' + sliderHeight + '" border="0" onmouseover="this.src=\''+scrollerSliderImage_over+'\'" onmouseout="this.src=\''+scrollerSliderImage+'\'" /><br /></div>\n'
                      +  '<div name="' + scrollHideIds[i] + '"  id="' + scrollHideIds[i] + '" onmousedown="startDragging('+ i +');" ondragstart="return false;" onmouseover="document.getElementById(\'swap_slider_'+i+'\').src=\''+scrollerSliderImage_over+'\'" onmouseout="document.getElementById(\'swap_slider_'+i+'\').src=\''+scrollerSliderImage+'\'"></div>\n'
                      +  '</div>\n';

  writeScrollerDivs   += '<div name="' + scrollUpIds[i] + '" id="' + scrollUpIds[i] + '" onmousedown="divNum = '+ i +';">\n'
                      +  '<a href="javascript:void(0);" onmousedown="scrollUp('+ i +');" onmouseup="stopScrolling();" onmouseover="self.status=\'up\';return true;" onmouseout=" stopScrolling();self.status=\'\';return true;" class="setCursor"></a><br />\n'
                      +  '</div>\n';

  writeScrollerDivs   += '<div name="' + scrollDownIds[i] + '" id="' + scrollDownIds[i] + '" onmousedown="divNum = '+ i +';">\n'
                      +  '<a href="javascript:void(0);" onmousedown="scrollDown('+ i +');" onmouseup="stopScrolling();" onmouseover="self.status=\'down\';return true;" onmouseout="stopScrolling();self.status=\'\';return true;" class="setCursor"></a><br />\n'
                      +  '</div>\n';
writeScrollerDivs += '</div>';
  baseVisibility[i] = false;
}

writeScrollerStyles   += '.setCursor{cursor:'+ cursorShape + ';}\n';
writeScrollerStyles   += '</style>';

function initialiseScroller() {

  for (i = 0; i < scrollerDivAmount; i++) {
    scrollUpArray[i]      = document.getElementById(scrollUpIds[i]);
    scrollDownArray[i]    = document.getElementById(scrollDownIds[i]);
    scrollParentArray[i]  = document.getElementById(scrollParentIds[i]);
    scrollChildArray[i]   = document.getElementById(scrollChildIds[i]);
    scrollHideArray[i]    = document.getElementById(scrollHideIds[i]);
    contentParentArray[i] = document.getElementById(contentParentIds[i]);
    contentChildArray[i]  = document.getElementById(contentChildIds[i]);
    if (browserId == 'MSIE') {
      setVisibility(scrollHideArray[i],null,'none');
    }
    
    if(getDivInformation(contentParentArray[i],'height') < getDivInformation(contentChildArray[i],'height')) {
      baseVisibility[i] = true;
      if (contentParentAttributes[i]["visibility"]) {
        setScrollerVisibility(i,1);
      }
    }
    else {
      baseVisibility[i] = false;
      setVisibility(scrollUpArray[i],0);
      setVisibility(scrollDownArray[i],0);
      setVisibility(scrollParentArray[i],0);
    }
  }
}

function scrollUp(currentNum) {
  divNum = currentNum;
  var scrollButtonInterval = getDivInformation(scrollParentArray[divNum],'height') - getDivInformation(scrollChildArray[divNum],'height');
  var factor = (getDivInformation(contentChildArray[divNum],'height') - getDivInformation(contentParentArray[divNum],'height'))  / scrollButtonInterval;
  var scrollingContentPixels = getDivInformation(scrollChildArray[divNum],'offsetTop') * factor * (-1);
  
  if(getDivInformation(scrollChildArray[divNum],'offsetTop') >= 0) {
    if(getDivInformation(scrollChildArray[divNum],'offsetTop') > 0) {
      moveObject(scrollChildArray[divNum],'',getDivInformation(scrollChildArray[divNum],'offsetTop') -1);
      moveObject(scrollHideArray[divNum],'',getDivInformation(scrollChildArray[divNum],'offsetTop') -1 - sliderHeight);
    }
    moveObject(contentChildArray[divNum],'',scrollingContentPixels);
    goup = setTimeout('scrollUp(divNum)',10);
  }
}

function scrollDown(currentNum) {
  divNum = currentNum;
  var scrollButtonInterval = getDivInformation(scrollParentArray[divNum],'height') - getDivInformation(scrollChildArray[divNum],'height') - 1;
  var factor = (getDivInformation(contentChildArray[divNum],'height') - getDivInformation(contentParentArray[divNum],'height'))  / scrollButtonInterval;
  var scrollingContentPixels = getDivInformation(scrollChildArray[divNum],'offsetTop') * factor * (-1);
  if(getDivInformation(scrollChildArray[divNum],'offsetTop') <= scrollButtonInterval) {
    moveObject(scrollChildArray[divNum],'',getDivInformation(scrollChildArray[divNum],'offsetTop') + 1);
    moveObject(scrollHideArray[divNum],'',getDivInformation(scrollChildArray[divNum],'offsetTop') + 1 - sliderHeight);
    moveObject(contentChildArray[divNum],'',scrollingContentPixels);
    godown = setTimeout('scrollDown(divNum)',10);
  }
}

function enableSliderMove() {
  document.onclick = mousePosition;
  document.onmousemove = mousePosition;
  setTimeout('sliderMove()',10);
}

function sliderMove(optionalNum) {
  if (optionalNum) {
    divNum = optionalNum;
  }
  if (browserId == 'Safari') {
    documentTopScroll = 0;
  }
  else{
    documentTopScroll = getWindowInformation('scrollTop');
  }
  var mousePositionInscrollChild = mouseY - getDivInformation(scrollParentArray[divNum],'offsetTop') + documentTopScroll - (getDivInformation(scrollChildArray[divNum],'height')/2);
  var scrollButtonInterval = getDivInformation(scrollParentArray[divNum],'height') - getDivInformation(scrollChildArray[divNum],'height');
  if(mousePositionInscrollChild >= 0) {
    if(mousePositionInscrollChild >= scrollButtonInterval) {
      var rest = mousePositionInscrollChild - scrollButtonInterval;
      moveObject(scrollChildArray[divNum],'',mousePositionInscrollChild - rest);
      moveObject(scrollHideArray[divNum],'',mousePositionInscrollChild - rest - sliderHeight);
    }
    else{
      moveObject(scrollChildArray[divNum],'',mousePositionInscrollChild);
      moveObject(scrollHideArray[divNum],'',mousePositionInscrollChild - sliderHeight);
    }       
  }
  var factor = (getDivInformation(contentChildArray[divNum],'height') - getDivInformation(contentParentArray[divNum],'height'))  / scrollButtonInterval;
  var scrollingContentPixels = getDivInformation(scrollChildArray[divNum],'offsetTop') * factor * (-1);
  moveObject(contentChildArray[divNum],'',scrollingContentPixels);
}

function stopScrolling() {
  if (typeof goup != 'undefined') {
    clearTimeout(goup);
  }
  if (typeof godown != 'undefined') {
    clearTimeout(godown);
  }
}

function setScrollerVisibility(scrollerNumber,scrollerValue) {
  if(baseVisibility[scrollerNumber]) {
    setVisibility(scrollUpArray[scrollerNumber],scrollerValue);
    setVisibility(scrollDownArray[scrollerNumber],scrollerValue);
    setVisibility(scrollParentArray[scrollerNumber],scrollerValue);
  }
  //setVisibility(contentParentArray[scrollerNumber],scrollerValue) ;
  contentParentAttributes[scrollerNumber]["visibility"] = scrollerValue;
}


var verticalDistance = 1;
var aktuellChild=4;
function mouseWheelMove(x) {

for (i = 0; i < scrollerDivAmount; i++) {
	if(contentChildIds[i]  ==x.id){
		aktuellChild=i++;
	}
}

  	x.style.position = "relative";
  	verticalDistance = countRotations(verticalDistance);
	var sliderfactor = (getDivInformation(contentChildArray[aktuellChild],'height')-getDivInformation(contentParentArray[aktuellChild],'height')+80)/(scrollbarHeight/14)
	//alert(sliderfactor )
	if(verticalDistance <1 && verticalDistance * sliderfactor  >getDivInformation(contentParentArray[aktuellChild],'height')-getDivInformation(contentChildArray[aktuellChild],'height')-80){
  		x.style.top = verticalDistance * sliderfactor ;
 	}
 	 return false;
}

function countRotations(addRotations) {
  	addRotations += event.wheelDelta/120;
  	if((0-addRotations*14)>=0 && (0-addRotations*14)<=(scrollbarHeight-14) ){
  		moveObject(scrollChildArray[aktuellChild],'',0-addRotations*14,20);
	}
  	return addRotations; 
}
