﻿
Type.registerNamespace('Fansite.ForumThreadPreview');

Fansite.ForumThreadPreview.hasPreviewBeenShown = function (element) 
{
    var viewControlWrapper = Relational.ViewControls.getViewControlWrapper(element);
    if(typeof(viewControlWrapper.previewShown) != 'undefined' && viewControlWrapper.previewShown != null) {
        if (viewControlWrapper.previewShown == true)
            return true;
        else   
            return false;
    }
    else   
        return false;
}

Fansite.ForumThreadPreview.previewHasBeenShown = function (element) 
{
    var viewControlWrapper = Relational.ViewControls.getViewControlWrapper(element);
    viewControlWrapper.previewShown = true;
}

Fansite.ForumThreadPreview.showForumThreadPreview = function (evt, context) 
{
    var forumThreadPreviewPanel = $get(context.previewPanelId);
    if (typeof(forumThreadPreviewPanel) !== 'undefined' && Relational.Utility.containsClassName(forumThreadPreviewPanel,'Hidden') == true) 
    { 
        // show the panel
        Relational.Utility.changeClassName(forumThreadPreviewPanel, 'Hidden', 'Visible');
        if (Fansite.ForumThreadPreview.hasPreviewBeenShown(context.element) == false)
        {
            // perform the command, mark the panel as shown
            Fansite.ForumThreadPreview.previewHasBeenShown(context.element);
            var controlPath =  '~/ViewControls/ForumThreadPreview.ascx'; 
            var command = 'ShowForumThreadPreview';
            Relational.ViewControls.refresh(context.element, controlPath, command, null);
        }
    }
    return Relational.Utility.eventCancel(evt);
}

Fansite.ForumThreadPreview.hideForumThreadPreview = function (evt, context) 
{
    var forumThreadPreviewPanel = $get(context.previewPanelId);
    if (typeof(forumThreadPreviewPanel) !== 'undefined' && Relational.Utility.containsClassName(forumThreadPreviewPanel,'Visible') == true) 
    { 
        // hide the panel
        Relational.Utility.changeClassName(forumThreadPreviewPanel, 'Visible', 'Hidden');
    }
    return Relational.Utility.eventCancel(evt);
}

Fansite.ForumThreadPreview.initControl = function (previewButtonId,hideButtonId,previewPanelId) 
{
    var previewButton = $get(previewButtonId);
    if(typeof(previewButton) != 'undefined' && previewButton != null) {
        $clearHandlers(previewButton);
        $addHandler(previewButton, 'mouseover', Function.createCallback(Fansite.ForumThreadPreview.showForumThreadPreview, { element : previewButton, previewPanelId : previewPanelId }));
        $addHandler(previewButton, 'mouseout', Function.createCallback(Fansite.ForumThreadPreview.hideForumThreadPreview, { previewPanelId : previewPanelId }));
    }
    var closeButton = $get(hideButtonId);
    if(typeof(closeButton) != 'undefined' && closeButton != null) {
        $clearHandlers(closeButton);
        $addHandler(closeButton, 'click', Function.createCallback(Fansite.ForumThreadPreview.hideForumThreadPreview, { element : closeButton, previewPanelId : previewPanelId }));
    }
}

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
