﻿/*
1) User search scripts
*/
var strUserPickerSearchText = "";
var arrUsers = Array();
var strUserParentControlID = null;
var blnExpertsOnly = false;
var intCurrentPageNumber = 0;
var intResultsPerPage = 10;
var intTotalNumberOfResults = 0;
var intWindowSize = 25;

function GetStartingRecordNumber()
{
    return ((intResultsPerPage * (intCurrentPageNumber - 1)) + 1);
}

function GetEndingRecordNumber()
{
    return (GetStartingRecordNumber(intCurrentPageNumber, intResultsPerPage) + intResultsPerPage - 1);
}

function GetNumberOfPages()
{
    if (intTotalNumberOfResults % intResultsPerPage == 0)
    {
        return (intTotalNumberOfResults / intResultsPerPage);
    }
    else
    {
        var dblResult = intTotalNumberOfResults / intResultsPerPage;
        return (Math.floor(dblResult) + 1);
    }
}

function ShowUserPicker(id, expertsonly)
{
    ResetPageNumberTo(1);
    blnExpertsOnly = expertsonly;
    strUserParentControlID = id;
    var strHtml = "<div style=\"padding: 10px 10px 10px 10px;\">" +
        "<table>" +
            "<tr>" +
                "<td>" +
                    "<strong>Search for a user:</strong>" +
                "</td>" +
                "<td>" +
                    "<input type=\"text\" id=\"txtSearchUsers\" name=\"txtSearchUsers\" width=\"300px\" maxlength=\"50\" onkeyup=\"ResetPageNumberTo(1); DoUserSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnSearchUsers\" value=\"Search\" onclick=\"ResetPageNumberTo(1); ForceUserSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnCloseUserSearch\" value=\"Close\" onclick=\"CloseUserSearch();\" />" +
                "</td>" +
            "</tr>" +
        "</table>" +
        "<div id=\"divJavascriptSearchResults\"></div>" +
        "<div id=\"divJavascriptPagintion\"></div>" +
    "</div>";
    $.modal(strHtml, {opacity: 90});
    if ( strUserPickerSearchText != "" )
    {
        $("#txtSearchUsers").val(strUserPickerSearchText);
        ForceUserSearch();
    }
}

function ResetPageNumber()
{
    ResetPageNumberTo(intCurrentPageNumber);
}

function ResetPageNumberTo(intValue)
{
    intCurrentPageNumber = intValue;
    $(".cbUsers").each(
        function ()
        {
            if (blnSelectedAllUsers)
            {
                if (!this.checked)
                {
                    var objUser = new Object();
                    objUser.ID = this.id;
                    objUser.FullName = arrUsers[this.id].FullName;
                    arrSpeciallyDeselecedUsers.push(objUser);
                }
            }
            else
            {
                if (this.checked)
                {
                    var objUser = new Object();
                    objUser.ID = this.id;
                    objUser.FullName = arrUsers[this.id].FullName;
                    arrSpeciallySelectedUsers.push(objUser);
                }
            }
        }
    );
}

function DoUserSearch()
{
    $("#divJavascriptSearchResults").html("");
    if($("#txtSearchUsers").val().length >= 1)
    {
        ForceUserSearch();
    }
}

function ForceUserSearch()
{
    // Data to POST
    var data = {
        "searchtext" : $("#txtSearchUsers").val(),
        "expertsonly" : blnExpertsOnly,
        "start": GetStartingRecordNumber(),
        "end" : GetEndingRecordNumber(), 
        "rand": Math.floor(Math.random() * 100000000)
    }

    // Do the postback
    try
    {                    		
        $.post(
                "/services/SearchUsers.aspx", 
                data, 
                DoneWithUserSearch
        );
    }
    catch (ex)
    {
    }
}

