
var bIsNN4  = (document.layers) ? true : false;
var bIsIE   = (document.all) ? true : false;
var bIsDOM  = (document.getElementById) ? true : false;
var bIsMac  = (navigator.userAgent.toLowerCase().indexOf("mac") !=-1)?  true : false;
var bIsIEPC = bIsIE && !bIsMac;
var bIsIEMac = bIsIE && bIsMac;
var iBrVrn  = (navigator.appVersion.indexOf("MSIE 5")!=-1) ? 5 : 4;
var iBrVrn  = (navigator.appVersion.indexOf("MSIE 6")!=-1) ? 6 : iBrVrn;


function fDivAct(sDivAct) {
	if ((sDivAct.indexOf(".")>-1)&&(sDivAct.indexOf("=")>-1)) {
		sDivName = sDivAct.substr(0,sDivAct.indexOf("."));
		sDivProp = sDivAct.substring(sDivAct.indexOf(".")+1,sDivAct.indexOf("="));
		sPropVal = sDivAct.substring(sDivAct.indexOf("=")+1,sDivAct.length);
		if (bIsIE) {
			oDiv = eval("document.all." + sDivName);
			if      (sDivProp=="left")       oDiv.style.pixelLeft   = sPropVal;
			else if (sDivProp=="top")        oDiv.style.pixelTop    = sPropVal;
			else if (sDivProp=="scrollTop")  oDiv.scrollTop         = sPropVal;
			else if (sDivProp=="visibility") oDiv.style.visibility  = sPropVal;
		}
		else if (bIsDOM) {
			oDiv = document.getElementById(sDivName);
			if      (sDivProp=="left")       oDiv.style.left        = sPropVal;
			else if (sDivProp=="top")        oDiv.style.top         = sPropVal;
			else if (sDivProp=="scrollTop")  oDiv.scrollTop         = sPropVal;
			else if (sDivProp=="visibility") oDiv.style.visibility  = sPropVal;
		}
	}
}


function fDivVal(sDivVal) {
	if (sDivVal.indexOf(".")>-1) {
		sDivName = sDivVal.substr(0,sDivVal.indexOf("."));
		sDivProp = sDivVal.substring(sDivVal.indexOf(".")+1,sDivVal.length);
		if (bIsIE) {
			oDiv = eval("document.all." + sDivName);
			if      (sDivProp=="left")         oDiv = oDiv.style.pixelLeft;
			else if (sDivProp=="top")          oDiv = oDiv.style.pixelTop;
			else if (sDivProp=="width")        oDiv = parseInt(oDiv.style.width);
			else if (sDivProp=="height")       oDiv = parseInt(oDiv.style.height);
			else if (sDivProp=="offsetTop")    oDiv = oDiv.offsetTop;
			else if (sDivProp=="offsetHeight") oDiv = oDiv.offsetHeight;
			else if (sDivProp=="scrollWidth")  oDiv = oDiv.scrollWidth;
			else if (sDivProp=="scrollHeight") oDiv = oDiv.scrollHeight;
			else if (sDivProp=="scrollTop")    oDiv = oDiv.scrollTop;
			else if (sDivProp=="visibility")   oDiv = oDiv.style.visibility;
		}
		else if (bIsDOM) {
			oDiv = document.getElementById(sDivName);
			if      (sDivProp=="left")         oDiv = parseInt(oDiv.style.left);
			else if (sDivProp=="top")          oDiv = parseInt(oDiv.style.top);
			else if (sDivProp=="width")        oDiv = parseInt(oDiv.offsetWidth);
			else if (sDivProp=="height")       oDiv = parseInt(oDiv.offsetHeight);
			else if (sDivProp=="offsetHeight") oDiv = parseInt(oDiv.offsetHeight);
			else if (sDivProp=="offsetTop")    oDiv = oDiv.offsetTop;
			else if (sDivProp=="scrollWidth")  oDiv = parseInt(oDiv.offsetWidth);
			else if (sDivProp=="scrollHeight") oDiv = oDiv.offsetHeight;
			else if (sDivProp=="scrollTop")    oDiv = oDiv.scrollTop;
			else if (sDivProp=="visibility")   oDiv = oDiv.style.visibility;
		}
		return oDiv;
	}
}


// constructor method for scroller objects
function scroller(sdn,ictm,ibt,ibtm,rbr,ibtmac){
	this.sDivName = sdn;
	this.iContTopMax = ictm;
	this.iBarTop = ibt;
	this.iBarTopMax = ibtm;
	this.rBarRatio = rbr;
	this.iBarTopMac = ibtmac;
}


var aScroller = new Array();
var iMousY = 0;
var iScrollSpeed = 8;
var iMousOffset = 0;
var bMousDown = false;
var bDoDrag = false;
var iDragDiv = -1;

function fOpenScroller(sDivId,iDivWidth,iDivHeight) {
	sInnerDivPos = (bIsIE&&bIsMac) ? "absolute" : "relative" ;
	document.write('<div id="' +sDivId+ '" style="position:relative; left:0; top:0; width:' +iDivWidth+ '; height:' +iDivHeight+ '; ');
	document.write('cliprect(0,' +iDivWidth+ ',' +iDivHeight+ ',0); z-index:1; overflow:hidden">');
	if (!bIsIEPC) document.write('<div id="' +sDivId+ 'InnerScroll" style="position:' +sInnerDivPos+ '; top:0; left:0; overflow:hidden">');
}

