function ExpandAllPrincipleDetailGroups()
{
    for (var i = 0; i < 100; i++)
    {
        var e = document.getElementById("group_" + i);
        var eH3 = document.getElementById("h3_" + i);

        if (e != null)
        {
            e.style.display = 'block';
            eH3.className = "expanded"
        }
        else
            break;
    }
}


function TogglePrincipleDetailGroups(nr, last)
{
    var elem = document.getElementById("group_" + nr);
    var elemH3 = document.getElementById("h3_" + nr);

    for (var i = 0; i <= last; i++)
    {
        var e = document.getElementById("group_" + i);
        var eH3 = document.getElementById("h3_" + i);
        if (e != elem)
        {
            e.style.display = 'none';
            eH3.className = "collapsed"
        }
        else
        {
            eH3.className = "expanded"
        }
    }

    if (elem != null && elem != "")
    {
        if (elem.style.display == 'block')
        {
            elem.style.display = 'none';
            elemH3.className = "collapsed"
        }
        else
        {
            elem.style.display = 'block';
            elemH3.className = "expanded"
        }
    }
}


function InitPrincipleDetailGroups()
{
    if (document.getElementById("group_0") != null && document.getElementById("h3_0") != null && document.getElementById("group_1") == null)
    {
        document.getElementById("group_0").style.display = 'block';
        document.getElementById("h3_0").className = 'expanded';
    }
}



function SetCurrentDetail(node, name, selectedClassName, unselectedClassName)
{
    if (node != null && node != "")
    {
        var elems = document.getElementsByName(name);
        for (var i = 0; i < elems.length; i++)
        {
            elems[i].setAttribute("class", unselectedClassName, 0);
            elems[i].setAttribute("className", unselectedClassName, 0);
        }

        var elem = document.getElementById(node);
        elem.setAttribute("class", selectedClassName, 0);
        elem.setAttribute("className", selectedClassName, 0);
    }
}


function DisplaySectionDetail(pos)
{
    var loc = window.location.href;
    loc = RemoveParameter(loc, "sectionNr");
    loc = AddParameter(loc, "sectionNr", pos);
    window.location.href = loc;
}


function ActivateDownloadableFiles(elementID, DWG, DXF, PDF)
{
    var loc = window.location.href;
    var splittedLoc = loc.split("?");
    var newParams = "";
    var oldParams = "";

    if (splittedLoc.length > 1)
    {
        var params = splittedLoc[1].split("&");
        for (var i = 0; i < params.length; i++)
        {
            var param = params[i].split("=");
            if (param[0] != "dwg" &&
				param[0] != "dxf" &&
				param[0] != "pdf" &&
				param[0] != "elementID")
            {
                if (oldParams == "")
                    oldParams = "?" + param[0] + "=" + param[1];
                else
                    oldParams += "&" + param[0] + "=" + param[1];
            }
        }
        loc = splittedLoc[0] + oldParams;
    }

    var bParam
    if (oldParams == "")
        bParam = false;
    else
        bParam = true;


    if (DWG != "")
    {
        if (bParam = true)
            newParams += "&dwg=" + DWG;
        else
            newParams += "?dwg=" + DWG;
        bParam = true;
    }
    if (DXF != "")
    {
        if (bParam = true)
            newParams += "&dxf=" + DXF;
        else
            newParams += "?dxf=" + DXF;
        bParam = true;
    }
    if (PDF != "")
    {
        if (bParam = true)
            newParams += "&pdf=" + PDF;
        else
            newParams += "?pdf=" + PDF;
    }

    var newLoc = loc + newParams;

    if (newLoc.indexOf('?') >= 0)
        newLoc += "&elementID=" + elementID + "#" + elementID;
    else
        newLoc += "?elementID=" + elementID;

    window.location.href = newLoc;
}


// <summary>
// Adds a parameter (query string)to the URL
// </summary>
// <param name="sURL">URL to add the query string to</param>
// <param name="ParameterName">Name of parameter</param>
// <param name="ParameterVaule">The value of the parameter</param>
// <returns>The new URL with added query string</returns>
function AddParameter(sURL, ParameterName, ParameterVaule)
{
    if (sURL.indexOf("?") > 0)
        sURL += "&" + ParameterName + "=" + ParameterVaule;
    else
        sURL += "?" + ParameterName + "=" + ParameterVaule;

    return sURL;
}



// <summary>
// Removes a parameter (query string) from a URL
// </summary>
// <param name="sURL">URL to remove a query string from</param>
// <param name="sParameterName">Name of query string to remove</param>
// <returns>The new URL with the removed query string</returns>
function RemoveParameter(sURL, sParameterName)
{
    sURL = sURL.toLowerCase();
    sParameterName = sParameterName.toLowerCase();
    var sReturnURL = sURL;

    // If the parameter name not is found, return the input URL
    if (sURL.indexOf(sParameterName) < 0)
        return sReturnURL;

    var saTemp = sURL.split("?");

    // If '?' not is found, there is no query strings
    if (saTemp.length <= 0)
        return sReturnURL;
    else if (saTemp.length == 2)
    {
        var sTemp = saTemp[1];
        saTemp = sTemp.split("&");

        for (var i = 0; i < saTemp.length; i++)
        {
            var sParam = saTemp[i].split("=")[0];
            var sValue = saTemp[i].split("=")[1];

            if (sParam == sParameterName)
            {
                // Remove the parameter and its value
                var sSearch = sParameterName + "=" + sValue;
                var nStart = sURL.indexOf(sSearch) - 1;
                var nStop = nStart + 1 + sSearch.length;
                sReturnURL = sURL.substring(0, nStart);
                if (saTemp.length > 1)
                    sReturnURL += "&";
                if (sURL.length > nStop)
                    sReturnURL += sURL.substring(nStop, sURL.length);

                if (saTemp.Length > 1 && sReturnURL.indexOf("?") < 0)
                {
                    // No '?' - replace the first occurrence of '&' with an '?'
                    var sOrig = sReturnURL;
                    var nPos = sOrig.indexOf("&");
                    sReturnURL = sOrig.substring(0, nPos) + "?";
                    if (sOrig.length > nPos + 1)
                        sReturnURL = sOrig.substring(nPos + 1, sOrig.length);
                }
            }
        }

        if (sReturnURL.substring(sReturnURL.length - 1, sReturnURL.length) == "&")
            sReturnURL = sReturnURL.substring(0, sReturnURL.length - 1);
        if (sReturnURL.substring(sReturnURL.length - 1, sReturnURL.length) == "?")
            sReturnURL = sReturnURL.substring(0, sReturnURL.length - 1);

        return sReturnURL;
    }
    else
        return sReturnURL;
}
