/*
 * jQuery slideShow v1.1.0 
 *
 * Copyright (c) 2008 Taranets Aleksey
 * email: aleks_tar@ukr.net
 * Licensed under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 */

jQuery.fn.slideShow = function(_options){
    // defaults options	
    var _options = jQuery.extend({
		galleryEl:'ul.zoom-img li',
		elTagName:'li',
		linkNext:false,
		linkPrev:false,
		numElementLink:'ul.small-img a',
		duration:1200,
		autoSlideShow:true,
		switchTime:12000,
		event:'click',
		currentEl:false,
		allEl:false
    },_options);

    return this.each(function(){
	    var _THIS = jQuery(this);
		
		var _galleryEl = $(_options.galleryEl, _THIS);
		var _elTagName = _options.elTagName;
		var _linkNext = _options.linkNext ? $(_options.linkNext, _THIS) : false;
		var _linkPrev = _options.linkPrev ? $(_options.linkPrev, _THIS) : false;
		var _numElementLink = _options.numElementLink ? $(_options.numElementLink, _THIS) : false;
		var _numElement = _options.numElementLink ? _numElementLink.parent() : false;
		if (_THIS.is('div.big-tab-holder')) _numElement = _options.numElementLink ? _numElementLink : false;
		var _duration = _options.duration;
		var _switchTime = _options.switchTime;
		var _numElActive, _n, _timer = false;
		
		if (!_galleryEl.filter('.active').length)
				_galleryEl.eq(0).addClass('active');
				
		$(_galleryEl).not(".active").css('display','none');
		
		if ($(_numElement).length) {activeNumEl()}
		
		if (_options.autoSlideShow) {
			_timer = setTimeout(function(){nextEl()},_switchTime);
			_galleryEl.hover(function() {
					if (_timer) clearTimeout(_timer);
			}, function(){
					_timer = setTimeout(function(){nextEl()},_switchTime);
			});
		}
		if (_linkNext) {
			$(_linkNext).click(function(){
					if (_timer) {
							clearTimeout(_timer);
							_timer = setTimeout(function(){nextEl()},_switchTime);
					}
					if ($(_galleryEl).filter(".active").next().is(_elTagName)) {
						$(_galleryEl).filter(".active").next().addClass("next");
					} else {
						$(_galleryEl).eq(0).addClass("next");
					}
					fadeElement();
					activeNumEl();
					return false;
			});
		}
		if (_linkPrev) {	
			$(_linkPrev).click(function(){
					if (_timer) {
							clearTimeout(_timer);
							_timer = setTimeout(function(){nextEl()},_switchTime);
					}
					if ($(_galleryEl).filter(".active").prev().is(_elTagName)) {
						$(_galleryEl).filter(".active").prev().addClass("next");
					} else {
						$(_galleryEl).filter(":last-child").addClass("next");
					}
					fadeElement();
					activeNumEl();
					return false;
			});
		}
		if (_numElementLink) {
			$(_numElementLink).bind(_options.event, function(){
					if (_timer) {
							clearTimeout(_timer);
							_timer = setTimeout(function(){nextEl()},_switchTime);
					}
					if (_THIS.is('div.big-tab-holder')) _n = _numElement.index($(this));
					else _n = _numElement.index($(this).parent());
					if (!$(_galleryEl).eq(_n).hasClass("active")){
						$(_galleryEl).eq(_n).addClass("next");
						fadeElement();
						activeNumEl();
					}
					return false;
			});
		}
		if (_options.currentEl || _options.allEl) {
			_THIS.all = _galleryEl.length;
			$(_options.allEl, _THIS).html(_THIS.all);
			function currentNum() {
				var _index = _galleryEl.index(_galleryEl.filter('.active')) + 1;
				$(_options.currentEl, _THIS).html(_index);
			}
			currentNum();
		}
		function nextEl(){
			if ($(_galleryEl).filter(".active").next().is(_elTagName)){
				$(_galleryEl).filter(".active").next().addClass("next");
			} else {
				$(_galleryEl).eq(0).addClass("next");
			}
			fadeElement();
			activeNumEl();
			_timer = setTimeout(function(){nextEl()},_switchTime);
		};		
		function activeNumEl() {
			$(_numElement).removeClass("active");
			_numElActive = $(_galleryEl).index($(_galleryEl).filter(".active")[0]);
			$(_numElement).eq(_numElActive).addClass("active");
		};
		function fadeElement(){
			$(_galleryEl).filter(".active").fadeOut(_duration).removeClass("active");
			$(_galleryEl).filter(".next").fadeIn(_duration).addClass("active").removeClass("next");
			if (_options.currentEl || _options.allEl) currentNum();
		};
    });
}

$(document).ready(function(){
	$('div.gallery').slideShow();
	$('div.big-tab-holder').slideShow({
		galleryEl:'div.general-tab div.big-tab',
		elTagName:'div.big-tab',
		numElementLink:'div.tabset a',
		duration:500,
		autoSlideShow:true,
		switchTime:10000,
		event:'click'
	});
});


