﻿/*
1) User search scripts
*/
var strUserPickerSearchText = "";
var arrUsers = Array();
var strUserParentControlID = null;
var blnExpertsOnly = false;

function ShowUserPicker(id, expertsonly)
{
    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=\"DoUserSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnSearchUsers\" value=\"Search\" onclick=\"ForceUserSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnCloseUserSearch\" value=\"Close\" onclick=\"CloseUserSearch();\" />" +
                "</td>" +
            "</tr>" +
        "</table>" +
        "<div id=\"divUserSearchResults\"></div>" +
    "</div>";
    $.modal(strHtml, {opacity: 90});
    if ( strUserPickerSearchText != "" )
    {
        $("#txtSearchUsers").val(strUserPickerSearchText);
        ForceUserSearch();
    }
}

function DoUserSearch()
{
    $("#divUserSearchResults").html("");
    if($("#txtSearchUsers").val().length >= 1)
    {
        ForceUserSearch();
    }
}

function ForceUserSearch()
{
    // Data to POST
    var data = {
        "searchtext" : $("#txtSearchUsers").val(), 
        "expertsonly" : blnExpertsOnly, 
        "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);
	// 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)
	    {
            strUserPickerSearchText = $("#txtSearchUsers").val();
	        if (objJSON.Users.length == 0)
	        {
                $("#divUserSearchResults").html("<em>No records were found!</em>");
	        }
	        else
	        {
	            var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
                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>" + (i+1) + ".</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>";                    
                }
	            strHtml += "</table>";
                $("#divUserSearchResults").html(strHtml);
            }
	    }
	    else
	    {
            $("#divUserSearchResults").html("<h3 style=\"color:maroon;\">" + objJSON.Message + "</h3>");
	    }
	}
}

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)
{
    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=\"DoCommunityEventSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnSearchCommunityEvents\" value=\"Search\" onclick=\"ForceCommunityEventSearch();\" />" +
                "</td>" +
                "<td>" +
                    "<input type=\"button\" id=\"btnCloseCommunityEventSearch\" value=\"Close\" onclick=\"CloseCommunityEventSearch();\" />" +
                "</td>" +
            "</tr>" +
        "</table>" +
        "<div id=\"divCommunityEventSearchResults\"></div>" +
    "</div>";
    $.modal(strHtml, {opacity: 90});
    if ( strCommunityEventPickerSearchText != "" )
    {
        $("#txtSearchCommunityEvents").val(strCommunityEventPickerSearchText);
        ForceCommunityEventSearch();
    }
}

function DoCommunityEventSearch()
{
    $("#divCommunityEventSearchResults").html("");
    if($("#txtSearchCommunityEvents").val().length >= 1)
    {
        ForceCommunityEventSearch();
    }
}

function ForceCommunityEventSearch()
{
    // Data to POST
    var data = {
        "searchtext" : $("#txtSearchCommunityEvents").val(), 
        "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);
	// 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)
	    {
            strCommunityEventPickerSearchText = $("#txtSearchCommunityEvents").val();
	        if (objJSON.CommunityEvents.length == 0)
	        {
                $("#divCommunityEventSearchResults").html("<em>No records were found!</em>");
	        }
	        else
	        {
	            var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
                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>" + (i+1) + ".</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>";                    
                }
	            strHtml += "</table>";
                $("#divCommunityEventSearchResults").html(strHtml);
            }
	    }
	    else
	    {
            $("#divCommunityEventSearchResults").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)
{
    strUserParentControlID = id;
    var strHtml = "<div style=\"padding: 10px 10px 10px 10px;\">" +
        "<table>" +
            "<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>" +
            "<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=\"DoToUserSearch();\" />" +
                            "</td>" +
                            "<td>" +
                                "<input type=\"button\" id=\"btnSearchUsers\" value=\"Search\" onclick=\"ForceToUserSearch();\" />" +
                            "</td>" +
                            "<td>" +
                                "<input type=\"button\" id=\"btnCloseUserSearch\" value=\"Close\" onclick=\"CloseToUserSearch();\" />" +
                            "</td>" +
                        "</tr>" +
                    "</table>" +
                "</td>" +
            "</tr>" +
            "<tr>" +
                "<td>" +
                    "<div id=\"divUserSearchResults\"></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()
{
    $("#divUserSearchResults").html("");
    if ($("#txtSearchUsers").val().length >= 1)
    {
        ForceToUserSearch();
    }
}

function ForceToUserSearch()
{
    // Data to POST
    var data = {
        "searchtext": $("#txtSearchUsers").val(),
        "expertsonly": blnExpertsOnly,
        "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);
    // 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)
        {
            strUserPickerSearchText = $("#txtSearchUsers").val();
            if (objJSON.Users.length == 0)
            {
                $("#divUserSearchResults").html("<em>No records were found!</em>");
            }
            else
            {
                var strHtml = "<table cellpadding=\"3\" cellspacing=\"0\">";
                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>" + (i + 1) + ".</strong></td>";
                    strHtml += "<td>";
                    strHtml += "<a href=\"#\" onclick=\"SelectedToUser('" + strID + "'); return false;\">";
                    strHtml += strName;
                    strHtml += "</a>";
                    strHtml += "</td>";
                    strHtml += "<td><strong>-</strong></td>";
                    strHtml += "<td>";
                    strHtml += strType;
                    strHtml += "</td>";
                    strHtml += "</tr>";
                }
                strHtml += "</table>";
                $("#divUserSearchResults").html(strHtml);
            }
        }
        else
        {
            $("#divUserSearchResults").html("<h3 style=\"color:maroon;\">" + objJSON.Message + "</h3>");
        }
    }
}

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;
    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 = "";
    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);
}

