/*
 * Creativyst(R) Multi-Color Fader:
 *
 *      (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:
 * http://www.creativyst.com/Prod/18/ClientEG/mcfCP.htm 
 * are met.
 *
 *    This software may not be redistributed
 *
 *     - This comment may not be removed -
 *
 * v1.0a
*/


/* Configurations:
 *  Set these general configuration variables to change
 *  how your scroller looks and acts.
 *
*/
var mcfWidth=728;
var mcfHeight=20;

var mcfFadedColor = "#536482";  // Text/Link color when faded OUT
                                //   (Normally set to the background color)
var mcfTextColor = "#536482";   // Text color when ON (faded IN)
var mcfLinkColor = "#0000FF";   // Link color when ON (faded IN)

var mcfFadeINIncr = 0;     // Amt to change color when fading IN
var mcfFadeOUTIncr=50;      // Amt to chng whn fading OUT (0 for instant)

var mcfFrameRate = 60;      // was 40
var mcfPauseDelay = 3000;   // or Maximum if mcfVaryPause - was 4000
var mcfPauseMin = 1500;     // If mcfVaryPause - was 2000
var mcfOUTPause = 10;        // 0 for no pause when faded OUT
var mcfVaryPause = 1;       // Vary pause based on msg length
var mcfMiddle = 1;          // 1 for vertical middle, 0 for top

var mcfUseBallistics = 1;    // (not used) 0 for linear movers


