String.prototype.trim = function() {
    // Strip leading and trailing white-space 
    return this.replace(/^\s*|\s*$/g, "");
}

function Initialize() {
    try { document.execCommand("BackgroundImageCache", false, true); }
    catch (e) { }

    InitializePanels();

    if (document.location.href == null || document.location.href.toLowerCase().indexOf("&editor=true") < 0) {
        InitializeImageLinks();
    }

    document.onkeyup = Document_KeyUp;
    document.onclick = Document_Click;
}

function Document_Click(eventArgs) {
    eventArgs = (window.event ? window.event : eventArgs);

    var tmp_oElement = eventArgs.srcElement;
    if ((tmp_oElement != null) &&
        (tmp_oElement.tagName == "A") &&
        (tmp_oElement.className.indexOf("DisabledLink") > -1)) {
        eventArgs.returnValue = false;
    }
}

function Document_KeyUp(eventArgs) {
    var tmp_oKeyCode = (window.event ? window.event.keyCode : eventArgs.keyCode);
    if (tmp_oKeyCode == 27) {
        HideImage();
    }
}

function GetOffsetTop(oObject) {
    var ot = oObject.offsetTop;
    while (oObject.offsetParent != null) {
        oObject = oObject.offsetParent;
        ot += oObject.offsetTop;
    }
    return ot;
}

function InitializePanels() {
    try {
        var tmp_iContentHeight = GetOffsetTop(document.getElementById("Footer")) - GetOffsetTop(document.getElementById("Container"))
        var tmp_iMenuHeight = document.getElementById("qmpMenu").offsetHeight;
        var tmp_iHeight = Math.max(tmp_iMenuHeight + 150, tmp_iContentHeight) - (21 + 434 + 5);

        var tmp_oDivs = document.getElementsByTagName("div");
        for (var i = 0; i < tmp_oDivs.length; i++) {
            if (tmp_oDivs[i].className == "PanelLeft" || tmp_oDivs[i].className == "PanelCenter" || tmp_oDivs[i].className == "PanelRight") {
                tmp_oDivs[i].style.height = Math.max(0, tmp_iHeight) + "px";
            }
            else if (tmp_oDivs[i].className == "SeparatorTop") {
                tmp_oDivs[i].style.height = Math.max(0, tmp_iHeight - 25) + "px";
            }
        }
    } catch (e) { }
}

function InitializeImageLinks() {
    var tmp_oHyperlinks = document.getElementsByTagName("a");
    for (var i = 0; i < tmp_oHyperlinks.length; i++) {
        if (IsImageLink(tmp_oHyperlinks[i])) {
            tmp_oHyperlinks[i].onclick = ShowImageLink;
        }
    }
}

function ShowImageLink(eventArgs) {
    var tmp_oTarget = (window.event ? window.event.srcElement : eventArgs.target);
    while (tmp_oTarget != null && tmp_oTarget.tagName != "A") {
        tmp_oTarget = tmp_oTarget.parentNode;
    }

    if (tmp_oTarget == null) return true;

    ShowImage(tmp_oTarget.getAttribute("href"));
    return false;
}

function GetScrollable() {
    var tmp_oScrollable = null;

    if (window.navigator.userAgent.indexOf("Safari") > -1) tmp_oScrollable = document.body;
    else tmp_oScrollable = document.getElementsByTagName("html")[0];

    return tmp_oScrollable;
}

function ShowImage(imageUrl) {
    ShowOverlay();

    PositionImage();

    var tmp_oImage = document.getElementById("ImageDetails");
    tmp_oImage.style.height = "5px";
    tmp_oImage.style.visibility = "hidden";
    tmp_oImage.src = imageUrl;
}

function ShowOverlay() {
    var tmp_oScrollable = GetScrollable();
    var tmp_oOverlay = document.getElementById("ImageOverlay");
    tmp_oOverlay.style.width = tmp_oScrollable.scrollWidth + "px";
    tmp_oOverlay.style.height = tmp_oScrollable.scrollHeight + "px";
    tmp_oOverlay.style.visibility = "visible";
}

function ImageLoad(image) {
    var tmp_oContainer = document.getElementById("ImageContainer");
    var tmp_oLoading = document.getElementById("ImageLoading");
    var tmp_oImage = document.getElementById("ImageDetails");
    var tmp_oScrollable = GetScrollable();

    if (tmp_oContainer.style.visibility == "hidden") {
        HideImage();
        return;
    }

    PositionImage();

    ShowOverlay();

    tmp_oLoading.style.display = "none";
    tmp_oImage.style.visibility = "visible";
}

