var regRepChar = new RegExp("[\\W+]", "g")

function regKeyUp(formElm) {
	var emailAdr
	if (! EmailFormat.emailFormatName) return 
	var formObj = document.registerForm
	var firstname = formObj["firstname"].value.toLowerCase().replace(regRepChar, "")
	var lastname = formObj["surname"].value.toLowerCase().replace(regRepChar, "")
	emailAdr = EmailFormat.formatEmail(EmailFormat.emailFormatName, firstname, lastname)
	if (EmailFormat.domain) emailAdr += "@" + EmailFormat.domain
	formObj.email.value = emailAdr
}


function EmailFormat(firstReg, lastReg, concatChar) {
	this.firstReg = firstReg
	this.lastReg = lastReg
	this.concatChar = concatChar
	this.rg1 = new RegExp(firstReg)
	this.rg2 = new RegExp(lastReg)
}

EmailFormat.domain = ""
EmailFormat.emailFormatName = ""

EmailFormat.setFormat = function(emailFormat, emailDomain) {
	if (emailFormat) {
		EmailFormat.domain = emailDomain
		EmailFormat.emailFormatName = emailFormat
	}
}

EmailFormat.formats = new Array()

EmailFormat.add = function(fKey, firstReg, lastReg, concatChar) {
	EmailFormat.formats[fKey] = new EmailFormat(firstReg, lastReg, concatChar)
}

EmailFormat.prototype.format = function(firstName, lastName) {
	var part1, part2
	if (firstName) { part1 = this.rg1.exec(firstName) } else { part1 = new Array() }
	if (lastName) { part2 = this.rg2.exec(lastName) } else { part2 = new Array() }
	if (part1.length > 0) part1[part1.length] = this.concatChar
	return part1.join("") + part2.join("")
}

EmailFormat.add("fsFull", ".*", ".*", "")
EmailFormat.add("fsFullStop", ".*", ".*", ".")
EmailFormat.add("fsFullUl", ".*", ".*", "_")
EmailFormat.add("fsAbvStop", "^.", ".*", ".")
EmailFormat.add("fsAbv", "^.", ".*", "")
EmailFormat.add("fsAbvUl", "^.", ".*", "_")
EmailFormat.add("fFull", ".*", "", "")
EmailFormat.add("sFull", "", ".*", "")

EmailFormat.formatEmail = function(fKey, firstName, lastName) {
	var formatter = EmailFormat.formats[fKey]
	return formatter.format(firstName, lastName)
}
