with(document){
open();
write('<style type="text/css">.scrollbar{ z-index:0; visibility:hidden }</style>');
close();
}

var SCROLL_counter = 0;

function SCROLL_obj(frame) {
var o = SCROLL_obj;
o.counter = SCROLL_counter++;

function init(frame) {
o.w = o.scrollbarwidth;
o.doc = (document.layers) ? frame.document : document;
o.imgstr = '"border="0">';
o.str = '<div id="scrollbar'+o.counter+'" class="scrollbar"><img src="'+o.images[0].src+'" width="'+o.w+'" height="'+o.btnheight+o.imgstr;
o.str += '\n<div id="barbgA"><img src="/reflect/image/spacer.gif" width=1 height=1></div><div id="barbgB"><img src="/reflect/image/spacer.gif" width=1 height=1></div>';
o.str += '\n<div id="scrolltab"><img src="'+o.images[1].src+'" width="'+o.w+'" height="2"'+o.imgstr+'<br>';
o.str += '\n<div id="tabbottom"><img src="'+o.images[2].src+'" width="'+o.w+'" height="2"'+o.imgstr+'</div></div>';
o.str += '\n<div id="scrolldown"><img src="'+o.images[3].src+'" width="'+o.w+'" height="'+o.btnheight +o.imgstr+'</div></div>';
with(o.doc) { open(); write(o.str); close(); }
delete o.doc; delete o.imgstr; delete o.str; delete o.w;
}

init(frame);
onloadHandlers[onloadHandlers.length] = 'SCROLL_obj.foo()';

function iefix() {
var o = SCROLL_obj;
document.body.scroll = (document.body.clientHeight > o.frameHeight + o.docframe.getProperty('top')) ? 'no' : 'yes';
}

function clearTimers() {
clearTimeout(this.scrollTimer);
this.scrollTimer = null;
clearTimeout(this.bgTimer);
clearInterval(this.tabTimer);
this.bgTimer = this.tabTimer = null;
SCROLL_redraw();
}


o.foo = function() {
this.scrollbar = new csspObj('scrollbar'+o.counter);
this.docframe = new csspObj(this.scrollbar.parentNode.id);
if(document.layers) this.docframe.resizeTo(o.framewidth,this.docframe.clip.height);
this.doc = new csspObj(this.docframe.getElementsByTagName('div')[0]);
this.btnup = this.scrollbar.getElementsByTagName('img')[0];
var obj = csspObj('scrolldown');
this.btndown = obj.getElementsByTagName('img')[0];
this.scrolltab = new csspObj('scrolltab');
this.elBG = new csspObj('barbgA');
this.elBGcol = new csspObj('barbgB');
var num = o.scrollbarheight-(o.btnheight*2);
this.scrollbar.moveTo(o.scrollbarleft,o.scrollbartop);
this.scrollbar.resizeTo(o.scrollbarwidth,o.scrollbarheight);
this.scrollbar.clipTo(0,o.scrollbarwidth,o.scrollbarheight,0);
this.scrollbar.setProperty('zIndex',10);
this.scrolltab.moveTo(0,o.btnheight);
this.scrolltab.style.top = o.btnheight;
this.elBG.moveTo(0,o.btnheight);
this.elBGcol.moveTo(0,o.btnheight);
this.elBG.resizeTo(o.scrollbarwidth,num);
this.elBGcol.resizeTo(o.scrollbarwidth,num);
obj.moveTo(0,num+o.btnheight);
this.elBGcol.setProperty('zIndex',10);
this.elBG.setProperty('zIndex',11);
this.scrolltab.setProperty('zIndex',12);
this.elBGcol.setProperty('bgImage',o.images[8].src);
this.elBG.setProperty('bgImage',o.images[7].src);
this.scrolltab.setProperty('bgImage',o.images[6].src);
this.doc.style.top = 0;
if(this.doc.origTop) this.doc.style.top = this.doc.origTop;
this.doc.origTop = this.doc.getProperty('top');
var docHeight = this.doc.getProperty('offsetHeight');
var frameHeight = this.docframe.getProperty('height');
this.notNeeded = (docHeight <= frameHeight);

if (this.notNeeded) {
SCROLL_hide();
return;
}

if(ua.codeName == 'ie_4_win' || ua.codeName == 'ie_5_mac') {
this.frameHeight = frameHeight;
iefix();
o.iefix = iefix;
onresizeHandlers[onresizeHandlers.length] = 'SCROLL_obj.iefix()';
}

this.btnHeight = parseInt(this.btnup.height);
this.scrollEnd = o.scrollbarheight - this.btnHeight;
this.btnup.direction = 'up';
this.btndown.direction = 'down';
this.btnup.b = this.btnup.src.split('0.gif').join('1.gif');
this.btndown.b = this.btndown.src.split('0.gif').join('1.gif');

var tabBottom = new csspObj('tabbottom');
var scrollHeight = (document.layers) ? this.scrollbar.clip.height : o.scrollbarheight;
var scrollBgHeight = scrollHeight - (this.btnHeight*2);
var tabHeight = (o.dynTabHeight) ? Math.max((frameHeight*scrollBgHeight)/docHeight,o.tabminheight) : o.tabminheight;

this.scrolltab.style.height = tabHeight;
this.scrolltab.clipTo(0,o.scrollbarwidth,tabHeight,0);
this.scrolltab.diffY = this.scrollbar.getProperty('top') + this.docframe.getProperty('top');
this.scrolltab.getY = function() { var o = SCROLL_obj.activeframe; if(o.scrolltab.pageY) return o.scrolltab.pageY;  return this.getProperty('top') + this.diffY }

tabBottom.style.top = tabHeight - tabBottom.getProperty('offsetHeight');

this.tabMaxTop = (scrollBgHeight + this.btnHeight) - tabHeight;
this.docToTravel = docHeight - frameHeight;
this.scrToTravel = scrollBgHeight - tabHeight;
this.scrPixels = this.scrToTravel/this.docToTravel;
this.docPixels = this.docToTravel/this.scrToTravel;

var frameleft = this.docframe.getProperty('left');
var framewidth = this.docframe.getProperty('width');
this.repeatInt = 40;
this.origInt = 350;
this.docIncr = 10;
this.pageIncr = scrollHeight - 10;
this.scrollTimer = this.bgTimer = this.tabTimer = null;
this.clearTimers = clearTimers;
o.activeframe = this;
if(document.layers){
this.scrolltab.captureEvents(Event.MOUSEDOWN);
this.elBG.captureEvents(Event.MOUSEDOWN);
}
this.elBG.onmousedown = SCROLL_bgDown;
this.scrolltab.onmousedown = SCROLL_tabDown;
this.btnup.onmousedown = this.btndown.onmousedown = SCROLL_btnDown;
if (this.scrollbarvisible) SCROLL_show();
}
}

