jQuery( function () {
	ieHover('ul.ul-class > li, input.btn-submit, input.btn-cancel, #box, #nav > li');
	initGallery();
	linkClick();
	jQuery('.menu').jqueryTabs({
		addToParent: true,
		holdHeight: false
	});
});

// ieHover
function ieHover(_selector, _class){
	if(_class == null) _class = 'hover';
	if (jQuery.browser.msie && jQuery.browser.version < 7) {
		jQuery(_selector).each(function(){
			jQuery(this).mouseenter(function(){
				jQuery(this).addClass(_class)
			}).mouseleave(function(){
				jQuery(this).removeClass(_class)
			})
		})
	}
}

// btnClick
function linkClick(){
	var _pane = jQuery('#pane'),
		_hidePane = jQuery('#link-prints, #link-bio, #link-contact'),
		_showPane = jQuery('#link-stories'),
		_btnGoto = jQuery('a.btn-goto');
	
	_hidePane.bind('click', function(){
		_pane.hide();
	})
	_showPane.bind('click', function(){
		_pane.show();
	})
	
	_btnGoto.bind('click', function(){
		jQuery(this.hash).trigger('click');
		return false;
	})
}

// initGallery
function initGallery(){
	var _holder = jQuery('#visual'),
		_galleryLink = jQuery('#list-gallery .gallery-link'),
		_titleGallery = jQuery('#title-gallery'),
		_listGallery = jQuery('#list-gallery'),
		_listGalleryClose = jQuery('.link-close', _listGallery),
		_loadClass = 'loading',
		_btnIndex = jQuery('#link-galleries'),
		_btnPrev = jQuery('#btn-prev'),
		_btnCaption = jQuery('#btn-caption'),
		_btnNext = jQuery('#btn-next'),
		_fadeDuration = 300,
		_activeBox,
		_fInd = false,
		_pane = jQuery('#pane');
	
	_listGallery.hide();
	
	function startGallery () {
		var _patch = 'inc/first-photo.json',
			_activeLink;
		
		jQuery.ajax({
			url: _patch,
			dataType: 'json',
			success: function ( msg ) {
				_activeLink = jQuery('[href="' + msg.firstGallery + '"]')
				if ( _activeLink.length ) {
					_activeLink.parent().addClass('active');
					switchGallery ( msg.firstGallery, msg.indexPhoto );
				}
			}
		});

	}
	startGallery ();
	
	// switchGallery
	function switchGallery ( hrefLink, indPhoto ) {
		var _block = jQuery('[rel=' + hrefLink + ']', _holder);
		if ( _block.length ){
			if ( _activeBox.attr('rel') != hrefLink ){
				_activeBox.fadeOut( _fadeDuration );
				_activeBox = _block;
				_titleGallery.empty().append( jQuery('.title', _activeBox).clone() );
				_activeBox.fadeIn( _fadeDuration );
				initGalleryBox(_block);
			}
			listGalleryHide();
		} else {
			_holder.addClass( _loadClass );
			jQuery.ajax({
				url: hrefLink,
				dataType: 'html',
				success: function ( msg ) {
					var regNum = /^[<script type="text\/javascript">]{1}.+[<\/script>]/;
					var newMsg = msg.replace(regNum,'');
					var _content = jQuery( newMsg ),
						_box = jQuery('<div class="hold-box" />');

					if ( _activeBox ) _activeBox.hide();
					
					_box.attr('rel', hrefLink);
					_content.appendTo( _box );
					_titleGallery.empty().append( jQuery('.title', _box).clone() );
					_box.appendTo( _holder );
					_holder.removeClass( _loadClass );
					listGalleryHide();
					initAction( _box, indPhoto );
					initGalleryBox(_box);
					_activeBox = _box;
				},
				error: function () {
					alert('Error ajax!')
				}
			});
		}
	}
	
	// initAction
	function initAction ( o, i ) {
		if ( i ) {
			jQuery('.gallery-item', o).removeClass('active').eq( i - 1 ).addClass('active');
			jQuery('.gallery-item', o).show().not('.active').hide();
		} else {
			jQuery('.gallery-item', o).removeClass('active').eq(0).addClass('active');
			jQuery('.gallery-item', o).show().not('.active').hide();
		}
	}
	
	_btnIndex.click( function () {
		_listGallery.fadeIn( _fadeDuration );
		jQuery('.box-caption').hide();
		_fInd = true;
		// return false;
	})
	_listGalleryClose.click( function () {
		listGalleryHide();
		return false;
	})
	
	function listGalleryHide () {
		_listGallery.fadeOut( _fadeDuration );
		_fInd = false;
	}
	
	_galleryLink.each( function () {
		var _this = jQuery(this),
			_href = _this.attr('href');
		
		_this.click( function () {
			if ( !_this.parent().hasClass('active') && _href != '' && _href.charAt(0) != '#' ) {
				_galleryLink.parent().removeClass('active');
				_this.parent().addClass('active');
				switchGallery ( _href );
				_pane.removeClass('hidden').show();
			}
			return false;
		})
	})
	
	function initGalleryBox (o) {
		var _slideEl = jQuery('.gallery-item', o),
			_activeEl = _slideEl.filter('.active'),
			_caption = jQuery('.box-caption', _activeEl),
			_closeCapt = jQuery('.box-caption .btn-close', o),
			_ind = _slideEl.index(_activeEl),
			_anim = false;
		
		jQuery('.box-caption', o).hide();
		
		_btnPrev.removeClass('disabled');
		_btnNext.removeClass('disabled');
		
		if ( _slideEl.index(_activeEl) == 0 ) _btnPrev.addClass('disabled');
		else if ( _ind == _slideEl.length - 1 ) _btnNext.addClass('disabled');
		
		_btnNext.unbind('click');
		_btnNext.bind('click', function(){
			if ( !_btnNext.hasClass('disabled') && !_anim && !_fInd ) {
				if ( _ind < _slideEl.length - 1) {
					_btnPrev.removeClass('disabled');
					_ind++;
					switchEl();
				}
				if (_ind == _slideEl.length - 1) _btnNext.addClass('disabled');
			}
			return false;
		})
		
		_btnPrev.unbind('click');
		_btnPrev.bind('click', function(){
			if ( !_btnPrev.hasClass('disabled') && !_anim && !_fInd ) {
				if ( _ind > 0) {
					_btnNext.removeClass('disabled');
					_ind--;
					switchEl();
				}
				if (_ind == 0) _btnPrev.addClass('disabled');
			}
			return false;
		})
		
		_btnCaption.click(function(){
			if ( !_anim && !_fInd ) {
				_caption.fadeIn( _fadeDuration );
			}
			return false;
		})
		_closeCapt.click(function(){
			_caption.fadeOut( _fadeDuration );
			return false;
		})
		
		function switchEl () {
			_anim = true;
			_caption.fadeOut( _fadeDuration );
			_activeEl.fadeOut( _fadeDuration ).removeClass('active');
			_activeEl = _slideEl.eq( _ind ).fadeIn( _fadeDuration, function () {
				_anim = false;
				_caption = jQuery('.box-caption', this);
			} ).addClass('active');
		}
	}
}

