var type = "IE";	//Variable used to hold the browser name
var items = 7;
BrowserSniffer();

//detects the capabilities of the browser
function BrowserSniffer() {
	if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) type="OP";		//Opera
	else if (document.all) type="IE";														//Internet Explorer e.g. IE4 upwards
	else if (document.layers) type="NN";													//Netscape Communicator 4
	else if (!document.all && document.getElementById) type="MO";							//Mozila e.g. Netscape 6 upwards
	else type = "IE";		//I assume it will not get here
}

// Replaces text with by in string
function replace(string,text,by) {

    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}
//Default browsercheck, added to all scripts!
function checkBrowser(){
	this.ver=navigator.appVersion
	//alert (navigator.appVersion);
	this.dom=document.getElementById?1:0
	// added by Francis Zhu 11/27/07 for ie7
	this.ie7=(this.ver.indexOf("MSIE 7")>-1 && this.dom)?1:0;
	
	// added by Francis Zhu 05/28/03 for ie6
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
	
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie4=(document.all && !this.dom)?1:0;
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie7 || this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns5 || this.dom)
	return this
}
bw=new checkBrowser()
/*NOTE**************************************************************************
This code is maybe the biggest example of a workaround code as it has different
code for all browsers. But it works like a charm :)

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 in - Fade out
//2 = Random 
nWorks=0

//If you use the slide set these variables:
nSlidespeed=5 //in px
nNewsheight=50 //This is how long down it should start the slide

nBetweendelay=7000 //The delay before fading out.
nFont='Verdana, Arial, Helvetica, sans-serif' //The font for the news
nFontsize=11   //font size in pixel
nFadespeed=100 //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('#FFFFFF', '#FFFEFE','#FFEBDF','#FFD1B5','#FFB281','#FF9551','#FF7B26','#FF6705','#FF6400')

//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
/*function Loading(){
var counter
counter=document.BCBCForm.hiddenCounter.value;
alert (counter);
nNews=new Array();
for (i=0; i<counter; i++) {
	nNews[i]=new Array();
	nNews[i]["text"]=eval("document.BCBCForm.hiddenVerse"+i+".value");
	nNews[i]["link"]="";
}
}

alert (nNews[0]["text"])*/
/*
nNews=new Array()
//Copy there three lines and change the info and numbers to get more news.
nNews[0]=new Array()
nNews[0]["text"]="New scripts www.bratta.com/dhtml is updated with more scripts then ever!"
nNews[0]["link"]="http://www.bratta.com/dhtml"

nNews[1]=new Array()
nNews[1]["text"]="Dynamic HTML scripts can be found here! ZoomText, FadeNews, TextChange and lot's lot's more.."
nNews[1]["link"]="http://www.bratta.com"

nNews[2]=new Array()
nNews[2]["text"]="Search the web with yahoo!"
nNews[2]["link"]="http://www.yahoo.com"
*/
/********************************************************************************
Object code...Object constructors and functions...
********************************************************************************/
function makeNewsObj(obj,nest,font,size,color,news,fadespeed,betweendelay,slidespeed,works,newsheight){
    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;
	if(font){
		this.color=new Array(); 
		this.color=eval(color); 
		this.news=new Array(); 
		this.news=eval(news)
		this.font=font; 
		this.size=size; 
		this.speed=fadespeed; 
		this.delay=betweendelay; 
		this.newsheight=newsheight
		this.fadeIn=b_fadeIn;
		this.fadeOut=b_fadeOut; 
		this.newsWrite=b_newsWrite; 
		this.y=1
		this.slideIn=b_slideIn; 
		this.moveIt=b_moveIt; 
		this.slideSpeed=slidespeed; 
		this.works=works
		if(bw.dom || bw.ie4){
			this.css.fontFamily=this.font; 
			this.css.fontSize=this.size; 
			this.css.color=this.color[0];
			//alert("bw");
		}
	}
	this.obj = obj + "Object"; 	
	eval(this.obj + "=this"); 
	return this
}

function b_moveIt(x,y){
	this.x=x; 
	this.y=y; 
	this.css.left=this.x; 
	this.css.top=this.y
}

