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) {
	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;
}
