function errorHandler ( reason ) {
    updateUserNameMsg("Failed to retrieve suggested names.<br/>" + reason);
}

DWREngine.setErrorHandler(errorHandler);
DWREngine.defaultMessageHandler = errorHandler;

function isUsernameAvailableCallback(suggestedNames) {
    var username = trim(document.getElementById("newUsername").value);
    document.getElementById("suggestions").style.display = "block";

    if(suggestedNames==null) {
        document.getElementById("suggestions").innerHTML = "<div class=\"error\"><b>" + username + "</b> is available!</div>";
        
    } else {
    
        var output = "<div id=\"checkun\" class=\"error\">";
		output = output + "Unfortunately <b>" + username + "</b>  is not available.<br> Please try another username or enter <br>";
        output = output + "one of the suggested alternatives:";
        for(i=0; i<suggestedNames.length; i++) {
            output = output + "<br/><br/>";
            output = output + "<input name=\"suggest\" onclick=\"updateUserName('" + suggestedNames[i] + "');\" type=\"radio\"/>" ;
            output = output + "<b>  "+ suggestedNames[i] + "</b>";
        }       
		output = output + "</div>";
		document.getElementById("suggestions").innerHTML = output; 
    }
}

function isUserNameAvailable() {
    if(!validateUserName()) 
		return false;
		
    var newUserName = trim(document.getElementById('newUsername').value);
	document.getElementById("suggestions").innerHTML = "<div id=\"checkun\" class=\"error\">Please wait....</div>";
	UserNameSuggestor.getUserNameSuggestions(newUserName, isUsernameAvailableCallback);
}

function updateUserName ( newUserName ) {
    document.getElementById("newUsername").value = newUserName;    
}

function updateUserNameMsg (message) {
    document.getElementById("suggestions").innerHTML = "<p>" + message + "</p>"
}