// page init
$(function() {
	initAjaxTabs();
	initStarsJS($('body'));
	ieHover('#how-to-play li, .secret-star, .stars ul li');

	$('.secret-star').hide();
	$.preloadCssImages(showStars);
});

function showStars()
{
	$('.secret-star:not(.secret-star-step)').fadeIn('slow');
}

// ajax tabs function
function initAjaxTabs() {
	var _fadeSpeed = 450;
	var _inactiveOpacity = 0.4;
	var _activeClass = 'active';

	$('div.tabs-area').each(function(){
		var _holder = $(this);
		var _bgHolder = _holder.find('div.bg-holder');
		var _tabsHolder = _holder.find('div.holder');
		var _tabset = $('ul.tab-nav a, a.ajax-tab-loader');
		var _logo = $('h1 a.logo');
		var _animating = false;

		_tabset.click(function(){
			if(_animating) return false;
			_animating = true;
			var _opener = $(this);
			var _src = _opener.attr('href');

			setTimeout("$('embed').each(function (i, movie) { movie.focus(); })", 2000);

			var _current = _tabsHolder.find('div[rel="'+_src+'"]');
			var _visible = _tabsHolder.find('>div:visible');

			// ajax content load, if needed
			if(!_tabsHolder.find('div[rel="'+_src+'"]').length) {
				toggleState(false, function(){
					$.ajax({
						global: false,
						url: _src,
						type: "GET",
						dataType: "html",
						success: function(msg){
							var _content = $(msg).hide();
							_content.attr('rel',_src);
							_tabsHolder.append(_content);
							initContentJS(_content);
							if(_visible.length) _visible.fadeOut(_fadeSpeed,function(){_content.fadeIn(_fadeSpeed,function(){_animating=false});});
							else _content.fadeIn(_fadeSpeed,function(){_animating=false});
						},
						error: function(msg){
							alert('AJAX Error!');
							return false;
						}
					});
				});
			}
			// switch tabs
			else {
				toggleState(false, function(){
					if(!_current.is(':visible')) {
						if(_visible.length) _visible.fadeOut(_fadeSpeed,function(){_current.fadeIn(_fadeSpeed,function(){_animating=false});});
						else _current.fadeIn(_fadeSpeed,function(){_animating=false});
					}
				});
			}
			_tabset.parent().removeClass(_activeClass);
			_opener.parent().addClass(_activeClass);
			return false;
		});

		// switch opacity state function
		function toggleState(_state, _func) {
			_bgHolder.animate({opacity:(_state ? 1 : _inactiveOpacity)},{duration:_fadeSpeed, queue:false,complete:function(){
				if(_func && typeof _func === 'function') {
					_func();
				}
			}});
		}

		// hide tabs on logo click
		_logo.click(function(){
			_tabsHolder.find('>div:visible').fadeOut(_fadeSpeed);
			_tabset.parent().removeClass(_activeClass);
			toggleState(true);
			_tabsHolder.find('.secret-star').eq(0).fadeIn(_fadeSpeed);
			return false;
		});
	});
}

