function addUser(groupId, username){
    $('addUserButton').disabled = true;
    $('dwrResponseInfo').show();
    
    DWRGroupManager.addUser(groupId, username);
}

function joinGroup(groupId, password){
    $('joinButton').disabled = true;
    $('dwrResponseInfo').show();

    if (password == null) password = "";
    
    DWRGroupManager.joinGroup(groupId, password);
}

function leaveGroup(groupId){
    $('leaveButton').disabled = true;
    $('dwrResponseInfo').show();
    
    DWRGroupManager.leaveGroup(groupId);
}

function removeGroup(groupId) {
    $('removeGroupButton').disabled = true;
    $('dwrResponseInfo').show();
    
    DWRGroupManager.removeGroup(groupId);
}

function removeUser(groupId, userId){
    $('dwrResponseInfo').show();
    
    DWRGroupManager.removeUser(groupId, userId);
}

function cancelCreateGroup(){
    window.location = "./";
}

function createGroup(){
    
    var groupName = $('addGroupInputGroupName').value;
    var groupDesc = $('addGroupInputGroupDesc').value;
    var groupCode = $('addGroupInputGroupCode').value;
    
    // check values
    if (groupDesc.length > 255) {
        alert("Description cannot be longer than 255 characters!");
        groupDesc.focus();
        return;
    }
    
    if (groupCode.length == 0) {
        alert("You must specify a code for your league!");
        return;
    }
    
    if (groupName.length == 0 || groupDesc.length == 0) {
        alert("You must specify a name and description for your league!");
        return;
    }
        
    if (!$('listing_public').checked && !$('listing_none').checked) {
        alert("You must choose a league visibility!");
        return;
    }
    
    if (!$('joinType_public').checked && !$('joinType_moderator').checked && !$('joinType_password').checked) {
        alert("You must choose how users can join the league!");
        return;
    }
    
    if ($('joinType_password').checked && $('password').value == '') {
        alert("You must specify a password for the password protected league!")
        $('password').focus();
        return;
    }
 
    // all is right
    var listing = getRadioSelectedValue('createGroupForm','listing');
    var joinType = getRadioSelectedValue('createGroupForm','joinType');
    var password = $('password').value;
    
    $('dwrResponseInfo').show();
    $('createGroupButton').disabled = true;
    DWRGroupManager.createGroup(groupName, groupDesc, listing, joinType, password, groupCode);
}

//DWR response functions

function addUserDWRResponse(gro){
    $('dwrResponseInfo').hide();
    
    requestComplete = gro ["requestComplete"];
    
    if (requestComplete) {
        //add a new user into the ul list
        var username = $('addUserInputUsername').value;
        var userId = gro ["userID"];
        var groupId = gro ["groupID"];
        
        var ulList = $('listOfUsers');
        var newLI = document.createElement("LI");
        newLI.id = userId + "_user_row";
        newLI.innerHTML = username +
             " <a href='#' onclick='removeUser(" + groupId + ", " + userId + ");'" +
             "    title='Remove this user from the league'>" +
             " <img src='/aav2/images/icon_delete.gif'/>" +
             " </a>";
        ulList.appendChild(newLI);
        $('addUserInputUsername').value = "";
        $('addUserButton').disabled = false;
    } else {
        alert('Cannot add an user into the league: ' + gro ["message"]);
        $('addUserButton').disabled = false;
    }
}

function removeUserDWRResponse(gro) {
    $('dwrResponseInfo').hide();
    
    requestComplete = gro ["requestComplete"];
    
    if (requestComplete) {
        //remove the user from the list
        var userId = gro ["userID"];
        rowToRemove = $(userId + '_user_row');
        rowToRemove.parentNode.removeChild(rowToRemove);
    } else {
        alert('Cannot remove the specified user: ' + gro ["message"]);
    }
}

function removeGroupDWRResponse(gro) {
    $('dwrResponseInfo').hide();
    
    var requestComplete = gro ["requestComplete"];
    
    if (requestComplete) {
        window.location = "./";
    } else {
        alert("Cannot remove the league: " + gro ["message"]);
        $('removeGroupButton').disabled = false;
    }
}

function createGroupDWRResponse(gro) {
    $('dwrResponseInfo').hide();
    
    var requestComplete = gro ["requestComplete"];
    
    if (requestComplete) {
        window.location = "./index.jsp?show=groupEdit&groupId=" + gro ["groupID"] +
                          "&created=true";
    } else {
        alert("Cannot create the league: " + gro ["message"]);
        $('createGroupButton').disabled = false;
    }
}

function joinGroupDWRResponse(gro){
    $('dwrResponseInfo').hide();
    
    requestComplete = gro ["requestComplete"];
    // reset previous password
    var passInput = $('password');
    if (passInput != null) {
        passInput.value = '';
        passInput.focus();
    }
    
    if (requestComplete) {
        window.location = "./index.jsp?show=groupDetail&groupId=" + gro ["groupID"];
    } else {
        alert('You cannot join this league: ' + gro ["message"]);
        $('joinButton').disabled = false;
    }
}

function leaveGroupDWRResponse(gro){
    $('dwrResponseInfo').hide();
    
    requestComplete = gro ["requestComplete"];
    
    if (requestComplete) {
        window.location = "./index.jsp?show=groupDetail&groupId=" + gro ["groupID"];
    } else {
        alert('You cannot leave this league: ' + gro ["message"]);
        $('leaveButton').disabled = false;
    }
}


// Other functions

function checkSubmit(event, submitButtonID) {
    if (event.keyCode == 13) {
        submitButton = $(submitButtonID);
        submitButton.click();
    }
}

// CREATE GROUPS FORM 
/** When group visibily has been changed */
function visibilityChanged() {
}
/** Finds which radio button is selected */
function getRadioSelectedValue(formId, radioGroup) {
    var res = $(formId).getInputs('radio', radioGroup).find(function(re) {return re.checked;});
    if (res != null) {
        return $F(res);
    } else {
        return "";
    }
}
