////////////////////////////////
// Hier Werte anpassen
////////////////////////////////

pos = 0 // | 0 <= x <= 1
slider_image_src = 'scroller/slider.gif'
slider_image_on_src = 'scroller/slider_on.gif'
// Pixelsprung, Delaytime für Scroller
step = 6; interval = 1; a = 1

// Pixelsprung, Delaytime für Slider
stepbar = 2; intervalbar = 10; abar = 1

scrollfield_name = 'scrollfield'
sliderbar_name = 'sliderbar';
sliderbar_image_name = 'sliderbar_image'
slider_name = 'slider'
slider_image_name = 'slider_image'
slider_height_min = 20
slidercover_name  =  'slidercover';
upfield_name = "up";
downfield_name = "down";
area_name = 'area'

keysactive = 0 // 0|1
keyup_ascii_value = 68
keydown_ascii_value = 85

////////////////////////////////



function init(){
//////////////////////////////////////////////////////////////////

// sniff for browsers
hasDOM = (document.getElementById)?true:false
isNS = (navigator.appName=='Netscape')?true:false
isNS4 = (document.layers)?true:false
isNS6 = isNS && hasDOM
isIE45 = (document.all)?true:false
isIE5 = isIE45 && hasDOM
isMac = (navigator.userAgent.indexOf('Mac') >0)?true:false;

active = false
active2 = false
keydown = false

// Werte holen
sliderbar_top = parseInt(dom(sliderbar_name).top)

sliderbar_height = (isNS4)?dom(sliderbar_name,1,1).images[sliderbar_image_name].height:parseInt(document.images[sliderbar_image_name].height)
slider_height = (isNS4)?dom(slider_name,1,1).images[slider_image_name].height:parseInt(document.images[slider_image_name].height)

if(isNS4){height = getClip(scrollfield_name,"bottom");areaWidth = getClip(scrollfield_name,"right");areaHeight = getClip(area_name,"bottom");}
if(isIE45){height = document.all[scrollfield_name].offsetHeight;areaWidth = parseInt(dom(scrollfield_name).width);areaHeight = parseInt(dom(area_name).height)}
if(isNS6){height = document.getElementById(scrollfield_name).offsetHeight;areaWidth = parseInt(dom(scrollfield_name).width);areaHeight = parseInt(dom(area_name).height)}

areaTop = parseInt(dom(scrollfield_name).top)
areaBottom = areaTop + areaHeight



//
initslider()
adaptslider()
initScrollerEvents()
initSliderEvents()
initBarEvents()
initScroller(pos)
initkeys()
}


function initkeys(){
//////////////////////////////////////////////////////////////////
if(!keysactive) return false

self.focus() // if page is in frameset, makes keypress work

if(isNS){document.captureEvents(Event.KEYDOWN);document.captureEvents(Event.KEYUP)}

document.onkeydown = keyscroll
document.onkeyup = function(){keydown=0;off()}


}




function keyscroll(e) {
//////////////////////////////////////////////////////////////////
if(keydown) {return false} // IE

if(isNS6){code = e.which}
else if (isNS4){code = e.which-32}
else if (isIE45){code = event.keyCode}

if(code==keydown_ascii_value){keydown = 1;on(1);return false}
if(code==keyup_ascii_value){keydown = 1;on(-1);return false}

}






function initScroller(pos){
//////////////////////////////////////////////////////////////////
// auf sichtbaren Bereich beschneiden
setClip(scrollfield_name,0,0,areaWidth,areaHeight)
dom(scrollfield_name).visibility = (isNS4)?"show":"visible"

dy = pos * height

if (parseInt(dom(scrollfield_name).top) + height - dy < areaBottom) {dy = parseInt(dom(scrollfield_name).top) + height - areaBottom}

dom(scrollfield_name).top =  parseInt(dom(scrollfield_name).top) - dy
setClip(scrollfield_name,"0",(getClip(scrollfield_name,"top") + dy),areaWidth,(getClip(scrollfield_name,"bottom") + dy))


/// formel scrollebene --> slider
dy2 = (areaTop - parseInt(dom(scrollfield_name).top)) * (sliderbar_height - slider_height) / (height - areaHeight) + parseInt(dom(sliderbar_name).top)

if (dy2 <=sliderbar_top){ dy2 = sliderbar_top}
if (dy2 >= sliderbar_top + sliderbar_height - slider_height) {dy2 = sliderbar_top + sliderbar_height  - slider_height}

dom(slider_name).top = dy2;dom(slidercover_name).top = dy2
}


