jQuery(function ()
{
	jQuery.easing.def = "easeInOutQuint";
	initPlugins();

	// Expertise -> Specialties Menu
	$("#specialties .menucolumn a").click(function (event)
	{
		event.preventDefault();
		$("#specialties .menucolumn a").removeClass('active');
		var el = $(this);
		var id = el.data("pnl");
		var visPnl = $("#specialties .pnl").filter(":visible");
		if (visPnl.filter(":first").attr("id") !== id) // Don't fade out if it's the current section.
		{
			visPnl.fadeOut(function () { $("#specialties #" + id).fadeIn(); el.addClass('active'); });
		}
	});

	initNav();

	cookiepuss();

	$("#expertise2, #expertise3, #expertise4").show();
	$("#studio2, #studio3, #studio4").show();

	loadRss();

	getSinglePost("rss-feed");

	try { $(".form input[placeholder], .form textarea[placeholder]").enablePlaceholder(); } catch (ex) { }	
});

function cookiepuss()
{
	if (document.cookie.indexOf('tnsstudiovisit') == -1)
	{
		$("#pnlHub").delay(3000).fadeTo(0, .8).delay(500).fadeTo(0, .6).delay(500).fadeTo(0, .4).delay(500).fadeTo(0, .2).delay(500).fadeTo(0, 0).delay(500);
		$("#pnlHub").click(function () { document.cookie = 'tnsstudiovisit=true,path=/'; });
	}
	else
	{
		$("#pnlHub").css('visibility', 'hidden');
	}
}

function initNav()
{
	var nav = getParameterByName("nav");
	if (nav != "") { $(".main-nav").find("#lnk" + nav.toLowerCase()).click(); }
}

function initPlugins(){
	jQuery('.slider').each(function(){
		var _this = jQuery(this),
			_slides = _this.children(),
			_width = _slides.width();
		_slides.css({float:'left', width:_width});
		_this.css({width:'99999px', height:'auto'});
	});
	jQuery('div.gallery').galleryCircle({
		slidesHolder :'.gallery-holder',
		slider:'.carousel',
		fadeSlides:'ul.slide-descriptions > li',
		autoSlide: true,
		switcher:'.paging',
		generateSwitcher:true,
		vertical:false,
		autoHeight:false,
		switchTime: 4000,
		easing: 'swing',
		duration : 900,
		asynchronous:false
	});
	setTimeout(function ()
	{
		jQuery('div.gallery2').galleryCircle({
			slidesHolder: '.gallery-holder',
			slider: '.carousel',
			fadeSlides: '',
			autoSlide: true,
			switcher: '.paging',
			generateSwitcher: true,
			vertical: false,
			autoHeight: false,
			switchTime: 4000,
			easing: 'swing',
			duration: 900,
			asynchronous: false,
			fade: true
		});
	}, 500);
	jQuery('#main').galleryCircle({
		slidesHolder :'#content',
		slider:'.slider',
		autoSlide: false,
		switcher:'.main-nav ul li',
		generateSwitcher:false,
		vertical:false,
		autoHeight:false,
		switchTime: 6000,
		easing:'swing',
		duration : 700,
		asynchronous:false
	});
}

