$().ready( function () {
    //alert("ready");
    $('#delAliasBtn').click(function() { return doAliasDelete(); } );
    $('#addAliasBtn').click(function() { return doAliasAdd(); } );
    $('#editAliasBtn').click(function() { return doAliasEdit(); } );
    $('#editAliasId').change(function(){return doAliasEditChange(); } );
    $('#existgroupeditsel').hide();
    $('#editrecipientlist').hide();
    $('#creategroupradio').click(function() {return doCreateRadio();});
    $('#redefinegroupradio').click(function() {return doEditRadio();});
    
    doGroupCheckAndHide();
});

//make sure the stuff for creating a new group appears
function doCreateRadio() {
    $('#newgroupeditdefine').show();
    $('#existgroupeditsel').hide();
}

//make sure the stuff for editing an existing group appears
function doEditRadio() {
    $('#newgroupeditdefine').hide();
    $('#existgroupeditsel').show();
}

//get the count of groups from the first select
// if there aren't any, hide them
// otherwise allow them to stay unhidden
function doGroupCheckAndHide() {

    var groupCount = $('#toAliases')[0].length;
    
    if(0 == groupCount) {
        hideExistingGroupStuff();
    }

}

function hideExistingGroupStuff() {
    $('#existgroupeditsel, #groupeditrow, #groupdeleterow, #grouprecipients, #redefinespan, #redefinegroupradio, #recipientchoosesend, #editradiop').hide();
    
    $('#redefinegroupradio')[0].checked = false;
    $('#creategroupradio')[0].checked = true;
    $('#newgroupeditdefine').show();
}

function showExistingGroupStuff() {
    $('#existgroupeditsel, #groupeditrow, #groupdeleterow, #grouprecipients, #redefinespan, #redefinegroupradio, #recipientchoosesend, #editradiop').show();
    
    if($('#creategroupradio')[0].checked) {
        $('#existgroupeditsel').hide();
        $('#newgroupeditdefine').show();
    }
    
}

//get the id, then get the recipients
// call method to populate the other select
function doAliasEditChange() {

    var myAliasId = 0;
    
    var mySelect = $('#editAliasId')[0];
    
    for(var i=0; i < mySelect.length; i++) {
        if(mySelect.options[i].selected) {
            myAliasId = mySelect.options[i].value;
        }
    }

    if(0 > myAliasId) {
        $('#editrecipientlist').hide();
        return false;
    }

     var data = { 'aliasId': myAliasId };

    $.getJSON("/mailboxHandler.php/changeAlias", data, doAliasEditPopulate);

    return false;
}

//handler for actually populating select with recipients
function doAliasEditPopulate(data) {

    $('#editrecipientlist').show();
        
    var reData = eval(data);
    
    var memberArray = reData['aliasMembers'];
    
    $('#editAliasMembers').empty();
    
    for each (var mem in memberArray) {
        //alert(mem['userid']);
        //alert(mem['username']);
        $('#editAliasMembers').append("<option value='" + mem['userid'] + "'>" + mem['username'] + "</option>");
    }


    
    return false;
}


//do alias editing
// get selected from the one select and send that off
function doAliasEdit() {

    var aliasId
    var myAliasId = 0;
    var myEditIds = new Array();
    var mySelect = $('#editAliasId')[0];
    
    for(var i=0; i < mySelect.length; i++) {
        if(mySelect.options[i].selected) {
            myAliasId = mySelect.options[i].value;
        }
    }
    
    var myEditSelect = $('#editAliasMembers')[0];
    
        for(var i=0; i < myEditSelect.length; i++) {
        if(myEditSelect.options[i].selected) {
            myEditIds = myEditIds.concat(myEditSelect.options[i].value);
        }
    }

     var data = { 'aliasId': myAliasId, 'editIds[]': myEditIds };

    $.getJSON("/mailboxHandler.php/editAlias", data, doAliasEditPopulate);

    return false;
}

//does the alias add ajax call
function doAliasAdd() {
    
    var myNames = new Array();
    
    var mySelect = $('#addContacts')[0];
    
    for(var i=0; i < mySelect.length; i++) {
        if(mySelect.options[i].selected) {
            myNames = myNames.concat(mySelect.options[i].value);
        }
    }

    var additional = new Array();
    if(null != $('#addlRecips')[0].value && "" != $('#addlRecips')[0].value) {
        additional = $('#addlRecips')[0].value.split(/\s*,\s*/);
    }
    
    myNames = myNames.concat( additional);
    
    var data = { 'recipientStrings[]': myNames };

    var path = "";
    var callback = function() { alert("something broke!");};
    if($('#creategroupradio')[0].checked && null != $('#newAliasName').val() && "" != $('#newAliasName').val() ) {
        path = "addAlias";
        data['aliasName'] = $('#newAliasName').val();
        callback = handleNewAlias;
        
    }else if ($('#redefinegroupradio')[0].checked  && null != $('#existAliasId').val() && "" != $('#existAliasId').val() ) {
        path = "updateAlias";
        data['aliasId'] = parseInt($('#existAliasId').val());
        callback = showStatus;        
    }

    $.getJSON("/mailboxHandler.php/" + path, data, callback);

    return false;
}


//handle deleting alias
function handleDeleteAlias(data) {
    var reData = eval(data);
    var aliasId = reData['aliasId'];
    
    //alert("trying to remove alias: " + aliasId);
    
    $("option[value='" + aliasId + "']");
    
    $("#toAliases > option[value='" + aliasId + "']").remove();
    $("#deleteAliasId > option[value='" + aliasId + "']").remove();
    $("#existAliasId > option[value='" + aliasId + "']").remove();
    $("#editAliasId > option[value='" + aliasId + "']").remove();
    
    alert(reData['message']);
    doGroupCheckAndHide();
}

//handle new alias
function handleNewAlias(data) {
    var reData = eval(data);

    $('#toAliases').append("<option value='" + reData['aliasId'] + "' >" + reData['aliasName'] + "</option>");
    
    $('#deleteAliasId').append("<option value='" + reData['aliasId'] + "' >" + reData['aliasName'] + "</option>");
    
    $('#existAliasId').append("<option value='" + reData['aliasId'] + "' >" + reData['aliasName'] + "</option>");
    
   $('#editAliasId').append("<option value='" + reData['aliasId'] + "' >" + reData['aliasName'] + "</option>");
    
    //alert(reData['aliasId']);
    //alert(reData['aliasName']);
    alert(reData['message']);

    showExistingGroupStuff();

    return false;
}


//handle showing a status
function showStatus(data) {
    var reData = eval(data);
    alert(reData['message']);
    
    return false;
}

//does the alias delete ajax call
function doAliasDelete() {

    var mySelect = $('#deleteAliasId')[0];
    var deleteId = 0;
    
     for(var i=0; i < mySelect.length; i++) {
        if(mySelect.options[i].selected) {
            deleteId = mySelect.options[i].value;
        }
    }

    var data = { 'aliasId': deleteId };

    $.getJSON("/mailboxHandler.php/deleteAlias", data, handleDeleteAlias);

    return false;
}