function Showbox(oDiv, sXmlUrl)
{
	var divShowbox = oDiv;

	var fShowboxWidth = parseInt(divShowbox.style.width);
	var fShowboxHeight = parseInt(divShowbox.style.height);
	
	var bSwaping = false;
	var bPaused = false;
	var fPauseTime = 5.0;
	var fAnimDuration = 1250.0;
	var oInterval = null;
	var oPauseTimer = null;

	var nPrevMilliseconds = -1;
	var nNbImages = 0;
	var nPrevImage = -1;
	var nCurImage = -1;
	var nNextImage = -1;
	var fCurImagePosX = 0;

	var aDivs = new Array();
	var aButItems = new Array();
	var oButPlay = null;
		
	InitFromXml(CWS_HttpRequest(sXmlUrl));
	
	if(nNbImages > 0)
	{
		nCurImage = 0;
		aButItems[nCurImage].style.backgroundPosition = '0px 18px';
		bPaused = true;
		PlayPause();
	}
	else
	{
		oButPlay.style.display = 'none';
	}

	function ImageLoaded()
	{
		this.setAttribute('loaded', true);

		this.style.width = fShowboxWidth + 'px';
		this.style.height = fShowboxHeight + 'px';
	}

	function PlayPause()
	{
		bPaused = !bPaused;
		oButPlay.style.backgroundPosition = bPaused ? '0px 0px' : '0px 18px';

		if(bPaused)
		{
			if(oPauseTimer != null)
			{
				window.clearTimeout(oPauseTimer);
				oPauseTimer = null;
			}
		}
		else
		{
			if(oPauseTimer == null) oPauseTimer = window.setTimeout(ShowNextImage, fPauseTime * 1000.0);
		}
		
	}


	function ShowButImage()
	{
		bPaused = false;
		PlayPause();

		ShowImage(this.getAttribute('numb'));
	}

	function ShowImage(nImage)
	{
		if(nImage == nCurImage) return;
		if(nImage < 0 || nImage >= nNbImages) return;

		if(bSwaping)
		{
			nNextImage = nImage;
		}
		else
		{
			bSwaping = true;

			nPrevImage = nCurImage;
			nCurImage = nImage;
			nNextImage = -1;
			fCurImagePosX = fShowboxWidth;

			aDivs[nCurImage].style.left = Math.floor(fCurImagePosX) + 'px';
			aDivs[nCurImage].style.zIndex = 1;
			if(nPrevImage >= 0) aDivs[nPrevImage].style.zIndex = 0;

			for(i=0;i<nNbImages;i++)
			{
				aDivs[i].style.display = ((i == nCurImage || i == nPrevImage) ? 'block' : 'none');
				aButItems[i].style.backgroundPosition = ((i == nCurImage) ? '0px 18px' : '0px 0px');
			}

			oInterval = window.setInterval(DoAnimStep, 1);
		}
	}

	function ShowNextImage()
	{
		window.clearTimeout(oPauseTimer);
		oPauseTimer = null;

		if(bPaused) return;

		ShowImage((nCurImage + 1) % nNbImages);
	}

	function DoAnimStep()
	{
		oDate = new Date();

		if (nPrevMilliseconds < 0) fElapdseTime = 0.0;
		else
		{
			fElapdseTime = oDate.getMilliseconds() - nPrevMilliseconds;

			if (fElapdseTime < 0.0) fElapdseTime += 1000.0;
		}
		nPrevMilliseconds = oDate.getMilliseconds();

		fCurImagePosX -= fShowboxWidth * fElapdseTime / fAnimDuration;
		
		if(fCurImagePosX < 0.0) fCurImagePosX = 0.0;

		aDivs[nCurImage].style.top = '0px';
		aDivs[nCurImage].style.left = Math.floor(fCurImagePosX) + 'px';

		if(fCurImagePosX == 0.0)
		{
			nPrevMilliseconds = -1;
			window.clearInterval(oInterval);
			oInterval = null;

			bSwaping = false;

			if(nNextImage != -1) ShowImage(nNextImage);
			else
			{
				if(!bPaused) oPauseTimer = window.setTimeout(ShowNextImage, fPauseTime * 1000.0);
			}
		}
	}

	function InitFromXml(sXml)
	{
		oControls = document.createElement('DIV');
		oControls.className = 'ShowboxControls';
		divShowbox.appendChild(oControls);

		try
		{
			oXml = new ActiveXObject("Msxml2.DOMDocument.3.0");
			oXml.loadXML(sXml);
		}
		catch (e)
		{
			try
			{
				parser = new DOMParser();
				oXml = parser.parseFromString(sXml, "text/xml");
			}
			catch (e)
			{
				alert('oops');
			}
		}

		oItems = oXml.getElementsByTagName('item');

		nNbImages = 0;
		for (i = 0; i < oItems.length; i++)
		{
			aDivs[i] = document.createElement('DIV');
			aDivs[i].style.position = 'absolute';
			aDivs[i].style.display = ((i == 0) ? 'block' : 'none');
			aDivs[i].className = 'ShowboxItem';

			oA = document.createElement('A');
			oA.href = GetTagValue(oItems[i], 'link');
			oImg = new Image();
			oImg.src = GetTagAttribute(oItems[i], 'enclosure', 'url');
			oImg.setAttribute('numb', i);
			oImg.className = 'ShowboxItemImage';
			oA.appendChild(oImg);
			if(GetTagAttribute(oItems[i], 'enclosure', 'url').length > 0) aDivs[i].appendChild(oA);
			
			oDiv = document.createElement('DIV');
			oDiv.className = 'ShowboxItemContent';

			oH1 = document.createElement('H1');
			oH1.innerHTML = GetTagValue(oItems[i], 'title');
			oA = document.createElement('A');
			oA.href = GetTagValue(oItems[i], 'link');
			oA.appendChild(oH1);
			oDiv.appendChild(oA);

			sDesc = GetTagValue(oItems[i], 'description');
			if(sDesc.length > 320) sDesc = sDesc.substr(0, sDesc.lastIndexOf(' ', 320)) + ' [...]';
			oP = document.createElement('P');
			oP.innerHTML = sDesc;
			oA.href = GetTagValue(oItems[i], 'link');
			oA.appendChild(oP);
			oDiv.appendChild(oA);
			
			aDivs[i].appendChild(oDiv);

			divShowbox.appendChild(aDivs[i]);

			aButItems[i] = document.createElement('INPUT');
			aButItems[i].type = 'button';
			aButItems[i].className = 'SBItemBut';
			aButItems[i].setAttribute('numb', i);
			aButItems[i].onclick = ShowButImage;
			aButItems[i].value = i + 1;
			if(i > 4) aButItems[i].style.display = 'none';
			oControls.appendChild(aButItems[i]);

			nNbImages ++;
		}

		oButPlay = document.createElement('INPUT');
		oButPlay.type = 'button';
		oButPlay.className = 'SBPlayPauseBut';
		oButPlay.onclick = PlayPause;
		oControls.appendChild(oButPlay);
	
	}

	function GetTagValue(oXml, sTagName)
	{
		try
		{
			return oXml.getElementsByTagName(sTagName)[0].childNodes[0].nodeValue;
		}
		catch(e) {}

		return '';
	}

	function GetTagAttribute(oXml, sTagName, sAttributeName)
	{
		try
		{
			return oXml.getElementsByTagName(sTagName)[0].getAttribute(sAttributeName);
		}
		catch(e) {}

		return '';
	}
}