// init circle carousel plugin
jQuery.fn.galleryCircle = function (_options)
{
	// defaults options
	var _options = jQuery.extend({
		btnPrev: 'a.link-prev',
		btnNext: 'a.link-next',
		slidesHolder: '.frame',
		slider: 'ul',
		fadeSlides: 'ul.fade > li',
		autoSlide: false,
		switcher: 'div.swicher .holder .pg-holder',
		generateSwitcher: true,
		vertical: false,
		autoHeight: false,
		switchTime: 6000,
		easing: 'linear',
		duration: 700,
		pauseOnHover: false,
		asynchronous: false,
		fade: false
	}, _options);

	return this.each(function (_galIndex)
	{
		var _holder = $(this);
		var _btnPrev = jQuery(_options.btnPrev, _holder);
		var _btnNext = jQuery(_options.btnNext, _holder);
		var _slidesHolder = jQuery(_options.slidesHolder, _holder);
		var _slider = jQuery(_options.slider, _slidesHolder);
		var _slides = _slider.children();
		var _slidesCount = _slides.length;
		var _slideWidth = _slides.eq(0).outerWidth(true);
		var _slideHeight = _slides.eq(0).outerHeight(true);
		var _currentIndex = 0;
		var _oldIndex = _currentIndex;
		var _animating = false;
		var _timer;
		var _sumWidth = _slidesCount * _slideWidth;
		var _sumHeight = _slidesCount * _slideHeight;
		var switcher = jQuery(_options.switcher, _holder);
		var _vertical = _options.vertical;
		var _waitAnimation = true;
		var _autoSlide = _options.autoSlide;
		var _easing = _options.easing;
		var _switchTime = _options.switchTime;
		var _speed = _options.duration;
		var _autoStopByThumbs = true;
		var _swGenerate = _options.generateSwitcher;
		var _autoHeight = _options.autoHeight;
		var _asynchronous = _options.asynchronous;
		var _fadeSlides = jQuery(_options.fadeSlides);
		var _pauseOnHover = _options.pauseOnHover;
		var _fade = _options.fade;

		_fadeSlides.hide().eq(_currentIndex).show();
		switcher.each(function (_ind)
		{
			jQuery(this).attr('rel', _ind);
		});
		elNum();
		_slider.append(_slides.clone()).append(_slides.clone());
		_slides = _slider.children();
		if (_fadeSlides.length && !_swGenerate)
		{
			switcher.each(function ()
			{
				jQuery(this).click(function ()
				{
					var _ind = jQuery(this).attr('rel');
					if (_ind != _currentIndex)
					{
						_fadeSlides.fadeOut(_speed).eq(_ind).fadeIn(_speed);
					}
				});
			});
		}
		_holder.css({ position: 'relative' });
		if (!_vertical)
		{
			_slider.css({
				position: 'relative',
				left: -_sumWidth,
				height: _slides.eq(0).outerHeight(true)
			});
		} else
		{
			_slider.css({
				position: 'relative',
				top: -_sumHeight,
				height: _slides.eq(0).outerHeight(true)
			});
		}
		_slides.each(function (i, el)
		{
			if (!_vertical)
			{
				_slides.eq(i).css({
					position: 'absolute',
					top: 0,
					left: _slideWidth * i
				});
			} else
			{
				_slides.eq(i).css({
					position: 'absolute',
					top: _slideHeight * i,
					left: 0
				});
			}
			if (_slides.eq(i).find('img').attr('src') && _slides.eq(i).find('img').attr('src').indexOf('.png') != -1)
			{
				_slides.eq(i).find('img').addClass('png');
			}
		})

		// Switcher
		function elNum()
		{
			if (switcher && !_fadeSlides.length || switcher && _swGenerate)
			{
				var switcherEl = '';
				var num = 1;
				var difference = 1;
				if (_swGenerate)
				{
					while (difference <= _slides.length)
					{
						switcherEl += '<li><a href="">' + num + '</a></li>';
						num++;
						difference++;
					}
					switcher.html('<ul class="switcher">' + switcherEl + '</ul>');
					if (_currentIndex != -1)
					{
						switcher.find('li').eq(_currentIndex).addClass('active');
					}
				}
				var link = switcher.find('a');
				link.click(function (_ind)
				{
					if (_currentIndex != link.index(jQuery(this)))
					{
						_currentIndex = link.index(jQuery(this));
						switchSlide();
					}
					if (_autoStopByThumbs && _timer != -1) clearTimeout(_timer)
					switcher.removeClass('active');
					jQuery(this).parent().addClass('active');
					return false;
				});
				//				switcher.hover(
				//					function ()
				//					{
				//						if (_autoStopByThumbs && _timer != -1) clearTimeout(_timer)
				//					},
				//					function ()
				//					{
				//						if (_autoStopByThumbs)
				//						{
				//							clearTimeout(_timer);
				//							//autoslide();
				//						}
				//					}
				//				)
			}
		}
		//gallery control
		_btnPrev.click(function ()
		{
			prevSlide();
			return false;
		});
		_btnNext.click(function ()
		{
			nextSlide();
			return false;
		});
		// gallery animation
		function prevSlide()
		{
			if (_animating) return;
			_currentIndex--;
			switchSlide();
		}
		function nextSlide()
		{
			if (_animating) return;
			_currentIndex++;
			switchSlide();
		}

		// gallery animation
		function switchSlide()
		{
			_animating = true;
			if (_autoHeight) { _holder.animate({ height: _slides.eq(_currentIndex).outerHeight(true) }, { duration: _speed, queue: false }); }
			else if (_fade)
			{
				_slider.fadeOut(function ()
				{
					_slider.animate({ left: -_sumWidth - _currentIndex * _slideWidth }, { duration: 0, queue: false, complete: function ()
					{
						if (_currentIndex == _slidesCount || _currentIndex == -_slidesCount)
						{
							_currentIndex = 0;
							_slider.css({ left: -_sumWidth });
						}
						if (_currentIndex == -1)
						{
							_currentIndex = _slidesCount + _currentIndex;
							_slider.css({ left: -_sumWidth - _currentIndex * _slideWidth });
						}

						_slider.fadeIn();
						_animating = false;
					}
					});
				});
			}
			else if (!_vertical)
			{
				_slider.animate({ left: -_sumWidth - _currentIndex * _slideWidth }, { duration: _speed, queue: false, complete: function ()
				{
					if (_currentIndex == _slidesCount || _currentIndex == -_slidesCount)
					{
						_currentIndex = 0;
						_slider.css({ left: -_sumWidth });
					}
					if (_currentIndex == -1)
					{
						_currentIndex = _slidesCount + _currentIndex;
						_slider.css({ left: -_sumWidth - _currentIndex * _slideWidth });
					}
					_animating = false;
				}
				}, _easing);
			}
			else
			{
				_slider.animate({ top: -_sumHeight - _currentIndex * _slideHeight }, { duration: _speed, queue: false, complete: function ()
				{
					if (_currentIndex == _slidesCount || _currentIndex == -_slidesCount)
					{
						_currentIndex = 0;
						_slider.css({ top: -_sumHeight });
					}
					if (_currentIndex == -1)
					{
						_currentIndex = _slidesCount + _currentIndex;
						_slider.css({ top: -_sumHeight - _currentIndex * _slideHeight });
					}
					_animating = false;
				}
				});
			}
			switcher.find('li').removeClass('active').eq(Math.abs(_currentIndex) == _slidesCount ? 0 : _currentIndex).addClass('active');
			autoSlide();
			autoSlide();
			if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 9)
			{
				_fadeSlides.hide().eq(Math.abs(_currentIndex) == _slidesCount ? 0 : _currentIndex).show();
			} else
			{
				_fadeSlides.fadeOut(_speed).eq(Math.abs(_currentIndex) == _slidesCount ? 0 : _currentIndex).fadeIn(_speed);
			}
		}
		function autoSlide()
		{
			if (!_autoSlide) return;
			if (_timer) clearTimeout(_timer);
			_timer = setTimeout(nextSlide, _switchTime);
		}
		if (_pauseOnHover)
		{
			_holder.hover(function ()
			{
				if (_timer) clearTimeout(_timer);
			}, function ()
			{
				_timer = setTimeout(nextSlide, _switchTime);
			})
		}
		if (!_asynchronous || (_asynchronous && _galIndex == 0))
		{
			autoSlide();
		} else
		{
			if (_galIndex > 0)
			{
				setTimeout(function ()
				{
					autoSlide();
				}, _asynchronous * _galIndex);
			}
		}

		jQuery(window).resize(function ()
		{
			if (_slides.eq(0).parent().hasClass("slider"))
			{
				_slideWidth = $("body").outerWidth(true);
				_sumWidth = _slidesCount * _slideWidth;

				_slides.each(function (i, el) { _slides.eq(i).css({ left: _slideWidth * i, width: _slideWidth }); });
				_slider.css({ left: -_sumWidth - _currentIndex * _slideWidth });
			}
		});
	});
}

