function Slide(img, title, link, dur)
{
	this.image = img;
	this.duration = dur;
	this.link = link;
	this.title = title;
	this.getImage = getImage;
	this.getDuration = getDuration;
	this.getLink = getLink;
	this.getTitle = getTitle;
}

function getImage()
{
	return this.image;
}

function getDuration()
{
	return this.duration;
}

function getLink()
{
	return this.link;
}

function getTitle()
{
	return this.title;
}

function SlideShow() 
{
	_this = this;
	this.setOpacity = setOpacity;
	this.fadeIn = fadeIn;
	this.fade_timer = fade_timer;
	this.slide = new Array();
	this.currSlide = -1;
	this.prevSlide = 0;
	this.startSlides = startSlides;
	this.addSlide = addSlide;
	this.getCurrSlide = getCurrSlide;
	this.getNumSlides = getNumSlides;
	this.nextSlide = nextSlide;
	this.setSlide = setSlide;
	this.setCursor = setCursor;
	this.restoreCursor = restoreCursor;
	this.timer = timer;
	this.timerref = null;
	this.fadeinref = null;

	var parent = document.getElementById('jslideshow');
	var slidediv = document.createElement('div');
	slidediv.style.position="relative";
	slidediv.style.cssFloat="left";
	slidediv.style.styleFloat="left";
	//slidediv.style.width="603px";
	slidediv.style.padding = "0px";
	slidediv.style.margin = "0px";

	this.seldiv = document.createElement('div');
	this.seldiv.style.position="relative";
	this.seldiv.style.cssFloat="right";
	this.seldiv.style.styleFloat="right";
	//this.seldiv.style.width="267px";
	this.seldiv.style.height="283px";
	this.seldiv.style.padding = "0px";
	this.seldiv.style.margin = "0px";
	this.selpoint = document.createElement('img');
	this.selpoint.setAttribute('src','images/slideselbackpoint.png');
	this.selpoint.style.position="absolute";
	this.selpoint.style.left="-21px";
	this.seldiv.appendChild(this.selpoint);

	this.srcObj = document.createElement('img');
	this.srcObj2 = document.createElement('img');
	this.srcObj.style.width = "603px";
	this.srcObj2.style.width = "603px";
	slidediv.appendChild(this.srcObj);
	slidediv.appendChild(this.srcObj2);
	parent.appendChild(slidediv);
	parent.appendChild(this.seldiv);

	this.srcObj.style.position="absolute";
  	this.srcObj2.style.position="absolute";
	this.srcObj2.style.visibility="hidden";
	this.srcObj.oncontextmenu=function(e){return false;};
	this.srcObj2.oncontextmenu=function(e){return false};
	
	if (this.srcObj2.addEventListener)
	{
		this.srcObj2.addEventListener('mouseover',this.setCursor,false);
		this.srcObj2.addEventListener('mouseout',this.restoreCursor,false);
		this.srcObj2.addEventListener('click',function(){goLink(_this.slide[_this.getCurrSlide()].getLink())},false);
	}
	else if (this.srcObj2.attachEvent)
	{
		this.srcObj2.attachEvent('onmouseover',this.setCursor);
		this.srcObj2.attachEvent('onmouseout',this.restoreCursor);
		this.srcObj2.attachEvent('onclick',function(){goLink(_this.slide[_this.getCurrSlide()].getLink())});
	}
}

function setOpacity(obj, opacity)
{
 	opacity = (opacity == 100)?99.999:opacity;
	obj.style.filter = "alpha(opacity:"+opacity+")";
	obj.style.KHTMLOpacity = opacity/100;
	obj.style.MozOpacity = opacity/100;
	obj.style.opacity = opacity/100;
}

function fadeIn(opacity)
{
	if (opacity < 100)
	{
		opacity+=10;
		this.setOpacity(this.srcObj, opacity);
		this.setOpacity(this.srcObj2, 100-opacity);
		this.fade_timer(100, opacity);
	}
}

function startSlides()
{
	//if (this.getCurrSlide() < this.slide.length - 1)
	{
		this.nextSlide();
		this.timer(this.slide[this.getCurrSlide()].getDuration());
	}

}