// jquery tabs plugin
jQuery.fn.jqueryTabs = function(_options){
	// default options
	var _options = jQuery.extend({
		addToParent:false,
		holdHeight:true,
		activeClass:'active',
		tabLinks:'a.tab',
		fadeSpeed:0,
		event:'click'
	},_options);

	return this.each(function(){
		var _holder = jQuery(this);
		var _fadeSpeed = _options.fadeSpeed;
		var _activeClass = _options.activeClass;
		var _addToParent = _options.addToParent;
		var _holdHeight = _options.holdHeight;
		var _tabLinks = jQuery(_options.tabLinks, _holder);
		var _tabset = (_addToParent ? _tabLinks.parent() : _tabLinks);
		var _event = _options.event;
		var _animating = false;

		// tabs init
		_tabLinks.each(function(){
			var _tmpLink = jQuery(this);
			var _tmpTab = jQuery(_tmpLink.attr('href'));
			var _classItem = (_addToParent ? _tmpLink.parent() : _tmpLink);
			if(_tmpTab.length) {
				if(_classItem.hasClass(_activeClass)) _tmpTab.show();
				else _tmpTab.hide();
			}
		});

		// tab switcher
		function switchTab(_switcher) {
			if(!_animating) {
				var _link = jQuery(_switcher);
				var _newItem = (_addToParent ? _link.parent() : _link);
				var _newTab = jQuery(_link.attr('href'));
				if(_newItem.hasClass(_activeClass)) return;

				var _oldItem = jQuery(_addToParent ? _tabset : _tabLinks).filter('.'+_activeClass);
				var _oldTab = jQuery(jQuery(_addToParent ? _oldItem.children('a') : _oldItem).attr('href'));
				if(_newTab.length) {
					_animating = true;
					if(_oldItem.length) {
						_newItem.addClass(_activeClass);
						_oldItem.removeClass(_activeClass);

						var _parent = _oldTab.parent();
						if(_holdHeight) _parent.css({height:_parent.height()});

						_oldTab.fadeOut(_fadeSpeed,function(){
							_newTab.fadeIn(_fadeSpeed,function(){
								_animating = false;
							});
							if(_holdHeight) _parent.css({height:'auto'});
						});
					} else {
						_newItem.addClass(_activeClass);
						_newTab.fadeIn(_fadeSpeed,function(){
							_animating = false;
						});
					}
				}
			}
		}

		// control
		_tabLinks.each(function(){
			jQuery(this).bind(_event,function(){
				switchTab(this);
				return false;
			});
		});
	});
}
