﻿var threadId = -1;
var ThreadList =
{
    ActiveFilter: "All",
    ActiveSort: "NewerPosts",
    HasAttachment: "",
    HasCode: "",
    InFilterAnimation: false
}

function ToggleViewOptions(optionElement)
{
    if (!ThreadList.InFilterAnimation)
    {
        ThreadList.InFilterAnimation = true;

        var state = optionElement.attributes["view"].value;
        var element = document.getElementById("threadaction");

        switch (state)
        {
            case "true":
                Animation.Do(element, "SlideUp", null, function() { ThreadList.InFilterAnimation = false; }, { "Style": "Accelerated", "Step": IS.ie ? 4 : 1 });
                optionElement.attributes["view"].value = "false";
                optionElement.innerText = "Show Options";
                break;
            case "false":
                element.parentElement.height = "0px";
                element.style.top = "-90px";

                Animation.Do(element, "SlideDown", null, function() { ThreadList.InFilterAnimation = false; }, { "Style": "Accelerated", "Step": IS.ie ? 8 : 1 });

                optionElement.attributes["view"].value = "true";
                optionElement.innerText = "Hide Options";
                break;
        }
    }
}

function HideViewOptions()
{
    if (!ThreadList.InFilterAnimation)
    {
        ThreadList.InFilterAnimation = true;

        var optionElement = document.getElementById("optionelement");
        var state = optionElement.attributes["view"].value;
        var element = document.getElementById("threadaction");

        Animation.Do(element, "SlideUp", null, function() { ThreadList.InFilterAnimation = false; }, { "Style": "Accelerated", "Step": IS.ie ? 4 : 1 });
        optionElement.attributes["view"].value = "false";
        optionElement.innerText = "Show view options";
    }
}

function ShowThreads(option, element)
{        
    switch (option)
    {
        case "All":
        case "Unanswered":
        case "Answered":
        case "ProposedAnswer":
        case "GeneralDiscussion":
            ToggleActionButton(ThreadList.ActiveFilter, false);
            ToggleActionButton(option, true);
            ThreadList.ActiveFilter = option;
            break;
        case "HasAttachment":
            if (element.checked)
                ThreadList.HasAttachment = "true";
            else
                ThreadList.HasAttachment = "";            
            break;
        case "HasCode":
            if (element.checked)
                ThreadList.HasCode = "true";
            else
                ThreadList.HasCode = "";
            break;
    }
    
    RefreshThreadList();
}

function ToggleShowThreads(option, element)
{
    element = element.parentElement.children[0].children[0];
    
    element.checked = !element.checked;
    ShowThreads(option, element);   
}


function SortBy(option, element)
{
    ToggleActionButton(ThreadList.ActiveSort, false);
    ToggleActionButton(option, true);

    ThreadList.ActiveSort = option;

    RefreshThreadList(); 
}

function ToggleActionButton(option, state)
{
    var element = document.getElementById(option);
    var icon = document.getElementById(option + "Icon");

    if (element != null)
    {
        switch (state)
        {
            case true:
                element.className = "selected";
                element.parentElement.parentElement.className = "selected";
                element.parentElement.parentElement.parentElement.children[0].className = "selectedleft";
                element.parentElement.parentElement.parentElement.children[2].className = "selectedright";
                break;
            case false:
                element.className = "";
                element.parentElement.parentElement.className = "normal";
                element.parentElement.parentElement.parentElement.children[0].className = "left";
                element.parentElement.parentElement.parentElement.children[2].className = "right";  
                break;
        }
    }
}

function ThreadFilterInfo()
{
    this.Forum = "";
    this.Tag = "";
    
    this.QueryString = "";
    this.Path = "";
    this.Page = "";
    
    this.Filter = "";
    this.HasCode = "";
    this.HasAttachment = "";
    this.OrderBy = "";
}

function RefreshThreadList()
{
    AJAXRefreshThreadList();
    
    var options = GetOptions();    
    window.location = window.location.protocol + "//" + window.location.hostname + window.location.pathname + window.location.search + options;
    
}

