/*
* jQuery slideShow v1.1.3
*/

jQuery.fn.slideShow = function(_options){
	// defaults options
	var _options = jQuery.extend({
		slideParent: false,
		slideEl:'div.img-hold img',
		linkNext:'a.next',
		linkPrev:'a.prev',
		linkPause:'a.pause',
		numElementLink:'div.nav li a',
		duration:600,
		autoSlideShow:false,
		animHeight: true,
		switchTime:3000,
		onStart: null,
		func: null,
		event:'click',
		currentEl:'.cur',
		allEl:'.all'
	},_options);
	return this.each(function(){
		var _THIS = jQuery(this);
		var _linkNext = false, _linkPrev = false, _linkPause = false, _numElementLink = false, _numElement = false;
		var _slideEl = _THIS.find(_options.slideEl);
		var _elTagName = _options.slideEl;
		if (_options.linkNext)
			var _linkNext = $(_options.linkNext, _THIS).length ? $(_options.linkNext, _THIS) : false;
		if (_options.linkPrev)
			var _linkPrev = $(_options.linkPrev, _THIS).length ? $(_options.linkPrev, _THIS) : false;
		if (_options.linkPause)
			var _linkPause = $(_options.linkPause, _THIS).length ? $(_options.linkPause, _THIS) : false;
		if (_options.numElementLink) {
			var _numElementLink = $(_options.numElementLink, _THIS).length ? $(_options.numElementLink, _THIS) : false;
			var _numElement = $(_options.numElementLink, _THIS).length ? _numElementLink.parent() : false;
		}
		var _slideParent = _THIS.find(_options.slideParent).length ? _THIS.find(_options.slideParent): false;

		var _duration = _options.duration;
		var _switchTime = _options.switchTime;
		var _numElActive, _n, _timer = false, _hover = false;

		if (!_slideEl.filter('.active').length)
				_slideEl.eq(0).addClass('active');

		if (jQuery.isFunction(_options.onStart)){
			_options.onStart.apply(_slideEl);
		}
		if(_THIS.find('a.enlarge').length && $('.gallery-main li.active a').length){
			_THIS.find('a.enlarge').attr('href', $('.gallery-main li.active a').attr('href')) ;
		}
		if (_slideParent && _options.animHeight) {
			_slideParent.css({
				height: $(_slideEl).filter(".active").find('div:eq(0)').height()
			});
		}
		$(_slideEl).each(function(){
			if(!$(this).hasClass('active')) $(this).css({opacity:'0',display:'none'});
		})

		if ($(_numElement).length) {activeNumEl()}

		if (_options.autoSlideShow) {
			_timer = setTimeout(function(){nextEl()},_switchTime);
			contentHover();
		}

		if (_linkNext) {
			$(_linkNext).click(function(){
				clearTimeout(_timer);
				if (_linkPause.length) {
					if (!_linkPause.is('.play'))
						_timer = setTimeout(function(){nextEl()},_switchTime);
				} else {
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				setNextClass();
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPrev) {
			$(_linkPrev).click(function(){
				clearTimeout(_timer);
				if (_linkPause.length) {
					if (!_linkPause.is('.play'))
						_timer = setTimeout(function(){nextEl()},_switchTime);
				} else {
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				if ($(_slideEl).filter(".active").prev().is(_elTagName)) {
					$(_slideEl).filter(".active").prev().addClass("next");
				} else {
					$(_slideEl).filter(":last-child").addClass("next");
				}
				fadeElement();
				activeNumEl();
				return false;
			});
		}
		if (_linkPause) {
			if (!_options.autoSlideShow) {
				_linkPause.addClass('play');
				_options.autoSlideShow = true;
				if (!_hover) contentHover();
			}
			$(_linkPause).click(function(){
				if (!_linkPause.is('.play')) {
					clearTimeout(_timer);
					_linkPause.addClass('play').text('Start Slideshow');
				} else {
					_linkPause.removeClass('play').text('Stop Slideshow');
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				return false;
			});
		}
		if (_numElementLink) {
			$(_numElementLink).bind(_options.event, function(){
				if (_timer) {
					clearTimeout(_timer);
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
				_n = _numElement.index($(this).parent());
				if (!$(_slideEl).eq(_n).hasClass("active")){
					$(_slideEl).eq(_n).addClass("next");
					fadeElement();
					activeNumEl();
				}
				return false;
			});
		}
		if (_options.currentEl || _options.allEl) {
			_THIS.all = _slideEl.length;
			$(_options.allEl, _THIS).html(_THIS.all);
			function currentNum() {
				var _index = _slideEl.index(_slideEl.filter('.active')) + 1;
				$(_options.currentEl, _THIS).html(_index);
			}
			currentNum();
		}
		function contentHover() {
			_hover = true;
			_slideEl.hover(function() {
				if (_timer) clearTimeout(_timer);
			},function(){
				if (_linkPause.length) {
					if (!_linkPause.is('.play')){
						_timer = setTimeout(function(){nextEl()},_switchTime);
					};
				}else{
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
			});
		}
		function nextEl(){
			if (_timer) clearTimeout(_timer);
			if (_options.autoSlideShow){
				setNextClass();
				fadeElement();
				activeNumEl();
				if (_linkPause.length) {
					if (!_linkPause.is('.play'))
						_timer = setTimeout(function(){nextEl()},_switchTime);
				} else {
					_timer = setTimeout(function(){nextEl()},_switchTime);
				}
			}
		};
		function setNextClass(){
			if ($(_slideEl).filter(".active").next().is(_elTagName)){
				$(_slideEl).filter(".active").next().addClass("next");
			} else $(_slideEl).eq(0).addClass("next");
		}
		function activeNumEl() {
			$(_numElement).removeClass("active");
			_numElActive = $(_slideEl).index($(_slideEl).filter(".active")[0]);
			$(_numElement).eq(_numElActive).addClass("active");
		};
		function fadeElement(){
			var _active = $(_slideEl).filter(".active").removeClass("active");
			var _next = $(_slideEl).filter(".next:eq(0)").css('display','block');
			_nextHeight = _next.find('div:eq(0)').height();
			_active.animate({opacity: 0},_duration,function(){
				$(this).hide();
			});
			_next.animate({opacity: 1},_duration,function(){
				$(this).css('opacity','auto');
				if(_THIS.find('a.enlarge').length){
					_THIS.find('a.enlarge').attr('href', $('.gallery-main li.active a').attr('href')) ;
				}
			}).addClass("active").removeClass("next");
			if (_slideParent && _options.animHeight) _slideParent.animate({height: _nextHeight},_duration);
			if (_options.currentEl || _options.allEl) currentNum();
			if (jQuery.isFunction(_options.func)){
				_options.func.apply(_THIS);
			}
		};
	});
}