﻿/******************************************************************************
**	Validates an e-mail address according to RFC-822 specification
******************************************************************************/
function emailIsValid(astrEmail) {

    // Define patterns for different parts of the email address
	var strValidEmailPart = "\[^\\s\\(\\)><@,;:\\\\\\\"\\.\\[\\]\]+"; 					// Valid sequence of chars I.E. everything except spaces and ( ) < > @ , ; : \ " . [ ]
	var strValidLocalPart = "((\[^\\s\\(\\)><@,;:\\\\\\\"\\.\\[\\]\]+)|(\"[^\"]*\"))"; 	// As above but allow quoted strings containing otherwise invalid chars

//	var strValidEmailPart = "\[^\s\(\)><@,;:\\\"\.\[\]]+"; 					// Valid sequence of chars I.E. everything except spaces and ( ) < > @ , ; : \ " . [ ]
//	var strValidLocalPart = "((\[^\s\(\)><@,;:\\\"\.\[\]]+)|(\"[^\"]*\"))"; 	// As above but allow quoted strings containing otherwise invalid chars

    // Define regular expressions
	var reEmailStructure	= /^(.+)@(.+)$/;												// Valid email address structure
	var reLocalPart			= new RegExp("^" + strValidLocalPart + "(\\." + strValidLocalPart + ")*$"); 	// Valid localpart (the part preceding the @)
	var reIPAddress			= /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
	var reDomainName		= new RegExp("^" + strValidEmailPart + "(\\." + strValidEmailPart +")+$");		// Valid domain name
	var reDomainExtensions	= /^(?:(?:\.(?:cat|com|net|org|edu|mil|gov|biz|int|jobs|pro|info|mobi|name|coop|arpa|aero|museum|travel)))$/;	// Valid Domain-name extensions

    // Declare other local variables
    var strLocalPart;
    var strDomain;	
    var arrEmailParts;
    var arrDomainParts;

	// Validate address structure (xxxxx@xxxxxx)
	arrEmailParts = astrEmail.match(reEmailStructure);
	if (!arrEmailParts || arrEmailParts.length == 0) {
		return false;
	}

	strLocalPart    = arrEmailParts[1];
	strDomain	    = arrEmailParts[2];

	// Validate local part
	if (!reLocalPart.test(strLocalPart)) {
		return false;
	}
	
	// Validate domain part
	if (!reIPAddress.test(strDomain)) {
	    arrDomainParts = strDomain.match(reDomainName);
	    if (arrDomainParts && arrDomainParts.length > 1) {
		    // Validate domain extension (Known domain extension / 2 letter country-code)
		    if (!reDomainExtensions.test(arrDomainParts[arrDomainParts.length - 1].toLowerCase()) && arrDomainParts[arrDomainParts.length - 1].length != 3) {
			    return false;
		    }
	    }
	    else {
	        return false;
	    }
	}

	// Must be valid
	return true;
}

function newslettersubscribe()
{
	var emailadd;
	emailadd = document.newslettersub.emailadd;
	document.href = 'newsletter.php?emailadd=plok';
}

