/* * jQuery slideShow v1.1.0  * * Copyright (c) 2008 Taranets Aleksey * www: markup-javascript.com * Licensed under the MIT License: * http://www.opensource.org/licenses/mit-license.php */

jQuery.fn.slideShow = function(_options){    // defaults options	    var _options = jQuery.extend({		slideEl:'div.img-hold img',		linkNext:'a.next',		linkPrev:'a.prev',		linkPause:'a.pause',		numElementLink:'div.nav li a',		duration:500,		autoSlideShow:false,		switchTime:3000,		event:'click',		currentEl:'#footer span.cur',		allEl:'#footer span.all'    },_options);
    return this.each(function(){
	    var _THIS = jQuery(this);
		var _linkNext = false, _linkPrev = false, _linkPause = false, _numElementLink = false, _numElement = false;
		var _slideEl = jQuery(_options.slideEl, _THIS);
		var _elTagName = _options.slideEl;
		if (_options.linkNext)
			var _linkNext = jQuery(_options.linkNext, _THIS).length ? jQuery(_options.linkNext, _THIS) : false;
		if (_options.linkPrev)
			var _linkPrev = jQuery(_options.linkPrev, _THIS).length ? jQuery(_options.linkPrev, _THIS) : false;
		if (_options.linkPause)
			var _linkPause = jQuery(_options.linkPause, _THIS).length ? jQuery(_options.linkPause, _THIS) : false;
		if (_options.numElementLink) {
			var _numElementLink = jQuery(_options.numElementLink, _THIS).length ? jQuery(_options.numElementLink, _THIS) : false;
			var _numElement = jQuery(_options.numElementLink, _THIS).length ? _numElementLink.parent() : 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');
				
		jQuery(_slideEl).not(".active").css('display','none');
		
		if (jQuery(_numElement).length) {activeNumEl()}
		
		if (_options.autoSlideShow) {
				_timer = setTimeout(function(){nextEl()},_switchTime);
				//contentHover();
		}
		if (_linkNext) {
				jQuery(_linkNext).click(function(){
                                    if (_timer) {
                                                    clearTimeout(_timer);
                                                    //_timer = setTimeout(function(){nextEl()},_switchTime);
                                    }
                                    if (jQuery(_slideEl).filter(".active").next().is(_elTagName)) {
                                            jQuery(_slideEl).filter(".active").next().addClass("next");
                                    } else {
                                            jQuery(_slideEl).eq(0).addClass("next");
                                    }
                                    fadeElement();
                                    activeNumEl();
                                    return false;
				});
		}
		if (_linkPrev) {	
				jQuery(_linkPrev).click(function(){
						if (_timer) {
								clearTimeout(_timer);
								//_timer = setTimeout(function(){nextEl()},_switchTime);
						}
						if (jQuery(_slideEl).filter(".active").prev().is(_elTagName)) {
							jQuery(_slideEl).filter(".active").prev().addClass("next");
						} else {
							jQuery(_slideEl).filter(":last-child").addClass("next");
						}
						fadeElement();
						activeNumEl();
						return false;
				});
		}
		if (_linkPause) {	
				if (!_options.autoSlideShow) {
					_linkPause.addClass('play');
					_options.autoSlideShow = true;
					if (!_hover) contentHover();
				}
				jQuery(_linkPause).click(function(){
						if (!_linkPause.is('.play')) {
							clearTimeout(_timer);
							_linkPause.addClass('play');
						} else {
							_linkPause.removeClass('play');
							_timer = setTimeout(function(){nextEl()},_switchTime);
						}
						return false;
				});
		}
		if (_numElementLink) {
				jQuery(_numElementLink).bind(_options.event, function(){
						if (_timer) {
                                                        clearTimeout(_timer);
                                                       // _timer = setTimeout(function(){nextEl()},_switchTime);
						}
						_n = _numElement.index(jQuery(this).parent());
						if (!jQuery(_slideEl).eq(_n).hasClass("active")){
							jQuery(_slideEl).eq(_n).addClass("next");
							fadeElement();
							activeNumEl();
						}
						return false;
				});
		}
		if (_options.currentEl || _options.allEl) {
				_THIS.all = _slideEl.length;
				jQuery(_options.allEl, _THIS).html(_THIS.all);
				function currentNum() {
					var _index = _slideEl.index(_slideEl.filter('.active')) + 1;
					jQuery(_options.currentEl, _THIS).html(_index);
				}
				currentNum();
		}
		function contentHover() {
			_hover = true;
			_slideEl.hover(function() {
					if (_timer) clearTimeout(_timer);
			}, function(){
					if (_linkPause && !_linkPause.is('.play'))
						_timer = setTimeout(function(){nextEl()},_switchTime);
					else if (!_linkPause)
						_timer = setTimeout(function(){nextEl()},_switchTime);						
			});			
		}
		function nextEl(){
				if (jQuery(_slideEl).filter(".active").next().is(_elTagName)){
					jQuery(_slideEl).filter(".active").next().addClass("next");
				} else {
					jQuery(_slideEl).eq(0).addClass("next");
				}
				fadeElement();
				activeNumEl();
				_timer = setTimeout(function(){nextEl()},_switchTime);
		};		
		function activeNumEl() {
				jQuery(_numElement).removeClass("active");
				_numElActive = jQuery(_slideEl).index(jQuery(_slideEl).filter(".active")[0]);
				jQuery(_numElement).eq(_numElActive).addClass("active");
		};
		function fadeElement(){
				jQuery(_slideEl).filter(".active").fadeOut(_duration).removeClass("active");
				jQuery(_slideEl).filter(".next").fadeIn(_duration).addClass("active").removeClass("next");
				if (_options.currentEl || _options.allEl) currentNum();
		};
    });
}


