/*
Adapted from:
	Simple JavaScript Templating
	John Resig - http://ejohn.org/ - MIT Licensed
*/
(function(){
	var cache = {};

	this.tmpl = function (id) {
		return cache[id];
	};
	this.tmpl.add = function (id, src) {
		cache[id] = new Function("context",
			"var p=[],print=function(){p.push.apply(p,arguments);};" +
			"p.push('" +
				// Convert the template into pure JavaScript
				src
				.replace(/[\r\t\n]/g, " ")
				.split("{%").join("\t")
				.replace(/((^|%})[^\t]*)'/g, "$1\r")
				.replace(/{{(.*?)}}/g, "',$1,'")
				.split("\t").join("');")
				.split("%}").join("p.push('")
				.split("\r").join("\\'")
			+ "');return p.join('');"
		);
		return cache[id];
	};
})();

tmpl.add('box-user-profile',
	'<div class="box-header"><h1><span>Perfil</span></h1></div>' +
	'<div class="box-content">' +
		'{% if (context.avatar_url) { %}' + 
		'<p class="avatar"><img src="/media/pix.png" width="50" height="50" /></p>' +
		'{% } %}' + 
		'<h1>{{ context.username }}</h1>' +
		'<p>{{ context.full_name }}</p>' +
		'<p><a href="{{ context.logout_url }}?next={{ document.location.pathname }}">Sair</a></p>' +
	'</div>'
);

/* POP-UP RÁDIO AO VIVO */
$('#now-playing li.play a').live('click', function(e){
	e.preventDefault()
	var self = $(this);
	var w = window.open(self.attr('href'), 'live', 'scrollbars=0,width=450,height=130');
	if (!w) alert('Desative seu bloqueador de pop-ups para ouvir a rádio.');
});

$(function(){
	/* Alterna o sub-menu ao passar o mouse no item pai.
	 * O IE6 não suporta o seletor ":hover", então é utilizada
	 * uma classe ".hover" no lugar.
	 */
	if ($.browser.msie && $.browser.version.substr(0, 1) == '6') {
		$('#nav ul>li').hover(function(){
			$(this).addClass('hover');
		},
		function(){
			$(this).removeClass('hover');
		});
	};

	// Ativa a classe "js" no body para ativar estilos
	// ligados a funcionalidades dinâmicas
	$('body').addClass('js');
	
	/* POLLS */	
	(function(){
		// Verifica se existe uma enquete
		var box_poll = $('#box-poll');
		if (box_poll.length == 0) return;
		var box_content = $('.box-content', box_poll);
		var poll_url = $('.box-header h1 em', box_poll).text();	
		
		var load_callback = function(){
			var form = $('form', box_content);
			var action_url = form.attr('action');
			var statistics_url = $('a', form);
			
			form.submit(function(event){
				event.preventDefault();
				var choice = $('input[type=radio]:checked').val();
				$.ajax({
					url: action_url,
					dataType: 'json',
					type: 'POST',
					cache: false,
					data: ({choices: choice}),
					success: function (data) {
						if (data['status'] != 'ok') {
							return false;
						}
						box_content.load(statistics_url.attr('href') +'?r='+Math.random());
					}
				});
			});
			
			statistics_url.click(function(event){
				event.preventDefault();
				box_content.load(statistics_url.attr('href') +'?r='+Math.random());
			});
		}
		
		// Carrega a enquete
		box_content.load(poll_url +'?r='+Math.random(), load_callback);
		
	})();
	

	/* BOX DE PERFIL / LOGIN */
	
	(function(){
		// Verifica se o box existe
		var user_box = $('#box-user');
		if (user_box.length == 0) return;

		// Preenche o campo next se não existir
		var form = $('form', user_box);
		var next = $('input[name=next]', form);
		if (next.length == 0) {
			$('<input/>', {name: 'next', type: 'hidden', value: document.location.pathname}).appendTo(form);
		}
		
		// Injeta um csrf válido no box para evitar problemas de cache
		$.ajax({
			url: '/contas/login/',
			dataType: 'html',
			cache: false,
			success: function(data){
				var inner_form = $(data).find('.box-content form');
				var csrf = $('input[name=csrfmiddlewaretoken]', inner_form).val();
				var box_csrf = $('input[name=csrfmiddlewaretoken]', form);
				box_csrf.attr('value', csrf);		
			}
		});		
		
		
		// Carrega informações do usuário, se estiver logado
		// troca o formulário pelo box do perfil
		var user_box_template = tmpl('box-user-profile');
		$.ajax({
			url: '/contas/info/',
			dataType: 'json',
			cache: false,
			success: function (data) {
				user_box.html(user_box_template(data));
			}
		});
	})();

	/* ABAS DE PROGRAMAÇÃO */
	(function(){
		var tabContainers = $('div.tabs > div > div');
		
		$('div.tabs ul.tabNavigation a').click(function () {
			tabContainers.hide().filter(this.hash).show();
			
			$('div.tabs ul.tabNavigation a').removeClass('active');
			$(this).addClass('active');
			
			return false;
		}).filter(':first').click();
	 })();
	 
	/* BUSCA DA RADIOTECA */
	(function(){
		var search_form = $('#radio-search');
		if (search_form.length == 0) return;
		var start_date = $('#id_start_date', search_form);
		var end_date = $('#id_end_date', search_form);
		
		start_date.mask("99/99/9999");
		end_date.mask("99/99/9999");
	})();
	 
	/* GALERIA DE IMAGEM */
	(function(){
		var gal = $('.media-gallery');
		if (gal.length == 0) return;

		var detail = $('.detail', gal);
		var thumbs = $('.thumbs', gal);
		var thumb_list = $('ul', thumbs);

		var pic = $('p img', detail);
		var desc = $('p:eq(1)', detail);
		pic.removeAttr('height');

		pic.load(function(){
			detail.fadeIn();
		});

		$('li a', thumbs).click(function(e){
			e.preventDefault();
			var self = $(this);
			var thumb = self.find('img');
			detail.fadeOut(function(){
				pic.attr('src', self.attr('href'));
				pic.attr('title', self.attr('title'));
				desc.text(thumb.attr('alt') || self.attr('title'));
			});
		});

		var max_scroll = thumb_list.attr('scrollHeight') - thumb_list.height();
		var offset = $('li', thumbs).eq(0).outerHeight();
		var scroll = function (e) {
			e.preventDefault();
			var pos = thumb_list.scrollTop() + e.data * offset;
			thumb_list.animate({scrollTop: pos}, 200, function(){
				bt_up.fadeTo(100, (pos <= 0) ? .5 : 1);
				bt_down.fadeTo(100, (pos >= max_scroll) ? .5 : 1);
			});
		};
		var make_bt = function (klass, dir) {
			return $('<p/>').addClass(klass).append($('<a/>').attr('href', '#'))
				.bind('click', dir, scroll);
		};

		var bt_up = make_bt('up', -1).prependTo(thumbs).hide().slideDown();
		var bt_down = make_bt('down', 1).appendTo(thumbs).hide().slideDown();

		// Simula o click para ajustar o estado dos botões
		bt_up.click();

	})();
	 
	/* COMENTÁRIOS */
	(function(){
		var bt = $('.comments p a.popup');
		bt.click(function(e){
			e.preventDefault();
			var self = $(this);
			var w = window.open(self.attr('href'), '', 'scrollbars=1,resizable=1,width=732,height=500');
			if (!w) alert('Desative seu bloqueador de pop-ups.');
		});
	})();

});

