// page init
jQuery(function(){
	initSliders();
	$('.gallery').each(function(){
		new initGallery($(this),{
			list: '.photo ul',
			prev: 'a.prev',
			next: 'a.next',
			effect: 'slide',
			onStart: function(){
				initTabs();
			}
		});
	});
});

function initTabs() {
	jQuery('.folio-space div.lavori-riga').each(function(){
		var _list = jQuery(this);
		var _links = _list.find('a.tab');

		_links.each(function() {
			var _link = jQuery(this);
			var _href = _link.attr('href');
			var _tab = jQuery(_href);

			if(_link.hasClass('attivi')) _tab.show();
			else _tab.hide();

			_link.click(function(){
				_links.filter('.attivi').each(function(){
					jQuery(jQuery(this).removeClass('attivi').attr('href')).hide();
				});
				_link.addClass('attivi');
				_tab.show();
				return false;
			});
		});
	});
}

// init sliders
function initSliders(){
	var duration = 500;
	var holders = jQuery('.folio-space');
	var sliders = holders.find('.content-descrizione');
	var classItemOpen = 'lavori-attivi';
	var classBlockOpen = 'block-active';
	var body = jQuery.browser.opera ? jQuery('html') : jQuery('html, body');
	holders.each(function() {
		var holder = jQuery(this);
		var items = holder.find('.lavori');
		var links = items.find('.thumb a');
		var slider = holder.find('.content-descrizione').hide();
		
		links.each(function(n) {
			var link = jQuery(this);
			link.click(function() {
				if(holder.hasClass(classBlockOpen)) {
					if(items.eq(n).hasClass(classItemOpen)) {
						slider.slideUp({duration: duration})
						holder.removeClass(classBlockOpen);
						items.removeClass(classItemOpen);
					}
					else {
						items.removeClass(classItemOpen);
						items.eq(n).addClass(classItemOpen);
					}
				}
				else {
					var activeHolder = holders.filter('.' + classBlockOpen);
					holder.addClass(classBlockOpen);
					items.eq(n).addClass(classItemOpen);
					function slideBlock() {
						var posTop = link.parents('.lavori').offset().top;
						body.animate({scrollTop:posTop - 10},{
							duration:duration,
							complete: function() {
								slider.slideDown({duration: duration})
							}
						});
					}
					if(activeHolder.length) {
						activeHolder.find('.lavori').removeClass(classItemOpen);
						activeHolder.removeClass(classBlockOpen);
						activeHolder.find('.content-descrizione').slideUp({
							duration: duration,
							complete: function() {
								slideBlock();
							}
						})
					}
					else {
						slideBlock();
					}
				}
				return false;
			})
		});
	})
}


