	function genpw() {
		new Request({
			url: 'php/genpw.php',
			method: 'post',
			onSuccess: function(tr) {
				$('pw1').value = tr;
				$('pw2').value = tr;
				$('pw1').setStyle('background','#77EF93');
				$('pw2').setStyle('background','#77EF93');
			}
		}).send('do=1');
	}
	
	function checklogin() {
		if($('clogin').value.match(/^[a-z0-9\-_\.]+$/i)) {
			if($('clogin').value.length >= 5) {
				new Request({
					method: 'post',
					url: 'php/checklogin.php',
					onSuccess: function(tr) {
						if(tr == 'false') {
							new Fx.Morph('clogin',{duration: 2000}).start({'background-color':['#77EF93','#FFF']});
							$('loginstr').set('html','valid login');
							$('loginstr').setStyle('color','#77EF93');
						} else if(tr == 'true') {
							new Fx.Morph('clogin',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
							$('loginstr').set('html','login already exists');
							setTimeout("$('loginstr').set('html','check login')", 3000);
						}
					}
				}).send('login='+$('clogin').value);
			} else {
				new Fx.Morph('clogin',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
				$('loginstr').set('html','login must be at least 5 characters');
				setTimeout("$('loginstr').set('html','check login')", 3000);
			}
		} else {
			new Fx.Morph('clogin',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
			$('loginstr').set('html','invalid login');
			setTimeout("$('loginstr').set('html','check login')", 3000);
		}
	}
	
	function validate() {
		var frmerror = false;
		$$('#lvprem_register .required').each(function(el,i) {
			if(! $(el).value.match(/[a-z0-9\-_\.\@]+/i)) {
				new Fx.Morph(el,{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
			}
		});
		
		if(! $('dop_m').value.match(/[0-9]+/)) {
			frmerror = true;
			new Fx.Morph('dop_m',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		} else if($('dop_m').value > 12) {
			frmerror = true;
			new Fx.Morph('dop_m',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		}
		
		if(! $('dop_d').value.match(/[0-9]+/)) {
			frmerror = true;
			new Fx.Morph('dop_d',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		} else if($('dop_d').value > 31) {
			frmerror = true;
			new Fx.Morph('dop_d',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		}
		
		if(! $('dop_y').value.match(/[0-9]+/)) {
			frmerror = true;
			new Fx.Morph('dop_y',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		} else if($('dop_y').value < 2008) {
			frmerror = true;
			new Fx.Morph('dop_y',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		}
		
		if($('pw1').value != $('pw2').value) {
			frmerror = true;
			$('pwstr').set('html','passwords don\'t match');
			new Fx.Morph('pw1',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
			new Fx.Morph('pw2',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		} else if($('pw1').value.length < 8) {
			frmerror = true;
			$('pwstr').set('html','password must be at least 8 characters');
			new Fx.Morph('pw1',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
			new Fx.Morph('pw2',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
		} else {
			$('pwstr').set('html','');
		}
		
		if($('age_maj').className != 'checked') {
			frmerror = true;
			new Fx.Morph('age_p',{duration: 2000}).start({'background-color': ['#5C1215','#000']});
		}
		
		if(! $('email').value.match(/^[a-z0-9_\-\.]+@[a-z0-9_\-\.]+\.[a-z]{2,4}$/i)) {
			frmerror = true;
			new Fx.Morph('email',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
		}
		
		if(! $('serialnumber').value.match(/^[0-9]{6}$/)) {
			frmerror = true;
			new Fx.Morph('serialnumber',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
		} else if(parseInt($('serialnumber').value) < 100100) {
			frmerror = true;
			new Fx.Morph('serialnumber',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
		} else if(parseInt($('serialnumber').value) > 199999) {
			frmerror = true;
			new Fx.Morph('serialnumber',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
		}
		
		if(!frmerror) {
			new Request({
				method: 'post',
				url: 'php/checklogin.php',
				onRequest: function() {
					$('validating_form').setStyle('visibility','visible');
				},
				onSuccess: function(tr) {
					if(tr == 'false') {
						new Request({
							method: 'post',
							url: 'php/validate_email.php',
							onSuccess: function(tr) {
								if(tr == 1) {
									$('emailError').set('html','&nbsp;');
									/*
									Removed per Amado.  He's not getting serial number updates fast enough.
									For now it will just make sure the serial number is 6 digits
									new Request({
										method: 'post',
										url: 'php/validate_serial_number.php',
										onSuccess: function(tr) {
											if(tr == 1) {
												$('serialError').set('html','&nbsp;');
												new Request({
													method: 'post',
													url: 'php/register.php',
													onSuccess: function(tr) {
														$('validating_form').setStyle('visibility','hidden');
														document.location.href='thanks.php';
													}
												}).send($('regForm').toQueryString());
											} else {
												$('validating_form').setStyle('visibility','hidden');
												new Fx.Morph('serialnumber',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
												$('serialError').set('html','invalid serial number');
											}
										}
									}).send('s='+$('serialnumber').value);
									*/
									if($('serialnumber').value.length==6) {
										$('serialError').set('html','&nbsp;');
										new Request({
											method: 'post',
											url: 'php/register.php',
											onSuccess: function(tr) {
												$('validating_form').setStyle('visibility','hidden');
												document.location.href='thanks.php';
											}
										}).send($('regForm').toQueryString());
									} else {
										$('validating_form').setStyle('visibility','hidden');
										new Fx.Morph('serialnumber',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
										$('serialError').set('html','invalid serial number');
									}
								} else {
									$('validating_form').setStyle('visibility','hidden');
									new Fx.Morph('email',{duration: 2000}).start({'background-color': ['#5C1215','#FFF']});
									$('emailError').set('html','invalid email address');
								}
							}
						}).send('e='+$('email').value);
					} else {
						$('validating_form').setStyle('visibility','hidden');
						new Fx.Morph('clogin',{duration: 2000}).start({'background-color':['#5C1215','#FFF']});
						$('loginstr').setStyle('color','#ad2229');
						$('loginstr').set('html','login already exists');
						setTimeout("$('loginstr').set('html','check login')", 3000);
					}
				}
			}).send('login='+$('clogin').value);
		}
	}