function b_newsWrite(num,i){
	if(bw.ns4){
		//this.writeref.write(">a href=\""+this.news[num]['link']+"\" style=\"text-decoration:none; font-size:"+this.size+"px\">"
		//	+"<b><font face=\""+this.font+"\" color=\""+this.color[i]+"\">"+this.news[num]['text']+"</font></b></a>")
		this.writeref.write("<b><font face=\""+this.font+"\" color=\""+this.color[i]+"\">"+this.news[num]['text']+"</font></b>")
			
		this.writeref.close()
	/*}else if(bw.dom){
		atag=document.createElement("A"); atag.href=this.news[num]["link"]
		atag.id=this.obj+"link"; atag.style.color=this.color[i]
		this.writeref.replaceChild(atag,this.writeref.childNodes[0])
		this.writeref.childNodes[0].appendChild(document.createTextNode(""))
		this.writeref.childNodes[0].replaceChild(document.createTextNode(this.news[num]["text"]),this.writeref.childNodes[0].childNodes[0])
	*/}else if(document.all || document.getElementById){
		//this.writeref.innerHTML="<a id=\""+this.obj+"link" +"\" style=\"text-decoration:none; color:"+this.color[i]+"\" href=\""+this.news[num]['link']+"\">"+this.news[num]['text']+"xxx</a>"
		this.writeref.innerHTML="<p><b><font id=\""+this.obj+"link" +"\" face=\""+this.font+"\" color=\""+this.color[i]+"\">"+this.news[num]['text']+"</font></b></p>"
	}
}
//Slide in
function b_slideIn(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+".slideIn("+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:Math.round(Math.random())
		if(works==0) 
			setTimeout(this.obj+".fadeIn("+num+",0)",500)
		else if(works==1){
			this.y=1; 
			setTimeout(this.obj+".slideIn("+num+",0)",500)
		}
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

/********************************************************************************************
Function to reposition and resize the layer
*********************************************************************************************/
function ReDoLayer(){
	var leftPosition=findPosX(document.images['tstimg'])
	var topPosition=findPosY(document.images['tstimg'])
	var layerWidth=document.images['tstimg'].width
	var layerHeight=document.images['tstimg'].height
	/*
	if (document.all) {
		
		document.all.divNewsCont.style.posLeft=leftPosition+10
		document.all.divNewsCont.style.posTop=topPosition+2
		document.all.divNewsCont.style.width=layerWidth-10
		document.all.divNewsCont.style.height=layerHeight
	}
	else if (document.layers) {
		document.layers['divNewsCont'].document.width=layerWidth-10
		document.layers['divNewsCont'].document.height=layerHeight
		document.layers['divNewsCont'].Left=leftPosition+10
		document.layers['divNewsCont'].Top=topPosition
		
	}
	else {
		// not a version 4 or greater browser
	}
	*/
	var divNewsContLeft = leftPosition+10;
	var divNewsContTop = topPosition+2;
	var divNewsContWidth = layerWidth-10;
	var divNewsContHeight=layerHeight;
	
	/*var GodPrelude01Left=0;
	if (type=="IE"){
		GodPrelude01Left = leftPosition-20;
	}
	else if (type=="MO" || type=="OP") {
		GodPrelude01Left=leftPosition+10;
	}
	var GodPrelude01Top=topPosition-17;
	*/
	posLayer("divNewsCont", divNewsContLeft,divNewsContTop,divNewsContWidth,divNewsContHeight);
	sizeLayer("divNews", divNewsContWidth,divNewsContHeight);
	

}

function posLayer(layerid, x,y,w,h) {
    if (!isNaN(new Number(x)) && !isNaN(new Number(y))) {
		if (type=="IE"){		
      		document.all[layerid].style.posLeft = x;
			document.all[layerid].style.posTop = y;
			document.all[layerid].style.width = w;
			document.all[layerid].style.height = h;
			document.all[layerid].style.visibility="visible";
		}
		else if (type=="NN"){
			document.layers[layerid].left = x; 
			document.layers[layerid].top = y; 
			document.layers[layerid].document.width = w;
			document.layers[layerid].document.height = h;
			document.layers[layerid].visibility="visible";
		}
		else if (type=="MO" || type=="OP") {
           document.getElementById(layerid).style.left = x;
           document.getElementById(layerid).style.top = y;
		   document.getElementById(layerid).style.width = w;
		   document.getElementById(layerid).style.height = h;
		   //alert("hi");
		   document.getElementById(layerid).style.visibility="visible";
		}
                  
    } //End if check input params valid  
} //end function

function sizeLayer(layerid, w,h) {
    if (!isNaN(new Number(w)) && !isNaN(new Number(h))) {
		if (type=="IE"){		
      		document.all[layerid].style.width = w;
			document.all[layerid].style.height = h;
			document.all[layerid].style.visibility="visible";
		}
		else if (type=="NN"){
			document.layers[layerid].document.width = w;
			document.layers[layerid].document.height = h;
			document.layers[layerid].visibility="visible";
		}
		else if (type=="MO" || type=="OP") {
           document.getElementById(layerid).style.width = w;
		   document.getElementById(layerid).style.height = h;
		   //alert("hi");
		   document.getElementById(layerid).style.visibility="visible";
		}
                  
    } //End if check input params valid  
} //end function
/********************************************************************************************
The init function. Calls the object constructor and set some properties and starts the fade
*********************************************************************************************/
function fadeInit(){

	ReDoLayer();
	
	var counter
	counter=document.BCBCForm.hiddenCounter.value;
	if (counter==0)
		counter=1;
	//alert (counter);
	nNews=new Array();
	for (i=0; i<counter; i++) {
		nNews[i]=new Array();
		nNews[i]["text"]=eval("document.BCBCForm.hiddenVerse"+i+".value");
		nNews[i]["text"]=replace(nNews[i]["text"], "^", String.fromCharCode(34))
		nNews[i]["link"]="";
	}
	
	oNews=new makeNewsObj('divNews','divNewsCont',nFont,nFontsize,"nColor","nNews",nFadespeed,nBetweendelay,nSlidespeed,nWorks,nNewsheight)
	//oNewsCont=new makeNewsObj('divNewsCont')
	works=!oNews.works?0:oNews.works==1?1:Math.round(Math.random())
	if(works==0) oNews.fadeIn(0,0)
	else if(works==1) oNews.slideIn(0,0)
	//oNewsCont.css.visibility='visible'
	//oNews.css.visibility='visible'
}
// if window resizes, call fadeInit
window.onresize=fadeInit;
//Calls the init function on pageload. 
if(bw.bw) onload=fadeInit;
