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;

var agt=navigator.userAgent.toLowerCase();

var isNS  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)

                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)

                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));



function setScrollerContents(sourceDivId,targetDivId){

	var target = "cont";

	if(targetDivId){

		target = targetDivId;

	}    	



	var sDiv;

	var tDiv;



    if(bIsDOM){

    	sDiv = document.getElementById(sourceDivId);

    	tDiv = document.getElementById(target);

	}	

	else if(bIsIE){		

		sDiv = eval("document.all." + sourceDivId);

		tDiv = eval("document.all." + target);

	}



	if(tDiv==null) {alert("Invalid target div"); return;}    	

	if(sDiv==null) {alert("Invalid source div"); return;}	



	if(isNS){

		var nsp = document.getElementById('divnspatch');

		if(nsp)

			nsp.innerHTML = sDiv.innerHTML;

	}

	else tDiv.innerHTML = sDiv.innerHTML;

	

	fSetScroll(target);		

    scrollerContentsDivId = sDiv;



}



function nsPatch(type){

	if(!isNS) return;

	if(type=="open")

		document.write("<div id=\"divnspatch\">");

	else if(type=="close")

		document.write("</div>");		

	else if(type=="handle") {

		fDivAct("cont.left=6");

	}

		

}

function resetScrollPosition(sDivId){

	if(sDivId=="") sDivId='cont';

	fDivAct(sDivId+ ".scrollTop=0");

	fDivAct(sDivId+ "Bar.top=0");

}



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;

var scrollerTrackBackground = "";





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) {
		//scollerTrack = document.getElementById("contTrack");

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 = 0; 

		iBarTopMax = fDivVal(sDivId+ "Down.top");

		rBarRatio = iBarTopMax / iContTopMax;

		if (bIsIEMac) {

			iBarTopMac = fDivVal(sDivId+ "Bar.offsetTop");

			fDivAct(sDivId+ "Bar.top=" + iBarTopMac);

		}

		else iBarTopMac = 0;

	



	

		if( fScrollerArrayPos(sDivId) < 0)

		{

			aScroller[aScroller.length] = new scroller(sDivId,iContTopMax,iBarTop,iBarTopMax,rBarRatio,iBarTopMac);			      

		}

		else

		{

			sScrollBar = aScroller[fScrollerArrayPos(sDivId)];

	        sScrollBar.iContTopMax = iContTopMax;

	        sScrollBar.iBarTop = iBarTop;

	        sScrollBar.iBarTopMax = iBarTopMax;

        	sScrollBar.rBarRatio = rBarRatio;

	        sScrollBar.iBarTopMac = iBarTopMac;

		    fDivAct(sDivId+ "Bar.top=0");

			

			if (bIsIEPC) fDivAct(sDivId+ ".scrollTop=0");

			else fDivAct(sDivId+ "InnerScroll.top=0");

		}



		scollerTrack = document.getElementById("contTrack");



		if (bShowControls) {

			fDivAct(sDivId+ "Up.visibility=visible");

			fDivAct(sDivId+ "Down.visibility=visible");

			fDivAct(sDivId+ "Bar.visibility=visible");

			if( scrollerTrackBackground.length > 0 )

				scollerTrack.style.backgroundImage = scrollerTrackBackground;

		}

		else{

			fDivAct(sDivId+ "Up.visibility=hidden");

			fDivAct(sDivId+ "Down.visibility=hidden");

			fDivAct(sDivId+ "Bar.visibility=hidden");

			if( scollerTrack.style.backgroundImage.length > 0 )

				scrollerTrackBackground = scollerTrack.style.backgroundImage;

			scollerTrack.style.backgroundImage = "";

		}

	}
}



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);

	}

}



function setDivContent( sourceDivId, targetDivId ){



	var sDiv;

	var tDiv;



    if(bIsDOM){

    	sDiv = document.getElementById(sourceDivId);

    	tDiv = document.getElementById(targetDivId);

	}	

	else if(bIsIE){		

		sDiv = eval("document.all." + sourceDivId);

		tDiv = eval("document.all." + targetDivId);

	}



	if(tDiv==null) {alert("Invalid target div"); return;}    	

	if(sDiv==null) {alert("Invalid source div"); return;}	



	tDiv.innerHTML = sDiv.innerHTML;

}


