(function($){

$.extend($.support, {
	touchscreen: 'ontouchstart' in window,
	transition: (function(){
		var div = document.createElement('div'),
		ret = false,
		transexp = /^(-(.*)-)?transition/;
		div.innerHTML = '<div style="-moz-transition:color 1s linear;-o-transition:color 1s linear;-webkit-transition:color 1s linear;-ms-transition:color 1s linear;transition:color 1s linear;"></div>';
		var style = div.firstChild.style;
		for (var i = 0, l = style.length; i < l; i++) {
			if (transexp.test(style[i])) {
				ret = transexp.exec(style[i])[2] || '';
				if (ret == 'moz') ret = 'transitionend';
				else ret += ret ? 'TransitionEnd' : 'transitionend';
				break;
			}
		}
		delete div;
		return ret;
	})()
});

})(jQuery);

(function($){

$.fn.cloneChildren = function(maxnum){
	return this.each(function(){
		if (!$(this).children().length) return true;
		while ($(this).children().length < maxnum)
			$(this).children().clone().appendTo(this);
	});
};

$.fn.noop = $.noop;

var
touchscreen = $.support.touchscreen,
transitionend = $.support.transition,
interval = 0,
ul = $('header > #sets > ul')[transitionend ? 'cloneChildren' : 'noop'](10),
slides = window.slides = ul.children('li'),
slideslinks = slides.children('a'),
controls = ul.after('<div class="slidenav"><span class="prev"><span></span><span></span></span><span class="next"><span></span><span></span></span></div>').next(),
numslides = slides.length,
middleslide = (numslides-1)/2,
slide = 0,
timer = null,
hovered = false,
kbactdeact = false,
kbactive = false,
cancelclick = false;


function refreshslides() {
	slides
	.each(function(){
		$(this).css('z-index', $(this).css('z-index')-1);
	})
	.eq(slide)
		.removeClass('hidden prev next')
		.css('z-index', numslides)
		.find('img')
			.removeClass()
		.end()
	.end()
	.slice(0, slide)
		.removeClass('next').addClass('hidden prev')
	.end()
	.slice(slide+1)
		.removeClass('prev').addClass('hidden next')
	;
	
	if (slide < middleslide)
		slides.slice(slide+middleslide+1).removeClass('next').addClass('prev');
	if (slide > middleslide)
		slides.slice(0, slide-middleslide).removeClass('prev').addClass('next');
}

function cycleslide(prev) {
	if (ul.hasClass('byebye')) return false;
	slide = (slide + (prev === true ? numslides - 1 : 1)) % numslides;
	setTimeout(refreshslides, 1);
	if (kbactive) slideslinks.eq(slide).focus();
	return false;
}

function endcycle() {
	clearInterval(timer);
	timer = null;
}

function startcycle() {
	if (timer === null && interval) timer = setInterval(cycleslide, interval);
}

if (transitionend) {
	ul.delegate('img', transitionend, function(e){
		if ($(this).closest('li').is('.hidden')) {
			$(this).addClass('suppresstrans');
		}
	});
}

/**
 * XXX HACK XXX
 * Firefox < 4, <a>, <hgroup> e <hX> 
 * Remover quando se encerrar o suporte oficial ao Firefox 3.6
 */
$('#sets, #hilites').find('h2, h3').each(function(){
	if (!$(this).parent().is('hgroup')) {
		$(this).html($(this).text())
		.siblings('a').children('hgroup').append(this);
	}
});


// mouse
controls
.delegate('.prev, .next', 'touchmove', function(){
	if (!cancelclick) {
		cancelclick = true;
		$(this).trigger('mouseup');
	}
	return true;
})
.delegate('.prev, .next', touchscreen ? 'touchstart' : 'mousedown', function(e){
	$(this).addClass('active ' + (touchscreen ? 'touch' : ''));
	deactivatekbd(e);
})
.delegate('.prev, .next', touchscreen ? 'touchend' : 'mouseup', function(e){
	e.preventDefault();
	if (!cancelclick) {
		endcycle();
		if (touchscreen) startcycle();
		cycleslide($(this).hasClass('prev'));
	}
	$(this).removeClass('active touch');
	deactivatekbd(e);
	cancelclick = false;
});

if (!touchscreen) ul.closest('section').delegate('ul, div', 'hover', function(e){
	deactivatekbd(e);
	if (e.type == 'mouseenter') {
		hovered = true;
		endcycle();
	}
	if (e.type == 'mouseleave') {
		hovered = false;
		startcycle();
	}
});


// teclado


function activatekbd(e) {
	if (kbactdeact || kbactive) return true;
	kbactdeact = true;
	endcycle();
	slideslinks.attr('tabindex', -1).eq(slide).focus();
	kbactive = true;
	ul.addClass('focus');
	kbactdeact = false;
	return false;
}

function deactivatekbd(e) {
	if (kbactdeact || !kbactive) return true;
	kbactdeact = true;
	slideslinks.removeAttr('tabindex').blur();
	if (e.type == 'focusout') startcycle();
	ul.removeClass('focus');
	kbactdeact = kbactive = false;
}

ul
.live('focus', activatekbd)
.live('blur', deactivatekbd)
.delegate('a', 'keydown', function(e){
	switch (e.which) {
		case 37:
			controls.find('.prev').addClass('active');
			return false;
		case 39:
			controls.find('.next').addClass('active');
			return false;
	}
})
.delegate('a', 'keyup', function(e){
	switch (e.which) {
		case 37:
			controls.find('.prev').removeClass('active');
			return cycleslide(true);
		case 39:
			controls.find('.next').removeClass('active');
			return cycleslide();
	}
});


// iku zo


slides.not(':first').addClass('hidden').find('img').addClass('suppresstrans');
if (touchscreen) controls.addClass('touch');
refreshslides();
startcycle();

})(jQuery);





