/*	_________________________________________________

		SANDER internetoplossingen

		info@sandermedia.nl
		www.sandermedia.nl

		Leliestraat 1
		7943AV Meppel
		0522 24 68 17
		The Netherlands

		Timezone GMT +1
	_________________________________________________
	
		Script version: v1.0
	_________________________________________________

		Needs:
			Prototype v1.6 or up

		Usage:
			Just include this script:
				<script type="text/javascript" src="thumbchange.js"></script>

	_________________________________________________

		Changelog:
			v1.0:	- Initial version
	_________________________________________________
*/			

var ThumbChanger = {
	Version: '1.0.0',
	REQUIRED_PROTOTYPE: '1.6.0',
	periodicalexecuter: null,
	element: null,
	thumbindex: 0,
	thumbs: [],
	load: function()
	{
		function convertVersionString(versionString){
		  var r = versionString.split('.');
		  return parseInt(r[0])*100000 + parseInt(r[1])*1000 + parseInt(r[2]);
		}

		if((typeof Prototype=='undefined') || 
		   (typeof Element == 'undefined') || 
		   (typeof Element.Methods=='undefined') ||
		   (convertVersionString(Prototype.Version) < 
			convertVersionString(ThumbChanger.REQUIRED_PROTOTYPE)))
		   throw("ThumbChanger requires the Prototype JavaScript framework >= " +
			ThumbChanger.REQUIRED_PROTOTYPE);

		// voeg init toe aan 
		Element.observe(window, 'load', ThumbChanger.init)
	},

	init: function()
	{
		// voeg mouseover en mouseout events toe aan alle elementen met rel="thumbchanger"
		var elements = $$('*[rel="thumbchanger"]');
		elements.each(function(item)
		{
			Element.observe(item, 'mouseover', ThumbChanger.startthumbs);
			Element.observe(item, 'mouseout', ThumbChanger.stopthumbs);
		});
	},

	startthumbs: function(event)
	{
		// bij mouseover -> split thumbs="a;b;c" op in lokale array
		//                  gebruik PeriodicalExecuter om door de thumbs te lopen
		var element = Event.findElement(event, '*[rel="thumbchanger"]');
		ThumbChanger.element = element;
		ThumbChanger.thumbindex = 0;
		var thumbs = element.readAttribute("thumbs");
		if (thumbs)
		{
			ThumbChanger.thumbs = thumbs.split(';');
			ThumbChanger.periodicalexecuter = new PeriodicalExecuter(ThumbChanger.nextthumb, 0.5);
		}
	},

	nextthumb: function(pe)
	{
		// volgende plaatie laten zien
		if (ThumbChanger.element)
		{
			ThumbChanger.thumbindex++;
			if (ThumbChanger.thumbindex >= ThumbChanger.thumbs.length)
			{
				ThumbChanger.thumbindex = 0;
			}

			var imgs = ThumbChanger.element.getElementsBySelector('img[rel="thumb"]');
			imgs.each(function(item)
			{
				item.src = ThumbChanger.thumbs[ThumbChanger.thumbindex];
			});
		}
	},

	stopthumbs: function(event)
	{
		// bij mouseout -> src van rel="thumbchange" terug zetten op thumb[0]
		if (ThumbChanger.periodicalexecuter)
		{
			ThumbChanger.periodicalexecuter.stop();
			ThumbChanger.periodicalexecuter = null;
		}

		if (ThumbChanger.element)
		{
			var imgs = ThumbChanger.element.getElementsBySelector('img[rel="thumb"]');
			imgs.each(function(item)
			{
				item.src = ThumbChanger.thumbs[0];
			});
		}

		ThumbChanger.thumbs = [];
		ThumbChanger.thumbindex = 0;
		ThumbChanger.element = null;
	}
}

ThumbChanger.load();