function AJAXRefreshThreadList()
{
    var info = new ThreadFilterInfo();
    info.Path = document.getElementById("path").value;
    info.QueryString = document.getElementById("querystring").value;
    info.Page = document.getElementById("page").value;

    info.Forum = document.getElementById("forum").value;
    info.Tag = document.getElementById("tag").value;

    info.Filter = ThreadList.ActiveFilter;
    info.HasAttachment = ThreadList.HasAttachment;
    info.HasCode = ThreadList.HasCode;
    info.OrderBy = ThreadList.ActiveSort;

    var WebFlyPostBackManager1 = ISGetObject("WebFlyPostBackManager1");
    if (WebFlyPostBackManager1 == null)
        window.setTimeout(function() { RefreshThreadList(); }, 100);
    else
    {
        var loader = document.getElementById("loader");
        loader.style.visibility = "visible";
                
        WebFlyPostBackManager1.FilterThreadList(info.Forum, info.Tag, info.Path, info.QueryString, info.Page, info.Filter, info.HasCode, info.HasAttachment, info.OrderBy);
    }
}

function WebFlyPostBackManager1_OnResponseSuccess(controlId, method, returnValue)
{
    if ((method == "DeleteThread" || method == "MoveThread" || method == "SetStickyNote") && returnValue)
        RefreshThreadList();
    else
    {
        var loader = document.getElementById("loader");
        loader.style.visibility = "hidden";

        var listpanel = document.getElementById("listpanel");
        Animation.Do(listpanel, "FadeIn", (IS.ie ? 15 : 3), null);
    }
}

function GetOptions()
{
    var options = "#filter=" + ThreadList.ActiveFilter + "&sort=" + ThreadList.ActiveSort;
    if (ThreadList.HasAttachment == "true")
        options += "&hasattachment";

    if (ThreadList.HasCode == "true")
        options += "&hascode";

    return options;
}

function SynchronizeFilterOptions()
{   
    ThreadList.ActiveFilter = document.getElementById("filter").value;
    ThreadList.ActiveSort = document.getElementById("sort").value;
    ThreadList.HasAttachment = document.getElementById("hasattachment").value;
    ThreadList.HasCode = document.getElementById("hascode").value;

    document.getElementById("cbHasCode").checked = ThreadList.HasCode;
    document.getElementById("cbHasAttachment").checked = ThreadList.HasAttachment;
    
    ToggleActionButton(ThreadList.ActiveFilter, true);
    ToggleActionButton(ThreadList.ActiveSort, true);
}

function DisplayContent(flag)
{
    var panel = document.getElementById("ctl00_ctl00_ctl00_ctl00_a_b_c_e_NoThreads");

    if (flag == "true")
    {
        panel.style.display = "";
    }
    else
    {
        panel.style.display = "none";
    }    
}

function DeleteThread(id)
{
    threadId = id;
    var link = document.getElementById("deleteLink" + id);
    CreateForumCallOut("DeleteThread", link);
}

function DoDeleteThread(isDelete)
{
    if (isDelete && threadId != -1)
    {
        var fpb = ISGetObject("WebFlyPostBackManager1");
        fpb.DeleteThread(threadId);
    }
    
    HideAllForumCallOut();
}

function MoveThread(id)
{
    threadId = id;
    
    var callout = ISGetObject("wcMoveThread");
    var link = document.getElementById("moveLink" + id);
    callout.ShowAutoDetect(link);
}

function DoMoveThread()
{
    if (threadId != -1)
    {
        var el = document.getElementById("ctl00_ctl00_ctl00_ctl00_a_b_c_e_wcMoveThread_wcMoveThread_C_ddlForumList");
        
        if (el.selectedIndex != -1)
        {
            var forumId = parseInt(el.options[el.selectedIndex].value);
            
            var fpb = ISGetObject("WebFlyPostBackManager1");
            fpb.MoveThread(threadId, forumId);
        }
    }
    
    var callout = ISGetObject("wcMoveThread");
    callout.Hide();
}

function SetAsStickyNote(id, flag)
{
    threadId = id;
    var link = document.getElementById("stickyLink" + id);
    
    if (flag)
        CreateForumCallOut("SetAsStickyNote", link);
    else
        CreateForumCallOut("RemoveStickyNote", link);
}

function DoSetAsStickyNote(flag, isSticky)
{
    if (flag && threadId != -1)
    {
        var fpb = ISGetObject("WebFlyPostBackManager1");
        fpb.SetStickyNote(threadId, isSticky);
    }
    
    HideAllForumCallOut();
}