function getParameterByName(name)
{
	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if (results == null) { return ""; }
	else { return decodeURIComponent(results[1].replace(/\+/g, " ")); }
}

function loadRss()
{
	var insights = $("#insights");

	if (insights.length > 0)
	{
		jQuery.getFeed(
		{
			url: '../feedproxy.php',
			success: function (feed)
			{
				if (feed != undefined && feed.items)
				{
					var containers = ['#columnA', '#columnB', '#columnC'];

					for (var iItemId = 0; iItemId < feed.items.length; iItemId++)
					{
						if (iItemId < containers.length)
						{
							insights.find(containers[iItemId]).append(getPostHtml(feed.items[iItemId]));
						}
						else
						{
							break;
						}
					}
				}
			}
		});
	}
}

function getPostHtml(item)
{
	var sCode = "", sDate, oDate;
	if (null != (a = item.updated.match(/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/))){oDate = new Date(a[1], a[2]-1, a[3], a[4], a[5], a[6], 0);}else{oDate = new Date(item.updated);}
	sDate = oDate.toDateString();
	
	sCode =
		'<span class="date">' + sDate + '</span>' +
		'<h3 class="bheadline">' + item.title + '</h3>' +
		'<p class="bdesc">' + item.description + 
			'<a href="' + item.link + '" class="button" target="_blank"><strong>Read More</strong><span>&nbsp;</span></a>' +
		'</p>';

	return sCode;
}

function getSinglePost(containerId)
{
	var container = $("#" + containerId);
	if (container.length > 0)
	{
		jQuery.getFeed(
		{
			url: '../feedproxy.php',
			success: function (feed)
			{
				if (feed != undefined && feed.items)
				{
					if (feed.items.length > 0)
					{
						var item = feed.items[0];
						var sCode = '<h3>' + item.title + '</h3>' + '<p>' + item.description + '</p>' + '<a href="' + item.link + '" class="button" target="_blank"><strong>Read More</strong><span>&nbsp;</span></a>';
						container.append(sCode);
					}
				}
			}
		});
	}
}
