/*
imageSlidesTransition.js
© Torben Wilhelmsen, 2008, www.wil.dk


How to:
1:	Include the script.
2:	Add a div with width and height same as the images
	<div id="ist_container_id" width="400" height="300"></div>
3:	Add this js that initiates the div container to act as slideshow.
	attributes:
	- comma  separated list of images (src) in the slide show. Note that images proportion will follow the div container.
	- id of the div
	- time length of the view of each image (milliseconds)
	- speed of the transition (max is 1).
	Ex:
	<script type="text/javascript" language="javascript" charset="utf-8">
		createImageSlidesTransitionBlock('imageslidestrans/0092_01.jpg,imageslidestrans/0043_04.jpg,imageslidestrans/0007_05.jpg,imageslidestrans/0023_02.jpg', 'ist_container_id', 3000, 0.01);
	</script>
*/

function imageSlidesTransitionNewFrontSrc(i) {
	obj = imageSlidesTransitionObjects[i];
	obj.fbImage.src = obj.nextImageSlidesTransitionSrc;
	}
function imageSlidesTransitionStartTimer(i) {
	obj = imageSlidesTransitionObjects[i];
	obj.imageSlidesTransitionOpacity = (obj.fdF.style.opacity)?obj.fdF.style.opacity:1;
	obj.imageSlidesTransitionOpacity -= obj.incr;
	if (obj.imageSlidesTransitionOpacity<=0) {
		obj.imageSlidesTransitionOpacity=1;
		obj.imageSlidesTransitionTimer=setTimeout("imageSlidesTransitionStartTimer("+i+")",obj.interval);
		obj.nextImageSlidesTransitionSrc = imageSlidesTransitionSelectSrc(obj);;
		bImage = obj.fbImage.src;
		obj.fdImage.src = bImage;
		imageSlidesTransitionSetOpacity(obj, obj.imageSlidesTransitionOpacity);
		obj.fbImage.src = obj.nextImageSlidesTransitionSrc;
		obj.opt = setTimeout("imageSlidesTransitionNewFrontSrc("+i+")",100);
		}
	else {
		obj.imageSlidesTransitionTimer=setTimeout("imageSlidesTransitionStartTimer("+i+")",imageSlidesTransitionTimerIncr);
		imageSlidesTransitionSetOpacity(obj, obj.imageSlidesTransitionOpacity);
		}
	}
function imageSlidesTransitionSetOpacity(obj, op) {
	obj.fdF.style.opacity = op;
	obj.fdF.style.filter = 'alpha(opacity='+(op*100)+')';
	if (imageSlidesTransitionDEBUG) selectFieldCollect.value = op;
	}
function imageSlidesTransitionSelectSrc(obj) {
	if (obj.imageSlidesTransitionSelect<obj.images.length && obj.imageSlidesTransitionLoad==1) {
		nextImageSlidesTransition = new Image;
		nextImageSlidesTransition.src = obj.images[obj.imageSlidesTransitionSelect];
		}
	src = obj.images[obj.imageSlidesTransitionSelect];
	obj.imageSlidesTransitionSelect += 1;
	if (obj.imageSlidesTransitionSelect==obj.images.length) {
		obj.imageSlidesTransitionLoad = 0;
		obj.imageSlidesTransitionSelect = 0;
		}
	if (imageSlidesTransitionDEBUG) {
		selectFieldTest.value = obj.imageSlidesTransitionSelect;
		selectFieldSrc.value = src;
		}
	return src;
	}
function imageSlidesTransitionDivElement(color, i, x, y){
	div = document.createElement('div');
	div.style.position = 'absolute';
	//BUG to set the position again? Does not work in wrappers, etc. Petr.	
	//div.style.top = y;
	//div.style.left = x;
	div.style.top = 0;
	div.style.left = 0;
	div.style.lineHeight = '0px';
	//div.style.backgroundColor = color;
	div.style.zIndex = i;
	return div
	}
function countTimer(i,val){
	object = tObjs[i]
	object.value = parseInt(object.value)+1;
	object.timer = setTimeout('countTimer('+i+','+val+')',val);
}
function imageSlidesTransitionIniCreateImage(src, width, height){
	imgObj = document.createElement('img');
	imgObj.src = src;
	imgObj.setAttribute('width', width);
	imgObj.setAttribute('height', height);
	return imgObj;
	}
function imageSlidesTransitionIni(){
	for (i=0;i<imageSlidesTransitionObjectsCollect.length;i++) {
		ist = imageSlidesTransitionObjectsCollect[i];
		fiDiv = document.getElementById(ist.id);
		xpos = objectXpos(fiDiv);
		ypos = objectYpos(fiDiv);
		ist.width = fiDiv.getAttribute('width');
		ist.height = fiDiv.getAttribute('height');
		if (!ist.width) ist.width = fiDiv.style.width;
		if (!ist.height) ist.height = fiDiv.style.height;
		//ist.images = imageSlidesTransitionObjectsCollect[i].images.split(',');
		ist.fdF = imageSlidesTransitionDivElement('#ff0000','2', xpos, ypos);
		fiDiv.appendChild(ist.fdF);
		ist.fdImage = imageSlidesTransitionIniCreateImage(ist.images[0],ist.width,ist.height);
		ist.fdF.appendChild(ist.fdImage)

		ist.fdB = imageSlidesTransitionDivElement('#ffcc00','1', xpos, ypos)
		fiDiv.appendChild(ist.fdB);
		ist.fbImage = imageSlidesTransitionIniCreateImage(ist.images[1],ist.width,ist.height);
		ist.fdB.appendChild(ist.fbImage)

		if (imageSlidesTransitionDEBUG) {
			fo = document.createElement('form');
			selectFieldTest = document.createElement('input');
			fo.appendChild(selectFieldTest);
			fo.appendChild(document.createElement('br'));
			selectFieldSrc = document.createElement('input');
			fo.appendChild(selectFieldSrc);
			fo.appendChild(document.createElement('br'));
			selectFieldCollect = document.createElement('input');
			selectFieldCollect.setAttribute('value',0);
			fo.appendChild(selectFieldCollect);
			fiDiv.fdB.appendChild(document.createElement('br'));
			fiDiv.fdB.appendChild(fo)
			}
		ist.imageSlidesTransitionSelect = 1;
		ist.imageSlidesTransitionLoad = 1;
		ist.imageSlidesTransitionOpacity = 1
		ist.imageSlidesTransitionTimer=setTimeout("imageSlidesTransitionStartTimer("+i+")",ist.iniinterval);
		ist.nextImageSlidesTransitionSrc = imageSlidesTransitionSelectSrc(ist);
		imageSlidesTransitionObjects.push(ist);
		//alert(fiDiv.innerHTML)
		//fc += 1;
		}
	}
imageSlidesTransitionObjects = new Array();
imageSlidesTransitionObjectsCollect = new Array();
imageSlidesTransitionTimerIncr = 5;
imageSlidesTransitionDEBUG = false;
function createImageSlidesTransitionBlock(images,id,interval,incr,inidelay){
	fiObject = new Object();
	fiObject.images = images.split(',');
	fiObject.id = id;
	fiObject.interval = interval;
	fiObject.iniinterval=(!inidelay)?interval:inidelay;
	fiObject.incr = incr;
	imageSlidesTransitionObjectsCollect.push(fiObject);
	}
if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) window.attachEvent("onload", imageSlidesTransitionIni);
else window.addEventListener('load',imageSlidesTransitionIni,true);

