﻿function getQueryVariable(variable, url) {
    var query = window.location.search.substring(1);
    if (url != null && url.length > 0) {
        var query = url.split("?")[1];
    }
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable) {
            return pair[1];
        }
    }
    return null;
}

function removeChildNodes(ctrl) {
    if (null != ctrl && null != ctrl.childNodes) {
        while (ctrl.childNodes.length > 0) {
            ctrl.removeChild(ctrl.childNodes[0]);
        }
    }
}

function SetError(sError) {
    var obj = document.getElementById("error");
    if (null != obj) {
        if (null == sError) {
            sError = "";
        }
        if (0 == sError.length) {
            sError = "&nbsp;";
        }
        obj.innerHTML = sError;
    }
    else {
        alert(sError);
    }
}

function GetErrorText() {
    var sError = null;
    var obj = document.getElementById("error");
    if (null != obj) {
        sError = obj.innerHTML;
        if (sError == "&nbsp;") {
            sError = null;
        }
    }
    return (sError);
}

function IsError(sError) {
    return (null != sError && sError.length > 0);
}

var loadingImgHeight = 10;
var loadingImgWidth = 96;
function Loading(AJAXObj) {
    var xPos, yPos;
    if ('undefined' != typeof (AJAXObj.xPos) && 'undefined' != typeof (AJAXObj.yPos)) {
        var img = document.createElement("img");
        img.setAttribute("id", "busy");
        img.setAttribute("src", "../Obout/GeneralIcons/loading.gif");
        img.setAttribute("alt", "Please Wait");
        img.style.display = 'block';
        img.style.position = 'absolute';
        img.style.left = AJAXObj.xPos + "px";
        img.style.top = AJAXObj.yPos + "px";
        bringToFront(img);
        document.body.appendChild(img);
        AJAXObj.objBusy = img;
        setTimeout(function() { OnExecute(AJAXObj) }, 10);
    }
}

function getAbsoluteDivs() {
    var arr = new Array();
    var all_divs = document.body.getElementsByTagName("div");
    var j = 0;

    for (i = 0; i < all_divs.length; i++)
        if (all_divs.item(i).style.position == 'absolute') {
        arr[j] = all_divs.item(i);
        j++;
    }

    return arr;
}

function bringToFront(obj) {
    if (!document.getElementsByTagName)
        return;

    var divs = getAbsoluteDivs();
    var max_index = 0;
    var cur_index;

    // Compute the maximal z-index of  
    // other absolute-positioned divs  
    for (i = 0; i < divs.length; i++) {
        var item = divs[i];
        if (item == obj ||
             item.style.zIndex == '')
            continue;

        cur_index = parseInt(item.style.zIndex);
        if (max_index < cur_index) {
            max_index = cur_index;
        }
    }

    obj.style.zIndex = max_index + 1;
}  

function OnExecute(AJAXObj) {
    var sHTML = ob_post.post(null, AJAXObj.methodName);
    AJAXObj.Func(sHTML);
    document.body.removeChild(AJAXObj.objBusy);
    AJAXObj.objBusy = null;
}

function ShowPreview(id) {
    var objSelected = FindSelectedResource(id);
    if (null != objSelected) {
        objSelected.setAttribute("class", "imgNonSelectedResource");
    }

    objSelected = document.getElementById("asset_view_reImg_" + id);
    objSelected.setAttribute("class", "imgSelectedResource");
    var obj = document.getElementById('right');
    obj.innerHTML = "";
    var x = obj.offsetLeft + (obj.offsetWidth - loadingImgWidth) / 2;
    var y = obj.offsetTop + (obj.offsetHeight - loadingImgHeight) / 2;
    ob_post.AddParam("id", id);
    var sFilterType = getQueryVariable("filterType");
    if (null == sFilterType || 0 == sFilterType.length) {
        sFilterType = "file";
    }
    ob_post.AddParam("sFilterType", sFilterType);
    ob_post.AddParam("sMaxWidth", document.getElementById("op_previewWidth").value);
    ob_post.AddParam("sMaxHeight", document.getElementById("op_previewHeight").value);

    var sID = "";
    var sIDBelongsTo = "";
    var sCallingMnemonic = getQueryVariable("callingMnemonic");
    switch (sCallingMnemonic) {
        case "BrowseMediaItemUtilityPageImage":
            {
                sID = getQueryVariable("utilityId");
                sIDBelongsTo = "utility_page";
                break;
            }
        case "BrowseMediaItemContentPageImage":
            {
                sID = getQueryVariable("contentpageId");
                sIDBelongsTo = "section_content_page";
                break;
            }
        case "BrowseMediaItemSectionSubNavImage":
            {
                sID = getQueryVariable("contentpageId");
                sIDBelongsTo = "section_sub_nav_image";
                break;
            }
        case "BrowseMediaItemLandingPageImage":
            {
                sID = getQueryVariable("sectionId");
                sIDBelongsTo = "section";
                break;
            }
        case "BrowseMediaItem":
            {
                sID = getQueryVariable("contentBlockId");
                sIDBelongsTo = "contentblock";
                break;
            }
    }

    ob_post.AddParam("sIDBelongsTo", sIDBelongsTo);
    ob_post.AddParam("sID", sID);
    var AJAXObj = { xPos: x, yPos: y, methodName: "ShowPreview", Func: function(sHTML) { UpdatePreview(sHTML); } };
    Loading(AJAXObj);
}