function DoneWithUserSearch(data)
{
    // Parse the JSON
	var objJSON = JSON.parse(data);

    // Clear pagination
	$("#divJavascriptPagintion").html("");

	// If the state of the search text has changed 
	// then this search is no longer relevant and should be ignored.
	if ( objJSON.SearchText == $("#txtSearchUsers").val() )
	{
	    if (objJSON.Success)
	    {
	        intTotalNumberOfResults = objJSON.TotalRecordCount;
            strUserPickerSearchText = $("#txtSearchUsers").val();
            if (intTotalNumberOfResults == 0)
	        {
                $("#divJavascriptSearchResults").html("<em>No records were found!</em>");
	        }
	        else
	        {
	            $("#divJavascriptPagintion").html(GetPaginatorFor("User"));
	            var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
	            var intRecordNumber = GetStartingRecordNumber();
                for (var i=0; i<objJSON.Users.length; i++)
                {
                    var strID = objJSON.Users[i].ID;
                    var strName = objJSON.Users[i].FullName;
                    var strType = objJSON.Users[i].Type.Name;
                    arrUsers[strID] = objJSON.Users[i];
                    strHtml += "<tr>";
        	            strHtml += "<td><strong>" + intRecordNumber + ".</strong></td>";
        	            strHtml += "<td>";
        	                strHtml += "<a href=\"#\" onclick=\"SelectedUser('" + strID + "'); return false;\">";
                                strHtml += strName;
                            strHtml += "</a>";
        	            strHtml += "</td>";
        	            strHtml += "<td><strong>-</strong></td>";
        	            strHtml += "<td>";
                                strHtml += strType;
        	            strHtml += "</td>";
        	        strHtml += "</tr>";
        	        intRecordNumber++;
                }
	            strHtml += "</table>";
                $("#divJavascriptSearchResults").html(strHtml);
            }
	    }
	    else
	    {
            $("#divJavascriptSearchResults").html("<h3 style=\"color:maroon;\">" + objJSON.Message + "</h3>");
	    }
	}
}

function GetPaginatorFor(strType)
{
    var strHtml = "";
    var intNumberOfPages = GetNumberOfPages();
    var intStartPage = 1;
    var intWindowHalf = Math.ceil(intWindowSize / 2);
    if ( intCurrentPageNumber > 1 )
    {
        if ( intWindowHalf < intCurrentPageNumber )
        {
            intStartPage = intCurrentPageNumber - intWindowHalf;
        }       
    }
    var intEndPage = intCurrentPageNumber + intWindowHalf;
    if ( intEndPage > intNumberOfPages )
    {
        intEndPage = intNumberOfPages;
    }
    if (intNumberOfPages > 1)
    {
        strHtml += "<table>";
        strHtml += "<tr>";
        strHtml += "<td style=\"background-color: #ffffcc; padding: 5px;\">";
        strHtml += intTotalNumberOfResults;
        if (intTotalNumberOfResults == 1)
        {
            strHtml += " record found";
        }
        else
        {
            strHtml += " records found";
        }
        strHtml += "</td>";
        strHtml += "<td>";
        strHtml += "<a href=\"#\" onclick=\"ResetPageNumberTo(1); Force" + strType + "Search();\">&lt;&lt;First</a>";
        strHtml += "</td>";
        strHtml += "<td>|</td>";
        for (var i = intStartPage; i <= intEndPage; i++)
        {
            strHtml += "<td>";
            if (i == intCurrentPageNumber)
            {
                strHtml += "<strong>" + i + "</strong>";
            }
            else
            {
                strHtml += "<a href=\"#\" onclick=\"ResetPageNumberTo(" + i + "); Force" + strType + "Search();\">" + i + "</a>";
            }
            strHtml += "</td>";
        }
        strHtml += "<td>|</td>";
        strHtml += "<td>";
        strHtml += "<a href=\"#\" onclick=\"ResetPageNumberTo(" + intNumberOfPages + "); Force" + strType + "Search();\">Last&gt;&gt;</a>";
        strHtml += "</td>";
        strHtml += "</tr>";
        strHtml += "</table>";
    }
    return strHtml;
}

