// JavaScript Document
//Developed By Prabir Kumar Basak
var xmlDoc;
var xmlFile="image.xml";
var place="rImage";
var interval = 2; // delay between rotating images (in seconds)
var random_display = 1; // 0 = sequential, 1 = random
interval *= 1500;
var number_of_image;
var image_list = new Array();

function loadXML(xmlFile)
{
	if(document.implementation && document.implementation.createDocument) //Firefox
	{
		 var mXHR = new XMLHttpRequest();
		 mXHR.open("GET", xmlFile, false);
  		 mXHR.send(null);
  		 xmlDoc = mXHR.responseXML;
		 verify();
		 getFFImage();
	}
	else // IE
	{
	  xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async="false";
	  xmlDoc.onreadystatechange=verify;
	  xmlDoc.load(xmlFile);
	  verify();
	  getImage();
	}
}

function verify()
{
	if (xmlDoc.readyState != 4)
	{
		return false;
	}
}

function getImage()// IE
{
	var root = xmlDoc.documentElement;
	var nodelist = root.getElementsByTagName('Section');

	for(var i=0; i< nodelist.length; i++)
	{
		image_list[i] = new imageItem(nodelist[i].lastChild.text);
	}
	number_of_image = image_list.length;
	rotateImage(place);
}

function getFFImage()// Firefox
{
	var root = xmlDoc.documentElement;
	var nodelist = root.getElementsByTagName('Section');

	for(var i=0; i< nodelist.length; i++)
	{
		image_list[i] = new imageItem(nodelist[i].lastChild.previousSibling.textContent);
	}
	number_of_image = image_list.length;
	rotateImage(place);
}

function imageItem(image_location) 
{
	this.image_item = new Image();
	this.image_item.src = image_location;
}

function get_ImageItemLocation(imageObj) 
{
	return(imageObj.image_item.src);
}

function generate(x, y) 
{
	var range = y - x + 1;
	return Math.floor(Math.random() * range) + x;
}

function getNextImage() 
{
	if (random_display) 
	{
		image_index = generate(0, number_of_image-1);
	}
	else 
	{
		image_index = (image_index+1) % number_of_image;
	}
	var new_image = get_ImageItemLocation(image_list[image_index]);
	return(new_image);
}

function rotateImage(place) 
{
	shiftOpacity(place,interval);
	var new_image = getNextImage();
	document[place].src = new_image;
	var recur_call = "rotateImage('"+place+"')";
	setTimeout(recur_call, interval);
}

function shiftOpacity(id, millisec) 
{
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0)
	{
		opacity(id, 0, 100, millisec);
	} 
	else 
	{
		opacity(id, 100, 0, millisec);
	}
}

function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) 
	{
		for(i = opacStart; i >= opacEnd; i--) 
		{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} 
	else if(opacStart < opacEnd) 
	{
		for(i = opacStart; i <= opacEnd; i++)
		{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

function changeOpac(opacity, id) 
{
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