function initslider(){
//////////////////////////////////////////////////////////////////
// text kleiner als sichtfenster
v = (areaHeight / height >=1)?"hidden":"visible"
dom(upfield_name).visibility = v;dom(downfield_name).visibility = v;dom(slider_name).visibility = v;dom(slidercover_name).visibility = v;dom(sliderbar_name).visibility = v

if (isIE5) {dom(slidercover_name,1).innerHTML = "<table width=100% height=100%><tr><td></td></tr></table>"}
if(!isMac) dom(slidercover_name).zIndex=116

}



function adaptslider(){
//////////////////////////////////////////////////////////////////
// setzt slider-länge und scrollfeld länge in bezug

slider_height = areaHeight / height * sliderbar_height

if(slider_height < slider_height_min){slider_height = slider_height_min;}


if(isNS4){

   slider_image_width = dom(slider_name,1,1).images[slider_image_name].width

   with(document.layers[slider_name].document){
     open()
     write("<img src='" + slider_image_src + "' width='"+ slider_image_width + "' height='"+ slider_height + "' name='slider_image'>")
     close()
   }
   with(document.layers[slidercover_name].document){

    open()
    write("<layer width='"+ slider_image_width + "' height='"+ slider_height + "'></layer>")
    close()
   }

}
else{document.images[slider_image_name].height = slider_height
}

dom(slidercover_name).height = slider_height

}



function dom(layer,nostyle,dok){
//////////////////////////////////////////////////////////////////
/// cross-browser DOM basteln 

var style ='';var doc =''
if(!nostyle) {style = ".style"}
if(dok){doc = ".document"}

if(isIE45) {path = "document.all."+layer+style}
if(isNS6) {path = "document.getElementById('"+layer+"')"+style}
if(isNS4) {path = "document.layers."+layer+doc}

return eval(path)

}


function setClip(layer,l,o,r,u){
//////////////////////////////////////////////////////////////////
/// cross-browser clip funktion: setzen

     if(isIE45 || isNS6) {
         clip = "rect(" + o +","+ r +","+ u +","+ l + ")"
         dom(layer).clip = clip;
     }
     if(isNS4) {
         dom(layer).clip.left = l;document.layers[scrollfield_name].clip.top = o;
         dom(layer).clip.right = r;document.layers[scrollfield_name].clip.bottom = u;
     }

}




