function PhotoChanger()
{
	var img1 = null;
	var img2 = null;
	var info1 = null;
	var info2 = null;
	var infobox = null;
	var last = 0;
	var imgState = 1;
	var arr = {};
	var config = {};
	var tr = null;
	var mv = null;
	var startmove = 0;
	var endmove = 0;
	var cnt = 0;
	var timeout = 5000;
	var func = function(str1,str2,str3,str4){return str1 + "<br>" + str2 + "<br>" + str3 + "<br>" + str4;};
	var pos;
	function initInfo()
	{
		setInfo(img1,info2,false);
		setInfo(img2,info1,true);
	}
	function setInfo(id1,id2,visible)
	{	
		if(arr[pos][0] == 0) arr[pos][0] = new Image();
		arr[pos][0].src = arr[pos][1];
		id1.src = arr[pos][0].src;
		id2.innerHTML = func(arr[pos]);
		pos ++;
		if(pos >= cnt) pos = 0;
	}
	function changeImage()
	{
		if(imgState > 0)
		{	
			img1.style["display"] = "block";
			tr.fade(1.0,0.0,function()
			{
				setInfo(img2,info1,false);
			});
			mv.move("marginLeft",startmove,endmove);
		}
		else
		{
			img1.style["display"] = "none";
			tr.fade(0.0,1.0,function()
			{
				setInfo(img1,info2,false);
			});
			mv.move("marginLeft",endmove,startmove);
		}
	
	imgState *= (-1);
	setTimeout(changeImage,timeout);
	}
	function PhotoChangerObject()
	{
		this.init = function(config)
		{
			if(!config) config = {};
			img1 = document.getElementById(config["img1"]);
			img2 = document.getElementById(config["img2"]);
			info1 = document.getElementById(config["info1"]);
			info2 = document.getElementById(config["info2"]);
			infobox = document.getElementById(config["infobox"]);
			startmove = config["startmove"];
			endmove = config["endmove"];
			if(config["arr"]) arr = config["arr"];
			cnt = arr.length;
			if(config["func"]) func = config["func"];
			if(config["timeout"]) timeout = config["timeout"];
			pos = 0;
			tr = new Transform();
			tr.setElement(img2);
			mv = new Transform();
			mv.setElement(infobox);
			initInfo();
		}
		this.start = function()
		{
			setTimeout(changeImage,timeout);
		}
	}
	return new PhotoChangerObject();
}
