function register()
{
	document.getElementById('registeremail').value = '';
	document.getElementById('registerpassword').value = '';
	document.getElementById('registerpassword2').value = '';
	checkEmail();
	checkPassword();
	checkPassword2();
	if(document.getElementById('wrongUserOrPasswordFontRegister') != null)
	{
		document.getElementById('wrongUserOrPasswordRegister').removeChild(document.getElementById('wrongUserOrPasswordFontRegister'));
	}
	document.getElementById('welcome').style.display = 'none';
	document.getElementById('register').style.display = '';
	document.getElementById('registerok').style.display = 'none';
	document.getElementById('registererror').style.display = 'none';
	document.getElementById('forgot').style.display = 'none';
	document.getElementById('forgotok').style.display = 'none';
}

function registerSubmit()
{
	var email = document.getElementById('registeremail').value;
	var password = document.getElementById('registerpassword').value;
	response = getresponse('request/register.php?email='+email+'&password='+hex_md5(password));
	if(response == '1')
	{
		document.getElementById('register').style.display = 'none';
		document.getElementById('registerok').style.display = '';
	}
	else if(response == '0')
	{
		// Duplicate email
		if(document.getElementById('wrongUserOrPasswordFontRegister') == null)
		{
			// Create font and text element
			var text = document.createTextNode('Email address already exists.');
			var registerfont = document.createElement('font');
			registerfont.id = "wrongUserOrPasswordFontRegister";
			registerfont.color = "red";
			registerfont.appendChild(text)
			// Insert under email and password textboxes
			document.getElementById('wrongUserOrPasswordRegister').appendChild(registerfont);
		}
	}
	else
	{
		// Unknown error
		document.getElementById('register').style.display = 'none';
		document.getElementById('registererror').style.display = '';
	}
	return false;
}

/* constants */
var onpicture = 'http://www.noteit.com/images/checked.gif';
var offpicture = 'http://www.noteit.com/images/unchecked.gif';

/* helper functions */
function switchPicture(name, status) {
	var element = document.getElementById(name);
	if (element != null) {
		if (status == true) {
			if (element.src != onpicture) {
				element.src = onpicture;
			}
		} else if (status == false) {
			if (element.src != offpicture) {
				element.src = offpicture;
			}
		}
	}
}

function isValid(text, validChars) {
	var isNumber = true;
	var chari;
	for (i = 0; i < text.length && isNumber == true; i++) { 
		chari = text.charAt(i); 
		if (validChars.indexOf(chari) == -1) {
			isNumber = false;
		}
	}
	return isNumber;
}

function isNumeric(text) {
	var validChars = "0123456789";
	return isValid(text, validChars);
}

function isAlphaNumeric(text) {
	var validChars = "0123456789" +
		"abcdefghijklmnopqrstuvwxyz" + 
		"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	return isValid(text, validChars);
}

/* source: http://javascript.internet.com/forms/check-email.html */
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) {
		return false;
	}
	var user = matchArray[1];
	var domain = matchArray[2];
	if (user.match(userPat)==null) {
		return false;
	}
	var IPArray = domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				return false;
			}
		}
		return true;
	}
	var domainArray = domain.match(domainPat);
	if (domainArray == null) {
		return false;
	}
	var atomPat = new RegExp(atom, "g");
	var domArr = domain.match(atomPat);
	var len = domArr.length;
	if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3) {
		return false;
	}
	if (len < 2) {
		return false;
	}
	return true;
}

/* email */
function checkEmail() {
	switchPicture('emailcheck', validateEmail());
}

function validateEmail() {
	var email = document.getElementById('registeremail');
	if (emailCheck(email.value) &&
		email.value.length <= 4096) {
		return true;
	} else {
		return false;
	}
}

/* Password */
function checkPassword() {
	switchPicture('passwordcheck', validatePassword());
}

function checkPassword2() {
	switchPicture('password2check', validatePassword());
}

function validatePassword() {
	var password = document.getElementById('registerpassword');
	var password2 = document.getElementById('registerpassword2');
	if (password.value.length > 7) {
		if(password2.value != "")
		{
			if(password.value == password2.value)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return true;
		}
	} else {
		return false;
	}
}

/* check for post */
function canRegister() {
	var button = document.getElementById('registerbutton');
	var password = document.getElementById('registerpassword');
	var password2 = document.getElementById('registerpassword2');
	if (validateEmail() &&
		validatePassword() &&
		password.value == password2.value) {
		button.disabled = false;
	} else {
		button.disabled = true;
	}
}