function getClip(layer,val){
//////////////////////////////////////////////////////////////////
/// cross-browser clip funktion: lesen


    if(isIE45 || isNS6) {

               path = dom(layer).clip;
              path = path.replace(/rect\(/,"");
               clip = path.split(" ");
               clip["top"] = parseInt(clip[0]);clip["right"] = parseInt(clip[1]);clip["bottom"] = parseInt(clip[2]);clip["left"] = parseInt(clip[3])
               wert =  clip[val]
		}
    if(isNS4) {wert = eval("document.layers['" + layer + "'].clip." +val)}

return wert
}




//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
/// Der Scroller






function initScrollerEvents(){
//////////////////////////////////////////////////////////////////
/// initialisiert up und down button

        if(isNS4){dom(upfield_name,1,1).captureEvents(Event.MOUSEDOWN);dom(upfield_name,1,1).captureEvents(Event.MOUSEUP);dom(downfield_name,1,1).captureEvents(Event.MOUSEDOWN);dom(downfield_name,1,1).captureEvents(Event.MOUSEUP);dom(downfield_name,1,1).captureEvents(Event.MOUSEOUT)}

        dom(upfield_name,1,1).onmousedown = function(){on(1);return false}
	dom(upfield_name,1,1).onmouseup = function(){off();return false}
	dom(upfield_name,1,1).onmouseout = function(){off();return false}

        dom(downfield_name,1,1).onmousedown = function(){on(-1);return false}
	dom(downfield_name,1,1).onmouseup = function(){off();return false}
	dom(downfield_name,1,1).onmouseout = function(){off();return false}


}


function on(y){
//////////////////////////////////////////////////////////////////
/// ebenenscroller an
if(active) off()

step_current = step
active = window.setInterval("scroll("+y+")",interval);
return false
}

function off(y){
//////////////////////////////////////////////////////////////////
/// ebenenscroller aus
window.clearInterval(active)
return false
}


function scroll(y){
//////////////////////////////////////////////////////////////////
/// scrollen

if(areaHeight / height >=1) return false

step_current *= a


dy = y * Math.floor(step_current)


if( parseInt(dom(scrollfield_name).top) + dy > areaTop ) {dy = areaTop - parseInt(dom(scrollfield_name).top)}
if (parseInt(dom(scrollfield_name).top) + height + dy < areaBottom) {dy = areaBottom - height - parseInt(dom(scrollfield_name).top)}

dom(scrollfield_name).top =  parseInt(dom(scrollfield_name).top) + dy
setClip(scrollfield_name,"0",(getClip(scrollfield_name,"top") - dy),areaWidth,(getClip(scrollfield_name,"bottom") - dy))


/// formel scrollebene --> slider
dy2 = (areaTop - parseInt(dom(scrollfield_name).top)) * (sliderbar_height - slider_height) / (height - areaHeight) + parseInt(dom(sliderbar_name).top)
dom(slider_name).top = dy2;dom(slidercover_name).top = dy2
}

function scrollAbs(val){


  dy = height * val/100
  
   
  dom(scrollfield_name).top =  areaTop - dy
    
  setClip(scrollfield_name,"0",areaTop - parseInt(dom(scrollfield_name).top),areaWidth,areaTop - parseInt(dom(scrollfield_name).top)+areaHeight)
  
  
  /// formel scrollebene --> slider
  dy2 = (areaTop - parseInt(dom(scrollfield_name).top)) * (sliderbar_height - slider_height) / (height - areaHeight) + parseInt(dom(sliderbar_name).top)
  dom(slider_name).top = dy2;dom(slidercover_name).top = dy2
	
	
}





function initSliderEvents(){
//////////////////////////////////////////////////////////////////
/// initialisiert slider

         eover=0;edown = 0;inside = 0;dy=0;

         if(isNS4){dom(slidercover_name,1,1).captureEvents(Event.MOUSEDOWN|Event.MOUSEUP|Event.MOUSEMOVE)}

         dom(slidercover_name,1,1).onmousedown = down;dom(slidercover_name,1,1).onmouseup = up;dom(slidercover_name,1,1).onmousemove = move;

         dom(slidercover_name,1,1).onmouseout = out
         dom(slidercover_name,1,1).onmouseover = over

}




function over(){
//////////////////////////////////////////////////////////////////
eover = true
if(edown){(isNS4)?dom(slider_name,1,1).images[slider_image_name].src=slider_image_on_src:document.images[slider_image_name].src=slider_image_on_src;
; move()}

}

function out(){
(isNS4)?dom(slider_name,1,1).images[slider_image_name].src=slider_image_src:document.images[slider_image_name].src=slider_image_src;
eover = false
}



function down(e){
//////////////////////////////////////////////////////////////////
(isNS4)?dom(slider_name,1,1).images[slider_image_name].src=slider_image_on_src:document.images[slider_image_name].src=slider_image_on_src;
edown=1


// slider_cover aus screen size ausdehnen, damit beim explorer nicht alles ausgewählt wird
if(isIE45){

     old_left = dom(slidercover_name).left
     old_width = document.images[slider_image_name].width
     old_height = document.images[slider_image_name].height
     dom(slidercover_name).top = 0
     dom(slidercover_name).left = 0
     dom(slidercover_name).height = screen.availHeight
     dom(slidercover_name).width = screen.availWidth

}


return false;
}


function up(){
//////////////////////////////////////////////////////////////////
if(!edown) {return false}

(isNS4)?dom(slider_name,1,1).images[slider_image_name].src=slider_image_src:document.images[slider_image_name].src=slider_image_src;
inside=0;edown=0


// slider_cover zurück verkleinern
if(isIE45){

setTimeout("coverShrink()",100);

}

return false;
}

function coverShrink()
{

     dom(slidercover_name).top = dom(slider_name).top
     dom(slidercover_name).left = dom(slider_name).left
     dom(slidercover_name).width = old_width
     dom(slidercover_name).height = old_height


}





function move(e){
//////////////////////////////////////////////////////////////////
/// slider bewegen

if((!edown) || (areaHeight / height >=1)) return false

     if(isNS){
         inside = (inside)?inside:e.layerY
         dy2 = e.pageY - inside

     }


     if(isIE45){
         dy2 = event.y - slider_height/2
     }

if (dy2 <=sliderbar_top){ dy2 = sliderbar_top}
if (dy2 >= sliderbar_top + sliderbar_height - slider_height) {dy2 = sliderbar_top + sliderbar_height  - slider_height}


dom(slider_name).top = dy2;
if(isNS) { dom(slidercover_name).top = dy2}

// formel slider --> scrollebene
dy = (dy2 - parseInt(dom(sliderbar_name).top)) * (height - areaHeight) / (sliderbar_height - slider_height)


dom(scrollfield_name).top =  areaTop - dy
setClip(scrollfield_name,"0",dy,areaWidth,dy + areaHeight)


}




function initBarEvents(){
//////////////////////////////////////////////////////////////////
/// scrollbar initialisieren
         if(isNS4){dom(sliderbar_name,1,1).captureEvents(Event.MOUSEDOWN|Event.MOUSEUP|Event.MOUSEOUT|Event.MOUSEOVER)}

         dom(sliderbar_name,1,1).onmousedown = bar_on;dom(sliderbar_name,1,1).onmouseup = bar_off;
         dom(sliderbar_name,1,1).onmouseout = bar_off
         dom(sliderbar_name,1,1).onmouseover = over

click = false
}






function bar_on(e){
//////////////////////////////////////////////////////////////////
/// scrollen an
click = (isNS)?e.pageY:event.y
stepbar_current = stepbar
if(!active2) active2= window.setInterval("barscroll("+click+")",intervalbar);

return false;
}

function bar_off(){
//////////////////////////////////////////////////////////////////
/// scrollen aus
if(!click) return false
click = false
window.clearInterval(active2);active2=false
return false;
}





function barscroll(click){
//////////////////////////////////////////////////////////////////

if( (click >= parseInt(dom(slider_name).top)) && (click <= parseInt(dom(slider_name).top) + slider_height)) {return false}

stepbar_current *= abar

dy3 = parseInt(dom(slider_name).top) +  ((click > parseInt(dom(slider_name).top))?stepbar_current:(-stepbar_current))

if (dy3 <=sliderbar_top){ dy3 = sliderbar_top}
if (dy3 >= sliderbar_top + sliderbar_height - slider_height) {dy3 = sliderbar_top + sliderbar_height  - slider_height}


dom(slider_name).top = dy3
dom(slidercover_name).top = dy3


// scrollebene bewegen
dy = (parseInt(dom(slider_name).top) - parseInt(dom(sliderbar_name).top)) * (height - areaHeight) / (sliderbar_height - slider_height)

dom(scrollfield_name).top =  areaTop - dy
setClip(scrollfield_name,"0",dy,areaWidth,dy + areaHeight)
}


window.onload = init 