function addSlide(img, title, link, dur)
{
	this.slide[this.slide.length] = new Slide(img, title, link, dur);
	var num = this.slide.length - 1;
	var linkdiv = document.createElement('div');
	linkdiv.setAttribute('id','slide'+num);
	linkdiv.style.display="block";
	linkdiv.style.height="25%";
	linkdiv.style.background="#cccccc";

	if (num == 0)
		linkdiv.style.backgroundImage="url(images/slideselbackcur.png)";
	else
		linkdiv.style.backgroundImage="url(images/slideselback.png)";

	linkdiv.style.marginTop="0px";
	linkdiv.style.paddingTop="0px";
	linkdiv.style.width = "267px";
	linkdiv.onclick= function() {_this.setSlide(num);};
	linkdiv.onmouseover=function() {linkdiv.style.cursor="pointer";};
	var par = document.createElement('p');
	par.style.paddingTop="25px";
	par.style.paddingLeft="20px";
	par.style.marginTop="0px";
	par.style.fontFamily="arial, verdana, serif";
	par.style.color="#ffffff";
	par.style.fontWeight="bold";
	var url = document.createElement('a');
	url.setAttribute('href','javascript:this.setSlide('+num+')');
	par.innerHTML = title;
	linkdiv.appendChild(par);
	this.seldiv.appendChild(linkdiv);
}

function setCurrSlide(val)
{
	this.currSlide = val;
}

function getCurrSlide()
{
	return this.currSlide;
}

function getNumSlides()
{
	return this.slide.length;
}

function nextSlide()
{
	if (this.currSlide == -1)
	{
		this.srcObj.src=this.slide[0].getImage();
		this.currSlide++;
	}
        else {
	this.srcObj2.src = this.srcObj.src;
	if (this.currSlide != -1)
		this.prevSlide = this.currSlide;

	if (this.srcObj2.style.visibility == "hidden")
		this.srcObj2.style.visibility = "visible";

	if (this.currSlide < this.slide.length - 1)
		this.currSlide++;
	else
		this.currSlide = 0;

	this.srcObj.src=this.slide[this.getCurrSlide()].getImage();
	this.fadeIn(0);
	var prevdiv = document.getElementById('slide'+this.prevSlide);
	var newdiv = document.getElementById('slide'+this.currSlide);
	prevdiv.style.backgroundImage = "url(images/slideselback.png)";
	newdiv.style.backgroundImage = "url(images/slideselbackcur.png)";
	var pos = this.currSlide * 71;
	this.selpoint.style.top = pos+"px";}
}

function setSlide(num)
{
	_this.srcObj2.src = _this.srcObj.src;
	_this.prevSlide = _this.currSlide;

	if (_this.srcObj2.style.visibility == "hidden")
		_this.srcObj2.style.visibility = "visible";

	if (_this.currSlide < _this.slide.length)
		_this.currSlide = num;
	else
		_this.currSlide = 0;

	_this.srcObj.src=_this.slide[_this.getCurrSlide()].getImage();
	window.clearTimeout(_this.fadeinref);
	_this.fadeIn(0);
	window.clearTimeout(_this.timerref);
	_this.timer(_this.slide[_this.getCurrSlide()].getDuration());
	var prevdiv = document.getElementById('slide'+_this.prevSlide);
	var newdiv = document.getElementById('slide'+_this.currSlide);
	prevdiv.style.backgroundImage = "url(images/slideselback.png)";
	newdiv.style.backgroundImage = "url(images/slideselbackcur.png)";
	var pos = _this.currSlide * 71;
	_this.selpoint.style.top = pos+"px";
}

function setCursor()
{
	//if (this.getCurrSlide() < 0) return;
	//else
	if (_this.slide[_this.currSlide].getLink() != "null")
		document.body.style.cursor = 'pointer';
}

function restoreCursor()
{
	document.body.style.cursor = 'default';
}

function timer(t)
{
	//var selfobject = this;
	_this.timerref = window.setTimeout(function(){_this.startSlides();},t);
	//setTimeout(function(){_this.startSlides();},t);
}

function fade_timer(t, o)
{
	//var selfobject = this;
	_this.fadeinref = window.setTimeout(function(){_this.fadeIn(o);},t);
}

function goLink(l)
{
	if (l != "null")
		window.location=l;
	//var w=window.open(l, 'jSlideShowLink', 'toolbar=no, directories=no, location=no, status=yes, menubar=no, resizable=no, scrollbars=no, width=420, height=360');
	//w.focus() ;
	return false;
}