function CloseUserSearch()
{
    arrUsers = Array();
    $.modal.close();
}

function SelectedUser(strUserID)
{
    var objUser = arrUsers[strUserID];
    if ( objUser )
    {
        $("#" + strUserParentControlID).contents(".txtUserID").val(objUser.ID);
        $("#" + strUserParentControlID).contents(".spanUserLabel").html(objUser.FullName);
        $("#" + strUserParentControlID).contents(".btnLoadUserIntoForm").trigger("click");
    }
    arrUsers = Array();
    $.modal.close();
}

function SetCategory(id, name)
{
    $(".txtCategoryID").val(id);
    $(".spanCategoryLabel").html(name);
    $.modal.close();
}

/*
2) Event search scripts
*/
var strCommunityEventPickerSearchText = "";
var arrCommunityEvents = Array();
var strEventParentControlID = null;

function ShowCommunityEventPicker(id)
{
    ResetPageNumberTo(1);
    strEventParentControlID = id;
    var strHtml = "<div style=\"padding: 10px 10px 10px 10px;\">" +
        "<table>" +
            "<tr>" +
                "<td>" +
                    "<strong>Search for an event:</strong>" +
                "</td>" +
                "<td>" +
                    "<input type=\"text\" id=\"txtSearchCommunityEvents\" name=\"txtSearchCommunityEvents\" width=\"300px\" maxlength=\"50\" onkeyup=\"ResetPageNumberTo(1); DoCommunityEventSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnSearchCommunityEvents\" value=\"Search\" onclick=\"ResetPageNumberTo(1); ForceCommunityEventSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnCloseCommunityEventSearch\" value=\"Close\" onclick=\"CloseCommunityEventSearch();\" />" +
                "</td>" +
            "</tr>" +
        "</table>" +
        "<div id=\"divJavascriptSearchResults\"></div>" +
        "<div id=\"divJavascriptPagintion\"></div>" +
    "</div>";
    $.modal(strHtml, {opacity: 90});
    if ( strCommunityEventPickerSearchText != "" )
    {
        $("#txtSearchCommunityEvents").val(strCommunityEventPickerSearchText);
        ForceCommunityEventSearch();
    }
}

function DoCommunityEventSearch()
{
    $("#divJavascriptSearchResults").html("");
    if($("#txtSearchCommunityEvents").val().length >= 1)
    {
        ForceCommunityEventSearch();
    }
}

function ForceCommunityEventSearch()
{
    // Data to POST
    var data = {
        "searchtext" : $("#txtSearchCommunityEvents").val(),
        "start": GetStartingRecordNumber(),
        "end": GetEndingRecordNumber(),
        "rand": Math.floor(Math.random() * 100000000)
    }

    // Do the postback
    try
    {                    		
        $.post(
                "/services/SearchCommunityEvents.aspx", 
                data, 
                DoneWithCommunityEventSearch
        );
    }
    catch (ex)
    {
    }
}

