var userIDMain;
var cultureIDMain;
var wikiIDMain;
var paragraphIDMain;
var isReadOnly = false;
var isLoggedOut = false;

function PreEditParagraphMain(id)
{
    if (FCKeditorAPI == null || FCKeditorAPI.GetInstance("txtText_" + id) == null)
        InitFCKEditor(id);
    else
        EditParagraphMain(id);
}

/// <summary>
///     Makes the main paragraph editable
/// </summary>
function EditParagraphMain(id)
{
    var spnText = document.getElementById("spnText_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var tblEditingControls = document.getElementById("tblEditingControls_" + id);
    var tblEditLink = document.getElementById("tblEditLink_" + id);
    
    // If there is already an edited paragraph, cancel its edit
    if (lastEditedParagraphID != null)
        CancelEdit(lastEditedParagraphID);

    spnText.style.display = "none";
    spnFCKWrapper.style.display = "";
    
    tblEditingControls.style.display = "";
    tblEditLink.style.display = "none";
    
    lastEditedParagraphID = id;
    txtText.Focus();
}

/// <summary>
///     Cancels the edit mode of the main paragraph
/// </summary>
function CancelEditMain(id)
{
    var spnText = document.getElementById("spnText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);

    var tblEditingControls = document.getElementById("tblEditingControls_" + id);
    var tblEditLink = document.getElementById("tblEditLink_" + id);
    var btnPreview = document.getElementById("btnPreview_" + id);
    var btnCancelPreview = document.getElementById("btnCancelPreview_" + id);
    
    spnText.style.display = "";     
    spnFCKWrapper.style.display = "none";
    spnTextPreview.style.display = "none";
    
    tblEditingControls.style.display = "none";
    tblEditLink.style.display = "";
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";

    lastEditedParagraphID = null;
}

/// <summary>
///     Shows a preview of how the paragraph would look after saving
/// </summary>
function PreviewParagraphMain(id)
{
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var btnPreview = document.getElementById("btnPreview_" + id);
    var btnCancelPreview = document.getElementById("btnCancelPreview_" + id);
    
    spnTextPreview.innerHTML = txtText.GetHTML();       
    spnTextPreview.style.display = "";
    spnFCKWrapper.style.display = "none";
    
    btnPreview.style.display = "none";
    btnCancelPreview.style.display = "";
}

/// <summary>
///     Cancels the preview mode (returns to edit mode)
/// </summary>
function CancelPreviewMain(id)
{
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var btnPreview = document.getElementById("btnPreview_" + id);
    var btnCancelPreview = document.getElementById("btnCancelPreview_" + id);
    
    spnTextPreview.innerHTML = "";
    spnTextPreview.style.display = "none";
    spnFCKWrapper.style.display = "";
    
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";
}
    
/// <summary>
///     Sets the current user id
/// </summary>
function SetUserIDMain(id)
{
    userIDMain = id;
}

/// <summary>
///     Sets the current culture id
/// </summary>
function SetCultureIDMain(id)
{
    cultureIDMain = id;
}

/// <summary>
///     Sets the current Wiki id
/// </summary>
function SetWikiIDMain(id)
{
    wikiIDMain = id;
}

/// <summary>
///     Sets the main paragraph id
/// </summary>
function RegisterIDMain(id)
{
    paragraphIDMain = id;
}

/// <summary>
///     Makes the "edit" link invisible, so that the control is read only
/// </summary>
function MakeReadOnlyMain()
{
    var tblEditLink = document.getElementById("tblEditLink_" + paragraphIDMain);
    isReadOnly = true;
  
    tblEditLink.style.display = "none";
}

/// <summary>
///     We call this function, when no user is logged in
///     it causes the "edit" link to doPostBack, so we can force him to log in
/// </summary>
function MakeLoggedOutModeMain()
{
    var fullID = "aEdit_" + paragraphIDMain;
    var aEditLink = document.getElementById(fullID);
    isLoggedOut = true;
    
    aEditLink.href = "javascript:__doPostBack('" + fullID + "', '');";
}

/// <summary>
///     Updates a paragraph via AJAX. 
///     If the paragraph text is empty, it will delete the paragraph.
/// </summary>
function UpdateParagraphAJAXMain(id)
{
    var btnSave = document.getElementById("btnSave_" + id);
    var text = FCKeditorAPI.GetInstance("txtText_" + id).GetHTML();
    var summary = document.getElementById("txtSummary_" + id).value;        
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);

    // Don't allow multiple clicks
    btnSave.disabled = true;
    
    // Don't allow empty text
    if (GetCleanText(text).length == 0)
    {
        alert(TheMainParagraphsText);
        btnSave.disabled = false;
        return;
    }
    // Check if any changes were made at all
    if (!txtText.IsDirty())
    {
        btnSave.disabled = false;
        return;
    }
                    
    UpdateMainParagraph(wikiIDMain, id, text, summary, userIDMain, cultureIDMain);
}    

/// <summary>
///     Updates the text of the paragraph according to the editing controls
///     It happens after the updating function (UpdateMainParagraph)
///     and reflects the updated data in the DB
/// </summary>
function RefreshParagraphMain(id)
{
    var btnSave = document.getElementById("btnSave_" + id);
    var spnText = document.getElementById("spnText_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);
    var txtSummary = document.getElementById("txtSummary_" + id);

    var tblEditingControls = document.getElementById("tblEditingControls_" + id);
    var tblEditLink = document.getElementById("tblEditLink_" + id);
    var btnPreview = document.getElementById("btnPreview_" + id);
    var btnCancelPreview = document.getElementById("btnCancelPreview_" + id);
    
    spnText.innerHTML = txtText.GetHTML();
    txtSummary.value = "";
    
    spnText.style.display = "";
    spnFCKWrapper.style.display = "none";
    spnTextPreview.style.display = "none";
    
    tblEditingControls.style.display = "none";
    tblEditLink.style.display = "";
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";
    
    btnSave.disabled = false;
}

/// <summary>
///     If the main paragraph is empty, and we are not in ReadOnly mode, it opens the paragraph for edit
/// </summary>
function MakeEditableIfEmpty()
{
    if (!isReadOnly && !isLoggedOut && document.getElementById("spnText_" + paragraphIDMain).innerHTML.length == 0)
        PreEditParagraphMain(paragraphIDMain);
}
