/**********************************************************************************   
NewsSlideFade 
*   Copyright (C) 2001 Thomas Brattli
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*
*   Made by Thomas Brattli
*	Edited by Augusto Rocha Elesbão
*
*   Script date: 09/04/2001 (keep this date to check versions) 
*	Edit date: 08/02/2006
*********************************************************************************/
function lib_bwcheck(){ //Browsercheck (needed)
	this.ver = navigator.appVersion;
	this.agent = navigator.userAgent;
	this.dom = document.getElementById ? 1 : 0;
	this.opera5 = (navigator.userAgent.indexOf("Opera") > -1 && document.getElementById) ? 1 : 0;
	this.ie5 = (this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5) ? 1 : 0;
	this.ie6 = (this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5) ? 1 : 0;
	this.ie4 = (document.all && !this.dom && !this.opera5) ? 1 : 0;
	this.ie = this.ie4 || this.ie5 || this.ie6;
	this.mac = this.agent.indexOf("Mac") > -1;
	this.ns6 = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0; 
	this.ns4 = (document.layers && !this.dom) ? 1 : 0;
	this.bw = (this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5);
	
	return this;
}

var bw = lib_bwcheck();

/***************************************************************************
Use the style tag to change the placement and width of the layers.
If you are trying to place this into a table cell or something make the
position of the divNewsCont layer relative...Remeber that that might crash
Netscape 4 though, Good luck!
********************************************************************************/

/****
Variables to set 
****/

//How do you want the script to work? 
//0 = Fade in - Fade out
//1 = Slide up - Fade out
//2 = Slide left - Fade out
//3 = Random 
nWorks = 0;

//If you use the slide set these variables:
nSlidespeed = 2;	//in px
nNewsheight = 18;	//This is how long down it should start the slide.
nNewswidth = 680;	//This is how long down it should start the slide.

nBetweendelay = 12000;	//The delay before fading out.
nFadespeed = 50;	//The speed to fade in, in milliseconds.

//Set the colors, first color is same as background, last color is the color it stops at:
//You can have as many colors you want
nColor = new Array('#B4B4B4', '#9C9C9C','#888888','#666666','#444444','#222222','#000000');

//This is the news you wanna have, set the link and the text. If you don't wan't it to link anywhere
//use a # as the link
nNews = new Array();

/********************************************************************************
Object code...Object constructors and functions...
********************************************************************************/
function makeNewsObj(obj, nest, color, news, fadespeed, betweendelay, slidespeed, works, newsheight, newswidth)
{
	nest = (!nest) ? "" : 'document.' + nest + '.';
	
   	this.css = bw.dom? document.getElementById(obj).style : bw.ie4 ? document.all[obj].style : bw.ns4 ? eval(nest + "document.layers." + obj) : 0;
   	this.writeref = bw.dom? document.getElementById(obj) : bw.ie4 ? document.all[obj] : bw.ns4 ? eval(nest + "document.layers." + obj + ".document") : 0;
   	
	this.color = new Array();
	this.color = eval(color);
	this.news = new Array();
	this.news = eval(news);
	this.speed = fadespeed;
	this.delay = betweendelay;
	this.newsheight = newsheight;
	this.newswidth = newswidth;
	this.fadeIn = b_fadeIn;
	this.fadeOut = b_fadeOut;
	this.newsWrite = b_newsWrite;
	this.y = 1;
	this.slideUp = b_slideUp;
	this.slideLeft = b_slideLeft;
	this.moveIt = b_moveIt;
	this.slideSpeed = slidespeed;
	this.works = works;
	
	/*if (bw.dom || bw.ie4)
		this.css.color = this.color[0];*/
	
	this.obj = obj + "Object";
	eval(this.obj + "=this");
	
	return this;
}

// A unit of measure that will be added when setting the position of a layer.
var px = bw.ns4 || window.opera ? "" : "px";

function b_moveIt(x,y)
{
	this.x = x;
	this.y = y;
	this.css.left = this.x + px;
	this.css.top = this.y + px;
}