function SCROLL_show(v) {
var o = SCROLL_obj;
if ((typeof v) == 'undefined')
v = true;
if (v && o.notNeeded)
return;
o.scrollbar.setProperty('visibility', (v ? 'visible' : 'hidden'));
}
function SCROLL_hide() {
SCROLL_show(false);
}
function SCROLL_scrollTo(pD) {
var o = SCROLL_obj;
var tD = o.doc.origTop, tS = o.btnHeight;
var hD = o.docToTravel, hS = o.tabMaxTop;
pD = Math.min(Math.max(0, pD), hD);
o.doc.style.top = tD - pD;
o.activeframe.scrolltab.style.top = tS + Math.floor((pD / hD) * (hS - tS));
SCROLL_redraw();
}
function SCROLL_redraw() {
var o = SCROLL_obj;
if(! document.layers) return;
o.activeframe.doc.setProperty('visibility','hidden');
setTimeout("SCROLL_obj.activeframe.doc.setProperty('visibility','visible');",20);
}

function SCROLL_btnDown(e){
this.origSrc = this.src;
this.src = this.b;
this.onmouseout = SCROLL_btnOut;
this.ondragstart = this.onmouseup = window.onmouseup = SCROLL_btnUp;
SCROLL_obj.activebtn = this;
if(document.layers) captureEvents(Event.MOUSEUP);
SCROLL_btnMove(this.direction);
return false;
}


function SCROLL_btnMove(dir) {
var o = SCROLL_obj.activeframe;
if((dir == 'down' && -o.doc.getProperty('top')==o.docToTravel) || (!dir == 'up' && o.doc.getProperty('top')==0)) {o.clearTimers();return}
o.doc.style.top = (dir == 'down') ? Math.max(o.doc.getProperty('top')-o.docIncr,o.doc.origTop-o.docToTravel) : Math.min(o.doc.getProperty('top')+o.docIncr,o.doc.origTop);
o.scrolltab.style.top = Math.min(Math.max(o.btnHeight - (o.scrPixels*o.doc.getProperty('top')),o.btnHeight),o.tabMaxTop);
o.scrollTimer = setTimeout("SCROLL_btnMove(SCROLL_obj.activebtn.direction)",o.repeatInt);
}


