// ==============================================
// Creativyst(R) Ballistic Scroller:
//
//      (C) Copyright 2004 Creativyst, Inc.
//            ALL RIGHTS RESERVED
//
// Use of this software in running applications, with
// or without modification, is permitted provided
// that the conditions published at:
// www.creativyst.com/Prod/18/ClientEG/bsCP.htm 
// are met.
//
//    This software may not be redistributed
//
//     - This comment may not be removed -
// ==============================================


/* 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=300;
var bsHeight=130;
var bsMoveIncr=10;
var bsFrameRate = 40;       // was 40
var bsPauseDelay = 9000;
var bsUseBallistics = 1;    // 0 for linear movers

var bsContent=new Array();  // don't change

/* 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] = '&quot;We are really happy with the wheels - they look great! Please see the attached pictures. Please use what ones you want for advertising and display etc...Many many thanks for the great service and end result!&quot;<br> <i>Ashley Marlow. Honda Civic in Championship White. (Shown on our Gallery Page).</i>';
bsContent[1] = '&quot;Just wanted to say thanks for the recent work you guys did on my Volvo C70. It really looks fantastic. Again thanks.&quot;<br><i>Lucio Napolitano</i>';
bsContent[2] = '&quot;Just a quick email to thank you for the excellent job you did on my wheels. . Attached is a <a href="http://www.e46zone.com/forum/index.php?showtopic=4598&amp;st=0 \ entry62107" target="_blank">link to my post in our forums</a>. Again Thanks for an excellent job.&quot;<br> <i>Nick Brown</i>';
bsContent[3] = '&quot;I am more than happy for you to use a photo of the car, in fact, I have just had some fantastic pictures professionally done and I will email a couple to you when I get them. The photographer has put a couple up on the web, <a href="http://www.flickr.com/photos/gfwilliams/" target="blank">you can see the wheels really well in 2 of the shots</a>.&quot;<br><i>Tony Cant. White TVR. (Shown on our Gallery Page).</i>';
bsContent[4] = '&quot;We have been delighted with your prompt and efficient service but moreover so have our customers. Moreover this is backed up with professional advice that is offered by all your staff, whenever assistance is needed. We constantly recommend you for any alloy wheel repair sure in the knowledge that the repairs are only of the very highest standard.&quot;<br><i>David Newton, MD, Southern Auto Services Ltd.</i>';
bsContent[5] = '&quot;Just a quick E-mail to say thank you very much for the great service and more importantly the fantastic job you did on the wheels of my pride and joy. I have had lots of attention and people ask where I got my wheels refurbished and I was more than happy to tell them and give yourselves a glowing recommendation.&quot;<br><i>Dan Buttle. Silver Civic Type-R. (Shown on our Gallery Page)</i>';



/* 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;}
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;}
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);}

