// Globals
var userID;
var cultureID;
var wikiID;
var paragraphIDs = new Array();
var FCKeditorAPI;
var lastEditedParagraphID;
var wikiParentID;
var wikiID;
var isHideAddParagraph = false;

// Client IDs of server hidden controls
var headingID;
var textID;
var summaryID;
var positionID;

// GlobalResources strings
var HeadingCannotBeEmpty;
var ThisHeadingAlreadyExists;
var NoChangesWereMade;
var SavingWithNoText;
var TextCannotBeEmpty;
var TheMainParagraphsText;

//GlobalResources for video / image in FCK
var createdOnRes;
var createdByRes;
var tagsRes;

function AssignResourceStrings(res1, res2, res3, res4, res5, res6, res7, res8, res9)
{
    HeadingCannotBeEmpty = res1;
    ThisHeadingAlreadyExists = res2;
    NoChangesWereMade = res3;
    SavingWithNoText = res4;
    TextCannotBeEmpty = res5;
    TheMainParagraphsText = res6;
    
    createdOnRes = res7;
    createdByRes = res8;
    tagsRes = res9;
}

function PreAddParagraphMode()
{
    if (FCKeditorAPI == null || FCKeditorAPI.GetInstance("txtText_New") == null)
        InitFCKEditor("New");
    else
        AddParagraphMode();
}

/// <summary>
///     Allows us to add another paragraph
/// </summary>
function AddParagraphMode()
{
    var tdHeading = document.getElementById("tdHeading_New");
    var txtHeading = document.getElementById("txtHeading_New");
    var divNewParagraph = document.getElementById("divParagraph_New");
    var spnAddParagraph1 = document.getElementById("spnAddParagraph1");
    var trAddParagraph2 = document.getElementById("trAddParagraph2");
            
    // If there is already an edited paragraph, cancel its edit
    if (lastEditedParagraphID != null)
        CancelEdit(lastEditedParagraphID);

    //tdHeading.className = "textFbgGrayWiki";
    spnAddParagraph1.style.display = "none";
    trAddParagraph2.style.display = "none";
    divNewParagraph.style.display = "";
    
    lastEditedParagraphID = "New";
    txtHeading.focus();
}

/// <summary>
///     Cancels the edit mode of the new paragraph
/// </summary>
function CancelAddParagraphMode()
{
    var txtHeading = document.getElementById("txtHeading_New");
    var divNewParagraph = document.getElementById("divParagraph_New");
    var spnAddParagraph1 = document.getElementById("spnAddParagraph1");
    var trAddParagraph2 = document.getElementById("trAddParagraph2");
            
    spnAddParagraph1.style.display = "";
    divNewParagraph.style.display = "none";
    if (!isHideAddParagraph)
        trAddParagraph2.style.display = "";
    
    lastEditedParagraphID = null;
}

/// <summary>
///     Hides the bottom AddParagraph link (AddParagraph2)
/// </summary>
function HideAddParagraphLink()
{
    var trAddParagraph2 = document.getElementById("trAddParagraph2");
    
    trAddParagraph2.style.display = "none";
    isHideAddParagraph = true;
}

function PreEditParagraph(id)
{
    if (FCKeditorAPI == null || FCKeditorAPI.GetInstance("txtText_" + id) == null)
        InitFCKEditor(id);
    else
        EditParagraph(id);
}

