function emailCheck (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) {
		alert("Your email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null) {
	    alert("The username doesn't seem to be valid.");
	    return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
		        alert("Destination IP address is invalid!");
			return false;
		    }
	    }
	    return true;
	}
	var domainArray=domain.match(domainPat);
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid.");
	    return false;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if ((domArr[domArr.length-1] != "info") &&
		(domArr[domArr.length-1] != "name") &&
		(domArr[domArr.length-1] != "arpa") &&
		(domArr[domArr.length-1] != "coop") &&
		(domArr[domArr.length-1] != "aero")) {
			if (domArr[domArr.length-1].length<2 ||
		    	domArr[domArr.length-1].length>3) {
			   		alert("The address must end in a three-letter domain, or two letter country.");
			   		return false;
			}
	}
	if (len<2) {
	   var errStr="This address is missing a hostname!";
	   alert(errStr);
	   return false;
	}
	return true;
}


function UPTvalidateform(thisform) {
	if (emailCheck(thisform.email.value)) {	
        if (document.getElementById('unsubscribe') 
            && !document.getElementById('unsubscribe').checked) {
		    
        }
		return false;
	}
	return true;
}







// COMPONENT:  signupPanel  *****************************
// ___ REQUIRES:  prototype.js, scriptaculous.js
// ......................................................
var signupPanel = {
	init: function() {
		signupPanel.installListeners();
	},

	installListeners: function() {
		var panel = $('componentSignup');
		if (panel == undefined) return;

		var signupForm = $A($$('#componentSignup form'))[0];
		if (signupForm == undefined) return;

		/* prior to animation, disallow form submission, but save original data */
		signupForm.originalAction = signupForm.action;
		signupForm.originalOnSubmit = signupForm.onsubmit;
		signupForm.onsubmit = function() { return false; };
		signupForm.action = '';
		
		var clickable = $A($$('#componentSignup form,#componentSignup form fieldset input,#componentSignup form .signupControl h5'));
		if (clickable.length == 0) return;

		for (var x=0; x<clickable.length; x++) {
			clickable[x].observe('click', signupPanel.eventClick);
			clickable[x].clickSet = clickable;
			clickable[x].formRef = signupForm;
			if (clickable[x].onfocus != null) {
				clickable[x].originalOnFocus = clickable[x].onfocus;
				clickable[x].onfocus = null;
			}
		}
	},
	
	eventClick: function(e) {
		var target = e.element();
		target.blur();
		var clickable = target.clickSet;
		for (var x=0; x<clickable.length; x++) {
			if (clickable[x].originalOnFocus != undefined) {
				clickable[x].onfocus = clickable[x].originalOnFocus;
			}
			if (!(clickable[x].type == "image" || clickable[x].type == "submit")) {
				clickable[x].stopObserving('click', signupPanel.eventClick);
			}
		}

		if (target.isDown == true) {
			if (target.formRef == undefined) return;
			target.formRef.action = target.formRef.originalAction;
			target.formRef.onsubmit = target.formRef.originalOnSubmit;
			//target.onclick = target.formRef.submit();

		} else {
			target.isDown = true;

			target.formRef.addClassName('active');		

			var diagonal = ($('componentSignup').className.match('diagonal_translation') != null) ? true : false;
			if (!diagonal) {
				$('signup_submitBtn').hide();
	//			Effect.SlideDown('signup_submitBtn', {duration: 0.3,scaleY:false,scaleX:true,scaleFrom:0,scaleTo:100});
				Effect.SlideDown('signup_submitBtn', {duration: 0.3,scaleFrom:30,scaleTo: 100});
			} else {

				// DIAGIONAL TRANFORMATION	
				var elm = $('signup_submitBtn');
				elm.curOffsetLeft = 3;
				elm.curOffsetTop = 0;
				new PeriodicalExecuter(function(pe) {
					var elm = $('signup_submitBtn');
					elm.style.paddingLeft = Math.round(elm.curOffsetLeft) + 1 + "px";
					elm.style.marginTop = Math.round(elm.curOffsetTop) + 1 + "px";
					elm.curOffsetLeft += 1.25;
					elm.curOffsetTop += 1;

				  if (elm.curOffsetTop >= 23)
				    pe.stop();
				}, 0.015);
			}
			
			setTimeout( function() {
				var isIE	= document.all;
				var isIE7	= isIE && window.XMLHttpRequest && window.ActiveXObject;
				if (isIE && !isIE7) {
					// IE 6 
					Effect.Appear('signup_form_email', {duration:0.8});
					Effect.BlindDown('signup_form_email', {duration:0.2});
				} else {
					Effect.Appear('signup_form_email', {duration:0.6});
					Effect.BlindDown('signup_form_email', {duration:0.6});
				}
			},170);
			
			Event.stop(e);
		}
	},
	
	eventSubmission: function(e) {
		// PROCESS SUBMISSION: Either send via AJAX, or process to separate page.
		var formRef = this;		

		Event.stop(e);
	}
};
Event.observe(window,'load',signupPanel.init,false);
// ********************************


