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");
	}
}
