﻿// JavaScript Document
function Validate_Email_Address(email_address) {	
	var str = email_address;
	if (!str)
		return false;
	
	// Check for invalid characters
	if (str.match(/[\x00-\x1F\x7F-\xFF]/))
		return false;

	// Check that there's one @ symbol, and that the lengths are right
	if (!str.match(/^[^@]{1,64}@[^@]{1,255}$/))
		return false;

	// Split it into sections to make life easier
	var email_array = str.split('@');

	// Check local part
	var local_array = email_array[0].split('.');
	for(var i = 0; i < local_array.length; i++) {
		if (!local_array[i].match(/^(([A-Za-z0-9!#$%&\'*+\/=?^_`{|}~-]+)|("[^"]+"))$/))
			return false;
	}

	// Check domain part
	if (!email_array[1].match(/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}$/) ||
		!email_array[1].match(/^\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\]$/)) {
		// If not an IP address
		
		var domain_array = email_array[1].split('.');
		if (domain_array.length < 2) { // Not enough parts to be a valid domain
			return false;
		}

		for(var j = 0; j < domain_array.length; j++) {
			if (!domain_array[j].match(/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]))$/))
				return false;
		}
	}
	
	return true;
}

var isRunning = false;

function AddEmail() {
	var valueEmail = jQuery('#emailnews').val();
	if ( valueEmail == "" || valueEmail == "o seu email" ) {
		jQuery('#message').html('Não introduziu em email válido.');
		ShowMessage();
		setTimeout("HideMessage();",2000);
		return false;
	} else {
		if ( !Validate_Email_Address(valueEmail) ) {
			jQuery('#message').html('Não introduziu em email válido.');
			ShowMessage();
			setTimeout("HideMessage();",2000);
			return false;
		}
		if ( !isRunning ) {
			isRunning = true;
			var url = '/includes/ajax.php';
			jQuery.ajax({
				type: "POST",
				url: url,
				data: 'action=addemail&e='+valueEmail+'&s='+jQuery('#ajaxemail').val(),
				success: SucessEmail,
				error: ErrorEmail
			});
		}
		return true;
	}
}

function SucessEmail(data) {
	if ( data == "0" ) {
		jQuery('#message').html('Ocorreu um erro. Tente outra vez.');
	} else if ( data == "1" ) {
		jQuery('#message').html('Email adicionado com sucesso.');
	} else if ( data == "2" ) {
		jQuery('#message').html('O seu email já está registado.');
	} else {
		jQuery('#message').html('Ocorreu um erro. Tente outra vez.');
	}
	ShowMessage();
	isRunning = false;
	setTimeout("HideMessage();",2000);
}

function ErrorEmail(transport) {
	jQuery('#message').html('Ocorreu um erro. Tente outra vez.');
	ShowMessage();
	setTimeout("HideMessage();",2000);
	isRunning = false;
}

function HideMessage() {
	jQuery("#message").fadeOut(600, function() { });
}

function ShowMessage() {
	jQuery("#message").show();
}