function DoneWithCommunityEventSearch(data)
{
    // Parse the JSON
	var objJSON = JSON.parse(data);
	// Clear pagination
	$("#divJavascriptPagintion").html("");
	// If the state of the search text has changed 
	// then this search is no longer relevant and should be ignored.
	if ( objJSON.SearchText == $("#txtSearchCommunityEvents").val() )
	{
	    if (objJSON.Success)
	    {
	        intTotalNumberOfResults = objJSON.TotalRecordCount;
	        strCommunityEventPickerSearchText = $("#txtSearchCommunityEvents").val();
	        if (intTotalNumberOfResults == 0)
	        {
                $("#divJavascriptSearchResults").html("<em>No records were found!</em>");
	        }
	        else
	        {
	            $("#divJavascriptPagintion").html(GetPaginatorFor("CommunityEvent"));
	            var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
	            var intRecordNumber = GetStartingRecordNumber();
	            for (var i = 0; i < objJSON.CommunityEvents.length; i++)
                {
                    var strID = objJSON.CommunityEvents[i].ID;
                    var strTitle = objJSON.CommunityEvents[i].Title;
                    var strFromTo = objJSON.CommunityEvents[i].FromToString;
                    arrCommunityEvents[strID] = objJSON.CommunityEvents[i];
                    strHtml += "<tr>";
        	            strHtml += "<td><strong>" + intRecordNumber + ".</strong></td>";
        	            strHtml += "<td>";
        	                strHtml += "<a href=\"#\" onclick=\"SelectedCommunityEvent('" + strID + "'); return false;\">";
                                strHtml += strTitle;
                            strHtml += "</a>";
        	            strHtml += "</td>";
        	            strHtml += "<td>";
                                strHtml += strFromTo;
        	            strHtml += "</td>";
        	        strHtml += "</tr>";
        	        intRecordNumber++;
                }
	            strHtml += "</table>";
                $("#divJavascriptSearchResults").html(strHtml);
            }
	    }
	    else
	    {
            $("#divJavascriptSearchResults").html("<h3 style=\"color:maroon;\">" + objJSON.Message + "</h3>");
	    }
	}
}

function CloseCommunityEventSearch()
{
    arrCommunityEvents = Array();
    $.modal.close();
}

function SelectedCommunityEvent(strCommunityEventID)
{
    var objCommunityEvent = arrCommunityEvents[strCommunityEventID];
    if ( objCommunityEvent )
    {
        $("#" + strEventParentControlID).contents(".txtCommunityEventID").val(objCommunityEvent.ID);
        $("#" + strEventParentControlID).contents(".spanCommunityEventLabel").html(objCommunityEvent.Title);
    }
    arrCommunityEvents = Array();
    $.modal.close();
}

/*
3) Display the category picker
*/
function ShowCategoryPicker()
{
    $.modal($("#divCatgegorySelector").html(), {opacity: 90});
}

/*
4) User email (to) search scripts
*/
var strUserPickerSearchText = "";
var arrSelectedUsers = Array();
var strUserParentControlID = null;
var blnExpertsOnly = false;