/* 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 = "niq 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 mcfCur_i = 0; var DOMObjC; var IEObj; var NS4xObj; var BalIncr = mcfFadeINIncr; var mcfBeenHere = 0; var mcfMousePaused = 0; var MessagePaused = 0; var MsgPauseNow = mcfPauseDelay; var bsISRWaiting = 0; var mcfSmallestContent = 0; var mcfBiggestContent = 0; var mcfBiggestDif = 0; var mcfState = 0; var Globi = 0; var mcfMPCount = 0; var mcfCritical = 0; function mcfInitialize()
{ var divobj; var cpyi; if(!mcfBeenHere) { mcfBeenHere = 1; setTimeout("mcfInitialize()", 1100); return;}
else { mcfFadedColor = mcfFadedColor.toLowerCase(); mcfTextColor = mcfTextColor.toLowerCase(); mcfLinkColor = mcfLinkColor.toLowerCase(); for(cpyi = 0;cpyi < mcfContent.length;cpyi++) { bsOrgArray[cpyi] = mcfContent[cpyi];}
if(!mcfOUTPause) { mcfOUTPause = 1;}
if(!mcfContent[0]) { mcfContent.length = 0;}
mcfContent = JSMsgIf(mcfContent, JSMsgNS, JSMsgSeq); mcfSizeContent(); if(document.getElementById) { divobj = document.getElementById('ScrollerFrame'); divobj.style.width = mcfWidth + 'px'; divobj.style.height = mcfHeight + 'px'; divobj = document.getElementById('mcfWindow'); divobj.style.width = mcfWidth + 'px'; divobj.style.height = mcfHeight + 'px'; divobj = document.getElementById('mcfCWindow'); divobj.style.color = mcfFadedColor; divobj.style.width = mcfWidth + 'px'; divobj.style.height = mcfHeight + 'px'; divobj.style.zIndex = 1; DOMObjC = divobj; DOMObjC.style.top = '0px'; moverDOM();}
else if(document.all) { ScrollerFrame.style.width = mcfWidth; IEObj=eval(mcfCWindow); IEObj.style.pixelTop=(mcfHeight * (-1)); moverIE();}
else if(document.layers) { NS4xObj=document.mcfSlideWindow.document.mcfContentWindow; moverNS4x();}
}
}
function MoveColor(cFrom, cTo, myIncr)
{ var i, cNew; var f = new Array(); var t = new Array(); var sFrom = new String(); var sTo = new String(); var dt, dt2, dt3; sFrom = cFrom; sTo = cTo; if(!sFrom) { sFrom = "#000000";}
if(!sTo) { sTo = "#000000";}
sFrom = NormalizeColorNotation(sFrom); sTo = NormalizeColorNotation(sTo); if(!myIncr) { return(sTo);}
dt = sTo.substr(1,2); dt2 = sFrom.substr(1,2); dt3 = sFrom.substr(3,2); dt = sFrom.substr(5,2); t[0] = parseInt(sTo.substr(1,2),16); t[1] = parseInt(sTo.substr(3,2),16); t[2] = parseInt(sTo.substr(5,2),16); f[0] = parseInt(sFrom.substr(1,2),16); f[1] = parseInt(sFrom.substr(3,2),16); f[2] = parseInt(sFrom.substr(5,2),16); for(i = 0;i < 3;i++) { if(f[i] != t[i]) { if(f[i] > t[i]) { f[i] -= myIncr; f[i] = (f[i]<t[i]) ? t[i] : f[i];}
else { f[i] += myIncr; f[i] = (f[i]>t[i]) ? t[i] : f[i];}
}
}
for(i=0;i<3;i++) { f[i] = f[i].toString(16); while(f[i].length < 2) { f[i] = "0" + f[i];}
}
cNew = "#" + f[0] + f[1] + f[2]; return(cNew);}
function NormalizeColorNotation(sParm)
{ var tc,tr,tg,tb,sW, rv; var tmpAr = new Array(); if(sParm.indexOf("rgb(") > -1) { tr = tg = tb = ""; tmpAr = sParm.split(","); for(i = 0;i < tmpAr[0].length;i++) { tc = tmpAr[0].charAt(i); if(tc >= '0' && tc <= '9') { tr += tc;}
tc = ""; tc = tmpAr[2].charAt(i); if(tc >= '0' && tc <= '9') { tb += tc;}
}
tg = tmpAr[1]; tr = parseInt(tr); tg = parseInt(tg); tb=parseInt(tb); sW = "#"; tc = tr.toString(16); while(tc.length < 2) { tc = "0" + tc }
sW += tc; tc = tg.toString(16); while(tc.length < 2) { tc = "0" + tc }
sW += tc; tc = tb.toString(16); while(tc.length < 2) { tc = "0" + tc }
sW += tc; rv = sW;}
else { if(sParm.indexOf("#") == -1) { sParm = "#" + sParm;}
rv = sParm;}
return(rv);}
function moverDOM()
{ var reducer, tmp, tmpL, tmpR,i; var myDone, myTxtCol, myLnkCol; var tmpAr = new Array(); var Stmp; Stmp = ""; myDone = 0; Globi++; if(!mcfState) { if(mcfMousePaused) { mcfMPCount++; if(mcfMPCount > 500) { mcfMousePaused = 0;}
setTimeout("moverDOM()", mcfFrameRate); return;}
mcfState = 1; setTimeout("moverDOM()", mcfFrameRate); return;}
else if(mcfState == 1) { myTxtCol = NormalizeColorNotation(DOMObjC.style.color); myLnkCol = ""; tmpAr.length = 0; tmpAr = DOMObjC.getElementsByTagName("a"); myDone = 0; if(tmpAr && tmpAr.length) { myLnkCol = NormalizeColorNotation(tmpAr[0].style.color); if( (myLnkCol == mcfFadedColor) && (myTxtCol == mcfFadedColor) ) { myDone = 1;}
}
else { if(myTxtCol == mcfFadedColor) { myDone = 1;}
}
if(myDone) { mcfState = 2; if(tmpAr && tmpAr.length) { for(i = 0;i < tmpAr.length;i++) { tmpAr[i].style.color = mcfFadedColor;}
}
setTimeout("moverDOM()", mcfOUTPause); return;}
else { DOMObjC.style.color = MoveColor( DOMObjC.style.color, mcfFadedColor, mcfFadeOUTIncr); if(tmpAr && tmpAr.length) { for(i = 0;i < tmpAr.length;i++) { tmpAr[i].style.color = MoveColor( tmpAr[i].style.color, mcfFadedColor, mcfFadeOUTIncr);}
}
setTimeout("moverDOM()", mcfFrameRate); return;}
}
else if(mcfState == 2) { if(mcfCritical) { setTimeout("moverDOM()", mcfFrameRate); return;}
DOMObjC.style.color = mcfFadedColor; DOMObjC.style.visibility = "hidden"; mcfState = 22; setTimeout("moverDOM()", (mcfFrameRate)); return;}
else if(mcfState == 22) { if(mcfCritical) { setTimeout("moverDOM()", mcfFrameRate); return;}
if(mcfMiddle) { DOMObjC.innerHTML = '<table height="100%"><tr><td class="reduced">' + mcfContent[mcfCur_i] + '<\/td><\/tr><\/table>';}
else { DOMObjC.innerHTML = mcfContent[mcfCur_i];}
tmpAr = DOMObjC.getElementsByTagName("a"); for(i = 0;i < tmpAr.length;i++) { tmpAr[i].style.color = mcfFadedColor;}
DOMObjC.style.visibility = "visible"; mcfState = 3; setTimeout("moverDOM()", mcfFrameRate); return;}
else if(mcfState == 3) { myTxtCol = NormalizeColorNotation(DOMObjC.style.color); myLnkCol = ""; tmpAr.length = 0; tmpAr = DOMObjC.getElementsByTagName("a"); myDone = 0; if(tmpAr && tmpAr.length) { myLnkCol = NormalizeColorNotation(tmpAr[0].style.color); if( (myLnkCol == mcfLinkColor) && (myTxtCol == mcfTextColor) ) { myDone = 1;}
}
else { if(myTxtCol == mcfTextColor) { myDone = 1;}
}
if(myDone) { tmp = mcfGetOpenDelay(); mcfCur_i++; if(mcfCur_i >= mcfContent.length) { mcfCur_i = 0;}
mcfState = 0; setTimeout("moverDOM()", tmp); return;}
else { DOMObjC.style.color = MoveColor( DOMObjC.style.color, mcfTextColor, mcfFadeINIncr); if(tmpAr && tmpAr.length) { for(i = 0;i < tmpAr.length;i++) { tmpAr[i].style.color = MoveColor( tmpAr[i].style.color, mcfLinkColor, mcfFadeINIncr);}
}
setTimeout("moverDOM()", mcfFrameRate); return;}
}
}
function moverIE()
{ var tmp; if(mcfMiddle) { IEObj.innerHTML = '<table height="100%"><tr><td class="reduced">' + mcfContent[mcfCur_i] + '<\/td><\/tr><\/table>';}
else { IEObj.innerHTML = mcfContent[mcfCur_i];}
mcfCur_i++; if(mcfCur_i >= mcfContent.length) { mcfCur_i = 0;}
mcfState = 0; tmp = mcfGetOpenDelay(); setTimeout("moverIE()", tmp);}
function moverNS4x()
{ NS4xObj.document.write( mcfContent[mcfCur_i] ); NS4xObj.document.close(); mcfCur_i++; if(mcfCur_i >= mcfContent.length) { mcfCur_i = 0;}
mcfState = 0; tmp = mcfGetOpenDelay(); setTimeout("moverNS4x()", tmp);}
function mcfGetOpenDelay()
{ var tmp; var tempstrip; var thisdif; if(mcfVaryPause) { tempstrip = mcfContent[mcfCur_i].replace(/(<([^>]+)>)/ig,""); thisdif = tempstrip.length - mcfSmallestContent; tmp = thisdif / mcfBiggestDif; tmp = mcfPauseDelay * tmp; tmp = parseInt(tmp); if(tmp < mcfPauseMin) { tmp = mcfPauseMin;}
return(tmp);}
return(mcfPauseDelay);}
function mcfSizeContent()
{ var cpyi; var tempstrip; mcfSmallestContent = 5000; mcfBiggestContent = 0; for(cpyi = 0;cpyi < mcfContent.length;cpyi++) { tempstrip = mcfContent[cpyi].replace(/(<([^>]+)>)/ig,""); if(tempstrip.length < mcfSmallestContent) { mcfSmallestContent = tempstrip.length;}
if(tempstrip.length > mcfBiggestContent) { mcfBiggestContent = tempstrip.length;}
}
mcfBiggestDif = mcfBiggestContent - mcfSmallestContent;}
function mcfChangeFeeds(newJSMsgNS)
{ mcfCritical = 1; mcfContent.length = 0; JSMsgNS = newJSMsgNS; mcfContent = JSMsgIf(mcfContent, JSMsgNS, JSMsgSeq); mcfSizeContent(); mcfCur_i = 0; mcfCritical = 0;}
function MousePause()
{ mcfMousePaused = 1;}
function MouseStart()
{ mcfMousePaused = 0;}
function RunScroller()
{ var msg; var m; msg = ''; msg += '<div ID="ScrollerFrame" CLASS="ScrollerFrame">'; if(!document.getElementById && !document.all) { msg += '<ilayer name="mcfSlideWindow" width="' + mcfWidth + 'px"; height="' + mcfHeight + 'px";>\n'; msg += '<layer name="mcfContentWindow" width="' + mcfWidth + 'px"; onMouseover="MousePause();" onMouseout="MouseStart();">'; msg += '<\/layer>'; msg += '<\/ilayer>';}
document.write(msg); if(document.getElementById || document.all) { document.write('<div id="mcfWindow" class="mcfWindow" style="position:relative;overflow:hidden;width:' + mcfWidth + 'px;height:' + mcfHeight + 'px;clip:rect(0 ' + mcfWidth + ' ' + mcfHeight + ' 0);" onMouseover="MousePause();" onMouseout="MouseStart();">' ); document.write('<div id="mcfCWindow" class="mcfCWindow" style="position:relative;"><\/div>'); document.write('<\/div>');}
document.write('<\/div>'); mcfInitialize();}
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(/&apos;/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(/&apos;/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(); 