// main gallery module
function initGallery(context, options){this.init(context, options)}
(function( $ ){
	initGallery.prototype = {
		autoRotation: false,
		disableBtn: false,
		list: 'ul.g1',
		switcher: false,
		prev: false,
		next: false,
		effect: false,
		event:'click',
		onStart: function(){},
		beforeChange: function(){},
		onChange: function(){},
		switcherClick: function(){},
		activeSlide: 0,
		
		init: function(context, options){
			for ( var i in options ) this[i] = options[i]; 
			this.holder = $(context);
			if(this.holder == undefined) return;
			
			this.list = this.holder.find(this.list);
			this.animation = true, this.active = 0;
			this.prevActive = this.active, this.wait;
			this.count = this.list.children().length,
			this.w = this.list.children().eq(0).outerWidth(true);
			this.holdW = this.list.parent().width();
			this.visEl = Math.ceil(this.holdW/this.w);
			
			if(this.count <= this.visEl) this.animation = false;
			
			if(this.effect == 'fade') this.list.children().css('opacity', 0).eq(this.active).css('opacity', 1).addClass('attivi');
			else if(this.effect == 'slide') this.list.css('marginLeft', -this.w*this.active);

			this.initControls(this);
			
			this.toggleState.listItem(this);
			if(this.switcher) this.toggleState.switchItem(this);
			
			this.onStart(this, this.list, this.active);
			
			if(this.autoRotation && this.animation) this.runTimer(this);
		},
		initControls: function(_this){
			if(_this.prev && _this.next){
				_this.prev = _this.holder.find(_this.prev).attr('rel', 'prev').click(function(e){
					_this.beforeChange(_this, e);
					_this.refreshState(e);
					return false;
				});
				_this.next = _this.holder.find(_this.next).attr('rel', 'next').click(function(e){
					_this.beforeChange(_this, e);
					_this.refreshState(e);
					return false;
				});
			}
			if(_this.switcher){
				_this.switcher = _this.holder.find(_this.switcher);
				_this.toggleState.switchItem(_this);
				_this.switcher.bind(_this.event, function(){
					var ind = _this.switcher.index($(this));
					_this.switcherClick(_this);
					_this.refreshState(ind);
					return false;
				});
			}
			if(this.disableBtn) this.disabledConrtol();
		},
		toggleState:{
			listItem: function(_this){
				_this.list.children().eq(_this.prevActive).removeClass('attivi');
				_this.list.children().eq(_this.active).addClass('attivi');
			},
			switchItem: function(_this){
				_this.switcher.eq(_this.prevActive).removeClass('attivi');
				_this.switcher.eq(_this.active).addClass('attivi');
			}
		},
		disabledConrtol: function(){
			if(this.active == 0) {
				this.prev.parent().addClass('disabled');
				this.next.parent().removeClass('disabled');
			}
			else if(this.active == this.count-1 || (this.visEl > 2 && this.active + this.visEl == this.count)) {
				this.prev.parent().removeClass('disabled');
				this.next.parent().addClass('disabled');
				this.autoRotation = false;
			}
			else {
				this.prev.parent().removeClass('disabled');
				this.next.parent().removeClass('disabled');
			}
		},
		runTimer: function(_this){
			_this.beforeChange(_this);
			this.wait = setTimeout(function(){_this.refreshState('next')}, this.autoRotation)
		},
		stop: function(){
			if(this.wait) clearTimeout(this.wait)
		},
		play: function(){
			if(this.wait) clearTimeout(this.wait);
			if(this.autoRotation) this.runTimer(this);
		},
		changeSlide:{
			fade:function(_this){
				_this.list.children().eq(_this.prevActive).animate({opacity:0}, {queue:false, duration:700});
				_this.list.children().eq(_this.active).animate({opacity:1}, {queue:false, duration:700, complete:function(){
					_this.play();
					_this.onChange(_this, _this.list, _this.active);
				}});
			},
			slide:function(_this){
				if(_this.active + _this.visEl > _this.count) _this.active = 0;
				_this.list.animate({marginLeft:-_this.w*_this.active}, {queue:false, duration:500, complete:function(){
					_this.play();
					_this.onChange(_this, _this.list, _this.active);
				}});
			}
		},
		refreshState: function(e){
			if(this.animation){
				this.prevActive = this.active;
				if(typeof e == 'string' && e == 'next') this.active++;
				else if(typeof e == 'number') this.active=e;
				else{
					if(e.currentTarget.rel == 'next') this.active++;
					else if(e.currentTarget.rel == 'prev') this.active--;
				}
				if(this.wait) clearTimeout(this.wait);
				if(this.active == this.count) this.active = 0;
				else if(this.active == -1) this.active=this.count - 1;
				
				this.toggleState.listItem(this);
				if(this.switcher) this.toggleState.switchItem(this);
				
				if(this.disableBtn) this.disabledConrtol();
				
				if(this.effect == 'fade') this.changeSlide.fade(this);
				else if(this.effect == 'slide') this.changeSlide.slide(this);
			}
		}	
	}
})( jQuery );


/*--------------------- TABS ------------------------*/




$(document).ready(function() {

	//Default Action
	$(".tab_content").hide(); //Hide all content
	$("ul.tabs li:first").addClass("active").show(); //Activate first tab
	$(".tab_content:first").show(); //Show first tab content
	
	//On Click Event
	$("ul.tabs li").click(function() {
		$("ul.tabs li").removeClass("active"); //Remove any "active" class
		$(this).addClass("active"); //Add "active" class to selected tab
		$(".tab_content").hide(); //Hide all tab content
		var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
		$(activeTab).fadeIn(); //Fade in the active content
		return false;
	});

});
