								   /* 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=550;
									var bsHeight=90;
									var bsMoveIncr=3;
									var bsFrameRate = 30;       // was 40
									var bsPauseDelay = 7000;  	//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.
									 *
									*/
									bsContent[0] = document.getElementById("g0").innerHTML;
									bsContent[1] = document.getElementById("g1").innerHTML;
									bsContent[2] = document.getElementById("g2").innerHTML;
									bsContent[3] = document.getElementById("g3").innerHTML;
									//bsContent[0] = "Display:<BR><strong><CENTER>-Dynamic feeds<BR>(<em>JSMsg<\/em>)<P/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Static messages<P/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Both...<\/strong><CENTER><HR WIDTH=\"25%\">";
									//bsContent[1] = 'The <strong>Ballistic Scroller<\/strong> from Creativyst.<BR><BR>Inspired by understanding gained from a basic vertical scroller by <A TARGET="_blank" HREF="http://www.geocities.com/vbarsan/multiplescroller.htm"><strong>Vasile Barsan<\/strong><\/A>\n';
									//bsContent[2] = "And did we mention it's <strong>JSMsg Ready<\/strong>?";
									//bsContent[3] = "<strong>JSMsg<\/strong> lets you display <strong><em>dynamic<\/em><\/strong> information from outside JSMsg feeds ...<P\/><UL><LI>Set <B>one<\/B> variable!<LI><strong>NO<\/strong> server-side scripting!<\/UL> :-)";
									//bsContent[4] = "An example of dynamic content from a <strong>JSMsg<\/strong> file follows...";
									/* 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" STYLE="margin-left:9px">'; 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:absolute;top:0px;left:145px;overflow:hidden;width:' +bsWidth+ ';height:' +bsHeight+ ';clip:rect(0 ' +bsWidth+ ' ' +bsHeight+ ' 0);"">'); 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);}
									RunScroller();
									
									