function ShowToUserPicker(id, type)
{
    blnSelectedAllUsers = false;
    arrSpeciallyDeselecedUsers = Array();
    arrSpeciallySelectedUsers = Array();
    ResetPageNumberTo(1);
    strUserParentControlID = id;
    var strGroupPicker = "";

    if (type == "administrator") 
    {
        strGroupPicker =
                "<tr>" +
                "<td>" +
                    "<table>" +
                        "<tr>" +
                            "<td>" +
                                "<strong>Select a User Group to Email:</strong>" +
                            "</td>" +
                            "<td>" +
                                "<a href=\"#\" id=\"btnAddSpecialAllEditors\" onclick=\"AddSpecialRecipient('btnAddSpecialAllEditors', 'All Editors');\">All Editors</a> | " +
                                "<a href=\"#\" id=\"btnAddSpecialAllSubscribers\" onclick=\"AddSpecialRecipient('btnAddSpecialAllSubscribers', 'All Subscribers');\">All Subscribers</a> | " +
                                "<a href=\"#\" id=\"btnAddSpecialAllUsers\" onclick=\"AddSpecialRecipient('btnAddSpecialAllUsers', 'All Users');\">All Users</a>" +
                            "</td>" +
                            "<td>" +
                                "<strong>or</strong>" +
                            "</td>" +
                        "</tr>" +
                    "</table>" +
                "</td>" +
            "</tr>";
    }

    var strHtml = "<div style=\"padding: 10px 10px 10px 10px;\">" +
        "<table>" +
            strGroupPicker +
            "<tr>" +
                "<td>" +
                    "<table>" +
                        "<tr>" +
                            "<td>" +
                                "<strong>Search for a user:</strong>" +
                            "</td>" +
                            "<td>" +
                                "<input type=\"text\" id=\"txtSearchUsers\" name=\"txtSearchUsers\" width=\"300px\" maxlength=\"50\" onkeyup=\"ResetPageNumberTo(1); DoToUserSearch();\" />" +
                            "</td>" +
                            "<td>" +
                                "<input type=\"button\" id=\"btnSearchUsers\" value=\"Search\" onclick=\"ResetPageNumberTo(1); ForceToUserSearch();\" />" +
                            "</td>" +
                            "<td>" +
                                "<input type=\"button\" id=\"btnCloseUserSearch\" value=\"Close\" onclick=\"CloseToUserSearch();\" />" +
                            "</td>" +
                            "<td>" +
                                "<a href=\"#\" id=\"btnAddSpecialSelectedUsers\" onclick=\"AddSelectedUsers();\">Add Selected Users</a>" +
                                "<span id=\"spanPleaseWait\" style=\"background-color: #ffff66; display:none;\"> Please Wait... </span>" +
                            "</td>" +
                        "</tr>" +
                    "</table>" +
                "</td>" +
            "</tr>" +
            "<tr>" +
                "<td>" +
                    "<div id=\"divJavascriptSearchResults\"></div>" +
                    "<div id=\"divJavascriptPagintion\"></div>" +
                "</td>" +
            "</tr>" +
        "</table>" +
    "</div>";
    $.modal(strHtml, { opacity: 90 });
    if (strUserPickerSearchText != "")
    {
        $("#txtSearchUsers").val(strUserPickerSearchText);
        ForceToUserSearch();
    }

    var strUserIds = $("#" + strUserParentControlID).contents(".txtUserID").val();
    var strFullNames = $("#" + strUserParentControlID).contents(".txtUserName").val();

    if (strUserIds != "")
    {
        var arrUserIDs = strUserIds.split(",");
        var arrFullNames = strFullNames.split(",");
        arrSelectedUsers = Array();
        for (var i = 0; i < arrUserIDs.length; i++)
        {
            var objUser = new Object();
            objUser.ID = arrUserIDs[i];
            objUser.FullName = arrFullNames[i];
            arrSelectedUsers.push(objUser);
        }
    }
}

function DoToUserSearch()
{
    $("#divJavascriptSearchResults").html("");
    if ($("#txtSearchUsers").val().length >= 1)
    {
        ForceToUserSearch();
    }
}

function ForceToUserSearch()
{
    // Data to POST
    var data = {
        "searchtext": $("#txtSearchUsers").val(),
        "expertsonly": blnExpertsOnly,
        "start": GetStartingRecordNumber(),
        "end": GetEndingRecordNumber(),
        "rand": Math.floor(Math.random() * 100000000)
    }

    // Do the postback
    try
    {
        $.post(
                "/services/SearchUsers.aspx",
                data,
                DoneWithToUserSearch
        );
    }
    catch (ex)
    {
    }
}