function UpdatePreview(sHTML) {
    var obj = document.getElementById('right');
    obj.innerHTML = sHTML;
}

function FindSelectedResource() {
    var obj = null;
    var objColl = document.getElementsByTagName("td");
    if (null != objColl && objColl.length > 0) {
        for (i = 0, iNum = objColl.length; i < iNum && null == obj; i++) {
            var cell = objColl[i];
            if ("imgSelectedResource" == cell.getAttribute("class")) {
                obj = cell;
            }
        }
    }
    return (obj);
}

function GetFiles(id) {
    var oTree = document.getElementById("left");
    if (oTree != null) {
        if (id != oTree.getAttribute("havecontents")) {
            oTree.setAttribute("havecontents", id);
            var obj = document.getElementById("middle");
            if (null != obj) {
                obj.innerHTML = "";
                if ("1" != id) {
                    document.getElementById('right').innerHTML = "";
                    var x = obj.offsetLeft + (obj.offsetWidth - loadingImgWidth) / 2;
                    var y = obj.offsetTop + (obj.offsetHeight - loadingImgHeight) / 2;
                    ob_post.AddParam("id", id);
                    var sAppRoot = document.getElementById("approot").value;
                    ob_post.AddParam("sAppRoot", sAppRoot);
                    var AJAXObj = { xPos: x, yPos: y, methodName: "OnNodeSelect", Func: function(sHTML) { ShowFiles(sHTML); } };
                    Loading(AJAXObj);
                }
            }
        }
    }
    else {
        ob_post.AddParam("id", id);
        ob_post.post(null, "OnNodeSelect");
    }
}

function ShowFiles(sHTML) {
    var obj = document.getElementById("middle");
    obj.innerHTML = sHTML;
    var objColl = obj.getElementsByTagName("a");
    if (typeof (objColl) != 'undefined') {
        ob_em_viewnodemenu.detachFromAllControls();
        for (i = 0, iNum = objColl.length; i < iNum; i++) {
            var a = objColl[i];
            var aID = a.id;
            if (0 == aID.indexOf('re_')) {
                ob_em_viewnodemenu.attachToControl(a.id);
            }

        }
    }
}

function Sort(sCatID, sOn) {
    var obj = document.getElementById("middle");
    obj.innerHTML = "";
    document.getElementById('right').innerHTML = "";
    var x = obj.offsetLeft + (obj.offsetWidth - loadingImgWidth) / 2;
    var y = obj.offsetTop + (obj.offsetHeight - loadingImgHeight) / 2;
    ob_post.ResetParams();
    ob_post.AddParam("sCatID", sCatID);
    ob_post.AddParam("sSortOn", sOn);
    ob_post.AddParam("sAppRoot", document.getElementById("approot").value);
    var AJAXObj = { xPos: x, yPos: y, methodName: "SortView", Func: function(sHTML) { ShowFiles(sHTML); } };
    Loading(AJAXObj);
}

function OpenModal(sUrl, sTitle, iWidth, iHeight, bResizeable) {
    sUrl = document.getElementById("approot").value + sUrl;
    CreateModalWindow(sUrl, sTitle, iWidth, iHeight, bResizeable);
}

function OpenModalNoClose(sUrl, sTitle, iWidth, iHeight, bResizeable) {
    sUrl = document.getElementById("approot").value + sUrl;
    CreateModalWindowNoClose(sUrl, sTitle, iWidth, iHeight, bResizeable);
}

/* Start AssetPreview.ascx */
function ShowUsedPages() {
    var sUrl = "/media/ShowUsedPages.aspx";
    OpenModalNoClose(sUrl, "Pages", 400, 300, true);
}

