	/* Configurations:
	 *  bsWidth         The width of the scroller
	 *  bsHeight        The height of the scroller
	 *  bsMoveIncr      How far to move on each frame
	 *  bsFrameRate     How often (in miliseconds) to move the frame
	 *  bsPauseDelay    How long to pause (in milisecs) between each message
	 *  bsUseBalistics  1 to slow down near end of scoll.
	 *
	 *  See below for how to add static and/or dynamic content for display
	 *
	*/

	var bsWidth=220;
	var bsHeight=115;
	var bsMoveIncr=5;
	var bsFrameRate = 40;       // was 40
	var bsPauseDelay = 3700;  	//was 3700
	var bsUseBallistics = 1;    // 0 for linear movers
					
	var bsContent=new Array();  // don't change
	/* bsContent[0] = ""; */
	/* Static Content:
	 *  Fill elements of the bsContent[] array with static messages you'd like
	 *  to display on the scroller.  You can use the ballistic scroller to
	 *  display only these static messages, or you can include a static
	 *  message or two to be displayed along with dynamic JSMsg feed data (see below).
	 *
	 *  Delete or comment out these array lines (but not the above declaration)
	 *  if you don't want to display static messages.
	 *
	*/



	/* Dynamic Content (JSMsg feeds):
	 *  JSMsgNS     
	 *      Namespace of the JSMsg feed who's messages you'd
	 *      like to display.  You must include the JSMsg
	 *      link in a JavaScript <SCRIPT> tag ABOVE this
	 *      script.
	 *
	 *      You may display messages from multiple JSMsg feeds
	 *      by listing multiple namespaces in the JSMsgNS variable.
	 *      e.g.  
	 *
	 *          JSMsgNS = "ciq cvtnew"; 
	 *
	 *      Leave this set to JSMsgNS = ""; if you only need
	 *      to display static messages from the above arrays.
	 *
	 *  JSMsgSeq
	 *      Messages from muliple newsfeeds are normally interleaved
	 *      but they can be sequential by setting the JSMsgSeq variable
	 *      to 1
	 *
	*/

	var JSMsgNS = "";
	var JSMsgSeq = 0;
	/* ==========================================================================
	 * End of user configurable variables
	 * ==========================================================================
	*/
	var bsOrgArray = new Array(); 
	bsOrgArray[0] = ""; 
	var Cur_i = 0; 
	var DOMObj; 
	var IEObj; 
	var NS4xObj; 
	var BalIncr = bsMoveIncr; 
	var beenHere; 
	var MousePaused = 0; 
	var MessagePaused = 0; 
	var MsgPauseNow = bsPauseDelay; 
	var bsISRWaiting = 0; 
	var bsOrgArray = new Array(); 

	function bsInitialize() { 
		var divobj, cpyi; 
		for(cpyi = 0;cpyi < bsContent.length;cpyi++) { 
			bsOrgArray[cpyi] = bsContent[cpyi];
		}
		bsContent = JSMsgIf(bsContent, JSMsgNS, JSMsgSeq); 

		if(document.getElementById) { 
			divobj = document.getElementById('ScrollerFrame'); 
			divobj.style.width = bsWidth + 'px'; 
			divobj.style.height = bsHeight + 'px'; 
			divobj = document.getElementById('bsWindow'); 
			divobj.style.width = bsWidth + 'px'; 
			divobj.style.height = bsHeight + 'px'; 
			divobj = document.getElementById('bsMover'); 
			divobj.style.width = bsWidth + 'px'; 
			divobj.style.height = bsHeight + 'px'; 

			DOMObj=eval( document.getElementById('bsMover') ); 
			DOMObj.innerHTML = bsContent[Cur_i]; 
			DOMObj.style.top=bsHeight + 'px'; moverDOM();
		}
		else if(document.all) { 
			ScrollerFrame.style.width = bsWidth; 
			IEObj=eval(MoverWin); 
			IEObj.innerHTML=bsContent[Cur_i]; 
			IEObj.style.pixelTop=bsHeight; 
			sizeup=IEObj.offsetHeight; moverIE();
		}
		else if(document.layers) { 
			if(!beenHere) { 
				beenHere = 1; 
				setTimeout("bsInitialize()", 1000);
			}
			NS4xObj=document.SlideWindow.document.SlideMover; 
			NS4xObj.document.write(bsContent[Cur_i]); 
			NS4xObj.document.close(); 
			moverNS4x();
		}
	}

	function moverDOM() { 
		var reducer; 
		var myTop = parseInt(DOMObj.style.top); 
		BallisticsProc(myTop); 
		reducer = (myTop-BalIncr); 

		if(myTop>(BalIncr)) { 
			DOMObj.style.top=reducer + 'px'; 
			if(!MousePaused && !MessagePaused) { 
				bsISRWaiting++; setTimeout("moverDOM()",bsFrameRate);
			}
		}
		else { 
			PauseTop();
		}
	}

	function moverIE() { 
		var myTop = parseInt(IEObj.style.pixelTop); 
		BallisticsProc(myTop); 

		if (IEObj.style.pixelTop>=bsMoveIncr) { 
			IEObj.style.pixelTop-=BalIncr; 
			if(!MousePaused && !MessagePaused) { 
				bsISRWaiting++; 
				setTimeout("moverIE()",bsFrameRate);
			}
		}
		else { 
			PauseTop();
		}
	}

	function moverNS4x() { 
		BallisticsProc(NS4xObj.top); 

		if(NS4xObj.top>=bsMoveIncr) { 
			NS4xObj.top-=BalIncr; 
			if(!MousePaused && !MessagePaused) { 
				bsISRWaiting++; 
				setTimeout("moverNS4x()",bsFrameRate);
			}
		}
		else { 
			PauseTop();
		}
	}

	function BallisticsProc(ThisTop) { 
		if(bsUseBallistics && BalIncr > 2 ) { 
			if(ThisTop < (bsHeight/7)) { 
				BalIncr = bsMoveIncr - 1;
			}
			if(ThisTop < (bsHeight/8) ) { 
				BalIncr = bsMoveIncr - 3;
			}
			if(ThisTop < (bsHeight/10) ) { 
				BalIncr = bsMoveIncr - 7;
			}
			if(ThisTop < 8) { 
				BalIncr = 1;
			}
			BalIncr = (BalIncr < 1 ? 1 : BalIncr);
		}
	}

	function PauseTop() { 
		MessagePaused = 1; 
		setTimeout("ChangeContent()", MsgPauseNow);
	}

	function ChangeContent() { 
		MessagePaused = 0; 
		MsgPauseNow = bsPauseDelay; 

		if(!MousePaused) { 
			Cur_i++; 
			if(Cur_i >= bsContent.length) { 
				Cur_i = 0;
			}
			if(document.getElementById) { 
				DOMObj.innerHTML=bsContent[Cur_i]; 
				DOMObj.style.top=bsHeight + 'px'; 
				BalIncr = bsMoveIncr; 
				moverDOM();
			}
			else if(document.all) { 
				IEObj.style.pixelTop=bsHeight;
				IEObj.innerHTML=bsContent[Cur_i];
				BalIncr = bsMoveIncr; 
				moverIE();
			}
			else { 
				NS4xObj.document.write(bsContent[Cur_i]); 
				NS4xObj.document.close(); 
				NS4xObj.top=bsHeight; 
				BalIncr = bsMoveIncr; 
				moverNS4x();
			}
		}
		else { 
			MsgPauseNow = bsFrameRate;
		}
	}

	function MousePause() { 
		MousePaused = 1;
	}

	function MouseStart() { 
		MousePaused = 0; 

		if(!MessagePaused) { 
			if(document.getElementById) { 
				moverDOM();
			}
			else if(document.all) { 
				moverIE();
			}
			else { 
				moverNS4x();
			}
		}
	}

	function RunScroller() { 
		var msg; 
		msg = ''; 
		msg += '<DIV ID="ScrollerFrame" CLASS="ScrollerFrame">'; 

		if(!document.getElementById && !document.all) { 
			msg += '<ilayer name="SlideWindow" width="' + bsWidth + '"; height="' + bsHeight + '";>\n'; 
			msg += '<layer name="SlideMover" width="' + bsWidth + '"; onMouseover="MousePause();" onMouseout="MouseStart();">'; 
			msg += '<\/layer>'; 
			msg += '<\/ilayer>';
		}
		document.write(msg); 
		if (document.getElementById || document.all) { 
			document.write('<div id="bsWindow" class="bsWindow" style="position:relative;overflow:hidden;width:' +bsWidth+ ';height:' +bsHeight+ ';clip:rect(0 ' +bsWidth+ ' ' +bsHeight+ ' 0);" onMouseover="MousePause();" onMouseout="MouseStart();">'); 
			document.write('<div id="bsMover" class="bsMover" style="position:relative;width:'+bsWidth+';">'); 
			document.write('<\/div><\/div>');
		}
		document.write('<\/DIV>'); 
		bsInitialize();
	}

	function JSMsgIf(msgAr, myNs, mySeq) { 
		var TotNS,LongestNS; 
		var NSAr = new Array(); 
		var i,j,k,o; 

		if(!myNs) { 
			myNs = "";
		}
		if(!mySeq) { 
			mySeq = 0;
		}
		o = msgAr.length; 
		if(myNs) { 
			NSAr = myNs.split(" "); 
			TotNS = NSAr.length; 
			LongestNS = 0; 
			j = 0; 
			for(i = 0;i < TotNS;i++) { 
				j = jsmMetaMsg(NSAr[i], "MetaCount"); 
				if(j > LongestNS) { 
					LongestNS = j;
				}
		}
		if(!j) { 
			return(msgAr);
		}
		k = o; 
		if(mySeq) { 
			for(j = 0;j < TotNS;j++) { 
				for(i = 0;i < LongestNS;i++) { 
					if(jsmMetaMsg(NSAr[j],"MetaCount") <= i) { 
						continue;
					}
					msgAr[k] = jsmGetN(NSAr[j], "LinkTitle", i); 
					if(!msgAr[k]) { 
						msgAr[k] = jsmGetN(NSAr[j], "Body", i); 
						msgAr[k] += "<BR>   -"; 
						t = jsmGetN(NSAr[j], "Attrib",i); 
						if(t.length > 17) { 
							t = t.substr(0,14); 
							t += "...";
						}
						msgAr[k] += t;
					}
					msgAr[k] = msgAr[k].replace(/&/g, "&"); 
					msgAr[k] = msgAr[k].replace(/'/g, "\'"); 
					k++;
				}
			}
		}
		else { 
			for(j = 0;j < LongestNS;j++) { 
				for(i = 0;i < TotNS;i++) { 
					if(jsmMetaMsg(NSAr[i],"MetaCount") <= j) { 
						continue;
					}
					msgAr[k] = jsmGetN(NSAr[i], "LinkTitle", j); 
					if(!msgAr[k]) { 
						msgAr[k] = jsmGetN(NSAr[i], "Body", j); 
						msgAr[k] += "<BR>   -"; 
						t = jsmGetN(NSAr[i], "Attrib",j); 
						if(t.length > 17) { 
							t = t.substr(0,14); 
							t += "...";
						}
						msgAr[k] += t;
					}
					msgAr[k] = msgAr[k].replace(/&/g, "&"); 
					msgAr[k] = msgAr[k].replace(/'/g, "\'"); 
					k++;
				}
			}
			}
		}
	return(msgAr);
	}

	function jsmGetN(ns,MsgPart,number) { 
		var rv, c, er; 
		c = "rv = " + ns + ".GetN('" + MsgPart + "'," + number + ");"; 
		er = eval(c); 
		return(rv);
	}

	function jsmGet(ns,MsgPart,offset) { 
		var rv, c, er; 
		c = "rv = " + ns + ".Get('" + MsgPart + "'," + offset + ");"; 
		er = eval(c); return(rv);
	}

	function jsmGetDay(ns,MsgPart) { 
		var rv, c, er; 
		c = "rv = " + ns + ".GetDay('" + MsgPart + "');"; 
		er = eval(c); 
		return(rv);
	}

	function jsmMetaMsg(ns,MsgPart) { 
		var rv, c, er; 
		c = "rv = " + ns + ".MetaMsg('" + MsgPart + "');"; 
		er = eval(c); 
		return(rv);
	}

