/*
* Yacht gallery
* @Author: Alexander Gavazov
* @Date: 2008-02-01
*/


YachtGallery = function(nextButton, prevButton, interiorLink, exteriorLink, interiorThumbs, exteriorThumbs, interiorPages, exteriorPages)
{
	var nextButton = nextButton;
	var prevButton = prevButton;
	var interiorLink = interiorLink;
	var exteriorLink = exteriorLink;
	var interiorThumbs = interiorThumbs;
	var exteriorThumbs = exteriorThumbs;
	var interiorPages = interiorPages;
	var exteriorPages = exteriorPages;

	var _height = 123;
	var _width = 326;
	var _page = 1;
	var _pages = interiorPages;
	var _group = 'interior';
	var _CalculatorThumbs = new Tween;
	var _CalculatorGalleries = new Tween;
	var _CalculatorPhoto = new Tween;
	var _moveFunction = Tween.strongEaseOut;

	prevButton.style.display = 'none';
	nextButton.style.display = (_pages <= 1) ? 'none' : 'block';

	setControlls();
	setThumbsActions();

	function setControlls()
	{
		nextButton.onclick = next;
		prevButton.onclick = prev;

		interiorLink.onclick = showInterior;
		exteriorLink.onclick = showExterior;
	}

	function setThumbsActions()
	{
		// !note: Search for array merge and rewrite code
		var links = interiorThumbs.getElementsByTagName('A');
		for(var i = 0; i < links.length; i++)
		{
			links[i].onclick = loadPhoto;
		}

		var links = exteriorThumbs.getElementsByTagName('A');
		for(var i = 0; i < links.length; i++)
		{
			links[i].onclick = loadPhoto;
		}
	}

	function loadPhoto()
	{
		var Calculator = _CalculatorPhoto;

		$('t').innerHTML = '<img src="' + this.href + '" id="loadImageTemp" alt="" />';
		$('loadImageTemp').onload = function()
		{
			if($('loadImage'))
			{
				fade('loadImage', 0, 100);
				var start = $('loadImage').offsetHeight;
			}
			else
			{
				var start = 0;
			}

			Calculator.stop();
			Calculator.init($('yacht_photo').style, 'height', Tween.strongEaseOut, start, $('loadImageTemp').offsetHeight + 4, .9, 'px');
			Calculator.onMotionFinished = function()
			{
				$('yacht_photo').innerHTML = '<img src="' + $('loadImageTemp').src + '" id="loadImage" style="opacity: 0" alt="" />';
				fade('loadImage', 100, 0);
			};
			Calculator.start();
		}


		return false;
	}

	function next()
	{
		if(_page > _pages)
		{
			return;
		}

		moveThumbs(- _page * _width);
		prevButton.style.display = 'block';
		_page++;

		if(_page >= _pages)
		{
			nextButton.style.display = 'none';
		}
	}

	function prev()
	{
		if(_page <= 1)
		{
			return;
		}

		moveThumbs(- (_page - 2) * _width);
		nextButton.style.display = 'block';
		_page--;

		if(_page <= 1)
		{
			prevButton.style.display = 'none';
		}
	}

	function showInterior()
	{
		if(_group == 'interior')
		{
			return false;
		}

		_pages = interiorPages;
		_page = 1;
		_group = 'interior';

		interiorLink.className = 'active';
		exteriorLink.className = '';
		nextButton.style.display = (_pages <= 1) ? 'none' : 'block';
		prevButton.style.display = 'none';

		var _this = this;
		_CalculatorGalleries.stop();
		_CalculatorGalleries.init(new Object, '', _moveFunction, 0, (_height / 2), 3, 'px');
		_CalculatorGalleries.onMotionChanged = function() {
			interiorThumbs.style.top = -(_height / 2) + this._pos + 'px';
			exteriorThumbs.style.top = this._pos + 'px';
		};
		_CalculatorGalleries.onMotionFinished = moveThumbs(0);
		_CalculatorGalleries.start();

		return false;
	}

	function showExterior()
	{
		if(_group == 'exterior')
		{
			return false;
		}

		_pages = exteriorPages;
		_page = 1;
		_group = 'exterior';

		interiorLink.className = '';
		exteriorLink.className = 'active';
		nextButton.style.display = (_pages <= 1) ? 'none' : 'block';
		prevButton.style.display = 'none';

		var _this = this;
		_CalculatorGalleries.stop();
		_CalculatorGalleries.init(new Object, '', _moveFunction, 0, (_height / 2), 3, 'px');
		_CalculatorGalleries.onMotionChanged = function() {
			interiorThumbs.style.top = -this._pos + 'px';
			exteriorThumbs.style.top = (_height / 2) - this._pos + 'px';
		};
		_CalculatorGalleries.onMotionFinished = moveThumbs(0);
		_CalculatorGalleries.start();

		return false;
	}

	function moveThumbs(end)
	{
		var element = (_group == 'interior') ? interiorThumbs : exteriorThumbs;
		var start = parseInt(element.style.left);
		if(!start)
		{
			start = 0;
		}
		_CalculatorThumbs.stop();
		_CalculatorThumbs.init(element.style, 'left', _moveFunction, start, end, 2.2, 'px');
		_CalculatorThumbs.start();
	}
}