function AssetSelected(containerID, assetID, url, title) {
    var bNoErrors = true;
    var sCallingMnemonic = getQueryVariable("callingMnemonic");
    switch (sCallingMnemonic) {
        case "BrowseMediaItemContentPageImage":
            {
                ob_post.ResetParams();
                ob_post.AddParam("sSectionID", containerID);
                ob_post.AddParam("sResourceID", assetID);
                var response = ob_post.post(null, "AttachContentPageImgToSection");
                if (null != response && "" != response) {
                    bNoErrors = false;
                    alert(response);
                }
                break;
            }
        case "BrowseMediaItemSectionSubNavImage":
            {
                ob_post.ResetParams();
                ob_post.AddParam("sSectionID", containerID);
                ob_post.AddParam("sResourceID", assetID);
                var response = ob_post.post(null, "AttachSubNavImageToSection");
                if (null != response && "" != response) {
                    bNoErrors = false;
                    alert(response);
                }
                break;
            }
        case "BrowseMediaItemLandingPageImage":
            {
                ob_post.ResetParams();
                ob_post.AddParam("sSectionID", containerID);
                ob_post.AddParam("sResourceID", assetID);
                var response = ob_post.post(null, "AttachLandingPageImgToSection");
                if (null != response && "" != response) {
                    bNoErrors = false;
                    alert(response);
                }
                break;
            }
        case "BrowseMediaItemUtilityPageImage":
            {
                ob_post.ResetParams();
                ob_post.AddParam("sUtilityID", containerID);
                ob_post.AddParam("sResourceID", assetID);
                var response = ob_post.post(null, "AttachPageImgToUtility");
                if (null != response && "" != response) {
                    bNoErrors = false;
                    alert(response);
                }
                break;
            }
        case "BrowseMediaItem":
            {
                var sImgID = "block_" + containerID + "_imgBrowse";
                var img = parent.document.getElementById(sImgID);
                img.style.display = "block";
                img.src = url;
                img.alt = title;
                img.title = title;
                parent.document.getElementById("block_" + containerID + "_hiddenResourceId").value = assetID;
                var spanResourceTitle = parent.document.getElementById('block_' + containerID + '_spanResourceTitle');
                spanResourceTitle.innerHTML = title;
                spanResourceTitle.style.display = "block";
                var txtCaption = parent.document.getElementById('block_' + containerID + '_txtCaption');
                txtCaption.value = title;
                var remove = parent.document.getElementById("block_" + containerID + "_btnRemoveMediaItem");
                remove.style.display = "block";
                break;
            }
        case "FCKDocumentLink":
            {
                var oEditor = parent.FCKeditorAPI.GetInstance(parent.FCKWrapper.active.div.fck.InstanceName);
                if (oEditor != null) {
                    var text;
                    var selText = "";
                    if (null != parent.FCKWrapper.PhxSelectedText) {
                        selText = parent.FCKWrapper.PhxSelectedText.innerHTML;
                        if (null != parent.FCKWrapper.PhxSelectedText.parentNode) {
                            parent.FCKWrapper.PhxSelectedText.parentNode.removeChild(parent.FCKWrapper.PhxSelectedText);
                        }
                        delete parent.FCKWrapper.PhxSelectedText;
                        parent.FCKWrapper.PhxSelectedText = null;
                    }
                    
                    if (selText && selText.length > 0) {
                        text = selText;
                    }
                    else if (title && title.length > 0) {
                        text = title;
                    }
                    else {
                        text = url;
                    }

                    oEditor.InsertHtml("<a href=\"javascript:void(null)\" onclick=\"javascript:window.open('" + url + "');\">" + text + "</a>");
                }
                break;
            }
        case "LinkTargetResource":
            {
                var obj = parent.FCKWrapper.active;
                obj.hiddenLinkTargetResourceId.value = assetID;
                obj.spanLinkTarget.innerHTML = title;
                obj.imgLinkTarget.style.display = "block";
                obj.imgLinkTarget.src = url;
                obj.imgLinkTarget.alt = title;
                obj.imgLinkTarget.title = title;
                break;
            }
        case "NewsletterHeader":
            {
                parent.OnAssetSelected(assetID, url); 
                break;
            }
        case "BlogMediaItem":
            {
                parent.OnAssetSelected(assetID, url,title); 
                break;
            }
        case "CommunitiesSelectPhoto":
            {
                parent.OnAssetSelected(assetID, url, title);
                break;
            }
        case "BrowseNewsThumbNail":
            {
                parent.OnAssetSelected(assetID, url, title);
                break;
            }
    }
    if (bNoErrors) {
        parent.CloseModalWindow();
        if (null != parent.OnAssetSelectedHandler) {
            parent.OnAssetSelectedHandler(assetID);
        }
    }
}
/* End AssetPreview.ascx */

/* Start For AssetView.ascx */
var iconResources = document.getElementById("iconResources_divIcons");
var gvResources = document.getElementById("gvResources");
var selFileType = document.getElementById("selFileType");

/// related to drag and drop of categories and resources
var ghost;
var isDragging = false;
var linkUnderMouse;