/// <summary>
///     Makes the paragraph editable
/// </summary>
function EditParagraph(id)
{
    var spnHeading = document.getElementById("spnHeading_" + id);
    var txtHeading = document.getElementById("txtHeading_" + id);
    var tdHeading = document.getElementById("tdHeading_" + id);
    var spnText = document.getElementById("spnText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var tblEditingControls = document.getElementById("tblEditingControls_" + id);
    var tblEditLink = document.getElementById("tblEditLink_" + id);
    var tdArrows = document.getElementById("tdArrows_" + id);
    
    // If there is already an edited paragraph, cancel its edit
    if (lastEditedParagraphID != null)
        CancelEdit(lastEditedParagraphID);
    
    spnHeading.style.display = "none";
    spnText.style.display = "none";
    
    //tdHeading.className = "textFbgGrayWiki";
    txtHeading.style.display = "";
    spnFCKWrapper.style.display = "";
    
    tblEditingControls.style.display = "";
    tblEditLink.style.display = "none";
    tdArrows.style.display = "";
    
    lastEditedParagraphID = id;       
    txtText.Focus();
}

/// <summary>
///     Cancels the edit mode of the paragraph
/// </summary>
function CancelEdit(id)
{
    // If this is the new paragraph's id or the main paragraph's id, we should 
    // call the relevant function
    if (id == "New")
    {
        CancelAddParagraphMode();
        return;
    }
    else
    {
        if (id == paragraphIDMain)
        {
            // function in WikiMainParagraph.ascx
            CancelEditMain(id);
            return;
        }
    }

    var spnHeading = document.getElementById("spnHeading_" + id);
    var txtHeading = document.getElementById("txtHeading_" + id);
    var tdHeading = document.getElementById("tdHeading_" + id);
    var spnText = document.getElementById("spnText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var spnHeadingPreview = document.getElementById("spnHeadingPreview_" + 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);
    var tdArrows = document.getElementById("tdArrows_" + id);
    
    spnHeading.style.display = "";
    spnText.style.display = "";
    
    //tdHeading.className = "";
    txtHeading.style.display = "none";
    spnFCKWrapper.style.display = "none";
    spnHeadingPreview.style.display = "none";
    spnTextPreview.style.display = "none";
    
    tblEditingControls.style.display = "none";
    tblEditLink.style.display = "";
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";
    tdArrows.style.display = "none";
    
    lastEditedParagraphID = null;
}

/// <summary>
///     Shows a preview of how the paragraph would look after saving
/// </summary>
function PreviewParagraph(id)
{
    var spnHeadingPreview = document.getElementById("spnHeadingPreview_" + id);
    var tdHeading = document.getElementById("tdHeading_" + id);
    var txtHeading = document.getElementById("txtHeading_" + id);
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var btnPreview = document.getElementById("btnPreview_" + id);
    var btnCancelPreview = document.getElementById("btnCancelPreview_" + id);
    var tdArrows = document.getElementById("tdArrows_" + id);
    
    spnHeadingPreview.innerHTML = txtHeading.value;
    spnTextPreview.innerHTML = txtText.GetHTML();
    
    spnHeadingPreview.style.display = "";
    spnTextPreview.style.display = "";

    //tdHeading.className = "";
    txtHeading.style.display = "none";
    spnFCKWrapper.style.display = "none";
    
    btnPreview.style.display = "none";
    btnCancelPreview.style.display = "";
    tdArrows.style.display = "none";
}

/// <summary>
///     Cancels the preview mode (returns to edit mode)
/// </summary>
function CancelPreview(id)
{
    var spnHeadingPreview = document.getElementById("spnHeadingPreview_" + id);
    var tdHeading = document.getElementById("tdHeading_" + id);
    var txtHeading = document.getElementById("txtHeading_" + 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);
    var tdArrows = document.getElementById("tdArrows_" + id);
    
    spnHeadingPreview.innerHTML = "";
    spnTextPreview.innerHTML = "";
    
    spnHeadingPreview.style.display = "none";
    spnTextPreview.style.display = "none";

    //tdHeading.className = "textFbgGrayWiki";
    txtHeading.style.display = "";
    spnFCKWrapper.style.display = "";
    
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";
    tdArrows.style.display = "";
}
    
/// <summary>
///     Adds the paragraph id to a collection
/// </summary>
function RegisterID(id)
{
    paragraphIDs.push(id);
}

/// <summary>
///     Sets the current user id
/// </summary>
function SetUserID(id)
{
    userID = id;
}

/// <summary>
///     Sets the current culture id
/// </summary>
function SetCultureID(id)
{
    cultureID = id;
}

/// <summary>
///     Sets the current Wiki id
/// </summary>
function SetWikiID(id)
{
    wikiID = id;
}

/// <summary>
///     Makes all the "edit" and "add" links invisible, so that the page is read only
/// </summary>
function MakeReadOnly()
{
    var tblEditLink;
    var spnAddParagraph1 = document.getElementById("spnAddParagraph1");
    var trAddParagraph2 = document.getElementById("trAddParagraph2");
    
    for (var i = 0; i < paragraphIDs.length; i++)
    {
        tblEditLink = document.getElementById("tblEditLink_" + paragraphIDs[i]);
        tblEditLink.style.display = "none";
    }
    
    spnAddParagraph1.style.display = "none";
    trAddParagraph2.style.display = "none";
}

/// <summary>
///     We call this function, when no user is logged in
///     it causes all the "edit" and "add" link to doPostBack, so we can force him to log in
/// </summary>
function MakeLoggedOutMode()
{
    var fullID;
    var aEditLink;
    var aAddParagraph1 = document.getElementById("aAddParagraph1");
    var aAddParagraph2 = document.getElementById("aAddParagraph2");
    
    for (var i = 0; i < paragraphIDs.length; i++)
    {
        fullID = "aEdit_" + paragraphIDs[i];
        aEditLink = document.getElementById(fullID);
        aEditLink.href = "javascript:__doPostBack('" + fullID + "', '');";
    }
    
    aAddParagraph1.href = "javascript:__doPostBack('aAddParagraph1', '');";
    aAddParagraph2.href = "javascript:__doPostBack('aAddParagraph2', '');";
}

/// <summary>
///     Updates a paragraph via AJAX. 
///     If the paragraph text is empty, it will delete the paragraph.
/// </summary>
function UpdateParagraphAJAX(id)
{
    var btnSave = document.getElementById("btnSave_" + id);
    var heading = document.getElementById("txtHeading_" + id).value;
    var text = FCKeditorAPI.GetInstance("txtText_" + id).GetHTML();
    var summary = document.getElementById("txtSummary_" + id).value;
    var position;
    var originalHeading = document.getElementById("spnHeading_" + id).innerHTML;
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    
    // Get the position of the updated paragraph
    position = GetParagraphPosition(id);

    // Don't allow multiple clicks
    btnSave.disabled = true;
    
    // Don't allow empty heading
    if (heading.length == 0 && GetCleanText(text).length > 0)
    {
        alert(HeadingCannotBeEmpty);
        btnSave.disabled = false;
        return;
    }
    // Don't allow a heading that already exists
    if (IsHeadingExists(heading, position - 2))
    {
        alert(ThisHeadingAlreadyExists);
        btnSave.disabled = false;
        return;
    }
    // Check if any changes were made at all
    if (heading == originalHeading && !txtText.IsDirty())
    {
        alert(NoChangesWereMade);
        btnSave.disabled = false;
        return;
    }
                    
    // Determine whether we update or delete
    if (GetCleanText(text).length > 0)
    {
        UpdateParagraph(wikiID, id, heading, text, summary, position, userID, cultureID);
    }
    else
    {
        if (confirm(SavingWithNoText))
            DeleteParagraph(wikiID, id, summary, userID, cultureID)
        else
            btnSave.disabled = false;
    }
}    

/// <summary>
///     Validates the insertion of the new paragraph. 
/// </summary>
function ValidateInsertParagraph()
{
    var heading = document.getElementById("txtHeading_New").value;
    var text = FCKeditorAPI.GetInstance("txtText_New").GetHTML();
    var summary = document.getElementById("txtSummary_New").value;
    var position;
    
    // Getting referces to the server hidden controls
    var hdnHeading = document.getElementById(headingID);
    var hdnText = document.getElementById(textID);
    var hdnSummary = document.getElementById(summaryID);
    var hdnPosition = document.getElementById(positionID);
    
    // Get the position of the new paragraph
    position = GetParagraphPosition("New");

    // Validate data
    if (heading.length == 0)
    {
        alert(HeadingCannotBeEmpty);
        return false;
    }
    if (GetCleanText(text).length == 0)
    {
        alert(TextCannotBeEmpty);
        return false;
    }
    
    // Passing the values so the server side can use it
    hdnHeading.value = heading;
    hdnText.value = text;
    hdnSummary.value = summary;
    hdnPosition.value = position;

    return true;
}    

function GetParagraphPosition(id)
{
    var position = paragraphIDs.length + 2;

    for (var i = 0; i < paragraphIDs.length; i++)
    {
        if (id == paragraphIDs[i])
        {
            // plus 2 because the sub paragraphs order starts from 2
            position = i + 2;
            break;
        }
    }
    
    return position;
}

/// <summary>
///     Checks if a certain heading already exists at a different index
/// </summary>
function IsHeadingExists(heading, currentIndex)
{
    if (heading.length == 0)
        return false;
    
    for (var i = 0; i < paragraphIDs.length; i++)
    {
        if (i != currentIndex && 
            document.getElementById("spnHeading_" + paragraphIDs[i]).innerHTML == heading)
            return true;
    }
    
    return false;
}

/// <summary>
///     Updates the fields of the paragraph according to the editing controls
///     It happens after the updating function (Insert/Update/DeleteParagraph)
///     and reflects the updated data in the DB
/// </summary>
function RefreshParagraph(id)
{
    var btnSave = document.getElementById("btnSave_" + id);
    var spnHeading = document.getElementById("spnHeading_" + id);
    var tdHeading = document.getElementById("tdHeading_" + id);
    var txtHeading = document.getElementById("txtHeading_" + id);
    var spnText = document.getElementById("spnText_" + id);
    var spnFCKWrapper = document.getElementById("spnFCKWrapper_" + id);
    var txtText = FCKeditorAPI.GetInstance("txtText_" + id);
    var spnHeadingPreview = document.getElementById("spnHeadingPreview_" + id);
    var spnTextPreview = document.getElementById("spnTextPreview_" + id);
    var txtSummary = document.getElementById("txtSummary_" + id);
    var aAnchorPointer = document.getElementById("aAnchorPointer_" + 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);
    var tdArrows = document.getElementById("tdArrows_" + id);
    
    spnHeading.innerHTML = txtHeading.value;
    spnText.innerHTML = txtText.GetHTML();
    aAnchorPointer.innerHTML = txtHeading.value;
    txtSummary.value = "";
    
    spnHeading.style.display = "";
    spnText.style.display = "";
    
    //tdHeading.className = "";
    txtHeading.style.display = "none";
    spnFCKWrapper.style.display = "none";
    spnHeadingPreview.style.display = "none";
    spnTextPreview.style.display = "none";
    
    tblEditingControls.style.display = "none";
    tblEditLink.style.display = "";
    btnPreview.style.display = "";
    btnCancelPreview.style.display = "none";
    tdArrows.style.display = "none";
    
    btnSave.disabled = false;
}
        
/// <summary>
///     Hides a specific paragraph+anchor, after it is deleted
/// </summary>
function HideParagraph(id)
{
    var divParagraph = document.getElementById("divParagraph_" + id);
    var spnAnchor = document.getElementById("spnAnchor_" + id);
    var position = GetParagraphPosition(id) - 2;

    divParagraph.style.display = "none";
    spnAnchor.style.display = "none";
    
    // remove the deleted id from the array
    paragraphIDs.splice(position, 1);
}

/// <summary>
///     Save the IDs of the server hidden controls, so we can fill them before submit
/// </summary>
function RegisterHiddenFieldIDs(headingIDArg, textIDArg, summaryIDArg, positionIDArg)
{
    headingID = headingIDArg;
    textID = textIDArg;
    summaryID = summaryIDArg;
    positionID = positionIDArg;
}

/// <summary>
///     Moves the paragraph one position up
/// </summary>
function MoveUp(id)
{
    var position = GetParagraphPosition(id);
    var minPosition = 2;

    // Can't move up anymore
    if (position == minPosition)
        return;   

    var indexInArray = position - 2;
    var divSubParagraphs = document.getElementById("divSubParagraphs");        
    var divParagraphCurrent = document.getElementById("divParagraph_" + id);
    var divParagraphAbove = document.getElementById("divParagraph_" + paragraphIDs[indexInArray - 1]);
    var imgUp = document.getElementById("imgUp_" + id);
    
    if (BrowserDetect.browser == "Explorer")
    {
        divSubParagraphs.insertBefore(divParagraphCurrent, divSubParagraphs.firstChild);
        for (var i = indexInArray - 2; i >= 0; i--)
            divSubParagraphs.insertBefore(document.getElementById("divParagraph_" + paragraphIDs[i]), divSubParagraphs.firstChild);
    }
    else
    {
        divSubParagraphs.insertBefore(divParagraphAbove, divParagraphCurrent.nextSibling);
    }
            
    // Update the positions in the array
    paragraphIDs[indexInArray] = paragraphIDs[indexInArray - 1];
    paragraphIDs[indexInArray - 1] = id;
}

/// <summary>
///     Moves the paragraph one position down
/// </summary>
function MoveDown(id)
{
    var position = GetParagraphPosition(id);
    var maxPosition = paragraphIDs.length;
    if (id=='New')
        maxPosition++;    
    // Can't move down anymore      
    if (position >= maxPosition)
        return;   

    var indexInArray = position - 2;
    var divSubParagraphs = document.getElementById("divSubParagraphs");        
    var divParagraphCurrent = document.getElementById("divParagraph_" + id);
    var divParagraphBelow = document.getElementById("divParagraph_" + paragraphIDs[indexInArray + 1]);

    if (BrowserDetect.browser == "Explorer")
    {
        divSubParagraphs.insertBefore(divParagraphBelow, divSubParagraphs.firstChild);
        for (var i = indexInArray - 1; i >= 0; i--)
            divSubParagraphs.insertBefore(document.getElementById("divParagraph_" + paragraphIDs[i]), divSubParagraphs.firstChild);
    }
    else
    {
        divSubParagraphs.insertBefore(divParagraphBelow, divParagraphCurrent);
    }

    // Update the positions in the array
    paragraphIDs[indexInArray] = paragraphIDs[indexInArray + 1];
    paragraphIDs[indexInArray + 1] = id;
}

// ********************
// --------------------
// 
// FCK Editor functions
// 
// --------------------
// ********************

/// <summary>
///     Initializes a new instance of the FCK editor
/// </summary>
function InitFCKEditor(id)
{
    var oFCKeditor = new FCKeditor("txtText_" + id);
    oFCKeditor.Width = "620";
    oFCKeditor.Height = "280";
    oFCKeditor.BasePath = "/GeneralControls/fckeditor/";
    oFCKeditor.ToolbarSet = "Basic";
    oFCKeditor.ReplaceTextarea();
}
    
/// <summary>
///     The event which is fired after the FCK editor has completed the creaton
///     of the instance
///     Now we should call the relevant editing function
/// </summary>
function FCKeditor_OnComplete(editorInstance)
{
    var id = GetCleanID(editorInstance.Name);

    if (id == "New")
        AddParagraphMode();
    else
        if (id == paragraphIDMain)
            // function in WikiMainParagraph.ascx
            EditParagraphMain(id);
        else
            EditParagraph(id);
}

/// <summary>
///     Sets the node params
/// </summary>
function SetVariablesForAddEditPopup(id,wikiId)
{
    wikiParentID = id;
    wikiID = wikiId;
}

/// <summary>
///     Get object reference that holds node params
/// </summary>
function GetVariablesForAddEditPopup()
{
    var popupVariablesObj = new Object();
    popupVariablesObj.ParentID = wikiParentID;
    popupVariablesObj.ItemID = wikiID;
    popupVariablesObj.isWiki = 1;

    return popupVariablesObj;
}

/// <summary>
///     Inserts an img tag into fckEditor
/// </summary>
function InsertImageToEditor(image)
{
    var imgStr = GetImageStrForFCK(image);  
    FCKeditorAPI.GetInstance("txtText_" + lastEditedParagraphID).InsertHtml(imgStr);
}

/// <summary>
///     Inserts an iframe tag, which containt the url to the video, into fckEditor
/// </summary>
function InsertVideoToEditor(video)
{
   var videoStr = GetKVideoStrForFCK(video);
   FCKeditorAPI.GetInstance("txtText_" + lastEditedParagraphID).InsertHtml(videoStr);
}

//get image object and create html for it
function GetImageStrForFCK(image)
{
    var imageStr = "";
    var tagsStr = "";
    var tagsArray;
    var i;
    
    if(image.Tags != "")
    {
       tagsArray =  image.Tags.split(",");
       for(i = 0; i < tagsArray.length; i++)
       {
            if(i < (tagsArray.length - 1))
                tagsStr += "<div style='float:left;'><a href='/Tags/" + tagsArray[i].replace(/ /g,'_')  + "' style='color:#8CC211; font-family:Arial;'>" + tagsArray[i] + "</a>, &nbsp;</div>" ;
            else
                tagsStr += "<div style='float:left;'><a href='/Tags/" + tagsArray[i].replace(/ /g,'_')  +  "' style='color:#8CC211; font-family:Arial;'>" + tagsArray[i] + "</a></div>" ;
       }
       tagsStr = tagsRes + " " + tagsStr;
    }
   
    imageStr = "<table cellpadding='0' cellspacing='0' style='width:600px; padding:0px; margin:0px; border: solid 1px #CBF3C3;'>" +
        "<tr>" +
            "<td valign='top' style='background-color:#ECFAE8; padding-left:6px;'>" +
                "<table cellpadding='0' cellspacing='0' style='width:100%; padding:0px; margin:0px;'>" +
                    "<tr><td style='height:10px;'></td></tr>" +
                    "<tr>" +
                        "<td valign='top' style='width:100px; background-color:#DFDFDF'>" +
                            "<img id='image_" + image.ID + "' src='" + image.Path + "' title='" + image.Name + "' style='width:150px;cursor:hand;' onclick='window.open(" + '"' + image.Path + '"' + ")' /><br>" +
                        "</td>" +
                        "<td style='width:10px;'></td>" +
                        "<td valign='top'>" +
                            "<table cellpadding='0' cellspacing='0' style='width:100%; padding:0px; margin:0px;'>" +
                                "<tr>" +
                                    "<td style='color:#1D1D21;font-size:14px;font-weight:bold;text-align:left;'>" +
                                        image.Name +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                "<tr>" +
                                    "<td class='Forest' style='font-family:Arial; font-size:14px;'>" +
                                        image.Description +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-family:Arial; font-size:12px;'>" +
                                        createdOnRes + " " + image.Date +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-family:Arial; font-size:12px;'>" +
                                        "<img src='" + image.CreatorImage + "' style='width:30px;cursor:hand;' onclick='window.open(" + '"' + image.CreatorUrl + '"' + ")'" +
                                        "<div>" +
                                            "    " + createdByRes + " " + 
                                            "<a href='" +  image.CreatorUrl + "' style='color:#8CC211; font-family:Arial;'>" + 
                                                image.Creator + 
                                            "</a>" +
                                        "</div>" +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-size:12px;'>" +
                                        tagsStr +
                                        "<div style='clear:left; overflow:hidden; font-size:3px;'></div>" +
                                    "</td>" +
                                "</tr>" +
                            "</table>" +
                        "</td>" +
                    "</tr>" +
                    "<tr><td style='height:10px;'></td></tr>" +
                "</table>" +
            "</td>" +
        "</tr>" +
    "</table><br />";
    
    return imageStr;
}

//get video object and create html for it
function GetKVideoStrForFCK(video)
{
    var videoStr = "";
    var tagsStr = "";
    var tagsArray;
    var i;
    
    if(video.Tags != "")
    {
       tagsArray =  video.Tags.split(",");
       for(i = 0; i < tagsArray.length; i++)
       {
            if(i < (tagsArray.length - 1))
                tagsStr += "<div style='float:left;'><a href='/Tags/" + tagsArray[i].replace(/ /g,'_')  +  "' style='color:#8CC211; font-family:Arial;'>" + tagsArray[i] + "</a>, &nbsp;</div>" ;
            else
                tagsStr += "<div style='float:left;'><a href='/Tags/" + tagsArray[i].replace(/ /g,'_')  +  "' style='color:#8CC211; font-family:Arial;'>" + tagsArray[i] + "</a></div>" ;
       }
       
       tagsStr = tagsRes + " " + tagsStr;
    }
    
    videoStr = "<table cellpadding='0' cellspacing='0' style='width:600px; padding:0px; margin:0px; border: solid 1px #CBF3C3;'>" +
        "<tr>" +
            "<td valign='top' style='background-color:#ECFAE8; padding-left:6px;'>" +
                "<table cellpadding='0' cellspacing='0' style='width:100%; padding:0px; margin:0px;'>" +
                    "<tr><td style='height:10px;'></td></tr>" +
                    "<tr>" +
                        "<td valign='top' background-color:Blue'>" +
                            video.KatluraEmbedVideo + 
                        "</td>" +
                        "<td style='width:10px;'></td>" +
                        "<td valign='top'>" +
                            "<table cellpadding='0' cellspacing='0' style='width:100%; padding:0px; margin:0px;'>" +
                                "<tr>" +
                                    "<td style='color:#1D1D21;font-size:14px;font-weight:bold;text-align:left;'>" +
                                        video.Name + 
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-family:Arial; font-size:12px;'>" +
                                        createdOnRes + " " + video.Date +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-family:Arial; font-size:12px;'>" +
                                        "<img src='" + video.CreatorImage + "' style='width:30px;cursor:hand;' onclick='window.open(" + '"' + video.CreatorUrl + '"' + ")'" +
                                        "<div>" +
                                            "    " + createdByRes + " " + 
                                            "<a href='" +  video.CreatorUrl + "' style='color:#8CC211; font-family:Arial;'>" + 
                                                video.Creator + 
                                            "</a>" +
                                        "</div>" +
                                    "</td>" +
                                "</tr>" +
                                "<tr><td style='height:10px;'></td></tr>" +
                                 "<tr>" +
                                    "<td style='font-size:12px;'>" +
                                        tagsStr +
                                        "<div style='clear:left; overflow:hidden; font-size:3px;'></div>" +
                                    "</td>" +
                                "</tr>" +
                            "</table>" +
                        "</td>" +
                    "</tr>" +
                    "<tr><td style='height:10px;'></td></tr>" +
                "</table>" +
            "</td>" +
        "</tr>" +
    "</table><br />";
    
    return videoStr;
}


/// <summary>
///     Gets the suffix of the fullID (f.e: "spnText_123" --> "123")
/// </summary>
function GetCleanID(fullID)
{
    var underScorePosition;
    var cleanID;
    
    underScorePosition = fullID.lastIndexOf("_");
    cleanID = fullID.substring(underScorePosition + 1, fullID.length);
    
    return cleanID;
}

/// <summary>
///     Clean all the HTML tags and returns only the inner text
/// </summary>
function GetCleanText(html)
{
    return html.replace(/(<([^>]+)>)/gi, "").replace(/&nbsp;|\s/g, "");
}