function fCloseScroller(){
	if (!bIsIEPC) document.write('</div>');
	document.write('</div>');
}

function fSetScroll(sDivId) {
	if (bIsIE||bIsDOM) {
		if (bIsIEPC) {
			iContTopMax = fDivVal(sDivId+ ".scrollHeight") - fDivVal(sDivId+ ".height");
			fDivAct(sDivId+ ".scrollTop=0");
			bShowControls = (iContTopMax>0);
		}
		else {
			iContTopMax = fDivVal(sDivId+ ".height") - fDivVal(sDivId+ "InnerScroll.scrollHeight");
			iScrollSpeed = 20;
			bShowControls = ((fDivVal(sDivId+ ".height")-fDivVal(sDivId+ "InnerScroll.scrollHeight"))<0);
			
		}
		iBarTop = fDivVal(sDivId+ "Bar.top");
		iBarTopMax = fDivVal(sDivId+ "Down.top");
		rBarRatio = iBarTopMax / iContTopMax;
		if (bIsIEMac) {
			iBarTopMac = fDivVal(sDivId+ "Bar.offsetTop");
			fDivAct(sDivId+ "Bar.top=" + iBarTopMac);
		}
		else iBarTopMac = 0;
		
		aScroller[aScroller.length] = new scroller(sDivId,iContTopMax,iBarTop,iBarTopMax,rBarRatio,iBarTopMac);
		
		if (bShowControls) {
			fDivAct(sDivId+ "Up.visibility=visible");
			fDivAct(sDivId+ "Down.visibility=visible");
			fDivAct(sDivId+ "Bar.visibility=visible");
		}
	}
}

function fScroll(sDivId,iScrDirection) {
	bMousDown = true;
	sScrDiv = fScrollerArrayPos(sDivId);
	if (sScrDiv>-1) fScroll2(sDivId,iScrDirection,sScrDiv);
}

function fScroll2(sDivId,iScrDirection,sScrDiv) {
	if (bIsIEPC) fDivAct(sDivId+ ".scrollTop=" +(fDivVal(sDivId+ ".scrollTop") +iScrDirection*iScrollSpeed));
	else fDivAct(sDivId+ "InnerScroll.top=" +Math.min(Math.max(fDivVal(sDivId+ "InnerScroll.top")-iScrDirection*iScrollSpeed, aScroller[sScrDiv].iContTopMax), 0));
	fScrollBar(sDivId,sScrDiv);
	if (bMousDown) setTimeout("fScroll2('" +sDivId+ "'," +iScrDirection+ "," +sScrDiv+ ")",30);
}

function fScrollBar(sDivId,sScrDiv) {
	if (bIsIEPC) {
		iNewBarTop = aScroller[sScrDiv].iBarTop + parseInt(aScroller[sScrDiv].rBarRatio * fDivVal(sDivId+ ".scrollTop"));
		iNewBarTop = Math.min(iNewBarTop, aScroller[sScrDiv].iBarTopMax);
	}
	else {
		iNewBarTop = Math.min(iBarTop + parseInt(aScroller[sScrDiv].rBarRatio * fDivVal(sDivId+ "InnerScroll.top")), aScroller[sScrDiv].iBarTopMax);
		iNewBarTop = aScroller[sScrDiv].iBarTopMac + iNewBarTop;
	}
	fDivAct(sDivId+ "Bar.top=" + iNewBarTop);
}

function fScrollerArrayPos(sDivId){
	for (i=0; i<aScroller.length; i++) {
		if (aScroller[i].sDivName==sDivId) return i;
	}
	return -1;
}

function fStartDrag(e,sDivId) {
	iDragDiv = fScrollerArrayPos(sDivId);
	if (iDragDiv>-1) {
		iMousOffset = fDivVal(aScroller[iDragDiv].sDivName+ "Bar.top") - e.clientY - aScroller[iDragDiv].iBarTopMac;
		iMousY = e.clientY;
		bDoDrag = true;
		if (!bIsIE) setTimeout("fDragBar()",1);
	}
}

function fGetMouse(e) { iMousY = e.clientY; }

function fDragBar() {
	if (bDoDrag) {
		iDiffY = Math.min(Math.max(iMousY+iMousOffset, 0), aScroller[iDragDiv].iBarTopMax);
		fDivAct(aScroller[iDragDiv].sDivName+ "Bar.top=" + (iDiffY + aScroller[iDragDiv].iBarTopMac));
		if (bIsIEPC) fDivAct(aScroller[iDragDiv].sDivName+ ".scrollTop=" + parseInt((iDiffY-aScroller[iDragDiv].iBarTop) / aScroller[iDragDiv].rBarRatio));
		else fDivAct(aScroller[iDragDiv].sDivName+ "InnerScroll.top=" + parseInt((iDiffY-aScroller[iDragDiv].iBarTop) / aScroller[iDragDiv].rBarRatio));
		if (!bIsIE) setTimeout("fDragBar()",1);
	}
}