function DoneWithToUserSearch(data)
{
    // Parse the JSON
    var objJSON = JSON.parse(data);
    // Clear pagination
    $("#divJavascriptPagintion").html("");
    // If the state of the search text has changed 
    // then this search is no longer relevant and should be ignored.
    if (objJSON.SearchText == $("#txtSearchUsers").val())
    {
        if (objJSON.Success)
        {
            intTotalNumberOfResults = objJSON.TotalRecordCount;
            strUserPickerSearchText = $("#txtSearchUsers").val();
            if (intTotalNumberOfResults == 0)
            {
                $("#divJavascriptSearchResults").html("<em>No records were found!</em>");
            }
            else
            {
                var strChecked = "";
                if (blnSelectedAllUsers)
                {
                    strChecked = " checked=\"checked\"";
                }
                $("#divJavascriptPagintion").html(GetPaginatorFor("ToUser"));
                var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
                strHtml += "<tr>";
                    strHtml += "<td><input type=\"checkbox\" onclick=\"SetAllCheckboxesTo(this.checked);\"" + strChecked + " /></td>";
                    strHtml += "<td><strong>#</strong></td>";
                    strHtml += "<td><strong>Name</strong></td>";
                    strHtml += "<td><strong>Type</strong></td>";
                    strHtml += "<td><strong>Organization</strong></td>";
                 strHtml += "</tr>";
                var intRecordNumber = GetStartingRecordNumber();
                for (var i = 0; i < objJSON.Users.length; i++)
                {
                    var strID = objJSON.Users[i].ID;
                    var strName = objJSON.Users[i].FullName;
                    var strType = objJSON.Users[i].Type.Name;
                    var strOrganization = objJSON.Users[i].Organization;
                    arrUsers[strID] = objJSON.Users[i];
                    var strUserChecked = strChecked;
                    if ((arrSpeciallySelectedUsers != null) && (arrSpeciallyDeselecedUsers != null))
                    {
                        if (blnSelectedAllUsers && (arrSpeciallyDeselecedUsers[strID] != null))
                        {
                            strUserChecked = "";
                        }
                        if ((!blnSelectedAllUsers) && (arrSpeciallyDeselecedUsers[strID] != null))
                        {
                            strUserChecked = " checked=\"checked\"";
                        }
                    }
                    strHtml += "<tr>";
                    strHtml += "<td><input type=\"checkbox\" id=\"" + strID + "\" class=\"cbUsers\"" + strUserChecked + " /></td>";
                        strHtml += "<td><strong>" + intRecordNumber + ".</strong></td>";
                        strHtml += "<td>";
                        strHtml += "<a href=\"#\" onclick=\"SelectedToUser('" + strID + "'); return false;\">";
                        strHtml += strName;
                        strHtml += "</a>";
                        strHtml += "</td>";
                        strHtml += "<td>";
                        strHtml += strType;
                        strHtml += "</td>";
                        strHtml += "<td>";
                        strHtml += strOrganization;
                        strHtml += "</td>";
                    strHtml += "</tr>";
                    intRecordNumber++;
                }
                strHtml += "</table>";
                $("#divJavascriptSearchResults").html(strHtml);
            }
        }
        else
        {
            $("#divJavascriptSearchResults").html("<h3 style=\"color:maroon;\">" + objJSON.Message + "</h3>");
        }
    }
}

var blnSelectedAllUsers = false;
var arrSpeciallyDeselecedUsers = Array();
var arrSpeciallySelectedUsers = Array();

function SetAllCheckboxesTo(blnChecked)
{
    $('.cbUsers').attr('checked', blnChecked);
    blnSelectedAllUsers = blnChecked;
    arrSpeciallyDeselecedUsers = Array();
    arrSpeciallySelectedUsers = Array();
}

function CloseToUserSearch()
{
    arrUsers = Array();
    $.modal.close();
}

function SelectedToUser(strUserID)
{
    var objUser = arrUsers[strUserID];
    if (objUser)
    {
        arrSelectedUsers.push(objUser);
    }
    RebuildToList();
    arrUsers = Array();
    $.modal.close();
}

function AddSpecialRecipient(strControlID, strLabel)
{
    var objUser = new Object();
    objUser.ID = strLabel;
    objUser.FullName = strLabel;
    if (strLabel == "All Users")
    {
        arrSelectedUsers = Array();
    }
    arrSelectedUsers.push(objUser);
    RebuildToList();
    arrUsers = Array();
    $.modal.close();
}

