// JavaScript Document
var __scrollBarControl = null;
var __divinnerHTML=null;
var __firstTime=true;
function innerBarProp(barID, width, height, interval, direction)
{
　this.barID = barID;
　this.width = width;
　this.height = height;
　this.interval = interval;
　this.direction = direction;
　this.stopScroll = false;
　this.maxValue = 0;
　this.preValue = 0;
}
function scrollBar()
{
　this.barsArray = new Array();
　//save current object
　__scrollBarControl = this;
}

scrollBar.prototype.addBar = function(barID, width, height, interval, direction)
{
　//check parameters
　var paraCount = arguments.length;
　if ( paraCount < 1 )
　{
　　alert("parameters count incorect!");
　　return;
　　//throw "parameters count inccorect!";
　}

　//width's default value
　if ( typeof( width ) == "undefined" )
　{
　　var width = 100;
　}

　//height's default value
　if ( typeof( height ) == "undefined" )
　{
　　var height = 100;
　}

　//interval's default value
　if ( typeof( interval ) == "undefined" )
　{
　　var interval = 1000;
　}
　
　//direction's default value
　if ( typeof( direction ) == "undefined" )
　{
　　var direction = "up";
　}

　//create scrollbar's inner properties
　var barProp = new innerBarProp(barID, width, height, interval, direction);
　var objBar = document.getElementById(barID);
　if(__divinnerHTML!=null)
　　objBar.innerHTML=__divinnerHTML;
　else
　　__divinnerHTML=objBar.innerHTML;
　var barCount = this.barsArray.length;
　this.barsArray[barCount] = barProp;
}
scrollBar.prototype.clear = function()
{
　for(i=0;i<this.barsArray.length;i++)
　　this.barsArray.pop();
}
scrollBar.prototype.createScrollBars = function()
{
　//get bar's count
　var barCount = this.barsArray.length;
　//if no bar add to scrollControl do nothing
　if ( barCount == 0 )
　{
　　return;
　}

　//init scroll bars
　for ( var i=0; i<barCount; i++ )
　{
　　var objBarID = this.barsArray[i].barID;
　　//if typeof objBarID is object
　　// that's meaning it inited
　　//if typeof objBarID is string
　　// init that scroll bar
　　if ( typeof( objBarID ) == "string" )
　　{
　　　//get scroll <DIV> object
　　　var objBar = document.getElementById( objBarID ); 
　　　if (objBar == null)
　　　{
　　　　//objBarID is not exist
　　　　if ( document.readyState == "complete" || document.readyState == "loaded" )
　　　　{
　　　　　//the objBarID not exists in current document
　　　　　//throw "the objBarID is not exists.";
　　　　　alert("ScrollBar[" + objBarID + "]: not exist!");
　　　　　return;
　　　　}
　　　　else
　　　　{
　　　　　//wait for document to load objBarID
　　　　　window.setTimeout("__scrollBarControl.createScrollBars()",50);
　　　　　//exit processing..........
　　　　　//and wait next time callbak
　　　　　return;
　　　　}
　　　}
　　　//update barID
　　　this.barsArray[i].barID = objBar;
　　}
　}

　for ( var i=0; i<barCount; i++ )
　{
　　this.innerInitBar(i);
　}
}
scrollBar.prototype.innerInitBar = function (index)
{ 
　//get properties
　var barID = this.barsArray[index].barID;
　var width = this.barsArray[index].width;
　var height = this.barsArray[index].height;
　var interval = this.barsArray[index].interval;
　var direction = this.barsArray[index].direction;
　var maxValue = 0;

　//set scrollBar's properties
　with(barID)
　{
　　style.width = width;
　　style.height = height;
　　noWrap=true;
　　switch( direction )
　　{
　　　case "up":
　　　　maxValue = Math.max(scrollHeight, height);
　　　　style.overflowX = "visible";
　　　　style.overflowY = "hidden";
容
　　　　var barHtml = innerHTML;

　　　　var newHtml = "<table border='0' cellspacing='0' cellpadding='0'>\n";
　　　　newHtml += " <tr height='20'>\n";
　　　　newHtml += " <td> \n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td height='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td height='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td height='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += "</table>\n";
　　　　innerHTML = newHtml;
　　　　break;
　　　case "down":
　　　　maxValue = Math.max(scrollHeight, height);
　　　　style.overflowX = "visible";
　　　　style.overflowY = "hidden";
　　　　var barHtml = innerHTML;
　　　　var newHtml = "<table border='0' cellspacing='0' cellpadding='0'>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td height='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td height='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += "</table>\n";
　　　　innerHTML = newHtml;
　　　　scrollTop = maxValue;
　　　　break;
　　　case "left":
　　　　maxValue = Math.max(scrollWidth, width);
　　　　style.overflowX = "hidden";
　　　　style.overflowY = "visible";
　　　　var barHtml = barID.innerHTML;
　　　　var newHtml = "<table border='0' cellspacing='0' cellpadding='0' width='" + (maxValue * 2 ) + "'>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td width='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " <td width='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += "</table>\n";
　　　　innerHTML = newHtml;
　　　　break;
　　　case "right":
　　　　maxValue = Math.max(scrollWidth, width);
　　　　style.overflowX = "hidden";
　　　　style.overflowY = "visible";
　　　　var barHtml = innerHTML;
　　　　var newHtml = "<table border='0' cellspacing='0' cellpadding='0' width='" + (maxValue * 2 ) + "'>\n";
　　　　newHtml += " <tr>\n";
　　　　newHtml += " <td width='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " <td width='" + maxValue + "' valign='top'>\n";
　　　　newHtml += barHtml + "\n";
　　　　newHtml += " </td>\n";
　　　　newHtml += " </tr>\n";
　　　　newHtml += "</table>\n";
　　　　innerHTML = newHtml;
　　　　scrollLeft = maxValue;
　　　　break;
　　　default:
　　　　//throw "direction is inccorect!";
　　　　alert("ScrollBar[" + id + "]: direction is incorect!");
　　　　return;
　　}

　　//set mouse events
　　onmouseover = new Function("__scrollBarControl.mouseEvt(" + index + ",true);");
　　onmouseout = new Function("__scrollBarControl.mouseEvt(" + index + ",false);");
　　if(__firstTime)
　　{
　　　__firstTime=false;
　　　window.setInterval("__scrollBarControl.scroll(" + index + ");",interval);
　　}
　　//save maxValue
　　this.barsArray[index].maxValue = maxValue;
　}
}
scrollBar.prototype.mouseEvt = function(index, stop)
{
　this.barsArray[index].stopScroll = stop;
}
scrollBar.prototype.scroll = function(index)
{
　//get properties
　var barID = this.barsArray[index].barID;
　var width = this.barsArray[index].width;
　var height = this.barsArray[index].height;
　var interval = this.barsArray[index].interval;
　var direction = this.barsArray[index].direction;
　var stopScroll = this.barsArray[index].stopScroll;
　var preValue = this.barsArray[index].preValue;
　var maxValue = this.barsArray[index].maxValue;

　if ( stopScroll == true ) return;

　switch(direction)
　{
　　case "up":
　　　preValue++;
　　　if ( preValue >= maxValue )
　　　{
　　　　preValue = 0;
　　　}
　　　barID.scrollTop = preValue;
　　　break;
　　case "down":
　　　preValue--;
　　　if ( preValue <= 0 )
　　　{
　　　　preValue = maxValue;
　　　}
　　　barID.scrollTop = preValue;
　　　break;
　　case "left":
　　　preValue++;
　　　if ( preValue >= maxValue )
　　　{
　　　　preValue = 0;
　　　}
　　　barID.scrollLeft = preValue;
　　　break;
　　case "right":
　　　preValue--;
　　　if ( preValue <=0 )
　　　{
　　　　preValue = maxValue;
　　　}
　　　barID.scrollLeft = preValue;
　　　break;
　}
　this.barsArray[index].preValue = preValue;
}