function signupForm(packageName, packageId) {
	this.signupForm = null;
	
	this.draw = function(container) {
		return this.getForm();
	}
	
	this.callBack = function(container) {
		//this.signupForm.style.display = 'block';
		
		var content = $('.modalContent', container);
		var fields = content.find('input[type=text], input[type=password], textarea');
		
		$('.modalShield', container).click(function(event) {
			fields.each(function() {
				if(this.value) {
					event.stopImmediatePropagation();
				}
			});
		});
		
		//console.log(container.mw.setContent);
		
		this.signupForm.onsubmit = function() {
		
			//var fields = content.find('input[type=text], input[type=password], textarea');
		
			//console.log(fields);
			
			var errors = document.createElement('ul');
			var errorCount = 0;
			
			function isEmpty(e, t) {
				if(e.value == '') {
					var error = document.createElement('li');
					var text = document.createTextNode(t);
					error.appendChild(text);
					
					errors.appendChild(error);
					errorCount++;
				}
			}
			
			function validEmail(e) {
				var regex = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if(!regex.test(e.value)) {
					var error = document.createElement('li');
					var text = document.createTextNode('Please enter a valid email address');
					error.appendChild(text);
					
					errors.appendChild(error);
					errorCount++;
				}
			}
			
			function checkLength(e, len, t) {
				if(e.value.length < len) {
					var error = document.createElement('li');
					var text = document.createTextNode(t);
					error.appendChild(text);
					
					errors.appendChild(error);
					errorCount++;
				}
			}
			
			function checkMatch(e1, e2, t) {
				if(e1.value != e2.value) {
					var error = document.createElement('li');
					var text = document.createTextNode(t);
					error.appendChild(text);
					
					errors.appendChild(error);
					errorCount++;
				}
			}
			
			var fname = document.getElementById('firstname');
			var lname = document.getElementById('lastname');
			var email = document.getElementById('email');
			var password = document.getElementById('password');
			var vpassword = document.getElementById('verify-password');
			
			isEmpty(fname, 'Your first name is required');
			isEmpty(lname, 'Your last name is required');
			isEmpty(email, 'Your email is required');
			validEmail(email);
			isEmpty(password, 'Please enter a password');
			checkLength(password, 6, 'Your password must be 6 characters or longer');
			isEmpty(vpassword, 'Please verify your password');
			
			checkMatch(password, vpassword, 'The password fields do not match');
			
			var errorContainer = $('.errors', container);
			
			if(errorCount > 0) {
				errorContainer.html(errors);
			} else {
				$('input[type=submit]').attr('disabled', 'true');
				
				var result = $.post('/ajax_signup.php', {
					firstName: fname.value,
					lastName: lname.value,
					email: email.value,
					password: password.value,
					packageId: $('#package-id').val()
				}, function(result) {
					if(result == 'ALREADY_REGISTERED') {
						errorContainer.html('<p>That email address has already been registered. If you are already a member please login to purchase additional packages.</p>');
					} else if(result == 'REGISTER_OK') {
						window.location = '/members/?package=' + packageName;
					} else if(result == 'INVALID_PACKAGE') {
						errorContainer.html('<p>The package you selected is invalid. Please choose another package and try again.</p>');
					}
					$('input[type=submit]').attr('disabled', '');
				});
			}
			
			return false;
		}
	}
	
	this.getForm = function() {
		this.signupForm = document.createElement('form');
		this.signupForm.className = 'signup-form';
		this.signupForm.method = 'post';
		
		this.signupForm.innerHTML = '<p class="package">You selected the ' + packageName + '.</p>' +
		'<p>Please fill in the new user info and click "Proceed" below.</p>' +
		'<div class="errors"></div>' +
		'<p class="firstname"><label for="firstname">First Name: <input type="text" id="firstname" name="firstname" /></label></p>' +
		'<p class="lastname"><label for="lastname">Last Name: <input type="text" id="lastname" name="lastname" /></label></p>' +
		'<p class="email"><label for="email">Email: <input type="text" id="email" name="email" /></label></p>' +
		'<p class="password"><label for="password">Password: <input type="password" id="password" name="password" /></label></p>' +
		'<p class="vpassword"><label for="verify-password">Verify Password: <input type="password" id="verify-password" name="verify-password" /></label></p>' +
		'<input type="hidden" id="package-id" name="id" value="' + packageId + '" />' +
		'<p class="button"><input type="submit" name="proceed" value="Proceed" /></p>';
		
		return this.signupForm;
	}
}