(function($){

function cycletweets(tweets) {

var

INTERVAL = 5000,
interval,

tweetpane =
$('#twitter > ul')
.hover(function(e){
	clearInterval(interval);
	if (e.type == 'mouseleave') interval = setInterval(cycle, INTERVAL);
}),

index = false,
transitionend = $.support.transition;

function post_transition(e) {
	if (e && e.target != this) return true;
	var current = tweets
	.detach()
	.removeClass('slideup slidedown')
	.addClass('hidden')
	.eq(index).prependTo(tweetpane);
	setTimeout(function(){
		current.removeClass('hidden');
	}, 13);
}
function cycle(back) {
	if (index === false) {
		index = 0;
		post_transition();
		return;
	}
	index = index + (back === true ? -1 : 1);
	if (index < 0) index += tweets.length;
	else index %= tweets.length;
	if (transitionend)
		tweetpane
		.children(':first').removeClass('slideup slidedown')
		.addClass('slide' + (back ? 'up' : 'down'));
	else post_transition();
	return false;
}
tweets.css('display', tweets.css('display'));
tweetpane=tweetpane/*.after('<a id="tweetsobe" href="#">Sobe</a><a id="tweetdesce" href="#">Desce</a>')*/.html('');
/*$('#tweetsobe').click(function(){return cycle(true)});
$('#tweetdesce').click(cycle);*/
if (transitionend) {
	tweetpane
	.delegate('li', transitionend, post_transition);
}
interval = setInterval(cycle, INTERVAL);
cycle();



}



function format_interval(timestamp, granularity) {
	var units = {'1 ano|@count anos' : 31536000000, '1 semana|@count semanas' : 604800000, '1 dia|@count dias' : 86400000, '1 hora|@count horas' : 3600000, '1 minuto|@count minutos' : 60000, '1 segundo|@count segundos' : 1000};
	var output = '';
	for (var key in units) {
		value = units[key];
		key = key.split('|');
		if (timestamp >= value) {
			var val = Math.floor(timestamp / value);
			output += (output ? ' ' : '') + val >= 2 ? key[1].replace('@count', ''+val) : key[0];
			timestamp %= value;
			granularity--;
		}

		if (granularity == 0) {
			break;
		}
	}
	return output ? output : '0 segundo';
}

function check_plain(str) {
  str = String(str);
  var replace = { '&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;' };
  for (var character in replace) {
    var regex = new RegExp(character, 'g');
    str = str.replace(regex, replace[character]);
  }
  return str;
}

var tweets = $('#twitter > ul').addClass('twitter-processed').html('<li><q>&nbsp;</q></li>'),
user = 'fiestaintruders';

$.get('http://api.twitter.com/1/statuses/user_timeline/'+user+'.json', {include_rts: true}, function(data, status){
	var tweetlist = $(), now = new Date();
	$('#twitter .overlay').remove();
	$.each(data, function() {
		var
		tweet = this.retweeted_status || this,
		turl = 'http://twitter.com/'+tweet.user.screen_name+'/status/'+tweet.id;
		text = $('<q cite="'+turl+'">'+(tweet.text
			.replace(/\b(((?:https?|ftp|mailto|smb|afp|file|gopher|news|ssl|sslv2|sslv3|tls|tcp|udp)\:\/\/|www\.).+?)(?=[!?,.\)]*(?:\s|$))/g, function(m0, m1, m2) {
				var http = m2 == 'www.' ? 'http://' : '';
				return '<a href="'+ http + m1 +'" title="'+ m1 +'">'+ check_plain(m1) +'</a>';
			})
			.replace(/\B\@([a-zA-Z0-9_]{1,20}(?:\/\w+)?)/g, '@<a href="http://twitter.com/$1">$1</a>')
			.replace(/\B\#(\w+)/gi, '<a href="http://twitter.com/search?q=%23$1">#$1</a>'))+'</q>')
			.toggleClass('retweet', !!this.retweeted_status)
		,
		pdate = new Date(this.created_at);
		if (isNaN(pdate)) pdate = new Date(this.created_at.replace(/(?= [+-]\d{4})/, 'UTC'));
		tweetlist = tweetlist.add($('<li></li>')
		.append(text)
		.append($('<p></p>')
		.append(this.retweeted_status ? 'Retwittado de <a href="http://twitter.com/'+tweet.user.screen_name+'">'+tweet.user.screen_name+'</a> · ' : '')
		.append($('<time></time>').attr('datetime', pdate.toJSON()).html('<a href="'+turl+'">Há '+format_interval(now - pdate, 1)+'</a>'))
		));
	});
	cycletweets(tweetlist);
}, 'jsonp');

})(jQuery);


(function($) {
  var _573Listeners = [];
  var progress = [];

  $.extend({
    _573: function(callback, sequence) {
      sequence = typeof(sequence) != 'undefined' ? sequence : [38, 38, 40, 40, 37, 39, 37, 39, 66, 65];
      _573Listeners.push({'callback': callback, 'sequence': sequence});
    }
  });

  $(document).bind("keyup", function(event) {
    progress.push(event.keyCode);
    $.each(_573Listeners, function(index, listener) {
      // Only compare if it's a possible full match.
      if (progress.length >= listener.sequence.length) {
        // Create a target sequence that is the same length as the progress.
        var target = progress.slice(progress.length - listener.sequence.length);
        // Check if the result is the same.
        var equals = true;
        for (var i = 0; i < target.length; i++) {
          if (target[i] != listener.sequence[i]) {
            equals = false;
            break;
          }
        }
        if (equals) {
          // Reset the progress and invoke the listener.
          progress = [];
          listener.callback();
          return false;
        }
      }
    });
    // Keep the progress length sane.
    if (progress.length > 40) {
      progress = progress.slice(25);
    }
  });
})(jQuery);

(function($) {

var done = false,
finished = false,
player = null,
interval = null,
set = $('body > header > #sets > ul');
function realaddyt() {
	if (!window.swfobject) return;
	clearInterval(interval);
	if (!window.onYouTubePlayerReady) {
		window.ee_statechange = function(s) {
			switch (s) {
				case 5:
				finished = false;
				setTimeout(function(){player.playVideo()}, 1);
				break;

				case 0:
				setTimeout(function() {
					finished = true;
					$('#eevid').after(set).detach();
					setTimeout(function(){set.removeClass('byebye')}, 13);
				}, 1000);
				break;
			}
		};
		window.onYouTubePlayerReady = function(playerId) {
			if (playerId != 'eevid') return;
			player.addEventListener("onStateChange", "ee_statechange");
			player.cueVideoById(['8CS9AyAdSjs', 'SqVyutksFGc', 'qjDJd6Ay5jw', 'LZqO4Nw4uVo'][new Date() % 3]);
		};
	}
	set.after('<div id="eevid"><div id="eevid_obj"></div></div>').detach();
	swfobject.embedSWF(
		"http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=eevid",
		"eevid_obj", "960", "960", "8", null, null,
		{ allowScriptAccess: "always", wmode: "transparent" },
		{ id: "eevid_obj" },
		function(s){ if (s.success) player = s.ref; }
	);
}

function addyt(e) {
	if (e && e.target != this || finished) return true;
	interval = setInterval(realaddyt, 100);
}

$._573(function(){
	if (done) return;
	done = true;

	if (!window.swfobject) $.get('http://ajax.googleapis.com/ajax/libs/swfobject/2/swfobject.js', function(){}, 'script');
	if ($.support.transition)
		set.addClass('byebye').bind($.support.transition, addyt);
	else addyt();
});

})(jQuery);

