var n_images = 0;		//Current max number of images
var max_seconds = 5;		//Max time that the image waits before changing (in seconds)
var seconds = max_seconds;	//Current time the image has waited (in seconds)
var cur_image = 0;		//The current image being displayed
var delay = 0;

//var img_opacity = new Array();		//Current opacity of the displayed image
var min_opacity = 0;		//Minimum opacity that can be displayed
var max_opacity = 100;		//Maximum opacity that can be displayed
var inc_opacity = 5;		//Opacity increment
var fadeDelay = 250;		//Fade in/fade out timer delay

var randomImg = true;		//If true, pick a random image.
				//If false, increment the current image by 1

var images = new Array();	//Stores all of the images
var texts = new Array();	//Stores all of the text
var links = new Array();	//Stores all of the links
var heights = new Array();	//Stores all of the heights

var logoimg = 'logo_img';	//Element ID for the image
var logourl = 'logo_link1';	//Element ID for the image link
var logotext = 'logo_text';	//Element ID for the text

//var y_pos = new Array();
var max_height = 220;
var max_logos = 5;
var logos = new Array();
var y_offset = 0;
var x_offset = 0;

/**
 * Add an image into the logo rotater
 * Call this before starting the logo rotater
 * @param imagesrc		source url of the image
 * @param text			text to display for the image
 * @param url			url for the link displayed
 */
function addImage(imagesrc, text, url, height) {
	if (document.images)
    	{
		images[n_images] = new Image();
		images[n_images].src = imagesrc;
	}
	texts[n_images] = text;
	links[n_images] = url;
	heights[n_images] = height;
	
	//document.write(links[n_images]);
	//document.write(images[n_images]);
	n_images = n_images + 1;
}

function logo(x, y, opac) {
	this.xPos = x;
	this.yPos = y;
	this.opacity = opac;
	this.delay = 0;
	this.fadedelay = 0;
	this.height = 0;
}

/**
 * Print out all of the images held in the images array
 */
function outputImages() {
	for(var i = 0; i < n_images; i++) {
		document.getElementById(logoimg).innerHTML = document.getElementById(logoimg).innerHTML + 
			"<img id='" + logoimg + i + "' src='" + images[i].src + "' />";
	}
}

function outputLogos() {
	var ds = new Array();
	var di = 0;
	var space = max_height / max_logos;
	
	cur_image = getRandom(n_images);

	ds[di++] = '<div id="LogoContainer" style="position: relative; height: ' + (max_height + 90) + '">';
	for(var i = 0; i < max_logos; i++) {
		ds[di++] = '<div id="Logo' + i + '" style="position:absolute;">';
		ds[di++] = '<div class="LogoTopCell">'
		ds[di++] = '<a id="logo_link' + i + '" href="#">';
		ds[di++] = '<img id="logo_img' + i + '" border="0" src="1.jpg" style="-moz-opacity:1.00; filter:alpha(opacity=100);" />';
		ds[di++] = '</a></div>';
		ds[di++] = '<div id="logo_text' + i + '" class="LogoBottomCell Red">'+i+'Click here for more info</div>';
		ds[di++] = '</div>';
		logos[i] = new logo(0, max_height, 0);
	}
	
	ds[di++] = '</div>';
				
	document.write(ds.join(''));
	
	for(var j = 0; j < max_logos; j++) {
		changeImage(j);
		changeLinks(getObject("logo_link" + j));
		changeText(getObject("logo_text" + j));
		
		cur_image = (cur_image + 1) % n_images;
		setOpacity("Logo" + j, logos[j].opacity);
		
		var prev = (j - 1);
		if(prev<0) prev=max_logos-1;
		if(j > 0) {
			//logos[j].delay = getObject("logo_img" + prev).height + logos[prev].delay + 26;
			logos[j].delay = logos[prev].height + logos[prev].delay + 26;
		} else {
			logos[j].delay = 26;
		}
		getObject("Logo" + j).style.visibility = "hidden";
	}
	
	y_offset = getObject("LogoContainer").style.top;
	x_offset = getObject("LogoContainer").style.left;
}

