function cleanString(theString) {
	var decodedString = '';

	for (var n = 0; n < theString.length; n++){
		var c = theString.charCodeAt(n);

		if (c < 128) {
			decodedString += String.fromCharCode(c);
		}

		if ((c >=224 && c <=229) || (c>=192 && c<=198) || (c<=281 && c>=286)) {
			decodedString += 'a';
		} else if ((c >=232 && c<=235) || (c<=200 && c>=203)) {
			decodedString += 'e';
		} else if ((c>=236 && c<=239) || (c<=204 && c>=207)) {
			decodedString += 'i';
		} else if ((c>=242 && c<=248) || (c<=210 && c>=216)) {
			decodedString += 'o';
		} else if ((c>=249 && c<=252) || (c<=217 && c>=220)) {
			decodedString += 'u';
		} else if (c==253 || c==255 || c==221 || c==376) {
			decodedString += 'y';
		} else if (c==230 || c==198) {
			decodedString += 'ae';
		} else if (c==338 || c==339) {
			decodedString += 'oe';
		} else if (c==199 || c==231) {
			decodedString += 'c';
		} else if (c==209 || c==241) {
			decodedString += 'n';
		} else if (c==352 || c==353) {
			decodedString += 's';
		} else if (c==208 || c==240) {
			decodedString += 'eth';
		} else if (c==223) {
			decodedString += 'sz';
		} else if  (c>127) {
			decodedString += '-';
		} 
	} 

	theString = decodedString;
        theString = theString.replace(/\'/gi, '');
        theString = theString.replace(/&/gi, 'and');
        theString = theString.replace(/[^\w\-\+\ ]/gi,'-');
        theString = theString.replace(/\-+/gi, '-');
        theString = theString.replace(/\-$/gi, '-');
        theString = theString.replace(/^\-/gi, '');
        
        theString = theString.toLowerCase();

	return theString;

}

function isValidEmail(email) {
    if ((email==null) || (email.length<6)) {
        return false;
    }
    if (validateCharacters(email)) {
        if (
                (email.indexOf("@") < 1) || (email.lastIndexOf(".") <= email.indexOf("@")) ||
                (email.indexOf("@") == email.length) || (email.indexOf("..") >=0) ||
                 (email.indexOf(".") == email.length)
        ) {
                return false;
        } else {
                return true;
        }
    } else {
                return false;
    }
}

function validateCharacters(email) {
        // replace with regex fanciness at some point
        var isValid = true;
        email = email.toLowerCase();
        var allowed = "0123456789@.+-_abcdefghijklmnopqrstuvwxyz";

        for (var i=0; i < email.length; i++) {
                var next = email.charAt(i);
                if (allowed.indexOf(next) == -1) {
                        isValid = false;
                        break;
                }
        }
        return isValid;
}
