﻿

function Projector(oProjectorElement)
{
	var me = this;
	
	this.oProjectorElement = oProjectorElement;
	
	this.bAuto			= true;
	this.iInterval		= 3000;
	this.iSlideIndex	= 0;
	this.iSlidesTotal	= 0;
	this.sCommand		= '';
	this.iTimer			= this.iInterval;
	
	this.command = function(sCommand)
	{
		this.sCommand = sCommand;	
	}
	
	function daemon()
	{
		me.iTimer -= 50;
		if(me.iTimer <= 0)
		{
			me.iTimer = me.iInterval;
			if(me.bAuto) me.sCommand = 'NextSlide';
		}
		switch(me.sCommand)
		{
			case 'NextSlide'	: me.oDivElementList[me.iSlideIndex++].style.display = 'none'; me.iSlideIndex = (me.iSlideIndex + Math.abs(me.iSlideIndex) * me.iSlidesTotal) % me.iSlidesTotal; me.oDivElementList[me.iSlideIndex].style.display = 'block'; break;
			case 'PrevSlide'	: me.oDivElementList[me.iSlideIndex--].style.display = 'none'; me.iSlideIndex = (me.iSlideIndex + Math.abs(me.iSlideIndex) * me.iSlidesTotal) % me.iSlidesTotal; me.oDivElementList[me.iSlideIndex].style.display = 'block'; break;
			case 'AutoOn'		: me.bAuto = true; break;
			case 'AutoOff'		: me.bAuto = false; break;
		}
		me.sCommand = '';
		window.setTimeout(daemon, 50);
	}
	
	var oNode = oProjectorElement.firstChild;
	var oNextNode;

	while (oNode)
	{
		oNextNode = oNode.nextSibling;
		if (oNode.nodeType == 3) oProjectorElement.removeChild(oNode);
		oNode = oNextNode;
	}
	
	this.oDivElementList = this.oProjectorElement.childNodes;
	this.iSlidesTotal = this.oDivElementList.length;
	
	var i = 1;
	var oDivElement;
	while(oDivElement = this.oDivElementList[i++])
	{
		if(oDivElement.style.display == 'block')
		{
			this.iSlideIndex = i;
			break;
		}
	}
	
	daemon();	
}


function ProjectorControl(oProjectorControlElement, oProjector)
{
	var me = this;
	
	this.oProjectorControlElement	= oProjectorControlElement;
	this.oProjector					= oProjector;
	this.oInputSlide				= null;
	this.oInputDim					= null;
	
	function daemon()
	{
		me.oInputSlide.value	= (me.oProjector.iSlideIndex + 1) + ' / ' + me.oProjector.iSlidesTotal;
		window.setTimeout(daemon, 50);
	}
	
	var oInputElementList = this.oProjectorControlElement.getElementsByTagName('input');
	
	var i = 0;
	var oInputElement;
	while(oInputElement = oInputElementList[i++])
	{
		switch(oInputElement.className)
		{
			case 'InputSlide'		: this.oInputSlide	= oInputElement; break;
			case 'InputPicDim'		: this.oInputDim	= oInputElement; break;
			case 'ButtonPrevSlide'	: oInputElement.onclick = function() { me.oProjector.command('PrevSlide'); return false; }; break;
			case 'ButtonNextSlide'	: oInputElement.onclick = function() { me.oProjector.command('NextSlide'); return false; }; break;
			case 'ButtonAutoOn'		: oInputElement.onclick = function() { me.oProjector.command('AutoOn'); return false; }; break;
			case 'ButtonAutoOff'	: oInputElement.onclick = function() { me.oProjector.command('AutoOff'); return false; }; break;
			case 'ButtonScaleDown'	: oInputElement.onclick = function() { return true; }; break;
			case 'ButtonScaleUp'	: oInputElement.onclick = function() { return true; }; break;
		}
	}
	
	daemon();
}

window.onload = function()
{
	if(!document.getElementById) return;
	
	new ProjectorControl(document.getElementById('projectorControl1'), new Projector(document.getElementById('projector1')));
}
	