function b_newsWrite(num, i)
{
	var sLink = ((this.news[num]['link'] == null) ? "" : "<a href=\"" + this.news[num]['link'] + "\" style=\"text-decoration:none\">");
	
	if (bw.ns4)
	{
		this.writeref.write(sLink + "<font color=\"" + this.color[i] + "\">" + this.news[num]['text'] + "</font></a>");
		this.writeref.close();
	}
	else
		this.writeref.innerHTML = sLink + '<span id="' + this.obj + 'link' + '" style="color:' + this.color[i] + '">' + this.news[num]['text'] + '</span></a>';
}

//Slide up
function b_slideUp(num, i)
{
	if (this.y > 0)
	{
		if (i==0)
		{
			this.moveIt(0, this.newsheight);
			this.newsWrite(num, this.color.length-1)
		}
		
		this.moveIt(this.x, this.y - this.slideSpeed);
		
		i++;
		setTimeout(this.obj + ".slideUp(" + num + "," + i + ")", 50);
	}
	else
		setTimeout(this.obj + ".fadeOut(" + num + "," + (this.color.length - 1) + ")", this.delay);
}

//Slide left
function b_slideLeft(num, i)
{
	if (this.x > 0)
	{
		if (i==0)
		{
			this.moveIt(this.newswidth, 0);
			this.newsWrite(num, this.color.length-1)
		}
		
		this.moveIt(this.x - this.slideSpeed, this.y);
		
		i++;
		setTimeout(this.obj + ".slideLeft(" + num + "," + i + ")", 50);
	}
	else
		setTimeout(this.obj + ".fadeOut(" + num + "," + (this.color.length - 1) + ")", this.delay);
}

//The fade functions
function b_fadeIn(num, i)
{
	if (i < this.color.length)
	{
		if (i==0 || bw.ns4)
			this.newsWrite(num, i);
		else
		{
			obj = bw.ie4 ? eval(this.obj + "link") : document.getElementById(this.obj + "link");
			obj.style.color = this.color[i];
		}
		
		i++;
		setTimeout(this.obj + ".fadeIn(" + num + "," + i + ")", this.speed);
	}
	else
		setTimeout(this.obj + ".fadeOut(" + num + "," + (this.color.length - 1) + ")", this.delay);
}

function b_fadeOut(num, i)
{
	if (i >= 0)
	{
		if (i==0 || bw.ns4)
			this.newsWrite(num, i);
		else{
			obj = bw.ie4 ? eval(this.obj + "link") : document.getElementById(this.obj + "link");
			obj.style.color = this.color[i];
		}
		
		i--;
		setTimeout(this.obj + ".fadeOut(" + num + "," + i + ")", this.speed);
	}
	else
	{
		num++;
		
		if (num == this.news.length)
			num = 0;
		
		works = !this.works ? 0 : this.works == 1 ? 1 : this.works == 2 ? 2 : Math.round(Math.random() * 2);
		
		if (works == 0)
			setTimeout(this.obj + ".fadeIn(" + num + ",0)", 500);
		else if (works == 1)
		{
			this.y = 1;
			setTimeout(this.obj + ".slideUp(" + num + ",0)", 500);
		}
		else if (works == 2)
		{
			this.x = 1;
			setTimeout(this.obj + ".slideLeft(" + num + ",0)", 500);
		}
	}
}

/********************************************************************************************
The init function. Calls the object constructor and set some properties and starts the fade
*********************************************************************************************/
function fadeInit()
{
	oNews = new makeNewsObj('divNews', 'divNewsCont', "nColor", "nNews", nFadespeed, nBetweendelay, nSlidespeed, nWorks, nNewsheight, nNewswidth);
	oNewsCont = new makeNewsObj('divNewsCont');
	
	works = !oNews.works ? 0 : oNews.works == 1 ? 1 : oNews.works == 2 ? 2 : Math.round(Math.random() * 2);
	
	if (works == 0)
		oNews.fadeIn(0, 0);
	else if (works == 1)
		oNews.slideUp(0, 0);
	else if (works == 2)
		oNews.slideLeft(0, 0);
	
	oNewsCont.css.visibility = "visible";
}