function SCROLL_btnOut(){
SCROLL_obj.activeframe.clearTimers();
this.src = this.origSrc;
this.onmouseover = this.onmousedown;
}

function SCROLL_btnUp(){
var o = SCROLL_obj.activeframe;
var b = SCROLL_obj.activebtn;
if(ua.ie && ua.mac) {
o.doc.style.display = 'none';
o.doc.style.display = 'block';
}
b.src = b.origSrc;
o.clearTimers();
b.onmouseout = b.onmouseover = null;
if(document.layers) releaseEvents(Event.MOUSEUP);
return false;
}


function SCROLL_tabDown(e) {
var o = SCROLL_obj.activeframe;
var y = (window.event) ? event.y : e.pageY;
var x = (window.event) ? event.x : e.pageX;
o.minX = x - 50;
o.maxX = x + 50;
o.curY = y;

if(document.layers) document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
o.docframe.onselectstart = function(){return false};
document.onmousemove = SCROLL_tabMove;
document.onmouseup = SCROLL_tabUp;
return false;
}


function SCROLL_tabMove(e) {
var o = SCROLL_obj.activeframe;
var y = (window.event) ? event.y : e.pageY;
var x = (window.event) ? event.x : e.pageX;
if(x < o.minX || x > o.maxX) return document.onmouseup();
var posY = Math.min(Math.max(o.scrolltab.getProperty('top')+(y - o.curY),o.btnHeight),o.tabMaxTop);
o.scrolltab.style.top = posY;
SCROLL_docAlign();
o.curY = y;
return false;
}


function SCROLL_tabUp() {
var o = SCROLL_obj;
var f = o.activeframe;
if(ua.ie && ua.mac){
f.doc.style.display = 'none';
f.doc.style.display = 'block';
}
if(document.layers) {
releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
SCROLL_redraw();
}
document.onmouseup = document.onmousemove = f.docframe.onselectstart = null;
}


function SCROLL_docAlign(){
var o = SCROLL_obj.activeframe;
if (document.selection && document.selection.empty) document.selection.empty();
var tabDiff = o.scrolltab.getProperty('top') - o.btnHeight;
o.doc.style.top = o.doc.origTop - (tabDiff*o.docPixels);
}


function SCROLL_bgDown(e){
var o = SCROLL_obj.activeframe;
var y = (window.event) ? event.y : e.pageY;
dir = (y < o.scrolltab.getY()) ? -1 : 1;
o.y = y;
if(document.layers) document.captureEvents(Event.MOUSEUP);
document.onmouseup = SCROLL_bgUp;
SCROLL_bgMove();
o.bgTimer = setTimeout("SCROLL_obj.activeframe.tabTimer = setInterval('SCROLL_bgMove()', SCROLL_obj.activeframe.repeatInt)",o.origInt);
return false;
}

function SCROLL_bgMove(e){
var o = SCROLL_obj.activeframe;
if(o.y > o.scrolltab.getY() && o.y <= o.scrolltab.getY()+o.scrolltab.getProperty('height')) {SCROLL_bgUp();return}
if ((dir == 1) && (o.y <= o.scrolltab.getY())) {SCROLL_bgUp();return}
if ((dir == -1) && (o.y >= o.scrolltab.getY())) {SCROLL_bgUp();return}

o.doc.style.top = (dir == 1) ?  Math.max(o.doc.getProperty('top')-o.pageIncr,o.doc.origTop-o.docToTravel) : Math.min(o.doc.getProperty('top')+ o.pageIncr,o.doc.origTop);
o.scrolltab.style.top = Math.min(Math.max(o.btnHeight - (o.scrPixels*o.doc.getProperty('top')),o.btnHeight),o.tabMaxTop);
}


function SCROLL_bgUp(){
var o = SCROLL_obj.activeframe;
o.clearTimers();
if(document.layers) document.releaseEvents(Event.MOUSEUP);
o.elBG.setProperty('zIndex',1);
o.elBGcol.setProperty('zIndex',0);
return false;
}

