JSNewsletterManager = new Class({

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

	// ----------------------------------------------------------------------------------------------------
	installHandlersOnSubscribe: function() {

		new Asset.image('menu_topo/subscrev_over.gif');
		$('img_subscricao').setStyle('cursor', 'pointer');
		$('img_subscricao').addEvents({
/*			'mouseover': function() {
				this.src = 'menu_topo/subscrev_over.gif';
				$('tr_subscricao').setStyle('background', '#1E1E1E');
			},
			'mouseout': function() {
				this.src = 'menu_topo/subscrev_up.gif';
				$('tr_subscricao').setStyle('background', '#333333');
			},*/
			click: function() {
				newsletterManager.subscribe();
			}
		});

		$('email').isVirgin = true;
		$('email').addEvent(
			'click',
			function() {
				if(this.isVirgin) this.value = '';
				this.isVirgin = false;
			}
		);

	},

	// ----------------------------------------------------------------------------------------------------
	subscribe: function() {

		$('email').setStyle('cursor', 'wait');
		var email = $('email').getValue();
		if(!this.emailCheck(email)) {
			alert('O email que indicou não é válido.');
		} else {
			new Ajax(
				'conteudos/newsletter/ajax/registar_email.php',
				{
					method: 'post',
					data: 'email=' + email,
					onComplete: function(responseText) {
						if(responseText != '0') alert('O email que indicou já se encontra registado');
						else {
							alert('Obrigado por se registar na newsletter');
							$('email').value = 'Subscrição: Newsletter';
							$('email').isVirgin = true;
							pageTracker._trackPageview("/Registo na newsletter");
						}
						$('email').setStyle('cursor', 'default');
					}
				}
			).request();
		}

	},

	// ----------------------------------------------------------------------------------------------------
	emailCheck: function(emailStr) {

		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		var matchArray=emailStr.match(emailPat)

		if(matchArray==null) return false
		var user=matchArray[1]
		var domain=matchArray[2]

		if(user.match(userPat)==null) return false

		var IPArray=domain.match(ipDomainPat)
		if(IPArray!=null) {
			// this is an IP address
			for (var i=1;i<=4;i++) {
				if(IPArray[i]>255) return false
			}
			return true
		}

		var domainArray=domain.match(domainPat)
		if(domainArray==null) return false

		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if(domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) return false

		if(len<2) return false

		return true;

	},

	// ----------------------------------------------------------------------------------------------------
	over: function(id) {

		$('tr_email_' + id).setStyle('background', '#E0E0E0');
		$('div_comandos_' + id).setStyle('display', 'block');

	},

	// ----------------------------------------------------------------------------------------------------
	out: function(id) {

		$('tr_email_' + id).setStyle('background', 'none');
		$('div_comandos_' + id).setStyle('display', 'none');

	},

	// ----------------------------------------------------------------------------------------------------
	toggleGroup: function(id) {

		div = $(id);
		div.setStyle('display', div.getStyle('display') == 'none' ? 'block' : 'none');

	},

	// ----------------------------------------------------------------------------------------------------
	installHandlers: function(idArray) {

		var id;
		var textField;
		for(var n = 0; n < idArray.length; n++) {
			id = idArray[n];
			textField = $('text_email_' + id);
			textField.setStyles({
				border: 'none',
				background: 'none'
			});
			textField.addEvents({
				focus: function() {
					if(newsletterManager.focusedTextField != null) {
						newsletterManager.focusedTextField.setStyles({
							border: 'none',
							background: 'none'
						});
					}
					newsletterManager.focusedTextField = this;
					this.setStyles({
						border: '1px solid #00A8FF',
						background: 'url(imagens/fundo_textbox.gif)'
					});
				}
			});
			textField.onkeydown = function(event) {
				var event = new Event(event);
				var id = this.name.substr(this.name.lastIndexOf('_') + 1);
				if(event.key == 'esc') {
					// Reverter
					new Ajax(
						'conteudos/newsletter/ajax/reverter_email.php',
						{
							method: 'post',
							data: 'id=' + id,
							onComplete: function(responseText) {
							}
						}
					).request();
				}
			}
		}

	},

	// ----------------------------------------------------------------------------------------------------
	addEmail: function() {

		var email = $('email_novo').getValue();
		if(!this.emailCheck(email)) {
			alert('O email que indicou não é válido.');
		} else {
			$('email_novo').setStyle('cursor', 'wait');
			$('submit_btn').value = 'Aguarde...';
			$('submit_btn').disabled = true;
			new Ajax(
				'conteudos/newsletter/ajax/verificar_email_novo.php',
				{
					method: 'post',
					data: 'email=' + email,
					onComplete: function(responseText) {
						if(responseText == '0') {
							$('email_novo_form').action = '?pagina=newsletter/newsletter&accao=adicionar_email';
							$('email_novo_form').submit();
						} else alert('O email que indicou já se encontra registado');
						$('email_novo').setStyle('cursor', 'default');
						$('submit_btn').value = 'Salvar';
						$('submit_btn').disabled = false;
					}
				}
			).request();
		}

	},


	// ----------------------------------------------------------------------------------------------------
	changeEmail: function(id) {

		var email = $('text_email_' + id).getValue();
		var form = $('alterar_email_' + id);
		if(form == null) return;

		if(this.emailCheck(email)) {
			form.action = '?pagina=newsletter/newsletter&accao=alterar_email';
			form.submit();
		} else {
			alert('O email que indicou não é válido.');
		}
	},

	// ----------------------------------------------------------------------------------------------------
	deleteEmail: function(id, email) {

		$('alterar_email_' + id).setStyle('cursor', 'wait');
		if(confirm('Apagar ' + email + ' ?')) {
			new Ajax(
				'conteudos/newsletter/ajax/apagar_email.php',
				{
					method: 'post',
					id: id,
					data: 'id=' + id,
					onComplete: function(responseText) {
						$('alterar_email_' + this.options.id).remove();
					}
				}
			).request();
		}

	},

	// ----------------------------------------------------------------------------------------------------
	changeGroup: function(id) {

		var idGrupo = $('id_grupo_' + id).value;
		document.location.href = '?pagina=newsletter/newsletter&accao=mover_grupo&id=' + id + '&id_grupo=' + idGrupo;

	},

	// ----------------------------------------------------------------------------------------------------
	test: function() {

		// Buscar valores
		var assunto = $('assunto').value;
		var email = $('email_teste').value.trim();

		var errorStr = '';

		// Verificar assunto
		if(assunto == '') {
			errorStr += 'Tem que especificar um assunto\n';
		}

		// Verificar email
		if(!this.emailCheck(email)) {
			errorStr += 'O e-mail não é válido';
		}

		// Erros?
		if(errorStr.length) {
			alert(errorStr);
			return;
		}

		$('enviar_newsletter_form').action = '?pagina=newsletter/newsletter&accao=testar';
		$('enviar_newsletter_form').submit();

	},

	// ----------------------------------------------------------------------------------------------------
	sendToGroup: function(idGrupo, bloco) {

		// Buscar valores
		var assunto = $('assunto').value;

		var errorStr = '';

		// Verificar assunto
		if(assunto == '') {
			errorStr += 'Tem que especificar um assunto\n';
		}

		// Erros?
		if(errorStr.length) {
			alert(errorStr);
			return;
		}

		$('id_grupo').value = idGrupo;
		$('bloco').value = bloco;
		$('enviar_newsletter_form').submit();

	}

});

