var gXhr			= null;
var gtItems			= null;
var gtoCarrousel	= null;
var gDirectoryPath	= "";
var gNumImage		= 0;
var gFading			= false;
// Valeur configurable !
var gTimeout		= 30000;

function carrousel_getXmlNodeValue(reponse, sName) {
	var node = reponse.getElementsByTagName(sName)[0];
	
	if ((node == null) || (node.childNodes.length == 0))
		return "";
	
	return node.firstChild.nodeValue;
}

function carrousel_getXhr(){
	var xhr = null;
	
	if(window.XMLHttpRequest)		// Firefox et autres
		xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){	// Internet Explorer 
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else { // XMLHttpRequest non support? par le navigateur 
		// alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false;
	}
	
	return xhr;
}

function carrousel_onChangeXhr() {
	if(gXhr && gXhr.readyState == 4 && gXhr.status == 200 && gXhr.responseXML != null) {
		var xml = gXhr.responseXML.documentElement;
		
		gtItems = carrousel_getItems(xml);
		
		if (gtItems && gtItems.length >= 0) {
			carrousel_showItem(0, true);
			if ( gtItems && gtItems.length > 1 )
				gtoCarrousel = setTimeout("carrousel_timeout();",gTimeout);
		}
		
		gXhr = null;
	}
}

function carrousel_onLoadXhr(xmlPath, directoryPath) {
	var param = "";
	gDirectoryPath = directoryPath;
	
//		opacity("CARROUSEL_IMG", 100, 0, 200);
	
	if ( gtoCarrousel )
	{
		clearTimeout(gtoCarrousel);
		gtoCarrousel = null;
	}
	
	if (gXhr == null) {
		gXhr = carrousel_getXhr();
		
		if (gXhr != null) {
			try {
				d = new Date();
				xmlPath = xmlPath +'?'+ d.getTime();
				
				gXhr.open("GET", xmlPath, true);
				gXhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				gXhr.onreadystatechange = carrousel_onChangeXhr;
				gXhr.send(param);
			}
			catch (e) {
				alert("erreur : " + e);
			}
		}
		else
			setTimeout("carrousel_onLoadXhr('" + xmlPath + "', '"+ directoryPath + "');",1000);
	}
}

/* Creation du tableau des items
	tPlaylist[i][j] : 
	i de 0 ? n
	j : 0 pour l'image , 1 pour l'url
*/
function carrousel_getItems(xml) {
	var tItems = new Array();
	var node = xml.getElementsByTagName("item");
	
	for (i = 0; i < node.length; i++) {
		tItems[i] = new Array();
		if (tItems[i]) {
			tItems[i].push(carrousel_getXmlNodeValue(node[i],"image"));
			tItems[i].push(carrousel_getXmlNodeValue(node[i],"url"));
			tItems[i].push(carrousel_getXmlNodeValue(node[i],"text"));
		}
	}
	
	if ( node.length <= 1 )
		document.getElementById('hpo_carrousel_control').style.visibility = 'hidden';
	else
		document.getElementById('hpo_carrousel_control').style.visibility = 'visible';
	
	return tItems;
}

function carrousel_timeout() {
	carrousel_showItem(gNumImage + 1, true);
	if ( gtItems && gtItems.length > 1 )
		gtoCarrousel = setTimeout("carrousel_timeout();",gTimeout);
}

function carrousel_nextItem() {
	if (gtoCarrousel) {
		clearTimeout(gtoCarrousel);
		gtoCarrousel = null;
	}
	
	carrousel_showItem(gNumImage + 1, true);
	if ( gtItems && gtItems.length > 1 )
		gtoCarrousel = setTimeout("carrousel_timeout();",gTimeout);
}

function carrousel_prevItem() {
	if (gtoCarrousel) {
		clearTimeout(gtoCarrousel);
		gtoCarrousel = null;
	}
	
	if (gNumImage == 0)
		gNumImage = gtItems.length;
	
	carrousel_showItem(gNumImage - 1, true);
	if ( gtItems && gtItems.length > 1 )
		gtoCarrousel = setTimeout("carrousel_timeout();",gTimeout);
}

function carrousel_showItem(num, bFade) {
	gNumImage = (num == gtItems.length ? 0: num);
	
	if (bFade) {
		gFading = true;
		opacity("CARROUSEL_IMG", 100, 0, 200);
	}
	else {
		gFading = true;
		//opacity("CARROUSEL_IMG", 0, 100, 0);
		
		var href = gtItems[gNumImage][1];
		var text = gtItems[gNumImage][2];
		var src = gDirectoryPath;
		
		if (src != "")
			src += '/' + gtItems[gNumImage][0];
		else
			src = gtItems[gNumImage][0];
			
		if ( src != '' )
			document.getElementById("CARROUSEL_IMG").innerHTML = '<a href="' + href + '">' + src + '<span>' + text + '</span></a>';
		else
			document.getElementById("CARROUSEL_IMG").innerHTML = '<a href="' + href + '" class="noImage">' + src + '<span>' + text + '</span></a>';
	}
}

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) {
	
	carrousel_opac(opacity_, id);
	
	if (gFading && (opacity_ == 0)) {
		var href = gtItems[gNumImage][1];
		var text = gtItems[gNumImage][2];
		var src = gDirectoryPath;
		if (src != "")
			src += '/' + gtItems[gNumImage][0];
		else
			src = gtItems[gNumImage][0];
		
		if ( src )
			document.getElementById("CARROUSEL_IMG").innerHTML = '<a href="' + href + '">' + src + '<span>' + text + '</span></a>';
		else
			document.getElementById("CARROUSEL_IMG").innerHTML = '<a href="' + href + '" class="noImage">' + src + '<span>' + text + '</span></a>';
		gFading = false;
		
		opacity("CARROUSEL_IMG", 0, 100, 200);
	}
}

function carrousel_opac(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_ + ")";
	
}

function carrousel_link(link)
{
	for ( i=0; true; ++i )
	{
		var l = document.getElementById('hpo-carrousel-link-'+ i);
		
		if ( !l )
			break;
			
		l.className = 'Nselected';
	}
			
	link.className = 'selected';
}