/**
 * Hair Fairy image switching script
 * @author Kevin Dew <kev@dewsolutions.co.uk>
 * @copyright Copyright Kevin Dew, 2008
 */ 
var SwitchImage = 
{
	init: function()
	{
		if(typeof images == 'undefined' || !$('image_switch') || !$('current_image'))
			return;

		if($('next_image'))
			$('next_image').addEvent('click', this.click.bindWithEvent(this, $('next_image')));

		if($('prev_image'))
			$('prev_image').addEvent('click', this.click.bindWithEvent(this, $('prev_image')));
		
		return;
	
	},
	click: function(e, el)
	{
		
		//get current image
		var current = parseInt($('current_image').getText());

		if(el.id == 'next_image')
			var newCurrent = current + 1;
		else
			var newCurrent = current - 1;

		//sanity check
		if(current < 1 || current > images.length || newCurrent < 1 || newCurrent > images.length)return;

		this.newImg = new Image();
		this.newImg.onload = this.hideOldImage.bind(this);
		this.newImg.src = images[newCurrent - 1];
		
		$('current_image').setText(newCurrent);
		
		var next_href = $('next_image') ? $('next_image').getProperty('href').replace(/image=[0-9]+/, 'image=' + (newCurrent + 1)) : $('prev_image').getProperty('href').replace(/image=[0-9]+/, 'image=' + (newCurrent + 1));
		var prev_href = $('next_image') ? $('next_image').getProperty('href').replace(/image=[0-9]+/, 'image=' + (newCurrent - 1)) : $('prev_image').getProperty('href').replace(/image=[0-9]+/, 'image=' + (newCurrent - 1));
		
		//show next link
		if(newCurrent < images.length)
		{
			if($('next_image'))
				$('next_image').setProperty('href', next_href);
			else
			{
				var newNext = new Element('a', {'id': 'next_image', 'href': next_href}).setText('>>').injectAfter('total_images');
				newNext.addEvent('click', this.click.bindWithEvent(this, newNext));
			}	
		}
		else if($('next_image'))
			$('next_image').remove();
			
		//show prev link
		if(newCurrent > 1)
		{
			if($('prev_image'))
				$('prev_image').setProperty('href', prev_href);
			else
			{
				var newPrev = new Element('a', {'id': 'prev_image', 'href': prev_href}).setText('<< ').injectBefore('current_image');
				newPrev.addEvent('click', this.click.bindWithEvent(this, newPrev));
			}
		}
		else if($('prev_image'))
			$('prev_image').remove();
		
		var scroll = new Fx.Scroll(window, {wait: false, duration: 250, transition: Fx.Transitions.Quad.easeInOut});
		scroll.toElement('container');
	
		new Event(e).stop();
		
		return;		
	},
	hideOldImage: function()
	{
		this.oldImg = $E('img', 'image_switch');
		new Fx.Style(this.oldImg, 'opacity', {duration: 250, onComplete:this.showNewImage.bind(this)}).start(1,0);
	},
	showNewImage: function()
	{		
		var alt = this.oldImg.getProperty('alt');
		var currentClass = this.oldImg.getProperty('class');
		this.newImgEl = new Element('img', {'alt': alt, 'src': this.newImg.src, 'class': currentClass});		
		var newFx = new Fx.Style(this.newImgEl, 'opacity', {duration: 250}).hide();
		this.oldImg.replaceWith(this.newImgEl);
		newFx.start(0,1);
	}
}

window.addEvent('domready', SwitchImage.init.bind(SwitchImage));