function PositionImage() {
    var tmp_oScrollable = GetScrollable();

    var tmp_oImage = document.getElementById("ImageDetails");
    var tmp_oContainer = document.getElementById("ImageContainer");
    var tmp_oLoading = document.getElementById("ImageLoading");

    tmp_oLoading.style.display = "block";
    tmp_oImage.style.height = "auto";

    var tmp_iWidth = Math.max(tmp_oImage.width, 300);
    var tmp_iHeight = tmp_oImage.height;

    var tmp_iX = Math.max(0, (((window.innerWidth ? window.innerWidth : tmp_oScrollable.clientWidth) - (tmp_iWidth)) / 2)) + tmp_oScrollable.scrollLeft;
    var tmp_iY = Math.max(0, (((window.innerHeight ? window.innerHeight : tmp_oScrollable.clientHeight) - (tmp_iHeight)) / 2)) + tmp_oScrollable.scrollTop;

    tmp_oContainer.style.top = tmp_iY + "px";
    tmp_oContainer.style.left = tmp_iX + "px";
    tmp_oContainer.style.width = tmp_iWidth + "px";
    tmp_oContainer.style.visibility = "visible";
}

function HideImage() {
    var tmp_oOverlay = document.getElementById("ImageOverlay");
    tmp_oOverlay.style.visibility = "hidden";

    var tmp_oImage = document.getElementById("ImageDetails");
    tmp_oImage.style.visibility = "hidden";
    tmp_oImage.src = "/qios.webspace/gfx/pic_blank";

    var tmp_oContainer = document.getElementById("ImageContainer");
    tmp_oContainer.style.visibility = "hidden";
}

function IsImageLink(hyperlink) {
    var tmp_sHref = hyperlink.getAttribute("href");
    if (tmp_sHref != null) {
        if (tmp_sHref.indexOf(".png") == (tmp_sHref.length - 4)) return true;
        if (tmp_sHref.indexOf(".gif") == (tmp_sHref.length - 4)) return true;
        if (tmp_sHref.indexOf(".jpg") == (tmp_sHref.length - 4)) return true;
        if (tmp_sHref.indexOf(".jpeg") == (tmp_sHref.length - 5)) return true;
    }
    return false;
}

var m_iAttachmentCount = 0;
function AddAttachment(sInputContainerID) {
    //increase counter
    m_iAttachmentCount++;

    //get references
    var oContainer = document.getElementById(sInputContainerID);

    //create a new input control
    var oInput = document.createElement("INPUT");
    oInput.type = "file";
    oInput.size = "75";
    oInput.name = "Attachment" + m_iAttachmentCount;
    oInput.id = "Attachment" + m_iAttachmentCount;

    //add the new control to the control
    oContainer.appendChild(oInput);
    //make the container visible, if its not already
    oContainer.style.display = "block";
}

function ToggleTreeNode(sTableBodyID, sImageID) {
    var oTableBody = document.getElementById(sTableBodyID);
    var oImage = document.getElementById(sImageID);
    if (oTableBody != null) {
        if (oTableBody.style.display == "none") {
            oTableBody.style.display = "";
            if (oImage != null) oImage.src = "/qios.webspace/gfx/btn_min.gif";
        }
        else {
            oTableBody.style.display = "none";
            if (oImage != null) oImage.src = "/qios.webspace/gfx/btn_plus.gif";
        }
    }
}

function EnableLinkOnCheckBox(oCheckBox, sLinkID) {
    var oLink = document.getElementById(sLinkID);

    if (oCheckBox.checked) {
        oLink.className = oLink.className.replace("DisabledLink", "");
        //Trim is prototyped above. This is done this way because spatials in the className are default trimmed by FF.
        oLink.className = oLink.className.trim();
    }
    else {
        oLink.className += " DisabledLink";
    }
}

function ToggleCodeSnippet(oLink, sCodeDivID) {
    var oCodeDiv = document.getElementById(sCodeDivID);

    if (oCodeDiv.style.display == "block") {
        oCodeDiv.style.display = "none"
        oLink.innerHTML = oLink.innerHTML.replace("Hide", "Show");
    }
    else {
        oCodeDiv.style.display = "block"
        oLink.innerHTML = oLink.innerHTML.replace("Show", "Hide");
    }
}