/// set the onmousedown event handler for a resource link
var fnResourceOnMouseDown =
function(e) {
    var bRightClickOccurred;
    if (!e) var e = window.event;
    if (e.which) bRightClickOccurred = (e.which == 3);
    else if (e.button) bRightClickOccurred = (e.button == 2);

    if (bRightClickOccurred) {
        /// onrightclick: show the menu
        if (Menu.theMenu) {
            Menu.theMenu.Close();
            delete Menu.theMenu;
        }

        if (ghost && ghost.parentNode) {
            return;
        }

        var mpos = GetMousePosInDocument(e);
        Menu.theMenu = new Menu(Menu.Type.Resource, mpos, this.getAttribute("resourceId"), this.getAttribute("mime"));

        return false;
    }

    if (ghost) {
        delete ghost;
    }

    ghost = document.createElement("div");
    ghost.resourceId = this.getAttribute("resourceId");
    document.body.appendChild(ghost);
    ghost.innerHTML = this.innerHTML;
    ghost.className = "ghost";

    ghost.mposOriginal = GetMousePosInDocument(e);

    ghost.style.left = ghost.mposOriginal.x + 5 + "px";
    ghost.style.top = ghost.mposOriginal.y + 5 + "px";
    ghost.style.width = this.offsetWidth + "px";
    ghost.style.height = this.offsetHeight + "px";

    isDragging = true;

    var hasDragged = false;
    var clickUrl = "javascript: LoadPreview('NetMMPreview.aspx?id=" + ghost.resourceId + "');";

    var tdSelect = document.getElementById("tdSelect");
    if (tdSelect) {
        tdSelect.style.visibility = "visible";
    }

    var tdEdit = document.getElementById("tdEdit");
    if (tdEdit) {
        if (this.getAttribute("isImage") == "true") {
            tdEdit.style.visibility = "visible";
        }
        else {
            tdEdit.style.visibility = "collapse";
        }
    }

    document.onmousemove =
        function(e) {
            if (ghost && isDragging) {
                hasDragged = true;
                var mpos = GetMousePosInDocument(e);
                ghost.style.left = mpos.x + 5 + "px";
                ghost.style.top = mpos.y + 5 + "px";
            }

            return false;
        }

    document.onmouseup =
        function(e) {
            if (!hasDragged) {
            }

            document.onmousemove = null;
            document.onmouseup = null;

            if (linkUnderMouse) {
                var parentCatId = linkUnderMouse.getAttribute("categoryId");
                var movingResourceId = ghost.resourceId;

                if (Menu.frmDialog) {
                    Menu.frmDialog.parentNode.removeChild(Menu.frmDialog);
                    delete Menu.frmDialog;
                }

                Menu.frmDialog = document.createElement("iframe");
                Menu.frmDialog.src = "MMDialog.aspx?mode=moveRes&categoryId=" + parentCatId + "&resourceId=" + movingResourceId;
                document.body.appendChild(Menu.frmDialog);
                Menu.frmDialog.className = "MenuDialog";
                Menu.frmDialog.frameBorder = "0";

                /// Sets the size of the dialog frame
                /// width   :   The width in pixels
                /// height  :   The height in pixels
                Menu.frmDialog.SetSize =
                    function(width, height) {
                        this.style.width = width + "px";
                        this.style.height = height + "px";
                    }

                /// Closes the dialog frame
                Menu.frmDialog.Close =
                    function() {
                        this.parentNode.removeChild(this);
                        delete Menu.frmDialog;
                    }
            }

            isDragging = false;
            ghost.parentNode.removeChild(ghost);

            return false;
        }

    return false;
}

if (iconResources) {
    var linkIcons = iconResources.getElementsByTagName("span");

    for (var c = 0; c < linkIcons.length; c++) {
        var link = linkIcons[c];
        if (!link.getAttribute("resourceId") || link.getAttribute("resourceId").length < 1) {
            /// make sure that this is a link for a resource
            continue;
        }

        /// set the onmousedown event handler for the link
        link.onmousedown = fnResourceOnMouseDown;

        link.onmouseup =
        function(e) {
            if (ghost && ghost.parentNode) {
                ghost.parentNode.removeChild(ghost);
                delete ghost;
            }
        }
    }
}

if (gvResources) {
    /// related to drag and drop of resources
    var linkFiles = gvResources.getElementsByTagName("a");

    for (var c = 0; c < linkFiles.length; c++) {
        var link = linkFiles[c];
        if (!link.getAttribute("resourceId") || link.getAttribute("resourceId").length < 1) {
            /// make sure that this is a link for a resource
            continue;
        }

        /// set the onmousedown event handler for the link
        link.onmousedown = fnResourceOnMouseDown;
    }
}
/* End For AssetView.ascx */