function outPutLogosNonIE() {
	var ds = new Array();
	var di = 0;
		
	cur_image = getRandom(n_images);

	ds[di++] = '<div id="LogoContainer"><br />';
		for(var i = 0; i < 3; i++) {
			ds[di++] = '<div id="Logo' + i + '">';
			ds[di++] = '<div class="LogoTopCell">'
			ds[di++] = '<a id="logo_link' + i + '" href="#">';
			ds[di++] = '<img id="logo_img' + i + '" border="0" src="1.jpg" style="-moz-opacity:1.00; filter:alpha(opacity=100);" />';
			ds[di++] = '</a></div>';
			ds[di++] = '<div id="logo_text' + i + '" class="LogoBottomCell Red">'+i+'Click here for more info</div>';
			ds[di++] = '</div><br />';
			logos[i] = new logo(0, max_height, 0);
		}
		
		ds[di++] = '</div>';
		
		document.write(ds.join(''));
		
		for(var j = 0; j < 3; j++) {
			changeImage(j);
			changeLinks(getObject("logo_link" + j));
			changeText(getObject("logo_text" + j));
				
			cur_image = (cur_image + 1) % n_images;
		}
}

/**
 * IS Timer code.  Wait a specified amount of seconds
 * before moving on to a different task.
 */
function startTimer() {
	update();
	setTimeout(startTimer,80);
}

function update() {
	for(var i = 0; i < max_logos; i++) {
		if(logos[i].delay <= 0) {
			getObject("Logo" + i).style.top = logos[i].yPos + y_offset;
			logos[i].yPos = logos[i].yPos - 1;
			getObject("Logo" + i).style.visibility = "visible";
			
			if(logos[i].fadedelay <= 0) {
				if(logos[i].yPos >= (max_height * 0.75)) {
					setOpacity("Logo" + i, logos[i].opacity);
					logos[i].opacity += inc_opacity;
					if(logos[i].opacity > 100) logos[i].opacity = 100;
				}

				if(logos[i].yPos <= (max_height * 0.25)) {
					setOpacity("Logo" + i, logos[i].opacity);
					logos[i].opacity -= inc_opacity;
					if(logos[i].opacity < 0) logos[i].opacity = 0;
				}
				
				logos[i].fadedelay = 2;
			} else {
				logos[i].fadedelay -= 1;
			}
		} else {
			logos[i].delay -= 1
		}
	
		if(logos[i].yPos < 0) {
			var prev = (i - 1);
			if(prev<0) prev=max_logos-1;
			//logos[i].delay = getObject("logo_img" + prev).height + logos[prev].delay + 26;
			logos[i].delay = logos[prev].height + logos[prev].delay + 26;
		
			cur_image = (cur_image + 1) % n_images;
			logos[i].yPos = max_height;
			logos[i].opacity = 0;
			setOpacity("Logo" + i, logos[i].opacity);
			changeImage(i);
			changeLinks(getObject("logo_link" + i));
			changeText(getObject("logo_text" + i));
			getObject("Logo" + i).style.visibility = "hidden";
		}
		
		//getObject("LogoData" + i).innerHTML = "Logo" + i + ": " + getObject("logo_img" + i).height +"-" + logos[i].delay;
	}
	
}

/**
 * Change the image by specifying a new image from
 * the image array
 */
function changeImage(img_id) {
	if (document.images)
    	{
		getObject("logo_img" + img_id).src = images[cur_image].src;
		logos[img_id].height = heights[cur_image];
	}
}

/**
 * Change the image's hyperlink by specifying a new
 * link from the links array
 */
function changeLinks(link_id) {
	link_id.href = links[cur_image];
}

/**
 * Change the text underneath the image by specifying a new
 * text from the text array.  Appends the raquo character to
 * the front of the text.
 */
function changeText(link_id) {
	link_id.innerHTML = "<a href='"+links[cur_image]+"'>&raquo;&nbsp;" + texts[cur_image]+"</a>";
}
	
/**
 * Multi purpose opacity funtion
 * Sets the opacity of the element based on the web browser
 * @param elementID		the element to change the opacity
 * @param opacity		the opacity value
 */
function setOpacity(elementid, opacity) {
	var element = getObject(elementid);
	if(navigator.appName == "Microsoft Internet Explorer") {
		// IE/Win
		element.style.filter = "alpha(opacity:"+opacity+")";
	}
	else
	{
		// Safari<1.2, Konqueror
		element.style.KHTMLOpacity = opacity/100;
	  
		// Older Mozilla and Firefox
		element.style.MozOpacity = opacity/100;
	  
		// Safari 1.2, newer Firefox and Mozilla, CSS3
  		element.style.opacity = opacity/100;
  	}
}

function getObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} 

/**
 * Returns a random number between 0 and num
 * @param num		max number.
 */
function getRandom(num)
{
    return Math.floor(Math.random()*num);
}