function AddSelectedUsers()
{
    ResetPageNumber();
    var blnCheckedUsers = false;
    if (blnSelectedAllUsers)
    {
        if (arrSpeciallyDeselecedUsers.length == 0)
        {
            AddSpecialRecipient('btnAddSpecialAllUsers', 'All Users');
        }
        else
        {
            $("#spanPleaseWait").show();
            $("#btnAddSpecialSelectedUsers").hide();
            
            // Data to POST
            var data = {
                "all": "true",
                "rand": Math.floor(Math.random() * 100000000)
            }

            // Do the postback
            try
            {
                $.post(
                    "/services/SearchUsers.aspx",
                    data,
                    AddAllUsers
                );
            }
            catch (ex)
            {
                $("#spanPleaseWait").hide();
                $("#btnAddSpecialSelectedUsers").show();
            }
        }
    }
    else
    {
        for (var i = 0; i < arrSpeciallySelectedUsers.length; i++)
        {
            var objUser = new Object();
            objUser.ID = arrSpeciallySelectedUsers[i].ID;
            objUser.FullName = arrSpeciallySelectedUsers[i].FullName;
            arrSelectedUsers.push(objUser);
            blnCheckedUsers = true;
        }
    }

    if (blnCheckedUsers)
    {
        RebuildToList();
        arrUsers = Array();
        $.modal.close();
    }
}

function AddAllUsers(data)
{
    $("#spanPleaseWait").hide();
    $("#btnAddSpecialSelectedUsers").show();
    var objJSON = JSON.parse(data);
    if (objJSON.Success)
    {
        if (objJSON.Users.length > 0)
        {
            for (var i = 0; i < objJSON.Users.length; i++)
            {
                var objUser = new Object();
                objUser.ID = objJSON.Users[i].ID;
                objUser.FullName = objJSON.Users[i].FullName;
                var blnAddUser = true;
                if (arrSpeciallyDeselecedUsers.length > 0)
                {
                    for (var j = 0; j < arrSpeciallyDeselecedUsers.length; j++)
                    {
                        if (arrSpeciallyDeselecedUsers[j].ID == objUser.ID)
                        {
                            blnAddUser = false;
                            break;
                        }
                    }
                }
                if (blnAddUser)
                {
                    arrSelectedUsers.push(objUser);
                }
            }
            RebuildToList();
            arrUsers = Array();
            $.modal.close();
        }
    }
}

function RemoveToUser(strUserID)
{
    var arrNewToUsers = Array();
    for (var i = 0; i < arrSelectedUsers.length; i++)
    {
        var objUser = arrSelectedUsers[i];
        if (objUser.ID != strUserID)
        {
            arrNewToUsers.push(objUser);
        }
    }
    arrSelectedUsers = arrNewToUsers;
    RebuildToList();
}

function RebuildToList()
{
    var arrDisplayedUsers = Array(); 
    var arrNewToUsers = Array();
    var strUserIDList = "";
    var strFullName = "";
    if (arrSelectedUsers.length > 1)
    {
        arrDisplayedUsers["All Users"] = new Object();
    }
    for (var i = 0; i < arrSelectedUsers.length; i++)
    {
        var objUser = arrSelectedUsers[i];
        if (arrDisplayedUsers[objUser.ID] == null)
        {
            if (strUserIDList != "")
            {
                strUserIDList += ",";
            }
            strUserIDList += objUser.ID;
            if (strFullName != "")
            {
                strFullName += ", ";
            }
            strFullName += "<a href=\"#\" onclick=\"if (!confirm('Are you sure you want to remove this user?')) {return false;} RemoveToUser('" + objUser.ID + "');\">" + objUser.FullName + "</a>";
            arrNewToUsers.push(objUser);
            arrDisplayedUsers[objUser.ID] = objUser;
        }
    }
    arrSelectedUsers = arrNewToUsers;
    $("#" + strUserParentControlID).contents(".txtUserID").val(strUserIDList);
    $("#" + strUserParentControlID).contents(".txtUserName").val(strFullName);
    $("#" + strUserParentControlID).contents(".spanUserLabel").html(strFullName);
}

