/*
 * 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.
 *
 *  See below for how to add static and/or dynamic content for display
 *
*/
var mcfWidth=120;
var mcfHeight=55;

var mcfFadedColor = "#aa0000";  // Text/Link color when faded OUT
                                //   (Normally set to the background color)
var mcfTextColor = "#ffffff";   // Text color when ON (faded IN)
var mcfLinkColor = "#ffffff";   // Link color when ON (faded IN)

var mcfFadeINIncr = 17;     // Amt to change color when fading IN
var mcfFadeOUTIncr=55;      // Amt to chng whn fading OUT (0 for instant)

var mcfFrameRate = 60;      // was 40
var mcfPauseDelay = 5000;   // or Maximum if mcfVaryPause
var mcfPauseMin = 3500;     // If mcfVaryPause
var mcfOUTPause = 0;        // 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



var mcfContent=new Array();  // don't change
mcfContent[0] = "";


/* Static Content:
 *  Fill elements of the mcfContent[] array with static messages you'd like
 *  to display on the scroller.  You can use the Multi-Color Fader to
 *  display only the static messages defined here, 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 = "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 = "muzink";
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; 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.style.fontsize = 'x-small'; 
    divobj.style.bgColor = '#aa0000';

    divobj = document.getElementById('mcfCWindow');
    divobj.style.width = mcfWidth + 'px';
    divobj.style.height = mcfHeight + 'px'; 
    divobj.style.zIndex = 1;
    divobj.style.color = mcfFadedColor;
    divobj.style.bgColor = '#aa0000';
    DOMObjC = divobj;
    DOMObjC.style.top = '0px';
    moverDOM();
}
else if(document.all) 
{ 
    ScrollerFrame.style.width = mcfWidth; 
    IEObj=eval(mcfCWindow);
    IEObj.style.pixelTop=(mcfHeight * (-1)); 
    moverIE(); 
    ScrollerFrame.style.fontsize = 'x-small';
    ScrollerFrame.style.bgColor = mcfFadedColor;
    mcfCWindow.style.fontsize = 'x-small';
}
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; var myDone, myTxtCol, myLnkCol; 
    var tmpAr = new Array(); 
    var Stmp; 
    Stmp = "";
    Globi++; 
    if(!mcfState) 
    { 
	if(mcfMousePaused) 
	{ 
	    mcfMPCount++; 
	    if(mcfMPCount > 500) 
	    { 
		mcfMousePaused = 0;
	    }
	    setTimeout("moverDOM()", mcfFrameRate);
	    return;
	}
	mcfState = 1;
	setTimeout("moverDOM()", mcfFrameRate);
    }
    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; 
	    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);
	}
	if(mcfMiddle) 
	{ 
	    DOMObjC.innerHTML = '<table height="100%"><tr><td>' + mcfContent[mcfCur_i] + '<\/td><\/tr><\/table>';
	}
	else 
	{ 
	    DOMObjC.innerHTML = mcfContent[mcfCur_i];
	}
	mcfState = 3;
	tmpAr.length = 0;
	tmpAr = DOMObjC.getElementsByTagName("a"); 
	for(i = 0;i < tmpAr.length;i++) 
	{ 
	    tmp = MoveColor( tmpAr[i].style.color, mcfFadedColor, 0);
	    tmpAr[i].style.color = tmp;
	}
	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;
// 		alert( "about to fetch" );
// 		fetchHeadlines();
	    }
	    mcfState = 0;
	    setTimeout("moverDOM()", mcfPauseDelay);
	    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>' + mcfContent[mcfCur_i] + '<\/td><\/tr><\/table>';
    }
    else 
    { 
	IEObj.innerHTML = mcfContent[mcfCur_i];
    }
    mcfCur_i++; 
    if(mcfCur_i >= mcfContent.length) 
    {
	mcfCur_i = 0;
// 	alert( "about to fetch" );
// 	fetchHeadlines();
    }
    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;
// 	alert( "about to fetch" );
// 	fetchHeadlines();
    }
    mcfState = 0;
    tmp = mcfGetOpenDelay(); 
    setTimeout("moverNS4x()", tmp);
}

function mcfGetOpenDelay()
{
    var tmp; var thisdif; if(mcfVaryPause) { thisdif = mcfContent[mcfCur_i].length - mcfSmallestContent; tmp = thisdif / mcfBiggestDif; tmp = mcfPauseDelay * tmp; tmp = parseInt(tmp); if(tmp < mcfPauseMin) { tmp = mcfPauseMin;}
return(tmp);}
return(mcfPauseDelay);}
function mcfSizeContent()
{ 
    var cpyi; 
    mcfSmallestContent = 5000; 
    mcfBiggestContent = 0; 
    for(cpyi = 0;cpyi < mcfContent.length;cpyi++) 
    { 
	if(mcfContent[cpyi].length < mcfSmallestContent) 
	{ 
	    mcfSmallestContent = mcfContent[cpyi].length;
	}
	if(mcfContent[cpyi].length > mcfBiggestContent) 
	{ 
	    mcfBiggestContent = mcfContent[cpyi].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; 
    msg = ''; 
    msg += '<div ID="ScrollerFrame" CLASS="ScrollerFrame">'; 
    if(!document.getElementById && !document.all) 
    { 
	msg += '<ilayer name="mcfSlideWindow" width="' + mcfWidth + '"; height="' + mcfHeight + '";>\n';
	msg += '<layer name="mcfContentWindow" width="' + mcfWidth + '"; 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+ ';height:' +mcfHeight+ ';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(/'/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);}