function initContentJS(_obj) {
	var _activeClass = 'active';
	var _fadeSpeed = 300;

	// init steps hover
	var _steps = _obj.find('ul.popup-list > li');
	if(_steps.length) {
		var _hoveredCount = 0;
		var _needCount = _steps.length;
		_obj.find('ul.popup-list > li').each(function(){
			var _holder = $(this);
			var _opener = _holder;
			var _popup = _holder.find('.steps-popup').hide();
			var _timer;
			_opener.hover(function(){
				if(_timer) clearTimeout(_timer);
				_obj.find('.steps-popup:visible').not(_popup).fadeOut(_fadeSpeed);
				_timer = setTimeout(function(){
					_popup.fadeIn(_fadeSpeed);
				},_fadeSpeed);

				// show secret star if hovered all
				if(!this.hoveredonce) {
					this.hoveredonce=true;
					_hoveredCount++;
					if(_hoveredCount == _needCount) $('.secret-star-step').fadeIn(_fadeSpeed);
				}
			},function(){
				if(_timer) clearTimeout(_timer);
				_timer = setTimeout(function(){
					_popup.fadeOut(_fadeSpeed);
				},_fadeSpeed);
			})
		});
	}

	// init screenshots hover
	var _thumbs = _obj.find('.frame li a');
	var _pics = _obj.find('.iphone ul.slideset li').hide();
	_pics.eq(0).show()
	if(_thumbs.length && _pics.length) {
		_thumbs.each(function(_ind){
			$(this).hover(function(){
				_thumbs.removeClass(_activeClass);
				_pics.hide().eq(_ind).show();
				$(this).addClass(_activeClass);
			});
			$(this).click(function(){
				_thumbs.removeClass(_activeClass);
				_pics.hide().eq(_ind).show();
				$(this).addClass(_activeClass);
				return false;
			});
		});
	}

	// init bonus stars for content
	initStarsJS(_obj);

	// init popups
	var _shownClass = 'shown';
	var _infoBlocks = _obj.find('ul.tab-buy li');
	_infoBlocks.each(function(){
		var _holder = $(this);
		var _opener = _holder.find('>a');
		var _popup = _holder.find('>div').hide();

		if (_opener.hasClass('buy-app-store') || _opener.hasClass('buy-app-world'))
			return;

		// toggle popup
		_opener.click(function(){
			if(_holder.hasClass(_shownClass)) {
				_popup.fadeOut(_fadeSpeed);
				_holder.removeClass(_shownClass);
			} else {
				_infoBlocks.filter('.'+_shownClass).not(_holder).removeClass(_shownClass).find('>div').fadeOut(_fadeSpeed);
				_holder.addClass(_shownClass)
				_popup.fadeIn(_fadeSpeed);
			}
			return false;
		});

		// close popup
		_popup.find('.close').click(function(){
			_popup.fadeOut(_fadeSpeed);
			_holder.removeClass(_shownClass);
		});
	});

	// IE hover
	if ($.browser.msie && $.browser.version < 7) {
		_obj.find('.secret-star').hover(function() {
			$(this).addClass('hover');
		}, function() {
			$(this).removeClass('hover');
		});
	}
}

// stars js
function initStarsJS(_obj) {
	var _moveSpeed = 350;
	var _activeClass = 'active';
	var _collectedStars = $('#collected-stars > li');

	_obj.find('div.secret-star').each(function(){
		var _holder = $(this);
		var _opener = _holder.find('a.lnk')
		var _starNumber = parseInt(_holder.attr('title'))-1;
		_holder.removeAttr('title');

		_opener.click(function(){
			var _offsetLeft = $('#wrapper').offset().left;
			var _srcPosition = _holder.offset();
			var _dstPosition = _collectedStars.eq(_starNumber).offset();
			_holder.find('.popup').hide();
			_holder.animate({left:_dstPosition.left-_offsetLeft,top:_dstPosition.top},{duration:_moveSpeed,queue:true,complete:function(){
				_collectedStars.eq(_starNumber).addClass(_activeClass);
				_holder.hide();

				// call function when all stars collected
				if(_collectedStars.filter('.'+_activeClass).length == _collectedStars.length) allStarsCollected();
			}})
			return false;
		});
	});
}

// all stars collected
function allStarsCollected() {
	var _stayTime = 5000;
	var _fadeSpeed = 350;
	$('#collected-stars').fadeOut(_fadeSpeed,function(){
		$('#play-button').fadeIn(_fadeSpeed);
		$('#play-info').fadeIn(_fadeSpeed);
		setTimeout(function(){$('#play-info').fadeOut(_fadeSpeed);},_stayTime);
	});
}

// hover for IE
function ieHover(_list) {
	if ($.browser.msie && $.browser.version < 7) {
		$(_list).hover(function() {
			$(this).addClass('hover');
		}, function() {
			$(this).removeClass('hover');
		});
	}
}