JSGestorArtigos = new Class({

	// ----------------------------------------------------------------------------------------------------
	initialize: function() {
	},

	// ----------------------------------------------------------------------------------------------------
	mostraDetalhes: function(idArtigo, mostra) {

		if(mostra) {
			$('mais_div_' + idArtigo).setStyle('display', 'block');
			$('menos_div_' + idArtigo).setStyle('display', 'none');
		} else {
			$('mais_div_' + idArtigo).setStyle('display', 'none');
			$('menos_div_' + idArtigo).setStyle('display', 'block');
		}

	},

	// ----------------------------------------------------------------------------------------------------
	validaArtigo: function(form) {
	// Da inicio a sequencia de funcoes de validacao:
	// - titulo
	// - autor (se for novo, usa ajax para validar)
	// - lingua (se for nova, usa ajax para validar)
	// - icone
	// Reporta erro(s) ou envia

		var errorArray = new Array();

		// Espera
		$('btn_submit').value = "Aguarde...";

		// -------
		// Validar
		// -------

		// Titulo
		var titulo = $('titulo').value = $('titulo').value.clean();
		if(titulo.length  < 3) errorArray.push("O t&iacute;tulo tem menos que 3 caracteres");

		// Autor
		var isNovoAutor = $('autor_select').selectedIndex == $('autor_select').length - 1;
		if(isNovoAutor) {
			var nomeNovoAutor = $('autor_novo').value.clean();
			$('autor_novo').value = nomeNovoAutor;
			if(nomeNovoAutor.length < 3) {
				errorArray.push("O nome do novo autor tem menos que 3 caracteres");
			} else {
				var nomeNovoAutor = $('autor_novo').value.clean();
				new Request.HTML({
					url: 'modulos/artigos/verifica_autor_novo.ajax.php',
					async: false,
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
						if(responseHTML.clean() != 0) errorArray.push('J&aacute; existe um autor com este nome');
					}
				}).get({nome_autor: nomeNovoAutor});
			}
		}

		// Lingua
		var isNovaLingua = $('lingua_select').selectedIndex == $('lingua_select').length - 1;
		if(isNovaLingua) {
			var nomeNovaLingua = $('lingua_nova').value.clean();
			$('lingua_nova').value = nomeNovaLingua;
			if(nomeNovaLingua.length < 3) {
				errorArray.push("O nome da nova l&iacute;ngua tem menos que 3 caracteres");
				this.validaIcone(errorArray);
			} else {
				var nomeNovaLingua = $('lingua_nova').value.clean();
				new Request.HTML({
					url: 'modulos/artigos/verifica_lingua_nova.ajax.php',
					async: false,
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
						if(responseHTML.clean() != 0) errorArray.push('J&aacute; existe uma l&iacute;ngua com este nome');
					}
				}).get({nome_lingua: nomeNovaLingua});
			}
		}

		// Icone
		if($('novo_icone').value != '') {
			var extArray = ['jpg', 'jpeg', 'gif', 'png'];
			var ext = $('novo_icone').value.substr($('novo_icone').value.lastIndexOf('.') + 1).toLowerCase();
			if(!extArray.contains(ext)) errorArray.push("O novo &iacute;cone n&atilde;o &eacute; v&aacute;lido");
		}

		// Enviar ou reportar erros
		if(errorArray.length > 0) {
			$('btn_submit').value = "Salvar";
			utils.mostraErrorArray(errorArray, 'salvar');
		} else {
			switch(form.getProperty('id')) {
				case 'form_criar_artigo':
					form.action = '?l=' + $('l').value + '&p=' + $('seccao_select').value + '&a=salvar_artigo_novo';
					break;
				case 'form_editar_artigo':
					form.action = '?l=' + $('l').value + '&p=' + $('seccao_select').value + '&a=salvar_artigo_editado';
					break;
				case 'form_adicionar_traducao':
					form.action = '?l=' + $('l').value + '&p=' + $('id_seccao').value + '&a=salvar_traducao';
					break;
			}
			form.submit();
		}

	},

	// ----------------------------------------------------------------------------------------------------
	validaTraducao: function() {
	// Da inicio a sequencia de funcoes de validacao:
	// - titulo
	// - autor (se for novo, usa ajax para validar)
	// - lingua (se for nova, usa ajax para validar)
	// - icone
	// Reporta erro(s) ou envia

		var errorArray = new Array();

		// Espera
		$('btn_submit').value = "Aguarde...";

		// -------
		// Validar
		// -------

		// Titulo
		var titulo = $('titulo').value = $('titulo').value.clean();
		if(titulo.length  < 3) errorArray.push("O t&iacute;tulo tem menos que 3 caracteres");

		// Lingua
		var isNovaLingua = $('lingua_select').selectedIndex == $('lingua_select').length - 1;
		if(isNovaLingua) {
			var nomeNovaLingua = $('lingua_nova').value.clean();
			$('lingua_nova').value = nomeNovaLingua;
			if(nomeNovaLingua.length < 3) {
				errorArray.push("O nome da nova l&iacute;ngua tem menos que 3 caracteres");
				this.validaIcone(errorArray);
			} else {
				var nomeNovaLingua = $('lingua_nova').value.clean();
				new Request.HTML({
					url: 'modulos/artigos/verifica_lingua_nova.ajax.php',
					async: false,
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
						if(responseHTML.clean() != 0) errorArray.push('J&aacute; existe uma l&iacute;ngua com este nome');
					}
				}).get({nome_lingua: nomeNovaLingua});
			}
		}

		// Enviar ou reportar erros
		if(errorArray.length > 0) utils.mostraErrorArray(errorArray, 'salvar');
		else $('form_adicionar_traducao').submit();

	},

	// ----------------------------------------------------------------------------------------------------
	trocaNovoAutor: function() {

		var autor_select = $('autor_select');
		var value = autor_select.options[autor_select.selectedIndex].value;
		var autor_novo = $('autor_novo');
		if(value == 0) autor_novo.setStyle('visibility', 'visible');
		else autor_novo.setStyle('visibility', 'hidden');

	},

	// ----------------------------------------------------------------------------------------------------
	trocaNovaLingua: function() {

		var lingua_select = $('lingua_select');
		var value = lingua_select.options[lingua_select.selectedIndex].value;
		var lingua_nova = $('lingua_nova');
		if(value == 0) lingua_nova.setStyle('visibility', 'visible');
		else lingua_nova.setStyle('visibility', 'hidden');

	},

	// ----------------------------------------------------------------------------------------------------
	criaCalendario: function() {

		Calendar.setup({
			flat         : "calendario",	// ID of the parent element
			flatCallback : function dateChanged(calendar) {
				// Beware that this function is called even if the end-user only
				// changed the month/year.  In order to determine if a date was
				// clicked you can use the dateClicked property of the calendar:
				if(calendar.dateClicked) {
					var y = calendar.date.getFullYear();
					var m = 1 + calendar.date.getMonth();     // integer, 0..11
					var d = calendar.date.getDate();      // integer, 1..31
					var showDate = "";
					showDate += d < 10 ? "0" + d : d;
					showDate += "-";
					showDate += m < 10 ? "0" + m : m;
					showDate += "-";
					showDate += y;
					$('calendario').setStyle('display', 'none');
					$('timestamp').setStyle('display', 'block');
					$('timestamp').value = showDate;
				}
			}
		});

	},

	// ----------------------------------------------------------------------------------------------------
	apagaArtigo: function(pagina, titulo, id) {

		msgr.show({
			tipo: 'confirm',
			html: 'Apagar o artigo <strong>' + titulo + '</strong>?<br />As tradu&ccedil;&otilde;es e os ficheiros anexados tamb&eacute;m ser&atilde;o apagados.',
			onComplete: function(ok) {
				if(ok) window.location.href = '?l=pt&p=' + pagina + '&a=apagar_artigo&id=' + id;
			}
		});

	}

});
