﻿jQuery(document).ready(function(){
	initCufon();
	initFade();
});
function initCufon(){
	Cufon.replace('ul.menu > li > a strong', { fontFamily: 'rockwellbold' });
	Cufon.replace('ul.menu > li > a em', { fontFamily: 'rockwell' });
	Cufon.replace('#main h1', { fontFamily: 'rockwellbold'});
	Cufon.replace('#sidebar h2', { fontFamily: 'rockwellbold'});
	Cufon.replace('.intro .text', { fontFamily: 'rockwellbold'});
}
function initFade(){
	jQuery('div.slideshow').NVgalleryCustom({
		autoRotaion: true,
		fadeAnimation: true
	});
}
jQuery.fn.NVgalleryCustom = function(_options){
	var _options = jQuery.extend({
		//Options plugin
		holder: '>div',
		slider: '>ul',
		slides: '>li',
		btnPrev: '.btn-prev',
		btnNext: '.btn-next',
		btnPlayPause: '.btn-pause',
		generationPaging: true,
		autoRotaion: false,
		hoverSlide: true,
		waitAnimation: true,
		random: false,
		fadeAnimation: false,
		autoHeight: false,
		verticalSlide: false,
		reverseSlide: false,
		circleSlide: false,
		autoswicher: false,
		swicher: '.paging',
		selectClass: 'active',
		pauseClass: 'galllery-pause',
		btnPauseClass: 'btn-play',
		txtBtnPuase: 'Pause',
		txtBtnAfterClick: 'Play',
		animationSpeed: 1000,
		swichSlideTime: 5000,
		startSlide: 0
	},_options);

	return this.each(function(){
		var _this = jQuery(this);
		//Set options for plugins
		var _holder = jQuery(_options.holder, _this);
		var _slider = jQuery(_options.slider, _holder);
		var _slides = jQuery(_options.slides, _slider);
		var _btnPrev = jQuery(_options.btnPrev, _this);
		var _btnNext = jQuery(_options.btnNext, _this);
		var _btnPlayPause = jQuery(_options.btnPlayPause, _this);
		var _swicher = jQuery(_options.swicher, _this);
		var _animationSpeed = _options.animationSpeed;
		var _swichSlideTime = _options.swichSlideTime;
		var _generationPaging = _options.generationPaging;
		var _autoRotaion = _options.autoRotaion;
		var _hoverSlide = _options.hoverSlide;
		var _selectClass = _options.selectClass;
		var _pauseClass = _options.pauseClass;
		var _btnPauseClass = _options.btnPauseClass;
		var _waitAnimation = _options.waitAnimation;
		var _random = _options.random;
		var _fadeAnimation = _options.fadeAnimation;
		var _autoHeight = _options.autoHeight;
		var _verticalSlide = _options.verticalSlide;
		var _reverseSlide = _options.reverseSlide;
		var _circleSlide = _options.circleSlide;
		var _txtBtnPuase = _options.txtBtnPuase;
		var _txtBtnAfterClick = _options.txtBtnAfterClick;
		if(!_slides.length) return;
		var slideCount = _slides.length;
		var currentIndex = _options.startSlide;
		if( currentIndex > slideCount-1) currentIndex = 0;
		var slideHieght = _slides.eq(0).outerHeight(true);
		var slideWidth = _slides.eq(0).outerWidth(true);
		var prevIndex = currentIndex;
		var timer;
		var _pageLink;
		var randomIndex;
		var animFunc;
		var _flag = false;
		var _count;
		var summWidth = 0;
		var summHeight = 0;
		_slides.each(function(){
			summWidth+=$(this).outerWidth(true);
			summHeight+=$(this).outerHeight(true);
		});
		if(_autoHeight){ _slider.css({ height: _slides.eq(currentIndex).outerHeight(true) })}
		//Fade
		if(_fadeAnimation){
			_slider.css({ position: 'relative' });
			_slides.css({ position: 'absolute', top: 0, left: 0 });
			if( jQuery.browser.msie ){
				_slides.hide().eq(currentIndex).show();
			}
			else _slides.hide().css({ opacity: 0, zIndex: 1 }).eq(currentIndex).show().css({ opacity: 1, zIndex: 9 });
		}
		//Vertical
		else if(_verticalSlide){
			if(_circleSlide){
				_slider.append(_slides.clone()).append(_slides.clone());
				_slides = _slider.children();
				_slider.css({ marginTop: -slideHieght*currentIndex-summHeight });
			}
			else {
				_slider.css({ marginTop: -slideHieght*currentIndex });
				_slides.each(function(i, el){ _slides.eq(i).css({ top: slideHieght*i })})
			}
		}
		//Horizontal
		else {
			_slider.css({ position: 'relative' });
			_slides.css({ position: 'absolute', top: 0, left: 0 });
			if(_circleSlide){
				_slider.append(_slides.clone()).append(_slides.clone());
				_slides = _slider.children();
				_slides.each(function(i, el){ _slides.eq(i).css({ left: slideWidth*i })});
				_slider.css({ left: -slideWidth*currentIndex-summWidth });
			}
			else {
				_slider.css({ left: -slideWidth*currentIndex });
				_slides.each(function(i, el){ _slides.eq(i).css({ left: slideWidth*i })});
			}
		};
		function refreshActive(){
			// if(_generationPaging) _pageLink.removeClass(_selectClass).eq(currentIndex).addClass(_selectClass);
		}
		function prevSlide(){
			if(_random){
				prevIndex = currentIndex;
				randomIndex = Math.floor(Math.random()*slideCount);
				if( randomIndex != currentIndex ){
					currentIndex = randomIndex;
				}
				else prevSlide();
			}
			else if(_circleSlide){
				prevIndex = currentIndex;
				currentIndex--;
			}
			else {
				prevIndex = currentIndex;
				if( currentIndex > 0 ) currentIndex--;
				else currentIndex = slideCount-1;
			}
			swichSlide();
		}
		function nextSlide(){
			if(_random){
				prevIndex = currentIndex;
				randomIndex = Math.floor(Math.random()*slideCount);
				if( randomIndex != currentIndex ){
					currentIndex = randomIndex;
				}
				else nextSlide();
			}
			else if(_circleSlide){
				prevIndex = currentIndex;
				currentIndex++;
			}
			else {
				prevIndex = currentIndex;
				if( currentIndex < slideCount-1 ) currentIndex++;
				else currentIndex = 0;
			}
			swichSlide();
		}
		_btnPrev.bind('click', function(){
			if(!_waitAnimation) return false;
			if(timer) clearTimeout(timer);
			if(_reverseSlide) nextSlide();
			else prevSlide();
			return false;
		})
		_btnNext.bind('click', function(){
			if(!_waitAnimation) return false;
			if(timer) clearTimeout(timer);
			if(_reverseSlide) prevSlide();
			else nextSlide();
			return false;
		})
		_btnPlayPause.bind('click', function(){
			if(_flag){
				_flag = false;
				_this.removeClass(_pauseClass);
				jQuery(this).addClass(_btnPauseClass).html(_txtBtnPuase);
				if(timer) clearTimeout(timer);
			}
			else {
				_flag = true;
				_this.addClass(_pauseClass);
				jQuery(this).removeClass(_btnPauseClass).html(_txtBtnAfterClick);
				if(timer) clearTimeout(timer);
				autoSlide();
			}
			return false;
		})
		function swichSlide(){
			if(!_waitAnimation) return;
			_waitAnimation = false;
			if(_this.hasClass(_pauseClass)){
				_flag = false;
				_this.removeClass(_pauseClass);
				_btnPlayPause.html(_txtBtnPuase);
			}
			if(_fadeAnimation){
				if(_autoHeight){
					_slider.animate({
						height: _slides.eq(currentIndex).outerHeight(true)
					}, { queue:false, duration: 250 })
				}
				if( jQuery.browser.msie ){
					_slides.eq(prevIndex).hide();
					_slides.eq(currentIndex).show(0, function(){
						_waitAnimation = true;
						refreshActive();
					});
				}
				else {
					_slides.eq(prevIndex).animate({
						opacity: 0
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_slides.eq(prevIndex).hide();
					}})
					_slides.show().eq(currentIndex).animate({
						opacity: 1
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_waitAnimation = true;
						refreshActive();
						_slides.eq(currentIndex).css({ zIndex: 9 });
					}})
				}
			}
			else if(_verticalSlide){
				if(_circleSlide){
					_slider.animate({
						marginTop: -slideHieght*currentIndex-summHeight
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_waitAnimation = true;
						if(currentIndex < 0 ){
							currentIndex = slideCount-1;
							_slider.css({
								marginTop: -slideHieght*(slideCount-1)-summHeight
							})
						}
						else if( currentIndex == -slideCount || currentIndex == slideCount ){
							currentIndex = 0;
							_slider.css({
								marginTop: -summHeight
							})
						};
						refreshActive();
					}})
				}
				else {
					_slider.animate({
						marginTop: -slideHieght*currentIndex
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_waitAnimation = true;
						refreshActive();
					}})
				}
			}
			else {
				if(_circleSlide){
					_slider.animate({
						left: -slideWidth*currentIndex-summWidth
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_waitAnimation = true;
						if(currentIndex < 0 ){
							currentIndex = slideCount-1;
							_slider.css({
								left: -slideWidth*(slideCount-1)-summWidth
							})
						}
						else if( currentIndex == -slideCount || currentIndex == slideCount ){
							currentIndex = 0;
							_slider.css({
								left: -summWidth
							})
						};
						refreshActive();
					}})
				}
				else{
					_slider.animate({
						left: -slideWidth*currentIndex
					}, { queue: false, duration: _animationSpeed, complete: function(){
						_waitAnimation = true;
					}})
					refreshActive();
				}
			}
			autoSlide();
		}
		function autoSlide(){
			if(!_autoRotaion) return;
			if(timer) clearTimeout(timer);
			if(_reverseSlide) timer = setTimeout(prevSlide, _swichSlideTime);
			else timer = setTimeout(nextSlide, _swichSlideTime);
		}
		if(_swicher.length){
			if(_generationPaging){
				var _linkList = jQuery('<ul />');
				for( var i = 0; i < slideCount; i++ ){
					jQuery('<li><a href="#">'+ (i + 1) +'</a></li>').appendTo(_linkList);
				}
				_linkList.appendTo(_swicher);
			}
			_pageLink = _linkList.children();
			_pageLink.bind('click', function(){
				prevIndex = currentIndex;
				currentIndex = _pageLink.index(this);
				swichSlide();
				_pageLink.removeClass(_selectClass).eq(currentIndex).addClass(_selectClass);
				if(timer) clearTimeout(timer);
				return false;
			})
		}
		if(_hoverSlide){
			_slides.hover(
				function(){
					if(timer) clearTimeout(timer);
				},
				function(){
					if(timer) clearTimeout(timer);
					autoSlide();
				}
			)
		}
		refreshActive();
		autoSlide();
	});
}
