﻿

if(addsystems!=undefined) {
    addsystems.addEvent(window, 'load', loadControls);
}

var bolSubmitted = false;
var gObjTree;
var gReturnItem;
var gbolAutoClose = false;
var gDocumentHashCode = '';
var gConfirmedUnload = false;
var gcheckForChanges = false;
var gLastAccessedObject;
var gbolEditorIsLoaded = false;
var gbolFramerIsLoaded = false;
var gbolMHTIsLoaded = false;
var gbolEditorEntityID = 0;
var gbolEditorAttrID = 0;
var gobjEntityFormulas;
var gobjContainerIframe = getContainerIframe();
var gobjContainerWindow = getContainerWindow();
var gbolCommandsExecuting = false;
var gbolIsDebug = false;
var gWindowID = 0;
var gstrClientInstallationPath = '';
var gEditorDebug = false;
var gEditedAttachements = function() { };

function getChartStyleParameters(objElement) {
    var strRtn = '';
    var strStyle = '';
    var arrChartStyles = new Array(
    'chart-series-color', 'chart-series-secondary-color', 'chart-background-color', 'chart-secondary-background-color',
    'chart-area-color', 'chart-area-secondary-color', 'chart-series-type', 'chart-border-skin-style', 'chart-width',
    'chart-area-rotation', 'chart-area-perspective', 'chart-area-inclination', 'chart-height', 'chart-area-point-depth',
    'chart-area-gradient-style', 'chart-background-gradient-style', 'chart-series-gradient-style', 'chart-series-drawing-style',
    'chart-area-border-width', 'chart-area-border-skinstyle', 'chart-area-border-color', 'chart-series-border-width',
    'chart-series-border-skinstyle', 'chart-series-shadow-color', 'chart-series-shadow-offset', 'chart-series-border-color'
    );

    for (var i = 0; i < arrChartStyles.length; i++) {
        strStyle = getUserDefinedStyle(objElement, arrChartStyles[i]);
        if (strStyle.length > 0) {
            strRtn += '&' + arrChartStyles[i] + '=' + strStyle;
        }
    }

    return strRtn;

}

function getUserDefinedStyle(objElement, strStyleName) {
    var strRtn = '';
    if (objElement.currentStyle[strStyleName] != undefined) {
        strRtn = escape(objElement.currentStyle[strStyleName]);
    }
    return strRtn;
}


function OpenAttachment(tagObject, strTmpRedir) {
    gbolAutoClose = false;
    OpenWindowCopy(addBrowserIDsToURL(strTmpRedir, gstrURLBrowserIDs), 450, 550, 'menubar=0,toolbar=0,status=0,scrollbars=auto,resizable=0,');
}


//TestAttachment();
function EditAttachment(tagObject) {
    var isOpen = false;
    var AttachmentID = tagObject.getAttribute('lngEntityID') + '_' + tagObject.getAttribute('lngAttrID');
    if (gEditedAttachements[AttachmentID]) {
        isOpen = gEditedAttachements[AttachmentID].HasRunningProcess();
        if (isOpen) {
            isOpen = !gEditedAttachements[AttachmentID].DeleteLocalFile();
        } else {
            if (gEditedAttachements[AttachmentID].LocalFilePath.length > 0) {
                gEditedAttachements[AttachmentID].DeleteLocalFile();
            }
            gEditedAttachements[AttachmentID] = null;

        }
    }

    if (!isOpen) {
        gEditedAttachements[AttachmentID] = new ActiveXObject('Addsystems.Add.ClientTools.AttachmentHandler');

        gEditedAttachements[AttachmentID].Settings.EntityID = tagObject.getAttribute('lngEntityID'); // = 1021711;
        gEditedAttachements[AttachmentID].Settings.AttrID = tagObject.getAttribute('lngAttrID'); // = 1624;
        gEditedAttachements[AttachmentID].Settings.LanguageID = tagObject.getAttribute('languageID'); // = -1;
        gEditedAttachements[AttachmentID].Settings.Cookie = unescape(tagObject.getAttribute('strCookie')).replace('+', ' '); // = "$2.3@E9B5CC4612F1C219BDE2DBB265B7FC79#900890/Anders Hagg";
        gEditedAttachements[AttachmentID].Settings.BID = 1; // = 1;
        gEditedAttachements[AttachmentID].Settings.BPID = 1; // = 1;
        gEditedAttachements[AttachmentID].Settings.ServerURL = 'http://devs002';
        gEditedAttachements[AttachmentID].DownloadAndRun();
    }
}

function SaveAttachments() {
    if (gEditedAttachements.length > 0) {
        for (var i = 0; i < gEditedAttachements.length; i++) {
            alert(i);
            gEditedAttachements[i].AttachmentHandler.Upload();
        }
    }
}


function unLockWindow() {
    var objReqInfo = new requestInfo('../WindowHandler.asp', null);
    objReqInfo.data.add('WindowID', gWindowID);
    objReqInfo.method = 'GET';
    objReqInfo.async = false;
    objReqInfo.attachEvent('onloaderror', unLockFailed);
    objReqInfo.attachEvent('onload', unLockCompleted);
    objReqInfo.sendXml();
}

function unLockCompleted() {
    if (gbolIsDebug) {
        alert('UnLock Completed');
    }
}

function unLockFailed() {
    alert('WARNING!\nWindow data could not be unlocked!');
}

function showPageTabEntity(objTab) {
    try {
        for (var i = 0; i < objTab.parentNode.childNodes.length; i++) {
            if (objTab.parentNode.childNodes[i].className.substring(0, 28) == 'PageSectionTabNavigationItem') {
                objTab.parentNode.childNodes[i].className = 'PageSectionTabNavigationItem UnSelected';
            }
        }
        objTab.className = 'PageSectionTabNavigationItem Selected';

        for (var i = 0; i < objTab.parentNode.parentNode.childNodes[1].childNodes[0].childNodes.length; i++) {
            if (objTab.parentNode.parentNode.childNodes[1].childNodes[0].childNodes[i].id == objTab.getAttribute('showPageSection')) {
                objTab.parentNode.parentNode.childNodes[1].childNodes[0].childNodes[i].style.display = 'block';
            } else {
                objTab.parentNode.parentNode.childNodes[1].childNodes[0].childNodes[i].style.display = 'none';
            }
        }

    } catch (e) {
    }
}
if (window.location.href.indexOf('&Debug=1') >= 1 || window.location.href.indexOf('&debug=1') >= 1) {
    alert('Entering debug mode.');
    gbolIsDebug = true;
    gEditorDebug = true;
}

if (window.location.href.indexOf('&EditorDebug=1') >= 1 || window.location.href.indexOf('&editordebug=1') >= 1) {
    alert('Starting editor debug mode.');
    gEditorDebug = true;
}

function waitForEditorInstallation() {
    var x = new String()

    //alert(gstrDistributedEditorVersion + ' : '+ getClientEditorVersion());
    if (gstrDistributedEditorVersion != getClientEditorVersion()) {
        setTimeout('waitForEditorInstallation();', 3000);
    } else {
        window.location.reload();
    }
}


function getClientEditorVersion() {
    var strInstalledVersion = '0.0.0';
    try {
        var x = new ActiveXObject('Addsystems.Add.ClientTools.ApplicationFrame.Frame');
        strInstalledVersion = x.Version;
        x = null;
        delete x;
    }
    catch (e) {
    }

    arrInstalledVersion = strInstalledVersion.split('.');
    strInstalledVersion = arrInstalledVersion[0] + '.' + arrInstalledVersion[1] + '.' + arrInstalledVersion[2]

    return strInstalledVersion
}

function createClientEditor(strSettings) {
    var strInstalledVersion;
    var arrInstalledVersion;
    var arrLastestVersion;
    var strMessage = '';
    var bolStopExec = false;
    var strSettingsNew = '';

    if (!(window.ActiveXObject == undefined)) {
        var strInstalledVersion = getClientEditorVersion();

        bolUseApplicationFramer = (strInstalledVersion != '0.0.0')
        arrInstalledVersion = strInstalledVersion.split('.');
        arrLastestVersion = gstrDistributedEditorVersion.split('.');
        /*
        alert(strSettings);
        alert(strInstalledVersion);
        alert(gstrDistributedEditorVersion);
        */
        //    if (glngDistributionType == 0 && (gstrGlobalLocation.substring(0, 5) != 'https')) {
        if (glngDistributionType == 0) {
            if (strInstalledVersion == '0.0.0') {
                if (window.location.href.substring(0, 5) == 'https') {
                    strMessage = 'Det finns en ny sk ActiveX-komponent att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n'
                               + 'För att ladda hem och installera programmet klicka på "OK" nedan och sedan "Kör".\n'
                               + 'Beskrivning av Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + ' finns i kapitel 6. i Användarmanual Add. Den går att hitta under globalmenyalternativet Hjälp / Manual (pdf).\n'
                               + 'Om installation ej är möjlig pga av inställningar på din dator, kontakta då er IT-avdelning.\nKan frågorna ej lösas kontakta då Addsystems på 08-545 664 04 eller support@addsystems.com\n'
                } else {
                    strMessage = 'Det finns en ny sk ActiveX-komponent att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n'
                                   + 'För att installera programmet klicka på "OK" nedan eller "Avbryt" för att göra det vid ett senare tillfälle.\n'
                                   + 'Beskrivning av Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + ' finns i kapitel 6. i Användarmanual Add. Den går att hitta under globalmenyalternativet Hjälp / Manual (pdf).\n'
                                   + 'Om installation ej är möjlig pga av inställningar på din dator, kontakta då er IT-avdelning.\nKan frågorna ej lösas kontakta då Addsystems på 08-545 664 04 eller support@addsystems.com\n'
                }

            } else {
                if (arrInstalledVersion[0] < arrLastestVersion[0]) {
                    if (window.location.href.substring(0, 5) == 'https') {
                        strMessage = 'Det finns en uppdatering att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n\n'
                                   + 'OBSERVERA ATT DATORN KAN KOMMA ATT STARTAS OM UNDER INSTALLATIONEN.\nSpara därför dina öppna filer.\n\n'
                                   + 'För att ladda hem och installera programmet klicka på "OK" nedan och sedan "Kör".\n'
                    } else {
                        strMessage = 'Det finns en uppdatering att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n\n'
                                   + 'OBSERVERA ATT DATORN KAN KOMMA ATT STARTAS OM UNDER INSTALLATIONEN.\nSpara därför dina öppna filer.\n\n'
                                   + 'För att installera programmet klicka på "OK" nedan eller "Avbryt" för att göra det vid ett senare tillfälle.\n'
                    }
                } else {
                    if (arrInstalledVersion[1] < arrLastestVersion[1]) {
                        if (arrInstalledVersion[0] < arrLastestVersion[0]) {
                            strMessage = 'Det finns en uppdatering att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n\n'
                                       + 'OBSERVERA ATT DATORN KAN KOMMA ATT STARTAS OM UNDER INSTALLATIONEN.\nSpara därför dina öppna filer.\n\n'
                                       + 'För att ladda hem och installera programmet klicka på "OK" nedan och sedan "Kör".\n'

                        } else {
                            strMessage = 'Det finns en uppdatering att installera på datorn för att kunna nyttja den nya funktionalitet som finns i Add Office Web ' + arrLastestVersion[0] + '.' + arrLastestVersion[1] + '.\n\n'
                                       + 'OBSERVERA ATT DATORN KAN KOMMA ATT STARTAS OM UNDER INSTALLATIONEN.\nSpara därför dina öppna filer.\n\n'
                                       + 'För att installera programmet klicka på "OK" nedan eller "Avbryt" för att göra det vid ett senare tillfälle.\n'
                        }
                    }
                }
            }

            if (strSettings.indexOf('aceDefaultMHT="1"') > 0 && strSettings.indexOf('aceEditMode="0"') > 0) {
                strMessage = '';
            }

            if (strMessage.length > 0) {
                if (confirm(strMessage)) {
                    bolStopExec = true;
                    //window.location.href = '/skins/add/common/clients/setupAOW.msi?'+gstrDistributedEditorVersion;
                    //setTimeout('waitForEditorInstallation();');
                }
            }
        }

        //if(!bolStopExec) {
        var IsIE8 = (document.documentMode != undefined);


        //if (bolUseApplicationFramer) {
        strSettingsNew = strSettings.substring(18)

        document.write(
                    '<div id="testEditor" class="AddOfficeWebToolbar">'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowLocalCopy" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').SaveLocalCopy();checkClientEditorButtons(document.getElementById(\'aceComponent\'));return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_savelocal.gif" border="0" alt="Arbeta lokalt" /></a>'
                    + '</span>'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowRestore" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').RestoreLocalCopy();checkClientEditorButtons(document.getElementById(\'aceComponent\'));return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_restorelocal.gif" border="0" alt="Återställ från lokal kopia" /></a>'
                    + '</span>'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowDelete" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').DeleteLocalCopy();checkClientEditorButtons(document.getElementById(\'aceComponent\'));return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_deletelocal.gif" border="0" alt="Ta bort lokal kopia" /></a>'
                    + '</span>'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowUpload" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').ShowUploadDialog();return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_upload.gif" border="0" alt="Ladda upp fil" /></a>'
                    + '</span>'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowWindow" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').ToggleWindow();return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_fullscreen.gif" border="0" alt="Öppna i eget fönster" /></a>'
                    + '</span>'

                    + '<span'
                    + ' onmouseover="changeClass(this, \'AddOfficeWebButtonOver\');" onmouseout="changeClass(this, \'AddOfficeWebButton\');" class="AddOfficeWebButton" style="cursor:pointer;" '
                    + 'id="aowStartPresentation" style="display:none;"><a href="#" onclick="document.getElementById(\'aceComponent\').StartPresentation();return false;">'
                    + '<img src="/images/addofficeweb/addofficeweb_startpresentation.gif" border="0" alt="Starta presentation" /></a>'
                    + '</span>'

                    + '</div>'
                    );
    } else {
        strSettingsNew = strSettings.substring(18)
    }


    if (bolStopExec) {
        if (window.location.href.substring(0, 5) == 'https') {
            window.location.href = '../Clients/SetupAOW.msi';
        }
        else {
            if (strSettings.indexOf('aceEditMode="0"') > 0 && strSettings.indexOf('aceDefaultMHT="1"') > 0) {
                document.write('<div name="AddEditorNew" id="aceComponent" ' + strSettingsNew + '></div>')
            } else {
                document.write('<object name="AddEditorNew" CLASSID="CLSID:C5355FEB-45F1-4306-8D1B-CCDC8C1F940A" codebase="../Clients/SetupAOW.cab#version=2,3,5,0" id="aceComponent" ' + strSettingsNew + '></object>')
            }
        }
    } else {
        if (strSettings.indexOf('aceEditMode="0"') > 0 && strSettings.indexOf('aceDefaultMHT="1"') > 0) {
            document.write('<div name="AddEditorNew" id="aceComponent" ' + strSettingsNew + '></div>')
        } else {
            document.write('<object name="AddEditorNew" CLASSID="CLSID:C5355FEB-45F1-4306-8D1B-CCDC8C1F940A" id="aceComponent" ' + strSettingsNew + '></object>')
        }
    }



    //} else {
    //    if (!IsIE8) {
    //        document.write('<object name="AddEditorNew" CLASSID="CLSID:C5355FEB-45F1-4306-8D1B-CCDC8C1F940A" id="aceComponent" ' + strSettingsNew + '></object>')
    //document.write('<object onerror="this.removeNode(true)" name="AddEditor" CLASSID="CLSID:7B87AADE-684B-4A2C-BC49-C552209E5972" CODEBASE="' + gstrClientInstallationPath + '" ' + strSettings + '></object>')
    //    }
    //}
    //}
}

function lfGetFormsCollection(strFormName) {
    var myCol = new Array();
    var formRef = document.forms[strFormName];
    if (formRef) {
        for (var i = 0; formRef.length > i; i++) {
            if (formRef[i].tagName) {
                if (formRef[i].tagName.toUpperCase() != 'OBJECT') {
                    myCol[myCol.length] = formRef[i];
                    myCol[formRef[i].name] = formRef[i];
                }
            }
        }
    }
    return myCol;
}


function checkClientEditorButtons(oAddEditor) {
    if (oAddEditor.Settings.FileEditMode == 2) {
        document.getElementById('aowWindow').style.display = 'none';
        document.getElementById('aowRestore').style.display = 'none';
        document.getElementById('aowDelete').style.display = 'none';
        document.getElementById('aowLocalCopy').style.display = 'none';
        document.getElementById('aowStartPresentation').style.display = 'none';
    } else {
        if (oAddEditor.Settings.FileEditMode == 0) {
            if (!oAddEditor.Supports("Fullscreen")) {
                document.getElementById('aowWindow').style.display = 'none';
                document.getElementById('aowRestore').style.display = 'none';
                document.getElementById('aowDelete').style.display = 'none';
                document.getElementById('aowLocalCopy').style.display = 'none';
                document.getElementById('aowStartPresentation').style.display = 'none';
                document.getElementById('aowUpload').style.display = 'none';
            } else {
                document.getElementById('aowWindow').style.display = 'inline';
                document.getElementById('aowRestore').style.display = 'none';
                document.getElementById('aowDelete').style.display = 'none';
                document.getElementById('aowLocalCopy').style.display = 'none';

                if (oAddEditor.Supports('Presentation')) {
                    document.getElementById('aowStartPresentation').style.display = 'inline';
                }
            }
        } else {
            document.getElementById('aowUpload').style.display = 'inline';
            if (!oAddEditor.Supports("Fullscreen")) {
                document.getElementById('aowWindow').style.display = 'none';
                document.getElementById('aowRestore').style.display = 'none';
                document.getElementById('aowDelete').style.display = 'none';
                document.getElementById('aowLocalCopy').style.display = 'none';
                document.getElementById('aowStartPresentation').style.display = 'none';
            } else {
                if (oAddEditor.HasLocalCopy()) {
                    document.getElementById('aowWindow').style.display = 'inline';
                    document.getElementById('aowRestore').style.display = 'inline';
                    document.getElementById('aowDelete').style.display = 'inline';
                    document.getElementById('aowLocalCopy').style.display = 'none';
                    document.getElementById('aowStartPresentation').style.display = 'none';
                } else {
                    document.getElementById('aowWindow').style.display = 'inline';
                    document.getElementById('aowRestore').style.display = 'none';
                    document.getElementById('aowDelete').style.display = 'none';
                    document.getElementById('aowLocalCopy').style.display = 'inline';
                    document.getElementById('aowStartPresentation').style.display = 'none';
                }
            }
        }
    }
}

function isEditorInstalled() {
    var bolEditorInstalled = true;
    try {
        var objEditor = new ActiveXObject('AddOfficeControls.EditorControl');
        objEditor = undefined;
    } catch (e) {
        bolEditorInstalled = false;
    }
    return bolEditorInstalled;
}

function pageUnLoad() {
    var bolWindowHandlerExisted = false;

    if (window.localOnUnLoad) {
        localOnUnLoad();
    }



}

function createToggleGroupControl(objToggler) {
    objToggler.style.cursor = 'pointer';
    objToggler.onclick = showHideAttributeByToggleGroup;
}

function createToggleGroup(objToggle) {

    if (objToggle.togglegroup) {
        if (objToggle.togglegroup != '') {
            objToggle.style.display = 'none';
            if (objToggle.tagName.toLowerCase() == 'tr') {
                for (var k = 0; k < objToggle.childNodes.length; k++) {
                    if (objToggle.childNodes[k].tagName == 'TD') {
                        objToggle.childNodes[k].togglegroup = objToggle.togglegroup;
                        objToggle.childNodes[k].style.display = 'none';
                    }
                }
            }
        }
    }

    if (objToggle.togglegroupedit) {
        if (objToggle.togglegroupedit != '') {
            objToggle.style.display = 'none';
            if (objToggle.tagName.toLowerCase() == 'tr') {
                for (var k = 0; k < objToggle.childNodes.length; k++) {
                    if (objToggle.childNodes[k].tagName == 'TD') {
                        objToggle.childNodes[k].togglegroupedit = objToggle.togglegroupedit;
                        objToggle.childNodes[k].style.display = 'none';
                    }
                }
            }
        }
    }
}

function loadOnLoadEvents() {
    return;
    //    if(document.body.innerHTML.indexOf('class="TypeGeneric') >= 0 && document.body.innerHTML.indexOf('class="togglegroup')) {
    var tagTypes = Array('div', 'span', 'table', 'tr', 'td', 'textarea');
    //    } else {
    //        var tagTypes = Array('div', 'span', 'table');
    //    }
    var arrElements;
    var oAttribute;
    var oAttributeValue;
    var togglers = new Array();
    var togglegroups = new Array();
    for (var j = 0; j < tagTypes.length; j++) {
        arrElements = document.body.getElementsByTagName(tagTypes[j]);
        for (var i = 0; i < arrElements.length; i++) {
            oCurrent = arrElements[i];
            //applyBorderRadius(oCurrent);
            oAttribute = arrElements[i].getAttribute && arrElements[i].getAttribute("addsystemsonload");
            if (typeof oAttribute == "string" && oAttribute.length > 0) {
                eval(oAttribute);
            }
            if (oCurrent.togglegroup) {
                if (oCurrent.togglegroup != '') {
                    oCurrent.style.display = 'none';
                    if (tagTypes[j] == 'tr') {
                        for (var k = 0; k < oCurrent.childNodes.length; k++) {
                            if (oCurrent.childNodes[k].tagName == 'TD') {
                                oCurrent.childNodes[k].togglegroup = oCurrent.togglegroup;
                                togglegroups[togglegroups.length] = oCurrent.togglegroup;
                            }
                        }
                    }
                }
            }

            if (oCurrent.togglegroupedit) {
                if (oCurrent.togglegroupedit != '') {
                    oCurrent.style.display = 'none';
                    if (tagTypes[j] == 'tr') {
                        for (var k = 0; k < oCurrent.childNodes.length; k++) {
                            if (oCurrent.childNodes[k].tagName == 'TD') {
                                oCurrent.childNodes[k].togglegroupedit = oCurrent.togglegroupedit;
                                togglegroups[togglegroups.length] = oCurrent.togglegroupedit;
                            }
                        }
                    }
                }
            }

            if (oCurrent.toggle) {
                if (oCurrent.toggle != '') {
                    togglers[togglers.length] = oCurrent;
                }
            }

        }
    }

    for (var i = 0; i < togglers.length; i++) {
        for (var j = 0; j < togglegroups.length; j++) {
            if (togglers[i].toggle == togglegroups[j]) {
                togglers[i].style.cursor = 'pointer';
                togglers[i].onclick = showHideAttributeByToggleGroup;
                delete togglers[i];
                break;
            }
        }
    }

    delete togglers;
    delete togglegroups;
    delete arrElements;
    delete oAttribute;
}

function pageLoad() {

    for (var i = 0; i < document.styleSheets.length; i++) {
        if (document.styleSheets[i].cssText) { // ie only
            if (document.styleSheets[i].cssText.indexOf('radius') > 0) {
                for (var j = 0; j < document.styleSheets[i].rules.length; j++) {
                    if (document.styleSheets[i].rules[j].style.cssText.indexOf('htc-radius') > 0 && document.styleSheets[i].rules[j].style.cssText.indexOf('behavior') < 0) {
                        document.styleSheets[i].rules[j].style.behavior = 'url(/behaviors/tab.htc)';
                    }
                }
            }
        }
    }


    if (window.setAutoClose) {
        setAutoClose(true);
    }

    var charts = document.getElementsByTagName('IFRAME');
    for (var i = 0; i < charts.length; i++) {
        if (charts[i].chartDefaultSrc) {
            charts[i].src = charts[i].chartDefaultSrc + getChartStyleParameters(charts[i]);
        }
    }

    if (window.localOnLoad) {
        localOnLoad();
    }

    if (window.setToolBarState) {
        setToolBarState();
    }

    if (window.resizeEmbedded) {
        resizeEmbedded();
    }

    updateLinks();

    loadControls();


    if (gobjContainerIframe) {
        if (gobjContainerIframe.getAttribute('BID')) {
            gobjContainerIframe.setAttribute('BID', gstrBrowserInstanceID);
        }

        if (gobjContainerIframe.getAttribute('BPID')) {
            gobjContainerIframe.setAttribute('BPID', gstrBrowserInstanceID);
        }


        if (gobjContainerIframe.getAttribute('autoWidth')) {
            if (gobjContainerIframe.getAttribute('autoWidth') == true) {

                var mMinWidth = gobjContainerIframe.getAttribute('minWidth');
                if (!mMinWidth) mMinWidth = 100;
                var mMaxWidth = gobjContainerIframe.getAttribute('maxWidth');
                if (!mMaxWidth) mMaxWidth = 1000;
                var mNewWidth = document.body.scrollWidth + 24;
                if (mNewWidth > mMaxWidth) mNewWidth = mMaxWidth;
                if (mNewWidth < mMinWidth) mMinWidth = mMaxWidth;
                gobjContainerIframe.style.width = mNewWidth;

                /*
                if(gobjContainerIframe.getAttribute('minWidth')) {
                if(parseInt(gobjContainerIframe.getAttribute('minWidth')) < document.body.scrollWidth+24) {
                gobjContainerIframe.style.width = document.body.scrollWidth+24;
                } else {
                gobjContainerIframe.style.width = gobjContainerIframe.getAttribute('minWidth');
                }
                } else {
                gobjContainerIframe.style.width = document.body.scrollWidth+24;
                }
                */

            }
        }

        if (gobjContainerIframe.getAttribute('autoHeight')) {
            if (gobjContainerIframe.getAttribute('autoHeight') == true) {

                var mMinHeight = gobjContainerIframe.getAttribute('minHeight');
                if (!mMinHeight) mMinHeight = 100;
                var mMaxHeight = gobjContainerIframe.getAttribute('maxHeight');
                if (!mMaxHeight) mMaxHeight = 1000;
                var mNewHeight = document.body.scrollHeight + 24;
                if (mNewHeight > mMaxHeight) mNewHeight = mMaxHeight;
                if (mNewHeight < mMinHeight) mMinHeight = mMaxHeight;
                gobjContainerIframe.style.height = mNewHeight;
                /*
                if(gobjContainerIframe.getAttribute('minHeight')) {
                if(parseInt(gobjContainerIframe.getAttribute('minHeight')) < document.body.scrollHeight+24) {
                gobjContainerIframe.style.height = document.body.scrollHeight+24;
                } else {
                gobjContainerIframe.style.eheight = gobjContainerIframe.getAttribute('minHeight');
                }
                } else {
                gobjContainerIframe.style.height = document.body.scrollHeight+24;
                }
                */
            }
        }

        if (gobjContainerIframe.getAttribute('reportOnLoad')) {
            if (gobjContainerIframe.getAttribute('reportOnLoad').onload) {
                gobjContainerIframe.getAttribute('reportOnLoad').onload();
            }
        }
    }


    if (gstrAutoLoadBLOB != '') {
        var objBLOBLink = document.getElementById(gstrAutoLoadBLOB);
        if (objBLOBLink) {
            eval(objBLOBLink.href.replace('javascript:', ''));

        }
    }


}

function roundNumber(fltNumber, intDecimals) {
    var strRtn = '';
    var strChar = '';
    if (!intDecimals) {
        fltNumber = fltNumber.toFixed(12);
        for (var i = fltNumber.toString().length; i > 0; i--) {
            strChar = fltNumber.toString().substring(i - 1, i);
            if (strChar != 0) {
                if (strChar == '.') {
                    i = i + 1;
                }
                strRtn = fltNumber.toString().substring(0, i);
                break;
            }
        }
    }
    else {
        strRtn = fltNumber.toFixed(intDecimals);
    }
    return strRtn;
}

function initHead() {
    //var objHeader = document.getElementById('ApplicationLogo');
    //if(objHeader) {
    //	if(objHeader.style.display == 'inline' || objHeader.style.display == 'block' || objHeader.style.display == ''){
    //		hideNode('a5'); //Hides the home icon in the local menu
    //	} else if(objHeader.style.display == 'none'){
    //		showNode('a5'); //Hides the home icon in the local menu
    //      }
    //}
    //objHeader = null;	
}

/**
* Sets the gbolAutoClose parameter. Called onload for page
*/
function setAutoClose(bolValue) {
    if (bolValue) {
        if (bolValue == true) {
            gbolAutoClose = bolValue;
        }
    } else {
        gbolAutoClose = true;
    }
}

function getAutoClose() {
    return gbolAutoClose;
}




function tinyMCE2AddURLConverter(url, node, on_save) {
	// Do some custom URL convertion
	if((url.indexOf('BID=') > -1) || (url.indexOf('bid=') > -1) || (url.indexOf('Bid=') > -1)) {
        //alert(url);
        url = url.replace(/[?&]bid=[^&]*/ig, '').replace(/[?&]bpid=[^&]*/ig, '');

        //alert(url);
	}

	// Return new URL
	return url;
}


function loadTinyMCE() {

    var localeID = 'en';

    switch (glngLanguageCode) {
        case 1000: localeID = 'en';
            break;
        case 46000: localeID = 'se';
            break;
        default: localeID = 'en';

    }



    /*Full editor variants*/
    try {
    	tinyMCE.init({
    		mode: 'specific_textareas',
    		editor_selector: 'tinyMceEditorFullTopResizable',
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'autoresize,safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect',
    		theme_advanced_buttons2: 'cut,copy,paste,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,|,forecolor,backcolor',
    		theme_advanced_buttons3: 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,ltr,rtl,|,fullscreen',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'top',
    		theme_advanced_toolbar_align: 'left',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		extended_valid_elements: 'a[name|href|target|title|onclick|rel]',
    		urlconverter_callback: 'tinyMCE2AddURLConverter'

    	});

    	tinyMCE.init({
    		mode: 'specific_textareas',
    		editor_selector: 'tinyMceEditorFullBottomResizable',
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'autoresize,safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect',
    		theme_advanced_buttons2: 'cut,copy,paste,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,|,forecolor,backcolor',
    		theme_advanced_buttons3: 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,ltr,rtl,|,fullscreen',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'bottom',
    		theme_advanced_toolbar_align: 'left',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		mode: 'specific_textareas',
    		editor_selector: 'tinyMceEditorFullTopFixed',
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		plugins: 'safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect',
    		theme_advanced_buttons2: 'cut,copy,paste,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,|,forecolor,backcolor',
    		theme_advanced_buttons3: 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,ltr,rtl,|,fullscreen',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'top',
    		theme_advanced_toolbar_align: 'left',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		mode: 'specific_textareas',
    		editor_selector: 'tinyMceEditorFullBottomFixed',
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect',
    		theme_advanced_buttons2: 'cut,copy,paste,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,insertdate,inserttime,|,forecolor,backcolor',
    		theme_advanced_buttons3: 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,|,ltr,rtl,|,fullscreen',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'bottom',
    		theme_advanced_toolbar_align: 'left',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});





    	/*Simple editor variants*/
    	tinyMCE.init({
    		language: localeID,
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorSimpleTopResizable",
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'autoresize,safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,charmap',
    		theme_advanced_buttons2: '',
    		theme_advanced_buttons3: '',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'top',
    		theme_advanced_toolbar_align: 'center',
    		theme_advanced_resizing: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		relative_urls: false,
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		language: localeID,
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorSimpleBottomResizable",
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'autoresize,safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,charmap',
    		theme_advanced_buttons2: '',
    		theme_advanced_buttons3: '',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'bottom',
    		theme_advanced_toolbar_align: 'center',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		language: localeID,
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorSimpleTopFixed",
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,charmap',
    		theme_advanced_buttons2: '',
    		theme_advanced_buttons3: '',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'top',
    		theme_advanced_toolbar_align: 'center',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		language: localeID,
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorSimpleBottomFixed",
    		theme: 'advanced',
    		skin: 'o2k7',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: 'safari,pagebreak,style,layer,table,save,advhr,addv3image,advlink,insertdatetime,media,contextmenu,paste,directionality,fullscreen,visualchars,nonbreaking,xhtmlxtras,template',
    		theme_advanced_buttons1: 'styleprops,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,charmap',
    		theme_advanced_buttons2: '',
    		theme_advanced_buttons3: '',
    		theme_advanced_buttons4: '',
    		theme_advanced_toolbar_location: 'bottom',
    		theme_advanced_toolbar_align: 'center',
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});


    	/*No toolbar editor versions*/
    	tinyMCE.init({
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorMinimalResizable",
    		theme: "advanced",
    		skin: "o2k7",
    		skin_variant: 'notoolbar',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: "autoresize,safari",
    		theme_advanced_buttons1: "",
    		theme_advanced_buttons2: "",
    		theme_advanced_buttons3: "",
    		theme_advanced_buttons4: "",
    		theme_advanced_toolbar_location: "top",
    		theme_advanced_toolbar_align: "left",
    		theme_advanced_resizing: false,
    		relative_urls: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		remove_script_host: true,
    		init_instance_callback: "tinyMCEHideToolbar",
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});

    	tinyMCE.init({
    		mode: "specific_textareas",
    		editor_selector: "tinyMceEditorMinimalFixed",
    		theme: "advanced",
    		skin: "o2k7",
    		skin_variant: 'notoolbar',
    		language: localeID,
    		content_css: gstrTinyMCEContentCSS,
    		paste_convert_middot_lists: false,
    		paste_auto_cleanup_on_paste: true,
    		paste_strip_class_attributes: 'mso',
    		paste_retain_style_properties: 'margin, padding, width, height, font-size, font-weight, font-family, color, text-align, ul, ol, li, text-decoration, line-height, border, background, float, display',
    		plugins: "safari,paste",
    		theme_advanced_buttons1: "",
    		theme_advanced_buttons2: "",
    		theme_advanced_buttons3: "",
    		theme_advanced_buttons4: "",
    		theme_advanced_toolbar_location: "top",
    		theme_advanced_toolbar_align: "left",
    		theme_advanced_resizing: false,
    		font_size_style_values: "8pt,10pt,12pt,14pt,16pt,18pt,20pt",
    		relative_urls: false,
    		remove_script_host: true,
    		init_instance_callback: "tinyMCEHideToolbar",
    		urlconverter_callback: "tinyMCE2AddURLConverter"
    	});
    } catch (e) { }
}

function tinyMCEHideToolbar(inst) {
    //alert(inst.id);
    var instance = jQuery('#' + inst.id + '_parent');
    var container = instance.find('.mceIframeContainer');
    var iframe = jQuery('#' + inst.id + '_ifr');

    instance.find('.mceToolbar').css({ display: 'none' });
    iframe.css({ height: container.innerHeight(), paddingBottom: 0 });
    container.css({ verticalAlign: 'top' });
}

function loadControls() {
    var lngStart, lngEnd, lngTarget, lngValue, lngEntityID, lngAttrID
    var lngDetTarget, lngDirection;
    var strTargetName = '';
    var currObj;
    loadTinyMCE();


    if (document.getElementById('prSettings')) {
        var arrSettings = document.getElementById('prSettings');

        if (!arrSettings.length) {
            lngStart = parseFloat(arrSettings.prStart);
            lngEnd = parseFloat(arrSettings.prEnd);
            lngTarget = parseFloat(arrSettings.prTarget);
            lngValue = parseFloat(arrSettings.prValue);
            lngEntityID = arrSettings.prEntityID;
            lngAttrID = arrSettings.prAttrID;
            lngDetTarget = parseFloat(arrSettings.prDetTarget);
            lngDirection = arrSettings.prDirection;

            if (arrSettings.prTargetName)
                strTargetName = arrSettings.prTargetName;

            renderProgressbar(lngStart, lngEnd, lngTarget, lngValue, lngDetTarget, lngDirection, lngEntityID, lngAttrID, strTargetName);

            return 0;
        }


        for (var i = 0; i != arrSettings.length; i++) {
            currObj = arrSettings[i];
            if (currObj) {
                lngStart = parseFloat(currObj.prStart);
                lngEnd = parseFloat(currObj.prEnd);
                lngTarget = parseFloat(currObj.prTarget);
                lngValue = parseFloat(currObj.prValue);
                lngEntityID = currObj.prEntityID;
                lngAttrID = currObj.prAttrID;
                lngDetTarget = parseFloat(currObj.prDetTarget);
                lngDirection = currObj.prDirection;

                if (currObj.prTargetName)
                    strTargetName = currObj.prTargetName;

                renderProgressbar(lngStart, lngEnd, lngTarget, lngValue, lngDetTarget, lngDirection, lngEntityID, lngAttrID, strTargetName);

            }
        }

    }
    arrSettings = null;

}


function UseApplicationFramer() {
    var bolUseApplicationFramer = true;
    try {
        var x = new ActiveXObject('Addsystems.Add.ClientTools.ApplicationFrame.Frame');
    }
    catch (e) {
        bolUseApplicationFramer = false;
    }
    return bolUseApplicationFramer;
}

/**
* Controls the appearance of the toolbar, if it is open or not. Called onload for page
*/
function setToolBarState() {
    var strCookieValue = Get_Cookie("AddsystemConfig");

    if (!strCookieValue) { strCookieValue = 'toolBarOpen=0' }

    if (strCookieValue.indexOf("toolBarOpen=1") != -1) {
        var toolbar = document.getElementById("toolbarContainer");
        var toggleIcon = document.getElementById("toolbarToggleIcon");
        var toggleStateIcon = document.getElementById("toolbarToggleStateIcon");
        var tab = document.getElementById("toolbarTab");

        if (toolbar && toggleIcon) {
            toggleIcon.src = "../../../../images/minileft.gif";

            if (toggleStateIcon && tab) {
                toggleStateIcon.src = "../../../../images/pin_pinned.gif";
                tab.onmouseover = "";
            }
        }
    }
}

function setHeadState() {
    var cookieString = Get_Cookie("AddsystemConfig");

    if (!cookieString) cookieString = 'headOpen=1';
    if (cookieString.indexOf("headOpen=0") != -1) {
        toggleHead();
    }
}

/**
* Opens a new window with the HTML editor and loads the text from a hidden field.
*/
function ShowHtmlEditor(returnItem, textItem, styleClass, iframeInt, w, h, lngMode) {
    gReturnItem = returnItem;
    var strOptions;
    gTextItem = textItem;
    gStyleClass = styleClass;
    giframeCnt = iframeInt;
    gWidth = w;
    gHeight = h;

    if (lngMode == '1') {//div
        var openStr = "../DHTMLeditor/divitor.asp?class=" + gStyleClass + "&amp;frame=divit" + iframeInt;
        strOptions = "width=" + gWidth + ",height=" + gHeight + ",status=1,resizable=1,left=200,scrollbars=yes,tool=0"
    } else {
        var openStr = "../DHTMLeditor/deditor.asp?class=" + gStyleClass + "&amp;frame=dedit" + iframeInt;
        strOptions = "width=" + gWidth + ",height=" + gHeight + ",status=1,resizable=1,left=200,scrollbars=no,tool=0";
    }

    openStr = addBrowserIDsToURL(openStr, gstrURLBrowserIDs);
    vWinCalk = window.open(openStr, "", strOptions)
    vWinCalk.opener = self;
    gConfirmedUnload = false;

}

/**
* Used by the editor window to load the text that it should be initialized with
*/
function getEditorText(lngMode) {
    if (lngMode == 1) {
        var evalStr = 'document.getElementById(gReturnItem).innerHTML';
    } else {
        var evalStr = gReturnItem + '.document.body.innerHTML';
    }
    return eval(evalStr);
}

// --------------------------------------------------------------------------
function PostFormLinkedObject(objForm, objVariable, strNewValue) {
    objVariable.value = strNewValue;

    PostFormSubmit(objForm);
    objForm.submit();
}

// --------------------------------------------------------------------------
function PostFormLinked(strAction, objForm, bolShowProgress) {
    if (gbolCommandsExecuting == false) {
        gbolCommandsExecuting = true;
        var strCallbackFormat = '';
        if (objForm) {
            syncFields(objForm.name);
            if (strAction != '') {
                objForm.action = strAction;
            }
            PostFormSubmit(objForm, bolShowProgress)

        } else {
            strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);
            if (gobjContainerIframe) {
                if (gobjContainerIframe.getAttribute('callBackFormat')) {
                    strAction = strAction + '&callBackFormat=' + gobjContainerIframe.getAttribute('callBackFormat');
                }
            } else {
                if (gobjContainerWindow) {
                    strAction = strAction + '&callBackFormat=XML';
                }
            }
            try {
                window.location.href = strAction;
            } catch (e) { }
        }
    }

}

function PostFormLinkedNoValidation(strAction, objForm, bolShowProgress) {
    if (gbolCommandsExecuting == false) {
        gbolCommandsExecuting = true;
        var strCallbackFormat = '';
        if (objForm) {
            syncFields(objForm.name);
            if (strAction != '') {
                objForm.action = strAction;
            }
            PostFormSubmitNoValidation(objForm, bolShowProgress)

        } else {
            strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);
            if (gobjContainerIframe) {
                if (gobjContainerIframe.getAttribute('callBackFormat')) {
                    strAction = strAction + '&callBackFormat=' + gobjContainerIframe.getAttribute('callBackFormat');
                }
            } else {
                if (gobjContainerWindow) {
                    strAction = strAction + '&callBackFormat=XML';
                }
            }
            try {
                window.location.href = strAction;
            } catch (e) { }
        }
    }
}

function PostFormSubmitTranslativeKeep(objForm, bolShowProgress) {
    var lngRtn;
    PostFormSubmit(objForm, bolShowProgress);
}

function PostFormSubmitTranslative(objForm, bolShowProgress) {
    var lngRtn;

    if (typeof checkTranslations == 'function') {
        lngRtn = checkTranslations();
    } else {
        lngRtn = 2;
    }


    if (lngRtn != 0 && lngRtn != 'undefined') {
        if (objForm.bitKeepTranslations) objForm.bitKeepTranslations.value = lngRtn;
        PostFormSubmit(objForm, bolShowProgress);
    }
}


/**
* Used by all buttons or other elements that should post a form.
*/
function PostFormSubmit(objForm, bolShowProgress, Group) {
    var strAction = objForm.action;
    var strOrigAction = strAction;
    var strMethod = objForm.method.toString();
    var bolValid = false;
    var bolIsFileUpload = false;
    
    var lngGroup = 0;
    if (!Group) {
        lngGroup = 0;
    } else {
        lngGroup = parseInt(Group);
    }

    if (strMethod.toUpperCase() == 'GET') {
        objForm.insertAdjacentHTML('beforeEnd', '<input type="hidden" name="BID" value="' + gstrBrowserInstanceID + '"><input type="hidden" name="BPID" value="' + gstrBrowserParentInstanceID + '">')
        if (gobjContainerIframe) {
            if (gobjContainerIframe.getAttribute('callBackFormat')) {
                objForm.insertAdjacentHTML('beforeEnd', '<input type="hidden" name="callBackFormat" value="' + gobjContainerIframe.getAttribute('callBackFormat') + '">')
            }
        } else {
            if (gobjContainerWindow) {
                objForm.insertAdjacentHTML('beforeEnd', '<input type="hidden" name="callBackFormat" value="XML">')
            }
        }

    } else {
        strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);

        if (gobjContainerIframe) {
            if (gobjContainerIframe.getAttribute('callBackFormat')) {
                strAction = strAction + '&callBackFormat=' + gobjContainerIframe.getAttribute('callBackFormat');
            }
        } else {
            if (gobjContainerWindow) {
                strAction = strAction + '&callBackFormat=XML';
            }
        }
        objForm.action = strAction;
    }

    syncFields(objForm.name);
    initImageSize();


    if (validateForm(objForm, lngGroup) && checkFields(objForm)) {
        var element;
        var formElements = objForm.getElementsByTagName("input");
        var length = formElements.length;
        for (var lngCnt = 0; lngCnt < length; lngCnt++) {
            element = formElements[lngCnt];
            if (element.type == 'file' && objForm.enctype == 'multipart/form-data') bolIsFileUpload = true;
            if (element.type == 'button' || element.type == 'submit') {
                element.disabled = true;
            }
        }
        if (bolShowProgress) {
            if (bolShowProgress == true) {
                //openLoader();
            }
        }
        addsystems.gui.attributes.saveactivex(objForm);
        bolValid = true;

        if (bolIsFileUpload) {
            appendFieldsToQueryString(objForm, formElements);
        }

        objForm.submit();
    }

    if (!bolValid) {
        objForm.action = strOrigAction;
        gbolCommandsExecuting = false;

    }

    return;
}

function appendFieldsToQueryString(objForm, colElements) {
    for (var i = 0; i < colElements.length; i++) {
        if (objForm.action.indexOf('?') == -1) {
            objForm.action = objForm.action + '?' + colElements[i].name + '=' + colElements[i].value;
        } else {
            objForm.action = objForm.action + '&' + colElements[i].name + '=' + colElements[i].value;
        }
    }
}


function PostStateChange(objButton) {

    var strOrigAction = objButton.form.action;

    objButton.form.action = '../State/EntityChangeState.asp?Action=CHANGESTATE'
    addQueryString(objButton.form.name, objButton);

    if (objButton.getAttribute('lngGroup')) {
        if (!PostFormSubmit(objButton.form, true, parseInt(objButton.getAttribute('lngGroup')))) {
            objButton.form.action = strOrigAction;
        }
    } else {
        if (!PostFormSubmit(objButton.form, true)) {
            objButton.form.action = strOrigAction;
        }
    }
}

function PostWFAction(objButton) {

    var strOrigAction = objButton.form.action;
    var lngGroup = parseInt(objButton.getAttribute('lngGroup'));
    var lngMark = parseInt(objButton.getAttribute('lngMark'));

    addQueryString(objButton.form.name, objButton);
    if (lngMark == 7) {
        PostFormSubmitNoValidation(objButton.form, true);
    } else {
        if (!PostFormSubmit(objButton.form, true, lngGroup)) {
            objButton.form.action = strOrigAction;
        }
    }
}

function PostWFSaveState(objButton) {
    var strOrigAction = objButton.form.action;
    addQueryString(objButton.form.name, objButton);
    addQueryStringParameter(objButton.form.name, 'Action', 'SAVESTATE');
    if (!PostFormSubmit(objButton.form, true, -10000000)) {
        objButton.form.action = strOrigAction;
    }
}

/**
* Used by all buttons or other elements that should post a form.
*/

function PostOfficeEditorData() {

    var lngLanguageID;
    var lngEntityID;
    var lngAttrID;
    var strCookie;
    var lngBID;
    var lngBPID;
    var strFileGetURL;
    var currObj;
    var bolUseApplicationFramer = UseApplicationFramer();

    if (!bolUseApplicationFramer && document.getElementById('aceComponent')) {
        var arrSettings = document.getElementById('aceComponent');
        //try {
        if (!arrSettings.length) {
            if (arrSettings.aceEditMode == '1') {
                arrSettings.SaveRemoteFile();
            }
            return 0;
        }

        for (var i = 0; i != arrSettings.length; i++) {
            currObj = arrSettings[i];
            if (currObj) {
                if (currObj.aceEditMode == '1') {
                    arrSettings.SaveRemoteFile();
                }
                return 0;
            }
        }
        //} catch(e) {
        //	alert(e.description);
        //	if(arrSettings) {
        //		arrSettings.style.visibility='hidden';
        //	}
        //	return;
        //}	
    }


    if (bolUseApplicationFramer && document.getElementById('aceComponent')) {
        var arrSettings = document.getElementById('aceComponent');
        //try {
        if (!arrSettings.length) {
            if (arrSettings.aceEditMode == '1') {
                //arrSettings.SaveRemoteFile();
                //try {
                if (arrSettings.Settings) {
                    if (arrSettings.Settings.ServerURL) {
                        arrSettings.Save();
                    }
                }
                //} catch(e) {}
            }
            return 0;
        }

        for (var i = 0; i != arrSettings.length; i++) {
            currObj = arrSettings[i];
            if (currObj) {
                if (currObj.aceEditMode == '1') {
                    //arrSettings.SaveRemoteFile();
                    arrSettings.Save();
                }
                return 0;
            }
        }
        //} catch(e) {
        //	alert(e.description);
        //	if(arrSettings) {
        //		arrSettings.style.visibility='hidden';
        //	}
        //	return;
        //}	
    }



}

function PostFormSubmitNoValidation(objForm, bolShowProgress, strOverrideAction) {
    var strAction = '';
    if (strOverrideAction) {
        strAction = strOverrideAction;
    } else {
        strAction = objForm.action;
    }
    var strMethod = objForm.method.toString();
    if (strMethod.toUpperCase() == 'GET') {
        objForm.insertAdjacentHTML('beforeEnd', '<input type="hidden" name="BID" value="' + gstrBrowserInstanceID + '"><input type="hidden" name="BPID" value="' + gstrBrowserParentInstanceID + '">')
    } else {
        strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);
        objForm.action = strAction;
    }
    addsystems.gui.attributes.saveactivex(objForm);


    if (bolShowProgress) {
        if (bolShowProgress == true) {
            //openLoader();
        }
    }
    objForm.submit();
    return;
}


/**
* Used by all buttons or other elements that should post a form but clears 
* the browser instance identifier.
*/
function PostFormSubmitNoBID(objForm, bolShowProgress) {
    var strAction = objForm.action;
    objForm.action = strAction;

    syncFields(objForm.name);
    initImageSize();
    if (validateForm(objForm) && checkFields(objForm)) {
        var element;
        var formElements = objForm.getElementsByTagName("input");
        var length = formElements.length;
        for (var lngCnt = 0; lngCnt < length; lngCnt++) {
            element = formElements[lngCnt];

            if (element.type == 'button' || element.type == 'submit') {
                element.disabled = true;
            }
        }
        if (bolShowProgress) {
            if (bolShowProgress == true) {
                //openLoader();
            }
        }
        objForm.submit();
    }
    return;
}

function AddBIDForOnSubmit(objForm) {
    var strAction = objForm.action;
    strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);
    objForm.action = strAction;

}

/**
* Saves a text manipulated by the html editor back into the requesting page.
*/
function syncFields(strForm) {
    try {
        tinyMCE.triggerSave();
    } catch (e) { }
}

/**
* Makes a client side control of all fields in a page before it is submitted
*/
function checkFields(formName) {
    var bolEmpty = true;
    var antal = 0;
    var strOrigPsw;
    var strVeriPsw;

    var form = jQuery(formName);
    var pwd1 = jQuery('#' + form.attr('id') + ' #psw1');
    var pwd2 = jQuery('#' + form.attr('id') + ' #psw2');

    if (pwd1.length == 1) {
        if (pwd1.attr('value') != pwd2.attr('value')) {
            alert(gstrErrorPassword);
            return false;            
        }
    }

    return true;
}

/**
* Checks if a fields value is a float
*/
function checkIfFloat(objName) {
    var userInput = objName.value;
    //var numberMatch = /^[0-9][0-9,\.,\-]*/ig;
    var numberMatch = /^[-+]?[0-9]+(\.[0-9]+)?(\,[0-9]+)?$/ig;
    var tokenMatch = /[^0-9,\.,\-]/ig;
    var jElement = jQuery(objName);

    if ((!numberMatch.test(userInput) || tokenMatch.test(userInput)) && (parseFloat(userInput).toString() != userInput)) {
        return gstrOnlyIntOrDec;
    } else {

        if (jElement.attr('maxValue') && jElement.attr('minValue')) {
            if (parseFloat(objName.value) > parseFloat(jElement.attr('maxValue')) && (parseFloat(jElement.attr('maxValue')) != 0 || parseFloat(jElement.attr('minValue')) != 0)) {
                return gstrMaxValue + ': ' + jElement.attr('maxValue');
            }
            if (parseFloat(objName.value) < parseFloat(jElement.attr('minValue')) && (parseFloat(jElement.attr('maxValue')) != 0 || parseFloat(jElement.attr('minValue')) != 0)) {
                return gstrMinValue + ': ' + jElement.attr('minValue');
            }
        }
    }
}

/**
* Checks if a fields value is an integer
*/
function checkIfInt(objName) {
    var userInput = objName.value;
    var jElement = jQuery(objName);
    if (isNaN(parseInt(userInput, 10))) {
        return gstrOnlyInt;
        if (objName.value == '') {
            objName.value = 0;
        }
    } else {
        var parsedText = new String(parseInt(userInput, 10));
        var originText = new String(userInput);
        if (parsedText.length != originText.length) {
            return gstrOnlyInt;
            if (objName.value == '') {
                objName.value = 0;
            }
        } else {
            if (jElement.attr('minValue') && jElement.attr('maxValue')) {
                if (parseInt(parsedText, 10) > parseInt(jElement.attr('maxValue'), 10) && (parseInt(jElement.attr('maxValue'), 10) != 0 || parseInt(jElement.attr('minValue'), 10) != 0)) {
                    return gstrMaxValue + ': ' + jElement.attr('maxValue');
                }
                if (parseInt(parsedText, 10) < parseInt(jElement.attr('minValue'), 10) && (parseInt(jElement.attr('maxValue'), 10) != 0 || parseInt(jElement.attr('minValue'), 10) != 0)) {
                    return gstrMinValue + ': ' + jElement.attr('minValue');
                }
            }
        }
    }
}

/**
* Checks if a fields value is a valid date
*/
function checkDateFormat(objName) {
    var str = objName.value;
    var correctFormat = false;
    var year, month, day;
    var re1 = /[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]( \d\d:\d\d)?/; 	// 2000-12-24
    var re2 = /[0-9][0-9]-[0-1][0-9]-[0-3][0-9]( \d\d:\d\d)?/; 			// 00-12-24
    var re3 = /\d{1,2}\/\d{1,2}\/\d{4}( \d\d:\d\d)?/; 			        // 8/1/1918, 12/1/1918, 8/22/1918, 12/22/1918 (month/day/year)

    if ((str.search(re1) != -1) && (str.length == 10 || str.length == 16)) {
        correctFormat = true;
        var firstSplit = str.split("-");
        var secondSplit = firstSplit[2].split(" ");

        year = firstSplit[0];
        month = firstSplit[1];
        day = firstSplit[2];
        if (secondSplit.length > 1) {
            day = secondSplit[0];
        }

        checkDateExist(objName, year, month, day);
    }
    if ((str.search(re2) != -1) && (str.length == 8 || str.length == 14)) {
        correctFormat = true;
        var firstSplit = str.split("-");
        var secondSplit = firstSplit[2].split(" ");

        year = firstSplit[0];
        month = firstSplit[1];
        day = firstSplit[2];
        if (secondSplit.length > 1) {
            day = secondSplit[0];
        }
        checkDateExist(objName, year, month, day);
    }
    if ((str.search(re3) != -1) && (str.length <= 16)) {
        correctFormat = true;
        var firstSplit = str.split("/");
        var secondSplit = firstSplit[2].split(" ");

        month = firstSplit[0];
        day = firstSplit[1];
        year = firstSplit[2];
        if (secondSplit.length > 1) {
            year = secondSplit[0];
        }

        checkDateExist(objName, year, month, day);
    }
    if (!correctFormat && objName.value != '') {
        if (!isNaN(parseInt(objName.value))) {
            alert("Använd ett av följande format: åååå-mm-dd, åå-mm-dd, m/d/åååå, mm/dd/åååå\neller skriv 'Inget valt' för att inte välja ett datum");
        }
    }
}

/**
* Checks if a fields value is an existing date. Only used by checkDateFormat()
*/
function checkDateExist(objName, year, month, day) {
    if (day <= 0) {
        alert("Inga dagar specifierade");
        objName.focus();
    }
    if (month <= 0 || month > 12) {
        alert("Felaktig månad");
        objName.focus();
    }
    if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
        if (day > 31) {
            alert("För många dagar i denna månad");
            objName.focus();
        }
    }
    if (month == "04" || month == "06" || month == "09" || month == "11") {
        if (day > 30) {
            alert("För många dagar i denna månad");
            objName.focus();
        }
    }

    if (month == "02") {

        if (day > 29) {
            alert("För många dagar i denna månad");
            objName.focus();
        }

        if (day == 29) {
            if (!LeapYear(year)) {
                alert('Detta är inte ett skottår');
                objName.focus();
            }
        }
    }
}

/**
* Checks if a fields value is a leap year. Only used by checkDateFormat()
*/
function LeapYear(intYear) {
    if (intYear % 100 == 0) {
        if (intYear % 400 == 0) {
            return true;
        }
    } else {
        if ((intYear % 4) == 0) {
            return true;
        }
    }
    return false;
}

// --------------------------------------------------------------------------
function insertCboSelected(cboName, textbox) {
    var sText = cboName.options(cboName.selectedIndex).text;
    textbox.value = sText;
}

// --------------------------------------------------------------------------
// Input: cboName=combobox with selected value; textbox=where to put value; hidden=hidden field with all values
// hidden.value looks like "8=1000000,9=200000000,"
function insertCboSelectedNextBox(cboName, textbox, hidden) {
    var existingValue = cboName.options(cboName.selectedIndex).text; // what the user selected in the combobox
    var baseTypes = new String(hidden.value); 						// all values in an array
    var startPos = baseTypes.indexOf(existingValue);
    startPos = (baseTypes.indexOf("=", startPos) + 1); 				// first position after "="
    var endPos = baseTypes.indexOf(",", startPos); 					// first position before "," , strangely not take -1 on the result
    var typeID = baseTypes.substring(startPos, endPos);

    textbox.value = typeID;
    textbox.focus();
}

/**
* To make sure that no filterfields are empty before submit since a component goes nuts if so
*/
function noEmptyFilterFields(formName) {
    var textbox;

    for (var i = 0; i < formName.length; i++) {
        textbox = formName.elements[i].name;
        textbox = textbox.substring(0, 7);
        textbox = textbox.toLowerCase();

        if (textbox == "lngpart") {
            if (formName.elements[i].value == "") {
                formName.elements[i].value = 0;
            }
        }
    }
}


/*
* Return true if all fields are integer or empty
*/
function CheckAllFilterFields(formName, controlPrefix) {
    // Fill up empty filterfields with 0
    if (formName.tagName != "FORM") {
        formName = formName.form;
    }

    noEmptyFilterFields(formName);

    for (var i = 0; i < formName.elements.length; i++) {
        if (formName.elements[i].name.search(controlPrefix) != -1) {
            if (isNaN(parseInt(formName.elements[i].value, 10)) && formName.elements[i].value.length > 0) {
                alert('Only accept numbers or empty fields');
                formName.elements[i].focus();
                return false;
            }
        }
    }
    return true;
}

/**
* Pops a confirmation message before an object is deleted
*/
function confirmDelete(strMsg, strLink) {
    if (confirm(strMsg)) {
        try {
            window.location.href = addBrowserIDsToURL(strLink, gstrURLBrowserIDs);
        } catch (e) { }
    }
}

/*
* This function is used in the file EducationView.asp to check if 
* a selection is made in the Education form before it is submitted.
*/
function checkEducationFormValues(strErrorMessage, objForm, objButton) {
    var bolRadAction = true;      //This variable check weather all radio questions have been selected
    var objRadValues = new Object(); //This is a js object acting as a hashtable that holds the selected value for each group of radio buttons
    var bolTxtAction = false;      //This variable check weather a check box question has been selected
    var objTxtValues = new Object(); //This is a js object acting as a hashtable that holds the selected value for each group of select boxes
    var hasTxtValues = false;

    //Loop through all the elements of the form
    var elements = document.getElementById('frmUpdateState').elements;
    var length = elements.length;
    var name, subName;
    for (var i = 0; i < length; i++) {
        name = elements[i].name;
        subName = name.substring(0, 9);

        //If radiobuttons exist in the form check, for each group, check
        //if there's any selected button
        if (subName == "radAction") {
            if (!objRadValues[name]) {
                objRadValues[name] = elements[i].checked;
            }
            objRadValues[name] = (objRadValues[name] || elements[i].checked);
            //If a checkbox exists in the education step, check to see if at least one is checked
        } else if (subName == "txtAction") {
            if (!objTxtValues[name]) {
                objTxtValues[name] = elements[i].checked;
            }
            objTxtValues[name] = (objTxtValues[name] || elements[i].checked);
        }
    }

    //Sets the status for radiobuttons
    for (var i in objRadValues) {
        if (!objRadValues[i]) {
            bolRadAction = false;
        }
    }

    //Sets the status for checkboxes
    for (var i in objTxtValues) {
        hasTxtValues = true;
        if (objTxtValues[i]) {
            bolTxtAction = true;
        }
    }
    //Only executed if the step doesn't have any checkboxes
    if (!hasTxtValues) {
        bolTxtAction = true;
    }

    if (bolRadAction == true && bolTxtAction == true) {
        PostFormSubmit(objForm);
        addQueryString(objForm.name, objButton);
        objForm.submit();
        return true;
    } else if (bolRadAction == false) {
        alert(strErrorMessage);
        return false;
    } else {
        alert(strErrorMessage);
        return false;
    }
}

/**
* Pops up a new window using the specified parameters
*/
function popupWindow(popupURL, w, h, strConfig) {
    if (strConfig && strConfig != "") {
        var windowconfig = strConfig + "width=" + w + ",height=" + h;
    } else {
        var windowconfig = "menubar=0,toolbar=1,status=0,scrollbars=1,resizable=1,width=" + w + ",height=" + h;
    }

    if (popupURL.indexOf('BID=') == -1) popupURL = addBrowserIDsToURL(popupURL, gstrURLBrowserIDs);

    var intNewId = parseInt(gstrBrowserInstanceID) + 1;
    if (top.window.frames.length > 0) {
        intNewId += top.window.frames.length - 1;
    }
    var windowvar = window.open(popupURL, '_blank', windowconfig);

    gConfirmedUnload = false;
}

function ViewInNewWindow(strUrl, intW, intH, strConfig) {

    if (strConfig && strConfig != "") {
        var windowconfig = strConfig + ",width=" + intW + ",height=" + intH;
    } else {
        var windowconfig = "status=no,resizable=yes,scrollbars=yes,toolbar=yes,width=" + intW + ",height=" + intH;
    }
    if (strUrl.indexOf('BID=') == -1) strUrl = addBrowserIDsToURL(strUrl, gstrURLBrowserIDs);

    var CurrentURL = strUrl + "&centerOnly=1";
    CurrentURL = addBrowserIDsToURL(CurrentURL, gstrURLBrowserIDs)
    window.open(CurrentURL, "", windowconfig);
    gConfirmedUnload = false;
}

function OpenWindowCopy(strUrl, intW, intH, strConfig) {
    if (strConfig && strConfig != "") {
        var windowconfig = strConfig + ",width=" + intW + ",height=" + intH;
    } else {
        var windowconfig = "status=no,resizable=yes,scrollbars=yes,toolbar=yes,width=" + intW + ",height=" + intH;
    }
    if (strUrl.indexOf('BID=') == -1) strUrl = addBrowserIDsToURL(strUrl, gstrURLBrowserIDs);
    newWin = window.open(strUrl, "", windowconfig);
    gConfirmedUnload = false;
    newWin.name = gstrBrowserInstanceID;

}



/**
* Pops up an object in print view
*/
function ViewForPrint(intW, intH) {
    var CurrentURL = window.location + "&centerOnly=1&viewlevel=printonly&Print=1";
    var objWindow;
    var strInstalledVersion = getClientEditorVersion();
    var bolUseEditor = false;

    if (document.getElementById('aceComponent') || document.getElementById('aceComponentIframe')) {
        if (strInstalledVersion != '0.0.0.0' && strInstalledVersion != '0.0.0') {
            bolUseEditor = true;
        }
    }


    if (bolUseEditor) {
        if (screen.availWidth) {
            intW = screen.availWidth - 100;
            intH = screen.availHeight - 100;
            CurrentURL = '../Attributes/EditorAttributeView.asp?EntityID=' + gbolEditorEntityID + '&AttrID=' + gbolEditorAttrID + '&centerOnly=1&viewlevel=printonly&NoPrintIcon=1&Width=' + intW + '&Height=' + intH
            if (CurrentURL.indexOf('BID=') == -1) CurrentURL = addBrowserIDsToURL(CurrentURL, gstrURLBrowserIDs);
            objWindow = window.open(CurrentURL, "", "menubar=0,toolbar=0,status=0,scrollbars=0,resizable=0,width=" + intW + ",height=" + intH);
            objWindow.moveTo(16, 16)
        } else {
            CurrentURL = '../Attributes/EditorAttributeView.asp?EntityID=' + gbolEditorEntityID + '&AttrID=' + gbolEditorAttrID + '&centerOnly=1&viewlevel=printonly&NoPrintIcon=1'
            if (CurrentURL.indexOf('BID=') == -1) CurrentURL = addBrowserIDsToURL(CurrentURL, gstrURLBrowserIDs);
            objWindow = window.open(CurrentURL, "", "menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1,width=" + intW + ",height=" + intH);
        }
    } else {
        if (gbolMHTIsLoaded && document.getElementsByName('aceComponentIframe')) {
            CurrentURL = document.getElementsByName('aceComponentIframe')[0].contentWindow.location.href + "&centerOnly=1&viewlevel=printonly&Print=1";
            objWindow = window.open(CurrentURL, "", "menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1,width=" + intW + ",height=" + intH);
        } else {
            objWindow = window.open(CurrentURL, "", "menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1,width=" + intW + ",height=" + intH);
        }
    }
    gConfirmedUnload = false;
}

function ViewLanguageEntity(intW, intH, intLangID, intEntityID) {
    var CurrentURL = "../Attributes/EntityView.asp?EntityID=" + intEntityID + "&centerOnly=1&LangID=" + intLangID;
    if (CurrentURL.indexOf('BID=') == -1) CurrentURL = addBrowserIDsToURL(CurrentURL, gstrURLBrowserIDs);
    window.open(CurrentURL, "", "menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1,width=" + intW + ",height=" + intH);
    gConfirmedUnload = false;
}

/**
/* The function creates a global string with the browser instance information
*/
function setGlobalURLBrowserIDs(strBrowserInstanceID) {
    return 'BID=' + strBrowserInstanceID + '&BPID=' + strBrowserInstanceID;
}

function getContainerIframe() {
    var objElements;
    var objRtn;
    try {
        if (window.frameElement) {
            objRtn = window.frameElement;
        }
    } catch (e) { }

    return objRtn;
}

function getContainerWindow() {
    var objRtn;
    var objWs;
    //    if(!objRtn) {
    try {
        if (window.opener) {
            if (window.opener.addsystems.workspace.workspaces) {
                for (var i = 0; i < window.opener.addsystems.workspace.workspaces.length; i++) {
                    if (window.opener.addsystems.workspace.workspaces[window.opener.addsystems.workspace.workspaces[i]].requests) {
                        if (window.opener.addsystems.workspace.workspaces[window.opener.addsystems.workspace.workspaces[i]].requests.exists(window)) {
                            for (var j = 0; j < window.opener.addsystems.workspace.workspaces[window.opener.addsystems.workspace.workspaces[i]].requests.length; j++) {
                                //if (window.opener.addsystems.workspace.workspaces[window.opener.workspaces[i]].requests[window.opener.addsystems.workspace.workspaces[window.opener.addsystems.workspace.workspaces[i]].requests[j]].window == window) {
                                objRtn = window.opener;
                                //}
                            }
                        }
                    }
                }
            }
        }
    } catch (e) { }
    //    }
    return objRtn;
}

/**
* The function sets the window.BID with the browser instance id
*/
function setWindowBrowserID(strBrowserInstanceID, strBrowserParentInstanceID) {
    //alert(strBrowserInstanceID + " - " + strBrowserParentInstanceID);
    var objIframe;
    //alert('Before:' + window.name);
    if (strBrowserInstanceID != strBrowserParentInstanceID) {
        if (gobjContainerIframe) {
            gobjContainerIframe.name = strBrowserInstanceID;
        }
        window.name = strBrowserInstanceID;
        strBrowserParentInstanceID = strBrowserInstanceID;
    } else if (typeof (window.name) == 'undefined') {
        if (gobjContainerIframe) {
            gobjContainerIframe.name = '_';
        }
        window.name = '_';
    } else {
        //        if(window.name != strBrowserInstanceID) {
        // 		    window.name = strBrowserInstanceID;
        //		    strBrowserParentInstanceID = strBrowserInstanceID;       
        //        }
        //alert(strBrowserInstanceID+':'+strBrowserParentInstanceID);
    }
    //alert('After:' + window.name);
    //alert(gobjContainerIframe.name);
}

/**
* This function change the URL in the browser and is called from javascript attached to onclick-events
* and simliar. The function adds the browser instance information to to URL before setting the window.location
*/
function changeLocation(strURL) {
    if(strURL.indexOf('%') == -1)
    strURL = encodeURI(decodeURIComponent(escape(strURL)));
    if (window.gstrURLBrowserIDs) {
        window.location = addBrowserIDsToURL(strURL, gstrURLBrowserIDs);
    } else {
        window.location.href = strURL;
    }
}

/**
* The function adds the browser instance information to the URL and writes the complete A tag
*/

function WriteLink(strPre, strURL, strpost) {
    document.write('<a ' + strPre + ' href="' + addBrowserIDsToURL(strURL, gstrURLBrowserIDs) + '" ' + strpost + '>');
}

/**
* The function adds the browser instance information to the URL and returns the new URL
*/
function addBrowserIDsToURL(strURL, strURLBrowserIDs) {
    if (strURL.indexOf(strURLBrowserIDs) == -1) {
        if (strURL.indexOf('?') == -1) {
            strURL += '?' + strURLBrowserIDs;
        } else {
            strURL += '&' + strURLBrowserIDs;
        }
    }
    return strURL;
}


/**
* Written by henrik.berggren@addsystems.com 2006-06-27
* Traverses DOM and adds BID & BPID to href attribute of all anchor tags.
*/

function updateLinks() {
    return;
    
    var i;
    var links = document.getElementsByTagName('a');
    var strLink;

    for (i = 0; i < links.length; i++) {
        bolUseBID = true;
        if (links[i].target) {
            if (links[i].target != '_self') {
                bolUseBID = false;
            }
        }
        if (links[i].href.substring(0, gstrGlobalLocation.length).toLowerCase() == gstrGlobalLocation.toLowerCase() && links[i].href != '' && links[i].href.substring(0, 1) != '#' && links[i].href.substring(0, 11).toLowerCase() != 'javascript:' && links[i].href.substring(0, 7).toLowerCase() != 'mailto:' && links[i].href.substring(0, 5).toLowerCase() != 'file:' && links[i].href.indexOf('BID=') == -1) {
            if (bolUseBID) {
                links[i].href = addBrowserIDsToURL(' ' + links[i].href, gstrURLBrowserIDs);
            } else {
                links[i].href = addBrowserIDsToURL(' ' + links[i].href, 'BID=0&BPID=' + gstrBrowserInstanceID);
            }
        }

    }

    delete links;
}


/**
* Written by henrik.berggren@addsystems.com 2001-07-27
* This function takes a string which is
* the name of the form which elements you want to alter.
* The function takes all checkboxes in the hidEntityID collection
* and either check or uncheck them.
*/
//Global variable for holding status
var gBolStatus = false;
function CheckUncheckAllBoxes(strForm, strBoxName) {
    var oForm = document[strForm];
    if (oForm[strBoxName]) {
        if (oForm[strBoxName].length) {
            for (var intCnt = 0; intCnt < oForm[strBoxName].length; intCnt++) {
                if (gBolStatus == false) {
                    oForm[strBoxName][intCnt].checked = true;
                } else {
                    oForm[strBoxName][intCnt].checked = false;
                }
            }
        } else {
            oForm[strBoxName].checked = (gBolStatus ? false : true);
        }
        gBolStatus = !gBolStatus;
    }
}

/** 
* Written by henrik.berggren@addsystems.com 2001-07-30
* This function takes a string which is
* the name of the form which elements you want to check.
* The function iterates through the hidEntityID collection
* and checks if it contains any checked checkboxes.
* If it does then submit the form, if not send an alertbox.
*/
function formSubmit(strForm) {
    var bolStatus = false;
    var oForm = document[strForm];
    if (oForm.hidEntityID) {
        if (oForm.hidEntityID.length) {
            for (var intCnt = 0; intCnt != oForm.hidEntityID.length; intCnt++) {
                if (oForm.hidEntityID[intCnt].checked == true) {
                    bolStatus = true;
                }
            }
            if (bolStatus) {
                oForm.submit();
            } else {
                alert("Du måste markera minst en ruta"); //gvarResourcetext()
            }
        } else {
            if (oForm.hidEntityID.checked) {
                oForm.submit();
            } else {
                alert("Du måste markera minst en ruta"); //gVarResourceText()
            }
        }
    }
}


/**
* Written by henrik.berggren@addsystems.com 2001-08-20
* This function takes 3 strings, the formname, the selectbox which you
* want to move options from and to.
* The fuction then moves option texts and values from one selectbox to another.
*/
function moveOption(strForm, strFrom, strTo) {
    var i = 0;
    var lx = 0;
    var aLeftoverNames = new Array;
    var aLeftoverValues = new Array;
    var objFrom = document[strForm][strFrom];
    var objTo = document[strForm][strTo];

    for (i = 0; objFrom.length != i; i++) {
        if (objFrom[i].selected && objFrom[i].text.indexOf('---') == -1) {

            //create new node in other box
            objTo.length++;
            var currentIndex = objTo.length - 1;
            objTo[currentIndex].text = objFrom[i].text;
            objTo[currentIndex].value = objFrom[i].value;

            objFrom[i].text = '';
        }
    }

    //store leftovers in array 
    for (lx = 0; lx != objFrom.length; lx++) {
        if (objFrom[lx].text != '') {
            aLeftoverNames[aLeftoverNames.length] = objFrom[lx].text;
            aLeftoverValues[aLeftoverValues.length] = objFrom[lx].value;
        }
    }

    if (aLeftoverNames.length > 0) {
        //reset length
        objFrom.length = 1;
        //fill with leftovers
        for (lx = 0; lx != aLeftoverNames.length; lx++) {
            objFrom[lx].text = aLeftoverNames[lx];
            objFrom[lx].value = aLeftoverValues[lx];
            objFrom.length++;
        }
        //one length too much, no clue??
        objFrom.length--;
    } else {
        objFrom.length = 0;
    }
}


/**
* Written by henrik.berggren@addsystems.com 2001-08-20
*/
function checkAndSend(strForm, strSelect, strUnSelected) {
    var i;
    var objSelect;

    objSelect = document[strForm][strSelect];
    if (objSelect) {
        for (i = 0; i < objSelect.length; i++) {
            if (objSelect[i].value.indexOf('---') == -1) {
                objSelect[i].selected = true;
            }
        }
    }

    objSelect = document[strForm][strUnSelected];
    if (objSelect) {
        for (i = 0; i < objSelect.length; i++) {
            if (objSelect[i].value.indexOf('---') == -1) {
                objSelect[i].selected = false;
            }
        }
    }
    PostFormSubmit(document[strForm]);
}

/**
* Resizes embedded media
*/
function resizeEmbedded() {
    //To make the browser finish loading - the load bar gets stuck when unitialized iframes are used.
    var iframes = document.getElementsByTagName("iframe");
    if (iframes.length > 0) {
        try {
            if (iframes[0].style.display != "none") {
                iframes[0].focus();
            }
        } catch (e) { }
    }
}

/**
* Loads embedded media
*/
function loadText(strValue, lx, lngDomainIx) {
    var doc = window['dedit' + lx].document;
    doc.open();
    doc.write('<html><link rel=stylesheet href=../../../../Domains/Domain' + lngDomainIx + '/StyleAttributes.css><link rel=stylesheet href=../../../../Domains/Domain' + lngDomainIx + '/StyleCommon.css><body class=DefaultAttributeSetting style=background-color:white;>' + strValue + '</body></html>');
    doc.close();
}

/**
* Loads embedded media
*/
function loadExcelObject(strValue, lx) {
    var objxls = document['xls' + lx];
    if (objxls) {
        objxls.HTMLData = strValue;
    }

}

/**
* Pops a confirmation box when a link is about to be deleted
*/
function confirmDeleteLink(strForm, lngParentID, lngEntityID, lngType, strMessage) {
    if (confirm(strMessage)) {
        var strAction;
        if (lngType == 0) {
            strAction = 'LinkExecute.asp?action=delete&EntityDelID=' + lngEntityID + '&ParentDelID=' + lngParentID;
        } else {
            strAction = 'ConnectionsExecute.asp?action=delete&EntityDelID=' + lngEntityID + '&ParentDelID=' + lngParentID;
        }
        try {
            window.location.href = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);
        } catch (e) { }
    }
}

/**
* Opens the tree view in a new window
*/
function popUpTree(lngEntityID, strAction, intWidth, intHeight) {
    if (lngEntityID || lngEntityID == 0) {
        intWidth = intWidth ? intWidth : 570;
        intHeight = intHeight ? intHeight : 550;
        if (strAction.indexOf('WindowType') == -1) {
            strAction = '../TreeView/TreeView.asp?WindowType=subwindow&EntityID=' + lngEntityID + strAction;
        } else {
            strAction = '../TreeView/TreeView.asp?EntityID=' + lngEntityID + strAction;
        }
        strAction = addBrowserIDsToURL(strAction, gstrURLBrowserIDs);

        var popUpWin = window.open(strAction, 'Tree', 'status=no,resizable=yes,width=' + intWidth + ',height=' + intHeight + ',toolbar=no,location=no,menubar=no');
        popUpWin.opener = self;
        popUpWin.name = self.name;
        gConfirmedUnload = false;
    }
}

function toggleObjects(selectbox) {
    var isChecked = event.srcElement.checked;
    isChecked ? selectAllObjects(selectbox) : deselectAllObjects(selectbox);
}

function toggleObjectsButton(strInputName) {
    var inputs = document.getElementsByName(strInputName);
    var checked = "";

    for (var i = 0; i < inputs.length; i++) {
        if (!inputs[i].checked) {
            checked = "checked";
        }
    }

    for (var i = 0; i < inputs.length; i++) {
        inputs[i].checked = checked;
    }
}

function checkboxStatus(checkbox) {
    var allSelected = true;
    selectbox = event.srcElement;

    for (var i = 0; i < selectbox.options.length; i++) {
        if (!selectbox.options[i].selected) allSelected = false;
    }
    checkbox.checked = allSelected;
}

function selectAllObjects(selectbox) {
    for (var i = 0; i < selectbox.options.length; i++) {
        selectbox.options[i].selected = true;
    }
}

function deselectAllObjects(selectbox) {
    for (var i = 0; i < selectbox.options.length; i++) {
        selectbox.options[i].selected = false;
    }
}

function clearAllCheckboxes(strForm, strPartialCheckboxName) {
    var objFormElements = strForm.elements;
    for (i = 0; i < objFormElements.length; i++) {
        if (objFormElements[i].type == "checkbox") {
            // alert(strPartialCheckboxName);
            if (strPartialCheckboxName) {
                // alert(objFormElements[i].name.indexOf(strPartialCheckboxName));
                if (objFormElements[i].name.indexOf(strPartialCheckboxName) != -1) {
                    objFormElements[i].checked = false;
                }
            } else {
                objFormElements[i].checked = false;
            }
        }
    }
}

function selectAllCheckboxes(strForm, strPartialCheckboxName) {
    var objFormElements = strForm.elements;
    for (i = 0; i < objFormElements.length; i++) {
        if (objFormElements[i].type == "checkbox") {
            // alert(strPartialCheckboxName);
            if (strPartialCheckboxName) {
                // alert(objFormElements[i].name.indexOf(strPartialCheckboxName));
                if (objFormElements[i].name.indexOf(strPartialCheckboxName) != -1) {
                    objFormElements[i].checked = true;
                }
            } else {
                objFormElements[i].checked = true;
            }
        }
    }
}




/*
* Function for checking if a user has added all forcedconnections for an entity
*/
function checkIfLinksIsOk(objForm, lngParentID, objButton) {
    var lngCnt;
    var bolFound = false;

    try {
        objForm.action = addBrowserIDsToURL('LinkExecute.asp?action=SaveToDB&ParentID=' + lngParentID, gstrURLBrowserIDs);
    } catch (e) { }
}
/*
* Function for checking if a user has added all forcedconnections for an entity
*/
function checkIfForcedIsOk(objForm, lngParentID, strAlert, objButton) {
    var lngCnt;
    var bolFound = false;
    var selForced = document.getElementById('selForced');



    if (selForced) {
        for (lngCnt = 0; selForced.options.length != lngCnt; lngCnt++) {
            if (selForced.options[lngCnt].className != "done" && selForced.options[lngCnt].value != '') {
                bolFound = true;
            }
        }
        if (bolFound) {
            alert(strAlert);
        } else {
            objButton.disabled = true;
            try {
                objForm.action = addBrowserIDsToURL('ConnectionsExecute.asp?action=SaveToDB&ParentID=' + lngParentID, gstrURLBrowserIDs);
                PostFormSubmit(objForm, true)
            } catch (e) { }

        }
    } else {
        objButton.disabled = true;

        try {
            objForm.action = addBrowserIDsToURL('ConnectionsExecute.asp?action=SaveToDB&ParentID=' + lngParentID, gstrURLBrowserIDs);
            PostFormSubmit(objForm, true)
        } catch (e) { }

    }
}

function checkField(strForm, strField, lngMinLength, strMsg, strMsg2, lngMinChar, lngMinNum, strUsrBox) {
    var fldCheck = jQuery('input[name="' + strField + '"]');
    
    //alert(fldCheck.attr('value'));
    var lngFieldLength = fldCheck.attr('value').length;
    var strValue = fldCheck.attr('value');
    if (fldCheck.get(0).changed) {
        if (!cntCharsAndNums(strValue, lngMinChar, lngMinNum)) {
            alert(strMsg2);
            fldCheck.focus();
        } else if (lngFieldLength < lngMinLength) {
            alert(strMsg);
            fldCheck.focus();
        }
    }
}

function cntCharsAndNums(strString, lngMinChar, lngMinNum) {
    var lngCntChar = 0;
    var lngCntNum = 0;

    for (var lngCnt = 0; lngCnt < strString.length; lngCnt++) {
        if (parseInt(strString.substr(lngCnt, lngCnt + 1))) {
            lngCntChar++;
        } else {
            if (parseInt(strString.substr(lngCnt, lngCnt + 1)) == 0) {
                lngCntChar++;
            } else {
                lngCntNum++;
            }
        }
    }

    if (lngCntNum < lngMinNum || lngCntChar < lngMinChar) {
        return false;
    } else {
        return true;
    }
}

function CheckPassword(frm) {

    var pwd1 = jQuery('#psw1');
    var pwd2 = jQuery('#psw2');

    alert(pwd1.length);
    if (pwd1.length == 1) {

        if (pwd1.attr('value').length == 0) {
            alert("Det är inte tillåtet att inte ha ett lösenord");
            pwd1.focus();
            return false;
        }    
    }

    // comparing the two controls which have (should have!) the same password
    if (pwd1.attr('value') != pwd2.attr('value')) {
        alert(gstrErrorPassword);
        pwd1.focus();
        return false;
    } // if    
    
    return true;
}

function addQueryString(strForm, objButton) {
    var strAction = document[strForm].action;
    if (strAction.indexOf('?') == -1) {
        strAction += '?' + objButton.name + '=' + objButton.value;
    } else {
        strAction += '&' + objButton.name + '=' + objButton.value;
    }
    document[strForm].action = strAction;
}

function addQueryStringParameter(strForm, strName, strValue) {
    var strAction = document[strForm].action;
    if (strAction.indexOf('?') == -1) {
        strAction += '?' + strName + '=' + strValue;
    } else {
        strAction += '&' + strName + '=' + strValue;
    }
    document[strForm].action = strAction;
}

function systemLogOut() {
    if (confirm(gstrLogOut)) {
        try {
            top.window.location.href = '../User/UserUpdate.asp?action=Logout';
        } catch (e) { }

    }
}

function goToConnections(lngStatus, objForm, lngEntityID, lngTemplateID) {
    var bolLoadWin = false;
    switch (lngStatus) {
        case 0:
            objForm.action = '../LinksAndRights/ConnectionsStatus.asp?Action=SAVETODB&EntityID=' + lngEntityID;
            bolLoadWin = true;
            break;
        case 1:
            objForm.action = '../LinksAndRights/ConnectionsStatus.asp?Action=SAVETODB&EntityID=' + lngEntityID;
            bolLoadWin = true;
            break;
        case 2:
            objForm.action = '../LinksAndRights/ConnectionsView.asp?EntityID=' + lngEntityID + '&TemplateID=' + lngTemplateID;
            break;
        default:
            objForm.action = '../LinksAndRights/ConnectionsView.asp?EntityID=' + lngEntityID + '&TemplateID=' + lngTemplateID;
            break;
    }

    PostFormSubmit(objForm, bolLoadWin);
}

function trackChanges(objA) {
    var style;
    var valChanges = document.getElementById('valChange');

    objA.show = !objA.show;
    if (valChanges) {
        if (valChanges.length) {
            for (var lngCnt = 0; lngCnt != valChanges.length; lngCnt++) {
                style = valChanges[lngCnt].style;
                if (objA.show) {
                    style.color = 'red';
                    style.fontWeight = 'bold';
                    style.border = '1px solid red';
                } else {
                    style.color = '';
                    style.fontWeight = '';
                    style.border = '';
                }
            }
        } else {
            style = valChanges.style;
            if (objA.show) {
                style.color = 'red';
                style.fontWeight = 'bold';
                style.border = '1px solid red';
            } else {
                style.color = '';
                style.fontWeight = '';
                style.border = '';
            }
        }
    }
}

function buildAttributeSelect(objBox, lngEntityID) {
    var strTmp;
    var objCallBack;


    objCallBack = objRSFacade.RS_GetAttributesByEntityID(lngEntityID);
    strTmp = objCallBack.return_value;
    convertStringToSelectBox(strTmp, objBox)
}

function buildRelativesSelect(objEntityBox, objBoxToFill, objFilterBox) {
    var strTmp;
    var objCallBack;
    var lngFilterID;
    var lngEntityID;

    if (!objRSFacade) {
        CreateObject();
    }

    lngEntityID = objEntityBox.options[objEntityBox.selectedIndex].value;
    lngFilterID = objFilterBox.options[objFilterBox.selectedIndex].value;

    objCallBack = objRSFacade.RS_GetEntityRelatives(lngEntityID, lngFilterID);
    strTmp = objCallBack.return_value;
    convertStringToSelectBox(strTmp, objBoxToFill);
}

function convertStringToSelectBox(strOptions, objBox) {
    var arrStr;
    var lngCnt;
    var arrTmp;
    var strTmp2;

    if (strOptions) {
        arrStr = strOptions.split('@@');
        objBox.length = 0;

        for (lngCnt = 0; lngCnt != arrStr.length; lngCnt++) {
            strTmp2 = arrStr[lngCnt].toString();
            arrTmp = strTmp2.split(',');

            if (strTmp2 != '' && arrTmp[1] != '') {
                objBox.length++;
                objBox[objBox.length - 1].value = arrTmp[0];
                objBox[objBox.length - 1].text = arrTmp[1];
            }
        }
    } else {
        objBox.length = 0;
        objBox.disable = true;
        objBox[objBox.length - 1].value = 0;
        objBox[objBox.length - 1].text = 'inget att visa';
    }
}

function initSelect(lngTemplateID, lngAttrID) {
    if (attrBoxes) {
        loadDynamicData('?MODE=ViewFilter&AttrID=' + lngAttrID + '&TemplateID=' + lngTemplateID);
        attrBoxes.style.display = 'block';

    }

}

function hideSelect() {
    if (attrBoxes) {
        attrBoxes.style.display = 'none';
        if (document.getElementById('frmFilter').selAttr) {
            document.getElementById('frmFilter').selAttr.length = 0;
        }
        if (document.getElementById('frmFilter').selAttr2) {
            document.getElementById('frmFilter').selAttr2.length = 0;
        }
    }
}

function checkForChange(objBox) {
    var startPosTd = document.getElementById("startPos");

    if (startPosTd) {
        var selectedIX;

        selectedIX = objBox.selectedIndex;

        if (objBox[selectedIX].value == 0) {
            startPosTd.style.display = 'none';
        } else {
            startPosTd.style.display = 'inline';
        }
    }
}

function toggleEdit(objTag, strTagName) {
    var child;

    if (objTag) {
        objTag.show = !objTag.show;
        var strFrom, strTo;
        if (objTag.show) {
            strFrom = "plus";
            strTo = "minus";
        } else {
            strFrom = "minus";
            strTo = "plus";
        }

        if (objTag.childNodes) {
            child = objTag.childNodes[0];
            if (child) {
                if (child.src) {
                    child.src = child.src.replace(strFrom, strTo);
                }
            }
        }
    }

    var elms = document.getElementsByName(strTagName);

    if (elms) {
        for (var lngCnt = 0; lngCnt < elms.length; lngCnt++) {
            elms[lngCnt].style.display = objTag.show ? "block" : "none";
        }
    }
}

function initImageSize() {
    var imageRef;

    if (document.images) {
        if (document.frmEditEntity) {
            if (document.images.length) {
                for (var lx = 0; lx != document.images.length; lx++) {
                    imageRef = document.images[lx];
                    if (imageRef.widthName && imageRef.heightName) {
                        document.frmEditEntity[imageRef.widthName].value = imageRef.width;
                        document.frmEditEntity[imageRef.heightName].value = imageRef.height;
                    }
                }
            }
        }
    }
}

/* 
* Changes the location of the treeframe. If it is hidden, then it's shown.
*/
function navigateTreeFrame(lngEntityId) {
    var entityId = lngEntityId;
    if (window.top.frames[1]) {
        window.top.frames[0].location = '../TreeView/ExploreTreeView.asp?EntityID=' + entityId + '&action=EntityBrowsing';
    } else {
        var location = window.location + "";
        window.top.location = "../TreeView/ExploreView.asp?location=" + location.replace(/&/ig, "%26") + "&EntityID=" + entityId + "&" + gstrURLBrowserIDs;
    }
}

/* 
* Changes the display of the treeframe. If it is hidden, then it's shown, and vice versa.
*/
function toggleTreeFrame(lngEntityId) {
    var bolLoaded = false;
    var entityId = lngEntityId;
    if (window.top.frames[1]) {
        try {
            for (var i = 0; i < window.top.frames.length; i++) {
                if (window.top.frames[i].document.getElementById('treebody')) {
                    bolLoaded = true;
                    break;
                }
            }
        } catch(e) {}
        if (bolLoaded) {
            window.top.location = window.top.frames[1].location;
        } else {
            var location = window.location + "";
            window.top.location = "../TreeView/ExploreView.asp?location=" + encodeURIComponent(location) + "&EntityID=" + entityId + "&" + gstrURLBrowserIDs;
        }
    } else {
        var location = window.location + "";
        window.top.location = "../TreeView/ExploreView.asp?location=" + encodeURIComponent(location) + "&EntityID=" + entityId + "&" + gstrURLBrowserIDs;
    }
}

function toolbarLink(strHREF, bolShowProgress) {
    var strCallbackFormat = '';
    if (gbolCommandsExecuting == false) {
        gbolCommandsExecuting = true;
        if (!bolSubmitted) {
            bolSubmitted = true;
            if (bolShowProgress) {
                if (bolShowProgress == true) {
                    //openLoader();
                }
            }
            try {
                if (gobjContainerIframe) {
                    if (gobjContainerIframe.getAttribute('callBackFormat')) {
                        strCallbackFormat = '&callBackFormat=' + gobjContainerIframe.getAttribute('callBackFormat');
                    }
                } else {
                    if (gobjContainerWindow) {
                        strCallBackFormat = '&callBackFormat=XML';
                    }
                }

                window.location.href = addBrowserIDsToURL(strHREF, gstrURLBrowserIDs) + strCallbackFormat;
            } catch (e) {
                bolSubmitted = false;
            }

        }
    }
}


function buildFullName() {
    var formRef = document.getElementById('frmEditEntity');
    var strFullName = '';

    if (document.getElementById('objectName')) {
        var objectName = document.getElementById('objectName');
        var objectNameHidden = document.getElementById('objectNameHidden');
        var lastName = document.getElementById('lastName');
        var middleName = document.getElementById('middleName');
        var firstName = document.getElementById('firstName');

        if (lastName) {
            if (lastName.value != '') {
                strFullName += lastName.value;
            }
        }

        if (firstName) {
            if (firstName.value != '') {
                strFullName = strFullName + ' ' + firstName.value;
            }
        }

        if (middleName) {
            if (middleName.value != '') {
                strFullName = strFullName + ', ' + middleName.value;
            }
        }




        if (strFullName != '') {
            if (objectNameHidden) {
                objectName.innerHTML = strFullName;
                objectNameHidden.value = strFullName;
            } else {
                objectName.value = strFullName;
            }
        }

    }

}

function attributeIsOK(objBox) {
    if (objBox) {
        if (objBox.value != '') {
            return true;
        }
    }
}

function checkTimeFormat(objControl) {
    var varDate;
    var strValue = objControl.value.replace(' ', '');

    if (strValue && strValue != '') {
        if (strValue.length == 5) {
            varDate = strValue.split(':');
            if (varDate.length == 2) {
                if (!isNaN(varDate[0]) && !isNaN(varDate[1])) {
                    return true;
                }
            }
        }
    }
    alert('Ange tid i följande format HH:MM');
}

function popUpWordList(lngEntityID) {
    if (lngEntityID) {
        window.open('../Dictionary/SearchAttribute.asp?Origin=Entity&EntityID=' + lngEntityID, '', 'status=no,scrollbars=yes,resizable=yes,width=670,height=450,toolbar=no,location=no,menubar=yes');
    } else {
        window.open('../Dictionary/SearchAttribute.asp?Origin=Entity', '', 'status=no,scrollbars=yes,resizable=yes,width=670,height=450,toolbar=no,location=no,menubar=yes');
    }
    gConfirmedUnload = false;
}

function validateForm(objForm, Group) {
    var lngGroup = 0;
    if (!Group) {
        lngGroup = 0;
    } else {
        lngGroup = parseInt(Group);
    }


    if (objForm && objForm.elements && (window.location.href.toUpperCase().indexOf('/ATTRIBUTEVIEW.ASP') == -1)) {
        var objElements = objForm.elements;
        var strMessage;
        var arrData = new Array();

        if (validateRequiredFields(objElements, arrData, lngGroup)) {
            strMessage = collectData(arrData)
            alert(strMessage);
            return false;
        } else {
            return true;
        }
    } else {
        return true;
    }
}

function collectData(arrData) {
    var lngCnt;
    var strMessage = gstrFilloutFields + '\n';
    for (lngCnt = 0; lngCnt != arrData.length; lngCnt++) {
        strMessage += '- ' + arrData[lngCnt];
    }
    return strMessage;
}

function validateRequiredFields(objElements, arrData, Group) {
    var lngCnt;
    var bolFound = false;
    var strCompare;
    var strTypeErrMsg;
    var lngGroup = 0;
    var strAddress = window.location.href.toLowerCase();
    var bolIsTranslation = false;

    if (!Group) {
        lngGroup = 0;
    } else {
        lngGroup = parseInt(Group);
    }

    bolIsTranslation = (strAddress.indexOf('translateentity.asp') > -1);
    
    
    for (lngCnt = 0; lngCnt != objElements.length; lngCnt++) {
        var jElement = jQuery(objElements[lngCnt]);
        if ((jElement.attr('fieldType') == 1 || jElement.attr('fieldType') == 3) && (lngGroup != 100000000) && !bolIsTranslation && (lngGroup == 0 || jElement.attr('lngGroup') == lngGroup || (jElement.attr('lngGroup') == 0 && lngGroup != 0))) {
            //alert(lngGroup);
            //alert(objElements[lngCnt].lngGroup);

            switch (jElement.attr('type')) {
                case 'password':
                    strCompare = '';
                    if (jElement.attr('value') == strCompare) {
                        bolFound = true;
                        arrData[arrData.length] = jElement.attr('attrName') + '\n';
                    }
                    break;
                case 'text':
                    if (objElements[lngCnt].name.indexOf('dat') != -1) {
                        //If it is a date, it can be parsed with parseInt
                        if (isNaN(parseInt(jElement.attr('value')))) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    } else if (jElement.attr('name').indexOf('lngEntityPtr') != -1 ||
							 jElement.attr('name').indexOf('lngUpdatedBy') != -1 ||
							 jElement.attr('name').indexOf('lngCreatedBy') != -1) {
                        strCompare = '0';
                        if (jElement.attr('value') == strCompare) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    } else if (jElement.attr('name').indexOf('lngValue') != -1) {
                        strCompare = '0';

                        if (parseInt(jElement.attr('value')) == parseInt(strCompare)) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    } else if (jElement.attr('name').indexOf('fltValue') != -1) {
                        strCompare = '0';

                        if (parseFloat(jElement.attr('value')) == parseFloat(strCompare)) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    } else {
                        strCompare = '';
                        if (jElement.attr('value') == strCompare) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    }
                    break;
                case 'textarea':
                    if (jElement.attr('value') == '') {
                        bolFound = true;
                        arrData[arrData.length] = jElement.attr('attrName') + '\n';
                    }
                    break;
                case 'hidden':
                    if (jElement.attr('name').indexOf('BLOBCheck') != -1) {
                        if (jElement.attr('value').length < 3) {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    } else {
                        if (jElement.attr('name').indexOf('lngEntityPtr') != -1 || jElement.attr('name').indexOf('lngUpdatedBy') != -1 || jElement.attr('name').indexOf('lngCreatedBy') != -1) {
                            strCompare = '0';
                        } else {
                            strCompare = '';
                        }
                        if (jElement.attr('value') == strCompare || jElement.attr('value') == '<p>&nbsp;</P>') {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    }
                    break;
                case 'radio':
                    if (!validateRadio(objElements, jElement.attr('name'))) {
                        bolFound = true;
                        arrData[arrData.length] = jElement.attr('attrName') + '\n';
                    }
                    break;
                case 'select-one':
                    if (objElements[lngCnt].options.length > 0) {
                        if (objElements[lngCnt].options[objElements[lngCnt].selectedIndex].value == '0') {
                            bolFound = true;
                            arrData[arrData.length] = jElement.attr('attrName') + '\n';
                        }
                    }
                    break;
                case 'file':
                    if (jElement.attr('value') == '') {
                        bolFound = true;
                        arrData[arrData.length] = jElement.attr('attrName') + '\n';
                    }
                    break;
                case 'button':
                    bolFound = true;
                    arrData[arrData.length] = jElement.attr('value') + '\n';
                    break;

            }

        }

        //Check for right input (float, int)
        switch (jElement.attr('checkFor')) {
            case 'int':
                strTypeErrMsg = checkIfInt(objElements[lngCnt]);
                if (strTypeErrMsg) {
                    bolFound = true;
                    arrData[arrData.length] = jElement.attr('attrName') + ' (' + strTypeErrMsg + ')' + '\n';
                }
                break;

            case 'float':
                strTypeErrMsg = checkIfFloat(objElements[lngCnt]);
                if (strTypeErrMsg) {
                    bolFound = true;
                    arrData[arrData.length] = jElement.attr('attrName') + ' (' + strTypeErrMsg + ')' + '\n';
                }
                break;
        }


    }
    return bolFound;
}

function updateRightKey(strUpdateField, strNewValueField) {
    var arrUpdateKey = strUpdateField.replace(/__/g, '_-').split('_')
    var arrNewKey = strNewValueField.replace(/__/g, '_-').split('_')
    arrNewKey[6] = arrUpdateKey[6]
    arrNewKey[5] = document.getElementById(strNewValueField).value;
    document.getElementById(strUpdateField).name = arrNewKey.join('_').replace(/-/g, '_');
}

function validateRadio(objElements, strGroupName) {
    var objGroups = new Object();
    var lngCnt;
    var objElement;

    for (lngCnt = 0; lngCnt < objElements.length; lngCnt++) {
        var jElement = jQuery(objElements[lngCnt]);
           
        if (jElement.attr('type') == 'radio' && jElement.attr('name') == strGroupName) {
            objElement = objElements[lngCnt];
            if (!objGroups[jElement.attr('name')]) {
                objGroups[objElement.name] = false;
            }
            if (objElement.checked) {
                objGroups[jElement.attr('name')] = true;
            }
        }
    }

    for (lngCnt in objGroups) {
        if (!objGroups[lngCnt]) {
            return false;
        }
    }

    return true;
}

function cbMultiplePtr(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var strIDlist = '';
    var lngEx = 0;
    var strNameList = '';
    var strBoxName = 'multiPtr' + lngEntityID + '_' + lngAttrID;
    var strBox2Name = 'multiSpan' + lngEntityID + '_' + lngAttrID;

    strBoxName = strBoxName.replace('-', '_')
    strBox2Name = strBox2Name.replace('-', '_')

    var objBox = document.getElementById(strBoxName);
    var objBox2 = document.getElementById(strBox2Name);

    if (!gObjTree) {
        gObjTree = new Array(0);
    }

    gObjTree[lngEntityID] = new Array(0);
    gObjTree[lngEntityID][lngAttrID] = new Array(0);

    for (var lngCnt in objEntities) {
        if (lngEx != 0) {
            strIDlist += ',';
            strNameList += '<br/>';
        }
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name;
        gObjTree[lngEntityID][lngAttrID][gObjTree[lngEntityID][lngAttrID].length] = lngCnt.replace('-', '_');
        lngEx++;
    }

    objBox2.innerHTML = strNameList;
    objBox.value = strIDlist;

    if (lngEx == 1) {
        if (objEntities[lngCnt].bitHasMark && window.gbitHasMarks) {
            if (objEntities[lngCnt].bitHasMark == 1 && gbitHasMarks == 1) {
                syncEntity(lngEntityID, lngCnt);
            }
        }
    }

}


function cbMultipleTemplateSelection(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var strIDlist = '';
    var lngEx = 0;
    var strNameList = '';
    var strBoxName = 'multiTemplateBox' + lngEntityID + '_' + lngAttrID;
    var strBox2Name = 'multiTemplateSpan' + lngEntityID + '_' + lngAttrID;


    strBoxName = strBoxName.replace('-', '_')
    strBox2Name = strBox2Name.replace('-', '_')

    var objBox = document.getElementById(strBoxName);
    var objBox2 = document.getElementById(strBox2Name);

    if (!gObjTree) {
        gObjTree = new Array(0);
    }

    gObjTree[lngEntityID] = new Array(0);
    gObjTree[lngEntityID][lngAttrID] = new Array(0);

    for (var lngCnt in objEntities) {
        if (lngEx != 0) {
            strIDlist += ',';
            strNameList += '<br/>';
        }
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name;
        gObjTree[lngEntityID][lngAttrID][gObjTree[lngEntityID][lngAttrID].length] = lngCnt.replace('-', '_');
        lngEx++;
    }

    objBox2.innerHTML = strNameList;
    objBox.value = strIDlist;

}


function cbParents(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var strIDlist = '';
    var lngEx = 0;
    var strNameList = '';
    var strBoxName = 'parentsBox' + lngEntityID + '_' + lngAttrID;
    var strBox2Name = 'parentsSpan' + lngEntityID + '_' + lngAttrID;

    strBoxName = strBoxName.replace('-', '_')
    strBox2Name = strBox2Name.replace('-', '_')

    var objBox = document.getElementById(strBoxName);
    var objBox2 = document.getElementById(strBox2Name);

    if (!gObjTree) {
        gObjTree = new Array(0);
    }

    gObjTree[lngEntityID] = new Array(0);
    gObjTree[lngEntityID][lngAttrID] = new Array(0);

    for (var lngCnt in objEntities) {
        if (lngEx != 0) {
            strIDlist += ',';
            strNameList += '<br/>';
        }
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name;
        gObjTree[lngEntityID][lngAttrID][gObjTree[lngEntityID][lngAttrID].length] = lngCnt.replace('-', '_');
        lngEx++;
    }
    objBox2.innerHTML = strNameList;
    objBox.value = strIDlist;

    if (lngEx == 1) {
        if (objEntities[lngCnt].bitHasMark && window.gbitHasMarks) {
            if (objEntities[lngCnt].bitHasMark == 1 && gbitHasMarks == 1) {
                syncEntity(lngEntityID, lngCnt);
            }
        }
    }

}

function cbChildren(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var strIDlist = '';
    var lngEx = 0;
    var strNameList = '';
    var strBoxName = 'childrenBox' + lngEntityID + '_' + lngAttrID;
    var strBox2Name = 'childrenSpan' + lngEntityID + '_' + lngAttrID;

    strBoxName = strBoxName.replace('-', '_')
    strBox2Name = strBox2Name.replace('-', '_')

    var objBox = document.getElementById(strBoxName);
    var objBox2 = document.getElementById(strBox2Name);

    if (!gObjTree) {
        gObjTree = new Array(0);
    }

    gObjTree[lngEntityID] = new Array(0);
    gObjTree[lngEntityID][lngAttrID] = new Array(0);

    for (var lngCnt in objEntities) {
        if (lngEx != 0) {
            strIDlist += ',';
            strNameList += '<br/>';
        }
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name;
        gObjTree[lngEntityID][lngAttrID][gObjTree[lngEntityID][lngAttrID].length] = lngCnt.replace('-', '_');
        lngEx++;
    }
    objBox2.innerHTML = strNameList;
    objBox.value = strIDlist;

    if (lngEx == 1) {
        if (objEntities[lngCnt].bitHasMark && window.gbitHasMarks) {
            if (objEntities[lngCnt].bitHasMark == 1 && gbitHasMarks == 1) {
                syncEntity(lngEntityID, lngCnt);
            }
        }
    }

}


function cbSetDistributeSource(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var bolFirst = true;
    var strIDlist = '';
    var strNameList = '';

    for (var lngCnt in objEntities) {
        if (!bolFirst) {
            strIDlist += ',';
        }
        bolFirst = false;
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name + '<br />';
    }

    document.getElementById('DistributeSourceIDs').value = strIDlist;
    document.getElementById('DistributeSourceNames').innerHTML = strNameList;

}


function cbSetDistributeTarget(objEntities, lngEntityID, lngAttrID) {
    var lngCnt = 0;
    var bolFirst = true;
    var strIDlist = '';
    var strNameList = '';

    for (var lngCnt in objEntities) {
        if (!bolFirst) {
            strIDlist += ',';
        }
        bolFirst = false;
        strIDlist += lngCnt;
        strNameList += objEntities[lngCnt].name + '<br />';
    }

    document.getElementById('DistributeTargetIDs').value = strIDlist;
    document.getElementById('DistributeTargetNames').innerHTML = strNameList;

}

function prepareTime(timeBox, dateBox) {
    if (dateBox && timeBox) {
        if (dateBox.value != '') {
            dateBox.value += ' ' + timeBox.value;
        }
    }
}

function prepareTimeExt(timeBox, dateBox) {
    var lngPos;
    var timTime;

    if (dateBox && timeBox) {
        if ((dateBox.value != '') && (!isNaN(parseInt(dateBox.value)))) {
            lngPos = dateBox.value.indexOf(':');
            if (lngPos == -1) {
                dateBox.value += ' ' + timeBox.value;
            } else {
                timTime = dateBox.value.substr(lngPos - 2, 5)
                dateBox.value = dateBox.value.replace(timTime, timeBox.value);
            }
        }
    }
}


function rebuildNRBox(objBox, lngNR) {
    if (lngNR == 0) {
        objBox.disabled = true;
        objBox.style.backgroundColor = '#CCCCCC';
    } else {
        objBox.disabled = false;
        objBox.style.backgroundColor = '#FFFFFF';
    }
}

function padNR(lngNR) {
    var strNR = lngNR.toString()

    if (strNR.length == 1) {
        strNR = '0' + strNR
    }
    return strNR;
}

function toggleAdvanced(objTag) {
    if (objTag.advMode == 'true') {
        document.getElementById('advanced').style.display = 'none';
        objTag.value = 'Avancerat >>';
        objTag.advMode = 'false';
    } else {
        document.getElementById('advanced').style.display = 'block';
        objTag.value = 'Avancerat <<';
        objTag.advMode = 'true';
    }
}

function toggleById(strID) {
    if (document.getElementById(strID)) {
        if (document.getElementById(strID).style.display != 'none') {
            document.getElementById(strID).style.display = 'none';
            if (document.getElementById('Toggle_' + strID)) {
                document.getElementById('Toggle_' + strID).src = '../../../../images/icons/maximizeobject.gif';
            }
        } else {
            document.getElementById(strID).style.display = 'block';
            if (document.getElementById('Toggle_' + strID)) {
                document.getElementById('Toggle_' + strID).src = '../../../../images/icons/minimizeobject.gif';
            }
        }
    } else {

    }
}

function toggleRecur(objTag) {
    if (objTag) {
        if (objTag.advMode == 'true') {
            document.getElementById('advanced1').style.display = 'none';
            document.getElementById('advanced2').style.display = 'none';
            document.getElementById('advanced3').style.display = 'none';
            document.getElementById('RecurranceType0').checked = true;
            document.getElementById('lngNR').disabled = true;
            document.getElementById('lngNR').style.backgroundColor = '#CCCCCC';

            objTag.advMode = 'false';
        } else {
            document.getElementById('advanced1').style.display = 'block';
            document.getElementById('advanced2').style.display = 'block';
            document.getElementById('advanced3').style.display = 'block';
            objTag.advMode = 'true';
        }
    } else {
        document.getElementById('advanced1').style.display = 'block';
        document.getElementById('advanced2').style.display = 'block';
        document.getElementById('advanced3').style.display = 'block';
    }
}

function timeChange(lngOption) {
    var form = document.getElementById('frmFilter');

    if (lngOption == 1) {
        form.txtTo.disabled = false;
        form.txtFrom.disabled = false;
        form.txtCount.disabled = true;
        form.selMD.disabled = true;
        form.txtCount.value = '';
        form.txtTo.style.backgroundColor = '#FFFFFF';
        form.txtFrom.style.backgroundColor = '#FFFFFF';
        form.txtCount.style.backgroundColor = '#CCCCCC';
    } else if (lngOption == 2) {
        form.txtTo.disabled = true;
        form.txtFrom.disabled = true;
        form.txtCount.disabled = false;
        form.selMD.disabled = false;
        form.txtTo.value = '';
        form.txtFrom.value = '';
        form.txtTo.style.backgroundColor = '#CCCCCC';
        form.txtFrom.style.backgroundColor = '#CCCCCC';
        form.txtCount.style.backgroundColor = '#FFFFFF';
    } else {
        form.txtTo.disabled = true;
        form.txtFrom.disabled = true;
        form.txtCount.disabled = true;
        form.selMD.disabled = true;
        form.txtTo.value = '';
        form.txtFrom.value = '';
        form.txtCount.value = '';
        form.txtTo.style.backgroundColor = '#CCCCCC';
        form.txtFrom.style.backgroundColor = '#CCCCCC';
        form.txtCount.style.backgroundColor = '#CCCCCC';
    }
}

function openLoader() {
    var xPos = 0;
    var yPos = 0;
    gbolAutoClose = false;
    xPos = (screen.width - 400) / 2;
    yPos = (screen.height - 200) / 2;
    return window.open('../DHTMLEditor/Loading.html', '', 'menubar=0,toolbar=0,status=0,scrollbars=0,resizable=0,top=' + yPos + ',left=' + xPos + ',width=250,height=175')
    gConfirmedUnload = false;

}

function openVerification(lngEntityID, lngAttrID, strReturnPagePath, lngShowMode) {
    var xPos = 0;
    var yPos = 0;
    gbolAutoClose = false;
    xPos = (screen.width - 400) / 2;
    yPos = (screen.height - 200) / 2;

    return window.open('../Authenticate/SignVerification.asp?EntityID=' + lngEntityID + '&AttrID=' + lngAttrID + '&ShowMode=' + lngShowMode + '&Redirect=' + strReturnPagePath, '', 'menubar=0,toolbar=0,status=0,scrollbars=0,resizable=0,top=' + yPos + ',left=' + xPos + ',width=330,height=170')
    gConfirmedUnload = false;
}

function toggleAttr(lngAttrID) {
    var ochildNodes = document.getElementById('tb' + lngAttrID).childNodes[0].childNodes;

    for (lngCnt = 0; ochildNodes.length != lngCnt; lngCnt++) {
        if (ochildNodes[lngCnt].name == lngAttrID) {
            if (ochildNodes[lngCnt].style.display == 'none') {
                ochildNodes[lngCnt].style.display = 'block';
            } else {
                ochildNodes[lngCnt].style.display = 'none';
            }
        }
    }
}

function changeClass(objNode, strClass) {
    objNode.className = strClass;
}

function getCookie(name) {

    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";", len);
    if (end == -1) end = document.cookie.length;

    return unescape(document.cookie.substring(len, end));
}

function setCookie(name, value, expires, path, domain, secure) {

    document.cookie = name + "=" + escape(value).replace('%26', '&').replace('%3D', '=').replace('%3D', '=') +
        ((expires) ? ";expires=" + expires.toGMTString() : "") +
        ((path) ? ";path=" + path : "") +
        ((domain) ? ";domain=" + domain : "") +
        ((secure) ? ";secure" : "");
}

function deleteCookie(name, path, domain) {
    if (getCookie(name)) document.cookie = name + "=" + ((path) ? ";path=" + path : "") + ((domain) ? ";domain=" + domain : "") + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/** 
* Start methods that manipulates views 
*/
function isViewToolActive(lngEntityID) {
    var strCookie = getCookie('AddsystemConfig');
    var bolActive = false;
    if (strCookie != null) {
        var arrData = strCookie.split('&');
        var arrValue;
        var arrKey;
        for (var i = 0; i <= arrData.length - 1; i++) {
            arrValue = arrData[i].split('=');

            if (arrValue[0] == 'ViewTools') {
                arrKey = arrValue[1].split(',');
                for (var j = 0; j <= arrKey.length - 1; j++) {
                    if (arrKey[j].toString() == lngEntityID.toString()) {
                        bolActive = true;
                    }
                }
            }
        }
    }

    return bolActive;
}

function activateViewTool(lngEntityID) {
    var strCookie = getCookie('AddsystemConfig');
    if (strCookie == null) {
        setCookie('AddsystemConfig', 'ViewTools=')
        strCookie = getCookie('AddsystemConfig');
    }
    var arrData = strCookie.split('&');
    var arrValue;
    var arrKey;
    var bolFoundID = false;
    var bolFoundKey = false;
    var bolKeyEmpty = false;
    for (var i = 0; i <= arrData.length - 1; i++) {
        arrValue = arrData[i].split('=');
        if (arrValue[0] == 'ViewTools') {
            bolFoundKey = true;
            bolKeyEmpty = (arrValue[1] == '');
            arrKey = arrValue[1].split(',');

            for (var j = 0; j <= arrKey.length - 1; j++) {
                if (arrKey[j].toString() == lngEntityID.toString()) {
                    bolFoundID = true;
                }
            }
            if (!bolFoundID) {
                if (bolKeyEmpty) {
                    strCookie = strCookie.replace('ViewTools=', 'ViewTools=' + lngEntityID + ',')
                } else {
                    strCookie = strCookie.replace('ViewTools=', 'ViewTools=' + lngEntityID + ',')
                }
            }
        }
    }
    if (!bolFoundKey) {
        if (strCookie == '') {
            strCookie = strCookie + 'ViewTools=' + lngEntityID + ','
        } else {
            strCookie = strCookie + '&ViewTools=' + lngEntityID + ','
        }
    }
    setCookie('AddsystemConfig', strCookie);
}

function deactivateViewTool(lngEntityID) {
    var strCookie = getCookie('AddsystemConfig');
    strCookie = strCookie.replace('=' + lngEntityID + ',', '=')
    strCookie = strCookie.replace(',' + lngEntityID + ',', ',')
    strCookie = strCookie.replace(',,', ',')
    setCookie('AddsystemConfig', strCookie);
}

/**
* Used to change the visibility of the header of views
*/
function toggleViewControl(controlToggle, strName, lngEntityID) {
    toggleEdit(controlToggle, strName);
    if (isViewToolActive(lngEntityID)) {
        deactivateViewTool(lngEntityID);
    } else {
        activateViewTool(lngEntityID);
    }
}
/** End methods that manipulates views */

function loadTextAttribute(objInputFrom, strTarget) {
    var objTarget = document.getElementById(strTarget)
    var objStyle = document.getElementById('secondaryStyle')
    var strCSS = '';
    var arrSetting;

    if (objTarget) {
        if (objTarget.getElementsByTagName('style')[0]) {
            strCSS = objTarget.getElementsByTagName('style')[0].styleSheet.cssText;
            var arrRule = strCSS.split('}');
            arrSetting = arrRule[0].split('{')
            for (i = 0; i != arrRule.length - 1; i++) {
                arrSetting = arrRule[i].split('{')
                document.styleSheets['secondaryStyle'].addRule(arrSetting[0], arrSetting[1]);
            }
        }

        objTarget.innerHTML = objInputFrom.value;
    }
}

/**
* Opens a tree to select connections. Used in ConnectionsView.asp
*/
function openConnectionSelect(form, entityId, lngTemplateId) {
    if (form.value != null && form.value != "") {
        popUpTree(entityId + '', '&IDs=' + form.value + '&action=LinksUp&ClosingTarget=../LinksAndRights/ConnectionsExecute.asp&CreatingTemplate=' + lngTemplateId);
    }
}

/**
* Increases or decreases the zoom of an element
*/
function doZoom(strNodeId, bolZoomIn) {
    var objZoomNode = document.getElementById(strNodeId);
    if (!objZoomNode.style.zoom || objZoomNode.style.zoom == null || objZoomNode.style.zoom == "") {
        objZoomNode.style.zoom = 1;
    }
    if (bolZoomIn) {
        objZoomNode.style.zoom /= 0.8;
    } else {
        objZoomNode.style.zoom *= 0.8;
    }
}

/**
* Toggles the visibility of a row for the ViewAttributeAlll page
*/
function toggleAttributeRow(objInvoker, lngRowNo) {
    var objValueTable = document.getElementById("valuetable" + lngRowNo);

    if (objValueTable.style.display == "none") {
        objValueTable.style.display = "block";
        objInvoker.src = "../../../../images/arrowup.gif"
    } else {
        objValueTable.style.display = "none";
        objInvoker.src = "../../../../images/arrowdown.gif"
    }
}

/**
* Toggles the visibility of the status display for the TranslateEntity page
*/
function toggleTranslateStatus(objInvoker) {
    var objStatusRow = document.getElementById("translateStatusRow");

    if (objStatusRow.style.display == "none") {
        objStatusRow.style.display = "block";
        objInvoker.src = "../../../../images/arrowup.gif"
    } else {
        objStatusRow.style.display = "none";
        objInvoker.src = "../../../../images/arrowdown.gif"
    }
}

/**
* Changes the action of a form before it is sumbitted
*/
function ChangePostAction(objForm, strAction) {
    objForm.action = strAction;
    PostFormSubmit(objForm);
}




/*
* From AlephCommon classes 
*
* Version 1.0.3
*
* Copyright 2002-2004 Erik Beijnoff erik@beijnoff.com
* Copyright notice see http://erik.beijnoff.com/aleph-null/copyright/
*
* Created: 2002-09-09
* Creator: Erik Beijnoff erik@beijnoff.com
*
* Changes: 2002-09-20 : Reshaped the method to not use recursive calls since this exhausted 
*						the memory on Internet Explorer when arrays of +1000 items where used
* 
* An implementation of the quick sort algoritm.
* The method is appended to the Array objects' prototype.
* It rearranges objects within the array based on a key value for the objects in the array.
* For example an object with the variables "key" and "value" 
* can be sorted on "key", or "value" to put the objects in the array in alpabetical order
* according to the "key" or "value" variable.
* The method rearranges objects in the array itself.
*
* Usage: 
* arr.quickSortByKey("key", 0, arr.length-1);
*
*/
Array.prototype.quickSortByKey = Array_quickSortByKey;
function Array_quickSortByKey(key, start, stop) {
    var Left = start > 0 ? start : 0;
    var Right = stop < this.length - 1 ? stop : this.length - 1;
    var top = 1;
    var lStack = new Array();
    var rStack = new Array();
    var i, j, n, k, x, tmp;

    lStack[top] = Left;
    rStack[top] = Right;

    while (top != 0) {
        Left = lStack[top];
        Right = rStack[top];
        top--;
        while (Left < Right) {
            i = Left;
            j = Right;
            n = Left + Right;
            k = Math.floor(n / 2);
            x = this[k][key];

            while (i <= j) {
                while (this[i][key] < x) {
                    i++;
                }
                while (this[j][key] > x) {
                    j--;
                }
                if (i <= j) {

                    //Switch positions
                    tmp = this[j];
                    this[j] = this[i];
                    this[i] = tmp;

                    i++;
                    j--;
                }
            }

            if ((j - Left) < (Right - i)) {
                if (i < Right) {
                    top++;
                    lStack[top] = i;
                    rStack[top] = Right;
                }
                Right = j;
            } else {
                if (Left < j) {
                    top++;
                    lStack[top] = Left;
                    rStack[top] = j;
                }
                Left = i;
            }
        }
    }
}

/*
* From AlephCommon classes 
*
* Version 1.0.3
*
* Copyright 2002-2004 Erik Beijnoff erik@beijnoff.com
* Copyright notice see http://erik.beijnoff.com/aleph-null/copyright/
*
* Created: 2002-09-17
* Creator: Erik Beijnoff erik@beijnoff.com
* 
* This is a convenience method that indexes all parameters on the querystring
* into a hashtable that's appended to the window object. 
*
* Usage:
* createQueryStringIndex();
* window.parameters["parameterName"]; 
*
* Create the index by calling createQueryStringIndex() anywhere on the page, 
* a suggested place would be on the onload event for the body of a document. 
* The parameters can after that be found in a newly created hashtable that's 
* accessed through the window object on the form window.parameters["parameterName"].
* If the parameter doesn't exist, undefined is returned. If the parameter
* doesn't have a value specified, an empty string is returned.
* The parameter is returned as an array, since several parameters with the same
* name can be specified in a query string
*/
function createQueryStringIndex() {
    var params = new Object();
    window.parameters = params;

    var reEquals = /=/ig;
    var reAnd = /&/ig;
    var reQuestionMark = /\?/ig;

    var query = window.location.href.split(reQuestionMark);

    if (query.length > 1) {
        var querySplit = query[1].split(reAnd);
        var length = querySplit.length;
        var split, arr, name;

        for (var i = 0; i < length; i++) {
            split = querySplit[i].split(reEquals);
            name = split[0];

            if (!params[name]) {
                arr = new Array();
                params[name] = arr;
            } else {

                arr = params[name];
            }

            if (split.length < 2) {
                arr[arr.length] = "";
            } else {
                arr[arr.length] = unescape(split[1]);
            }
        }
    }
    return params;
}

function cbEntitySelection(lngID, strName, objEnt, gstrNoSelection, gstrTextField, lngFromEntityID) {
    if (document.getElementById(gstrTextField)) {
        document.getElementById(gstrTextField).value = objEnt.id;
        if (objEnt.id == 0) {
            document.getElementById("span" + gstrTextField).innerHTML = gstrNoSelection;
        } else {
        document.getElementById("span" + gstrTextField).innerHTML = objEnt.strName + "&nbsp;";
        }

    }
}

function cbStateAttributePointers(objEntities, lngEntityID, lngAttrID) {
    var objForm = document.getElementById('frmEditEntity');
    var objTag;

    for (var i in objEntities) {
        if (objEntities[i].attributes) {
            for (var j = 0; j < objEntities[i].attributes.length; j++) {
                if (objEntities[i].attributes[j].checked) {
                    objTag = document.createElement('input');
                    objTag.type = 'hidden';
                    objTag.name = 'AddAttr_' + lngAttrID;
                    objTag.value = i + '_' + objEntities[i].attributes[j].id;
                    objForm.appendChild(objTag);
                    delete objTag;
                }
                //              alert(objEntities[i].name +': ' + objEntities[i].attributes[j].strName + '('+objEntities[i].attributes[j].checked+')');
            }
        }
    }
    PostFormSubmitNoValidation(objForm, false, '../Attributes/EntityUpdate.asp?EntityID=' + lngEntityID + '&Mode=ADDSTATEATTRIBUTE')
}

function cbCopyTemplateAttributes(objEntities, lngToEntityID, lngAttrID) {
    var objForm = document.getElementById('frmEntity');
    var objTag;

    for (var i in objEntities) {
        if (objEntities[i].attributes) {
            for (var j = 0; j < objEntities[i].attributes.length; j++) {
                if (objEntities[i].attributes[j].checked) {
                    objTag = document.createElement('input');
                    objTag.type = 'hidden';
                    objTag.name = 'COPYTEMPATEATTR';
                    objTag.value = i + '_' + objEntities[i].attributes[j].id;
                    objForm.appendChild(objTag);
                    delete objTag;
                }
                //              alert(objEntities[i].name +': ' + objEntities[i].attributes[j].strName + '('+objEntities[i].attributes[j].checked+')');
            }
        }
    }
    PostFormSubmitNoValidation(objForm, false, '../Entity/AttributeUpdate.asp?EntityID=' + lngToEntityID + '&Action=COPYTEMPLATEATTRIBUTES')
}


function cbRightTemplateSelection(lngID, strName, objEnt, gstrNoSelection, gstrTextField, lngFromEntityID) {
    if (window.document.getElementById(gstrTextField)) {
        window.document.getElementById(gstrTextField).value = objEnt.id;
        if (objEnt.id == 0) {
            window.document.getElementById("span" + gstrTextField).innerHTML = gstrNoSelection;
        } else {
            window.document.getElementById("span" + gstrTextField).innerHTML = objEnt.strName + "&nbsp;";
        }
    }
}

function cbRightRelatedSelection(lngID, strName, objEnt, gstrNoSelection, gstrTextField, lngFromEntityID) {
    if (window.document.getElementById(gstrTextField)) {
        window.document.getElementById(gstrTextField).value = objEnt.id;
        if (objEnt.id == 0) {
            window.document.getElementById("span" + gstrTextField).innerHTML = gstrNoSelection;
        } else {
            window.document.getElementById("span" + gstrTextField).innerHTML = objEnt.strName + "&nbsp;";
        }
    }
}

function getBarURL(lngStart, lngEnd, lngTarget, lngValue, lngDetTarget, lngDirection, lngWidth, lngHeight, uniRef) {
    var lngSetting;
    var lngDivider;
    var lngCalcedTarget;
    var lngCalcedValue;
    var lngCalcedDetTarget;
    var bolValid = true;
    var useDTarget;
    var strColor;

    if (uniRef) {
        oValueContainer = document.getElementById('valContainer' + uniRef);
        if (oValueContainer) {
            oValueContainer.value = lngTarget.toString() + ';' + lngStart.toString() + ';' + lngEnd.toString() + ';' + lngDetTarget.toString() + ';' + lngDirection.toString();
        }
    }


    //Duplicate variables for error checking
    var lngxTarget = parseFloat(lngTarget.toString().replace(',', '.'));
    var lngxEnd = parseFloat(lngEnd.toString().replace(',', '.'));
    var lngxStart = parseFloat(lngStart.toString().replace(',', '.'));
    var lngxDetTarget = parseFloat(lngDetTarget.toString().replace(',', '.'));
    var lngxValue = parseFloat(lngValue.toString().replace(',', '.'));

    //check target and value too see if they are in range


    if (lngxTarget > lngxEnd) {
        bolValid = false;
        lngTarget = lngEnd;
    }

    if (lngxTarget < lngxStart) {
        bolValid = false;
        lngTarget = 0;
    }

    if (lngxDetTarget >= lngxTarget || lngxDetTarget >= lngxEnd) {
        lngDetTarget = 0;
        bolValid = false;
    }

    if (lngxDetTarget <= lngxStart && lngxDetTarget != 0) {
        bolValid = false;
    }


    if (lngxValue > lngxEnd) {
        bolValid = false;
        lngValue = lngEnd;
    }

    if (lngxValue < lngxStart) {
        bolValid = false;
        lngValue = lngStart;
    }


    if (lngxEnd <= lngxStart) {
        bolValid = false;
        lngEnd = 100;
        lngStart = 0;
    }

    if (!bolValid) {
        //alert("Targetvalue, Detail targetvalue and/or value not correctly defined!");
    }



    //initiate values

    lngDivider = lngWidth / (lngEnd - lngStart);
    lngCalcedTarget = parseInt(lngDivider * (lngxTarget - lngxStart));
    lngCalcedValue = parseInt(lngDivider * (lngxValue - lngxStart));
    lngCalcedDetTarget = parseInt(lngDivider * (lngxDetTarget - lngxStart));

    useDTarget = (lngxDetTarget != 0);

    if (isNaN(lngCalcedTarget)) {
        lngCalcedTarget = 0;
    }
    if (isNaN(lngCalcedValue)) {
        lngCalcedValue = 0;
    }

    if (isNaN(lngDetTarget)) {
        lngCalcedDetTarget = 0;
    }

    if (isNaN(lngDirection)) {
        lngDirection = 0;
    }

    if (lngTarget == 0) {
        lngCalcedTarget = lngWidth;
        lngTarget = lngEnd;
    }


    strColor = 'FFFFFF';

    if (lngCalcedTarget == lngWidth) {
        if (lngCalcedValue < lngWidth) {

            if (lngDirection == 0) {
                strColor = 'FF0000';
            } else if (lngDirection == 1) {
                strColor = '008000';
            }

            if (useDTarget) {

                if (lngCalcedValue >= lngCalcedDetTarget) {
                    if (lngDirection == 0) {
                        strColor = 'fff62d';
                    } else if (lngDirection == 1) {
                        strColor = 'ff0000';
                    }
                }
            }

        } else if (lngCalcedValue == lngWidth) {

            if (lngDirection == 0) {
                strColor = '008000';
            } else if (lngDirection == 1) {
                strColor = 'ff0000';
            }
        }
    } else {

        if (lngCalcedValue < lngCalcedTarget) {

            if (lngDirection == 0) {
                strColor = 'FF0000';
            } else if (lngDirection == 1) {
                strColor = '008000';
            }

            if (useDTarget) {

                if (lngCalcedValue >= lngCalcedDetTarget) {
                    if (lngDirection == 0) {
                        strColor = 'fff62d';
                    } else if (lngDirection == 1) {
                        strColor = 'FF0000';
                    }
                }
            }

        } else {

            if (lngDirection == 0) {
                strColor = '66CC33';
            } else if (lngDirection == 1) {
                strColor = 'FF0000';
            }

        }
    }

    var lngFntSize = 8;
    var strFntFamily = 'Verdana';

    strURL = '../AutoImage/Progressbar.aspx?startVal=' + parseInt(lngStart) + '&endVal=' + parseInt(lngEnd) + '&value=' + lngCalcedValue + '&type=1&height=' + lngHeight + '&width=' + lngWidth + '&startValLbl=' + lngStart + '&endValLbl=' + lngEnd + '&valLbl=' + lngxValue + '&fntSize=' + lngFntSize + '&fntFam=' + strFntFamily + '&color=' + strColor;

    if (lngCalcedTarget != 0) {
        strURL = strURL + '&mainTgt=' + lngCalcedTarget + '&mainTgtLbl=' + lngTarget;
    }

    if (lngCalcedDetTarget != 0 && useDTarget) {
        strURL = strURL + '&detTgt=' + lngCalcedDetTarget + '&detTgtLbl=' + lngDetTarget;
    }

    //alert(strURL);
    return strURL;

}


function getGaugeURL(lngStart, lngEnd, lngTarget, lngValue, lngDetTarget, lngDirection, lngWidth, lngHeight, uniRef) {
    var lngSetting;
    var lngDivider;
    var lngCalcedTarget;
    var lngCalcedValue;
    var lngCalcedDetTarget;
    var bolValid = true;
    var useDTarget;
    var strColor;

    if (uniRef) {
        oValueContainer = document.getElementById('valContainer' + uniRef);
        if (oValueContainer) {
            oValueContainer.value = lngTarget.toString() + ';' + lngStart.toString() + ';' + lngEnd.toString() + ';' + lngDetTarget.toString() + ';' + lngDirection.toString();
        }
    }


    //Duplicate variables for error checking
    var lngxTarget = parseFloat(lngTarget.toString().replace(',', '.'));
    var lngxEnd = parseFloat(lngEnd.toString().replace(',', '.'));
    var lngxStart = parseFloat(lngStart.toString().replace(',', '.'));
    var lngxDetTarget = parseFloat(lngDetTarget.toString().replace(',', '.'));
    var lngxValue = parseFloat(lngValue.toString().replace(',', '.'));

    //check target and value to see if they are in range

    if (lngWidth < lngHeight || lngWidth < 40 || lngHeight < 20) {
        lngWidth = 40;
        lngHeight = 20;
    }


    if (lngxTarget > lngxEnd) {
        bolValid = false;
        lngTarget = lngEnd;
    }

    if (lngxTarget < lngxStart) {
        bolValid = false;
        lngTarget = 0;
    }

    if (lngxDetTarget >= lngxTarget || lngxDetTarget >= lngxEnd) {
        lngDetTarget = 0;
        bolValid = false;
    }

    if (lngxDetTarget <= lngxStart && lngxDetTarget != 0) {
        bolValid = false;
    }

    if (lngxValue > lngxEnd) {
        bolValid = false;
        lngValue = lngEnd;
    }

    if (lngxValue < lngxStart) {
        bolValid = false;
        lngValue = lngStart;
    }


    if (lngxEnd <= lngxStart) {
        bolValid = false;
        lngEnd = 100;
        lngStart = 0;
    }

    if (!bolValid) {
        //alert("Targetvalue, Detail targetvalue and/or value not correctly defined!");
        return '../../../../images/1ptrans.gif';
    }


    //initiate values


    lngDivider = 180 / (lngEnd - lngStart);
    lngCalcedTarget = parseInt(lngDivider * (lngxTarget - lngxStart));
    lngCalcedValue = parseInt(lngDivider * (lngxValue - lngxStart));
    lngCalcedDetTarget = parseInt(lngDivider * (lngxDetTarget - lngxStart));

    useDTarget = (lngxDetTarget != 0);

    if (isNaN(lngCalcedTarget)) {
        lngCalcedTarget = 0;
    }
    if (isNaN(lngCalcedValue)) {
        lngCalcedValue = 0;
    }

    if (isNaN(lngDetTarget)) {
        lngCalcedDetTarget = 0;
    }

    if (isNaN(lngDirection)) {
        lngDirection = 0;
    }

    if (lngTarget == 0) {
        lngCalcedTarget = 180;
        lngTarget = lngEnd;
    }


    strColor = 'FFFFFF';

    if (lngDirection == 0) {
        if (useDTarget) {
            if (lngCalcedValue < lngCalcedDetTarget) strColor = 'FF0000';
            if (lngCalcedValue >= lngCalcedDetTarget && lngCalcedValue < lngCalcedTarget) strColor = 'fff62d';
            if (lngCalcedValue >= lngCalcedTarget) strColor = '66CC33';
        } else {
            if (lngCalcedValue < lngCalcedTarget) strColor = 'FF0000';
            if (lngCalcedValue >= lngCalcedTarget) strColor = '66CC33';
        }
    } else {
        if (useDTarget) {
            if (lngCalcedValue < lngCalcedDetTarget) strColor = '66CC33';
            if (lngCalcedValue >= lngCalcedDetTarget && lngCalcedValue < lngCalcedTarget) strColor = 'fff62d';
            if (lngCalcedValue >= lngCalcedTarget) strColor = 'FF0000';
        } else {
            if (lngCalcedValue < lngCalcedTarget) strColor = '66CC33';
            if (lngCalcedValue >= lngCalcedTarget) strColor = 'FF0000';
        }

    }

    var lngFntSize = 8;
    var strFntFamily = 'Verdana';
    var strColors;

    // Default color setup
    if (lngDirection == 1) {
        strColors = '&color1=66CC33&color2=fff62d&color3=FF0000';
    } else {
        strColors = '&color1=FF0000&color2=fff62d&color3=66CC33';
    }

    strURL = '../AutoImage/Progressbar.aspx?startVal=' + parseInt(lngStart) + '&endVal=' + parseInt(lngEnd) + '&value=' + lngCalcedValue + '&type=2&height=' + lngHeight + '&width=' + lngWidth + '&startValLbl=' + lngStart + '&endValLbl=' + lngEnd + '&valLbl=' + lngxValue + '&fntSize=' + lngFntSize + '&fntFam=' + strFntFamily + '&color=' + strColor + strColors;
    strURL = strURL + '&mainTgt=' + lngCalcedTarget + '&mainTgtLbl=' + lngTarget;
    strURL = strURL + '&detTgt=' + lngCalcedDetTarget + '&detTgtLbl=' + lngDetTarget;

    return strURL;

}


function setupStructure() {
    var selectBoxesDOM = document.getElementsByName("selUnit");
    var currentBoxDOM;
    var lastSelectedBox;
    var lastSelectedValue;

    if (selectBoxesDOM.length > 0) {
        for (var i = 0; i != selectBoxesDOM.length; i++) {
            var children = new Array();
            currentBoxDOM = selectBoxesDOM[i];
            for (var j = 0; j != currentBoxDOM.options.length; j++) {
                children[j] = new selOption(currentBoxDOM.options[j].value, currentBoxDOM.options[j].parentID, currentBoxDOM.options[j].selected, currentBoxDOM.options[j].innerText, true);
            }

            selectBoxes[i] = new selSelect(currentBoxDOM.name, currentBoxDOM.id, children);
            lastSelectedValue = getSelectedValue(selectBoxes[i]);
            if (lastSelectedValue != 0) {
                lastSelectedBox = selectBoxes[i];
            }
        }

        if (lastSelectedValue != 0) {
            lastSelectedValue = getSelectedValue(lastSelectedBox);
            makeChoice(lastSelectedBox.id, lastSelectedValue);
        }

    } else {
        alert("Selectboxes for filter not correcly set up\nCheck config!");
    }
}

function makeChoice(id, selectedValue) {
    var changedBox;
    var i;
    var matches = new Array();
    var selectedIndex;
    var noneIsSelected;
    var startIndex;
    var lastParent;
    var lastSelectedValue;


    // Find box that was changed
    for (i = 0; i != selectBoxes.length; i++) {
        if (id == selectBoxes[i].id) {
            changedBox = selectBoxes[i];
            break;
        }

    }

    //Reset all selected options and find selectedIndex
    if (changedBox.children) {
        for (var j = 0; j != changedBox.children.length; j++) {
            if (selectedValue == changedBox.children[j].entityID) {
                selectedIndex = j;
            }
            changedBox.children[j].isSelected = false;
        }

        //Set the selected option as selected
        changedBox.children[selectedIndex].isSelected = true;

        //Store selected options parentID
        lastParent = changedBox.children[selectedIndex].parentID;

    }

    //Check if "nothing" i selected
    noneIsSelected = (selectedValue == 0);

    //Mark the parents
    if (!noneIsSelected) {
        for (var j = i - 1; j > -1; j--) {
            lastParent = markParents(selectBoxes[j], lastParent);
        }
    }

    //CHLDREN

    matches[0] = getSelectedValue(selectBoxes[0]);

    //Mark the children
    for (var j = 1; j < selectBoxes.length; j++) {
        matches = markChildren(selectBoxes[j], matches);
    }


    //Draw the new boxes
    populateBoxes();

}


function markChildren(currentSelectBox, matches) {
    var found = false;
    var currentOption;
    var newMatches = new Array();
    var x = 0;
    var selectedValue;
    var lastVisibleIx = 0;

    selectedValue = getSelectedValue(currentSelectBox);

    for (var i = 0; i != currentSelectBox.children.length; i++) {
        currentOption = currentSelectBox.children[i];
        found = false;
        currentOption.visible = false;
        for (var j = 0; j != matches.length; j++) {
            if (currentOption.parentID == matches[j] || matches[0] == 0) {
                found = true;
                break;
            }
        }

        if (found) {
            currentOption.visible = true;
            newMatches[x] = currentOption.entityID;
            lastVisibleIx = i;
            x++;
        }
        if (matches[0] == 0) {
            currentOption.isSelected = false;
        }

    }

    // Check if there is only one choice
    //if(x == 1){
    //	currentSelectBox.children[lastVisibleIx].isSelected = true;
    //	currentSelectBox.children[0].isSelected = false;
    //}

    if (selectedValue != 0 && matches[0] != 0) {
        newMatches.length = 0;
        newMatches[0] = selectedValue;
    }

    return newMatches;
}


function markParents(currentSelectBox, lastParent) {
    var currentOption;
    var newParent;

    for (var i = 0; i != currentSelectBox.children.length; i++) {
        currentOption = currentSelectBox.children[i];
        currentOption.isSelected = false;
        if (currentSelectBox.id == "selUnit1") {
            currentOption.visible = true;
        } else {
            currentOption.visible = false;
        }
        if (currentOption.entityID == lastParent) {
            currentOption.visible = true;
            currentOption.isSelected = true;
            newParent = currentOption.parentID;
        }
    }

    return newParent;
}


function getSelectedValue(selectBox) {
    for (var j = 0; j != selectBox.children.length; j++) {
        if (selectBox.children[j].isSelected)
            return selectBox.children[j].entityID;
    }
    return 0;
}


function setSelectStatus(selectBox, status) {
    for (var j = 0; j != selectBox.children.length; j++) {
        selectBox.children[j].isSelected = status;
    }
}


function populateBoxes() {

    var currSelBox;
    var currOption;
    var newOption;

    for (var i = 0; i != selectBoxes.length; i++) {
        currSelBox = document.getElementById(selectBoxes[i].id);
        selLength = currSelBox.options.length;

        for (var j = 0; j <= selLength; j++) {
            currSelBox.options.remove(0);
        }

        for (var j = 0; j != selectBoxes[i].children.length; j++) {
            currOption = selectBoxes[i].children[j];
            if (currOption.visible || currOption.entityID == 0) {
                newOption = document.createElement("OPTION");
                currSelBox.options.add(newOption);

                newOption.selected = currOption.isSelected;
                newOption.value = currOption.entityID;
                newOption.innerText = currOption.label;
            }

        }

    }

}

//Selectbox object
function selSelect(name, id, children) {
    this.name = name; //Selectbox name
    this.id = id; //Selectbox id
    this.children = children; //A collection of [selOption] as children

}

//Selectbox > option object
function selOption(entityID, parentID, isSelected, label, visible) {
    this.entityID = entityID; //Option entityID
    this.parentID = parentID; // Option parentID
    this.isSelected = isSelected; //Option selected status
    this.label = label; //Option text
    this.visible = visible; //Option visible
}


function addAttrRefToFormula(oSelectBox, formulaBoxID) {
    if (oSelectBox.options[oSelectBox.selectedIndex].value != '[-]') {
        document.getElementById(formulaBoxID).value += oSelectBox.options[oSelectBox.selectedIndex].value;
        oSelectBox.options[oSelectBox.selectedIndex].selected = false;
        oSelectBox.options[0].selected = true;
    }
}


function testFormulaExpression(oButton, strExpression, oNameSelectBox, oDescriptionLabel) {

    syntaxOK = true;

    if (strExpression.replace(/\s/g, '') == '') {
        oDescriptionLabel.innerText = 'No expression entered';
        return;
    }

    strParsedExpression = strExpression.replace(/\[A\d{1,}\]/g, ' 0 ');

    try {
        eval(strParsedExpression);
        //alert("Expression syntax ok!");
    } catch (e) {
        syntaxOK = false;
    }

    if (syntaxOK) {
        oButton.style.backgroundColor = 'green';
        oButton.style.color = 'white';
        oDescriptionLabel.innerText = parseFormulaDescription(strExpression, oNameSelectBox);
    } else {
        oButton.style.backgroundColor = 'red';
        oButton.style.color = 'white';
        oDescriptionLabel.innerText = 'Invalid expression';
        alert("There is a problem with the expression-syntax.\nPlease check the formula field and try again.");

    }

}

function findNameInSelectBox(oSelBox, strKey) {
    for (i = 0; i < oSelBox.options.length; i++) {
        if (oSelBox.options[i].value == strKey) {
            return '[' + oSelBox.options[i].innerText + ']';
        }
    }

    return strKey;
}

function setSource(thisFormBox, thisAttrID, relatedFormBox, relatedAttrID) {

}

function parseFormulaDescription(strExpression, oNameSelectBox) {

    strExpression = strExpression.replace(/\[/g, "¤");
    strExpression = strExpression.replace(/\]/g, "¤");
    strExpression = strExpression.replace(/\s/g, "");

    var aExpression = strExpression.split("¤");
    if (aExpression.length > 1) {
        for (i = 0; i < aExpression.length; i++) {
            if (aExpression[i].length > 0 && aExpression[i].indexOf('A') == 0) {
                aExpression[i] = findNameInSelectBox(oNameSelectBox, '[' + aExpression[i] + ']');
            }
        }

        strExpression = aExpression.join(' ');
    }

    return strExpression;
}

function showDefaultModalDialog(strArguments, w, h) {

    var xPos = 0;
    var yPos = 0;

    xPos = (screen.width - 400) / 2;
    yPos = (screen.height - 200) / 2;

    var sFeatures = '';
    sFeatures += 'dialogHeight: ' + h + 'px;';
    sFeatures += 'dialogWidth: ' + w + 'px;';
    sFeatures += 'dialogLeft: ' + xPos + 'px;';
    sFeatures += 'dialogLeft: ' + yPos + 'px;';
    sFeatures += 'status: no;';
    sFeatures += 'scroll: no;';

    strArguments = '../Dialog/Dialog.asp' + strArguments;

    lngRtn = window.showModalDialog(strArguments, '', sFeatures);
    return lngRtn;
}

function loadDynamicData(strArguments) {
    var xPos = 0;
    var yPos = 0;
    gbolAutoClose = false;
    xPos = (screen.width - 400) / 2;
    yPos = (screen.height - 200) / 2;
    strHREF = addBrowserIDsToURL('../DynamicLoader/Loading.asp' + strArguments, gstrURLBrowserIDs);
    return window.open(strHREF, '', 'menubar=0,toolbar=0,status=0,scrollbars=0,resizable=0,top=' + yPos + ',left=' + xPos + ',width=250,height=125')
    gConfirmedUnload = false;
}

function cloneAttribute(strAction, objForm, strDialogCaption) {
    lngRtn = showDefaultModalDialog('?MODE=CopyAttribute&Caption=' + strDialogCaption, 200, 150)

    if (lngRtn != 0 && lngRtn != null) {
        strAction += '&CopyNO=' + lngRtn;
        PostFormLinked(strAction, objForm);
    }

}

function addListObject(lngMainEntityID, lngTemplateID, lngAttrID) {
    strArguments = '?mode=addListObject&WindowType=subwindow&TemplateID=' + lngTemplateID + '&AttrID=' + lngAttrID + '&EntityID=' + lngMainEntityID;
    loadDynamicData(strArguments);
}

function resetPointer(lngEntityID, lngAttrID, strPointerRef) {
    strArguments = '?mode=RESETPOINTER&WindowType=subwindow&EntityID=' + lngEntityID + '&AttrID=' + lngAttrID + '&ptrRef=' + strPointerRef;
    loadDynamicData(strArguments);
}

function deleteListObject(lngMainEntityID, lngEntityID, lngTemplateID, lngAttrID) {
    //remove tr

    strArguments = '?mode=deleteListObject&WindowType=subwindow&EntityID=' + lngEntityID + '&TemplateID=' + lngTemplateID + '&AttrID=' + lngAttrID;
    loadDynamicData(strArguments);
}

function signEntity(lngEntityID, lngAttrID) {
    strArguments = '?mode=SIGN&WindowType=subwindow&EntityID=' + lngEntityID + '&AttrID=' + lngAttrID;
    loadDynamicData(strArguments);
}

function loadBLOB(lngEntityID, lngAttrID, lngShowMode, lngLanguageID) {
    strArguments = '?mode=BLOB&WindowType=subwindow&EntityID=' + lngEntityID + '&AttrID=' + lngAttrID + '&ShowMode=' + lngShowMode + '&LanguageID=' + lngLanguageID;
    loadDynamicData(strArguments);
}

function syncEntity(lngEntityID, lngPointedID) {
    strArguments = '?mode=SYNCMARKS&WindowType=subwindow&EntityID=' + lngEntityID + '&PointedID=' + lngPointedID;
    //loadDynamicData(strArguments);
}

function clearSpan(lngEntityID, strName) {
    oSpan = document.getElementById('span' + strName);
    oBox = document.getElementById(strName);

    if (oSpan != null) {
        oSpan.innerHTML = '';
    }
    if (oBox != null) {
        oBox.value = lngEntityID;
    }
}

function getAttrDivById(lngEntityID, lngAttrID) {
    strDivName = 'att_' + lngEntityID + '_' + lngAttrID;
    return getAttrDivByName(strDivName);
}

function getAttrDivByName(strDivName) {
    oDiv = document.getElementById(strDivName);
    return oDiv;
}

function getAttrAnchorById(lngEntityID, lngAttrID, lngSortOrder) {
    strAnchorName = 'anc_' + getSimpleHashCode(lngEntityID, lngAttrID, lngSortOrder);
    return getAttrAnchorByName(strAnchorName);
}

function getAttrAnchorByName(strAnchorName) {
    oAnchor = document.getElementById(strAnchorName);
    return oAnchor;
}

//hbergg@nada.kth.se
//Calculate a simple hexa hashrepresentation of an attribute
function getSimpleHashCode(lngEntityID, lngAttrID, lngSortOrder) {
    var hashCode;
    hashCode = ((lngEntityID + lngAttrID) % lngSortOrder) + (parseInt(lngEntityID / lngAttrID) + 1);
    return hashCode.toString(16).toUpperCase();
}

function storeDocumentHashCode(isEditStart) {
    if (isEditStart) {
        gDocumentHashCode = getDocumentHashCode();
        document.getElementById("documentHash").value = gDocumentHashCode;
    } else {
        gDocumentHashCode = document.getElementById("documentHash").value;
    }
}

function getDocumentHashCode() {
    var sToHash = '';
    var elements;

    if (glngWarnUnsaved == 2) {
        elements = document.getElementsByTagName('div');
        sToHash += getValues(elements);

        elements = document.getElementsByTagName('span');
        sToHash += getValues(elements);

        elements = document.getElementsByTagName('input');
        sToHash += getValues(elements);

        elements = document.getElementsByTagName('textarea');
        sToHash += getValues(elements);

        elements = document.getElementsByTagName('select');
        sToHash += getValues(elements);

        return hex_md5(sToHash);
    } else {
        return '';
    }
}

function getValues(elements) {
    var sValue = '';

    for (i = 0; i < elements.length; i++) {
        if (elements[i].monitor && elements[i].monitor == 1)
            sValue += getValue(elements[i]);
    }

    return sValue;
}

function getValue(element) {
    sReturn = '';

    switch (element.tagName) {
        case "DIV":
            sReturn = element.innerHTML;
            break;

        case "INPUT":
            sReturn = element.value;
            break;

        case "SPAN":
            sReturn = element.innerHTML;
            break;

        case "TEXTAREA":
            sReturn = element.value;
            break;

        case "SELECT":
            sReturn = element.selectedIndex;
            break;
    }

    return sReturn;
}


function toggleToolbar() {
    var toolbar = document.getElementById("toolbarContainer");
    var toggleIcon = document.getElementById("toolbarToggleIcon");
    if (toolbar.style.display == "none") {
        toolbar.style.display = "block";
        toggleIcon.src = "../../../../images/minileft.gif";
    } else {
        toolbar.style.display = "none";
        toggleIcon.src = "../../../../images/miniright.gif";
    }
}

function toggleToolbarState() {
    var toggleStateIcon = document.getElementById("toolbarToggleStateIcon");
    var tab = document.getElementById("toolbarTab");
    var cookieString = Get_Cookie("AddsystemConfig");

    if (!cookieString) { cookieString = 'toolBarOpen=1' }

    if (cookieString.indexOf("toolBarOpen=1") == -1) {
        //window.document.cookie= "toolBarOpen=1;path=/;";
        cookieString = cookieString.replace("toolBarOpen=0", "toolBarOpen=1");
        Set_Cookie("AddsystemConfig", cookieString, "/");
        toggleStateIcon.src = "../../../../images/pin_pinned.gif";
        tab.onmouseover = "";
        tab.onclick = toggleToolbarState;
    } else {
        //window.document.cookie= "toolBarOpen=0;path=/;";
        cookieString = cookieString.replace("toolBarOpen=1", "toolBarOpen=0");
        Set_Cookie("AddsystemConfig", cookieString, "/");
        toggleStateIcon.src = "../../../../images/pin.gif";
        tab.onmouseover = toggleToolbar;
        tab.onclick = "";
        toggleToolbar();
    }
}

function toggleHeadState() {
    var cookieString = Get_Cookie("AddsystemConfig");

    if (!cookieString) cookieString = 'headOpen=0';
    if (cookieString.indexOf("headOpen=1") == -1) {
        cookieString = cookieString.replace("headOpen=0", "headOpen=1");
        Set_Cookie("AddsystemConfig", cookieString, "/");
    } else {
        cookieString = cookieString.replace("headOpen=1", "headOpen=0");
        Set_Cookie("AddsystemConfig", cookieString, "/");
    }

}


function confirmLeave(event_) {
    if (glngWarnUnsaved != 0) {

        var strMsg = 'If you leave this page your changes will be lost!';

        checkNavigate();

        if (!event_ && window.event) {
            event_ = window.event;
        }

        if (glngWarnUnsaved == 2) {
            if (!gConfirmedUnload && gDocumentHashCode != getDocumentHashCode()) {
                event_.returnValue = strMsg;
                return strMsg;
            }
        } else {
            if (!gConfirmedUnload) {
                event_.returnValue = strMsg;
                return strMsg;
            }
        }
    }
}

function reportChanges() {
    var oClicked;
    var oElement;
    var found = false;
    gcheckForChanges = true;

    document.body.onmousedown = function() {
        gLastAccessedObject = window.event.srcElement;
    }

    window.onbeforeunload = function(event) {
        return confirmLeave(event);
    }
}

function checkNavigate() {
    oClicked = gLastAccessedObject;
    oElement = oClicked;
    var found = false;

    if (!oClicked) {
        gConfirmedUnload = false;
        return;
    }

    //Find the container
    while (!found) {
        if (oElement.tagName.toLowerCase() == 'form') {
            if (oElement.name) {
                found = (oElement.name.toLowerCase() == 'frmeditentity');
                if (found) {
                    break;
                }
            }
        }
        if (oElement.tagName.toLowerCase() == 'body') {
            break;
        }

        oElement = oElement.parentNode;
    }

    // -- Handle exceptions -- //

    //If click was in form
    if (found) {
        gConfirmedUnload = true;
        switch (oClicked.tagName.toLowerCase()) {
            case 'a':
                if (oClicked.onclick) {
                    if (oClicked.onclick.indexOf('WriteLink') != -1) {
                        gConfirmedUnload = false;
                    }
                }

                if (oClicked.href) {
                    if (oClicked.href.indexOf('WriteLink') != -1) {
                        gConfirmedUnload = false;
                    }
                }
                break;
        }
    }

    //If click was in toolbar
    if (oClicked.tagName.toLowerCase() == 'div' || oClicked.tagName.toLowerCase() == 'span') {
        gConfirmedUnload = false;
        if (oClicked.confirmSave) {
            if (oClicked.confirmSave == 'no') {
                gConfirmedUnload = true;
            }
        }
    }
    found = false;
}

function toggleHead() {

    var oGlobalMenu = document.getElementById('globalmenu');
    var oApplicationLogo = document.getElementById('ApplicationLogo');
    var oLinkList = document.getElementById('headerLinkList');
    var oHeadTracker = document.getElementById('headTracker');
    var oHeadSpace1 = document.getElementById('headSpace1');
    var oHeadSpace2 = document.getElementById('headSpace2');
    var oHead = document.getElementById('TotalHeader');


    if (oGlobalMenu) {
        if (oGlobalMenu.style.display == 'inline' || oGlobalMenu.style.display == 'block' || oGlobalMenu.style.display == '') {
            oGlobalMenu.style.display = 'none';
        } else {
            oGlobalMenu.style.display = '';
        }
    }

    if (oApplicationLogo) {
        if (oApplicationLogo.style.display == 'inline' || oApplicationLogo.style.display == 'block' || oApplicationLogo.style.display == '') {
            oApplicationLogo.style.display = 'none';
        } else {
            oApplicationLogo.style.display = '';
        }
    }

    if (oLinkList) {
        if (oLinkList.style.display == 'inline' || oLinkList.style.display == 'block' || oLinkList.style.display == '') {
            oLinkList.style.display = 'none';
        } else {
            oLinkList.style.display = '';
        }
    }

    if (oHeadTracker) {
        if (oHeadTracker.style.display == 'inline' || oHeadTracker.style.display == 'block' || oHeadTracker.style.display == '') {
            oHeadTracker.style.display = 'none';
        } else {
            oHeadTracker.style.display = '';
        }
    }

    if (oHeadSpace1) {
        if (oHeadSpace1.style.display == 'inline' || oHeadSpace1.style.display == 'block' || oHeadSpace1.style.display == '') {
            oHeadSpace1.style.display = 'none';
        } else {
            oHeadSpace1.style.display = '';
        }
    }

    if (oHeadSpace2) {
        if (oHeadSpace2.style.display == 'inline' || oHeadSpace2.style.display == 'block' || oHeadSpace2.style.display == '') {
            oHeadSpace2.style.display = 'none';
        } else {
            oHeadSpace2.style.display = '';
        }
    }

    if (oHead) {
        if (oHead.style.height == '') {
            oHead.style.height = '30px';
        } else {
            oHead.style.height = '';
        }
    }

}

function Get_Cookie(name) {
    var start = document.cookie.indexOf(name + "=");
    var len = start + name.length + 1;
    if ((!start) && (name != document.cookie.substring(0, name.length)))
        return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";", len);
    if (end == -1) end = document.cookie.length;
    return document.cookie.substring(len, end);
}

function Set_Cookie(name, value, path) {
    document.cookie = name + "=" + value +
        ((path) ? ";path=" + path : "");
}

function initToolbar() {
    var toolbar = document.getElementById("toolbarTable");

    if (toolbar) {
        setMouseProperties(toolbar);
    }
}

function setMouseProperties(node) {
    if (node.childNodes) {
        cNodes = node.childNodes;
        try {
            for (var i = 0; i < cNodes.length; i++) {
                cNodes[i].onmouseover = toolbar_onmouseover;
                cNodes[i].onmouseout = toolbar_onmouseout;
                setMouseProperties(cNodes[i]);
            }
        } catch (e) { }
    }
    return;
}

function toolbar_onmouseover() {
    var toolbar = document.getElementById("toolbarContainer");
    if (toolbar.timer)
        clearTimeout(toolbar.timer);
}

function toolbar_onmouseout() {
    var toolbar = document.getElementById("toolbarContainer");
    if (toolbar.timer) {
        clearTimeout(toolbar.timer);
    }

    toolbar.timer = setTimeout('hideToolbar();', 800);
}

function hideToolbar() {
    var strCookieString = Get_Cookie("AddsystemConfig");

    if (!strCookieString) { strCookieString = 'toolBarOpen=1' }

    if (strCookieString.indexOf("toolBarOpen=1") == -1) {
        var toolbar = document.getElementById("toolbarContainer");
        var toggleIcon = document.getElementById("toolbarToggleIcon");
        toolbar.style.display = "none";
        toggleIcon.src = "../../../../images/miniright.gif";
    }
}

function loadInspectionChoice(selectBox) {
    var selectedId = selectBox.options[selectBox.selectedIndex].value;
    var newBoxNr = parseInt(selectBox.boxNr) + 1;
    var nextBox = document.getElementById('divUnit' + newBoxNr);
    var boxCount = selectBox.boxCount;

    if (!nextBox)
        return false;

    strArguments = '?mode=InspectionList&EntityID=' + selectedId + '&TagId=' + newBoxNr + '&noOfBoxes=' + boxCount;
    loadDynamicData(strArguments);
}


function showAllAttributeHelp() {
    var allDivs = document.getElementsByTagName('div');
    var sPrefix;

    for (var i = 0; i < allDivs.length; i++) {
        sPrefix = allDivs[i].id.substring(0, 4);
        if (sPrefix == 'help') {
            showAttributeHelp(allDivs[i].id);
        }
    }
}

function hideAllAttributeHelp() {
    var allDivs = document.getElementsByTagName('div');
    var sPrefix;

    for (var i = 0; i < allDivs.length; i++) {
        sPrefix = allDivs[i].id.substring(0, 4);
        if (sPrefix == 'help') {
            hideAttributeHelp(allDivs[i].id);
        }
    }
}

function showAttributeHelp(strHelpRef) {
    var oHelpAtt = document.getElementById(strHelpRef);

    oHelpAtt.className = oHelpAtt.classOn;
    oHelpAtt.style.width = oHelpAtt.widthOn;
    oHelpAtt.style.height = oHelpAtt.heightOn;
}

function hideAttributeHelp(strHelpRef) {
    var oHelpAtt = document.getElementById(strHelpRef);
    oHelpAtt.className = 'hiddenHelp';
    oHelpAtt.style.width = '18px';
    oHelpAtt.style.height = '18px';
}

function toggleAttributeHelp(oTag, strHelpRef) {
    if (oTag.show) {
        if (oTag.show == 'true') {
            hideAttributeHelp(strHelpRef);
            oTag.show = 'false';
        } else {
            showAttributeHelp(strHelpRef);
            oTag.show = 'true';
        }
    } else {
        showAttributeHelp(strHelpRef);
        oTag.show = 'true';
    }
}

function copyNode(strDivRef, strTo) {
    var oDiv = document.getElementById(strDivRef);
    var oTo = document.getElementById(strTo);
    var oParent = oDiv.parentElement;
    if (oParent && oTo && oDiv) {
        oDiv.moved = 'true';
        oTo.insertAdjacentHTML('afterBegin', oParent.innerHTML);
        oParent.innerHTML = '';
    }
}

function initAttributeHelp() {
    var allDivs = document.getElementsByTagName('div');
    var sPrefix;

    for (var i = 0; i < allDivs.length; i++) {
        sPrefix = allDivs[i].id.substring(0, 4);
        if (sPrefix == 'help') {
            if (allDivs[i].moved == 'false') {
                copyNode(allDivs[i].id, allDivs[i].forDiv);
            }
        }
    }
}

function calculateRightRow(objTrueFalse, objNumeric, objTarget) {
    var lngLevels = 1000000;
    var lngShifter = 1;

    if (objTrueFalse[0].checked == true) {
        lngShifter = objTrueFalse[0].value;
    }

    if (objTrueFalse[1].checked == true) {
        lngShifter = objTrueFalse[1].value;
    }

    if (objNumeric.value != '') {
        lngLevels = (lngShifter * parseInt(objNumeric.value));
    } else {
        lngLevels = lngShifter * lngLevels;
    }

    objTarget.value = lngLevels;
}



function checkFormulaKeyEvent() {
    if (gobjEntityFormulas) {
        if (event.srcElement.id.length == 0) {
            gobjEntityFormulas.execByID(event.srcElement.name);
        } else {
            gobjEntityFormulas.execByID(event.srcElement.id);
        }
    }
}

function formulaContainer(lngEntityID, objTagRange) {

    this.Attributes = new Object();
    this.AllTriggers = new Array();

    this.documentHTML = objTagRange.innerHTML;
    this.addFormula = formulaContainer_addFormula;
    this.execByID = formulaContainer_execByID;
    this.execTopFormulas = formulaContainer_execTopFormulas;
    var arrMatch;
    var objRegExp = new RegExp('((=\"|=)(flt|lng)_tbAttribute_(' + lngEntityID + ')_([0-9_]*)_(lngValue|fltValue)[^>\" ]*)', 'ig');


    while ((arrMatch = objRegExp.exec(this.documentHTML)) != null) {
        this.Attributes[arrMatch[5]] = new formulaAttribute(this, arrMatch[6], arrMatch[5], arrMatch[1], '');
    }
}



function formulaAttribute(objContainer, strValueField, lngAttrID, strIDorName, strFormula) {
    this.container = objContainer;
    this.valueField = strValueField;
    this.attributeId = lngAttrID;
    this.HTMLReference = strIDorName.replace('=', '').replace('"', '').replace(' ', '');
    this.formula = strFormula;
    this.isTopTrigger = true;
    this.elements = document.getElementsByName(this.HTMLReference);
    this.element = document.getElementById(this.HTMLReference);




    if (!this.element) {
        this.element = this.elements[0];
    }
    if (this.element) {
        switch (this.element.tagName) {
            case 'INPUT': this.originalValue = this.element.value;
                if (this.element.type.toUpperCase() == 'RADIO') {
                    this.originalValue = 0;
                    for (var i = 0; i < this.elements.length; i++) {
                        if (this.elements[i].checked) {
                            this.element = this.elements[i];
                            this.originalValue = this.element.value;
                        }
                    }
                } else {
                    this.originalValue = this.element.value;
                }
                break;
            case 'SELECT': this.originalValue = this.element.options[this.element.selectedIndex].value;
                break;
            default: this.originalValue = this.element.innerHTML;
        }
    }
    //this.originalValue = (this.element.tagName == 'INPUT' ? this.element.value : this.element.innerHTML);
    this.originalColor = this.element.style.backgroundColor;
    this.exec = formulaAttribute_exec;
    this.Triggers = new Array();
    this.Formulas = new Array();
}


function formulaContainer_execByID(strID) {
    var arrData = strID.replace('__', '_-').split('_');
    if (this.Attributes[arrData[3]]) {
        this.Attributes[arrData[3]].exec();
    }
}

function formulaAttribute_exec(objExcluded) {
    var objError;

    if (objExcluded) {
        if (this.formula != '') {
            try {
                eval(this.formula);
                this.element.style.backgroundColor = this.element.style.originalColor;
            } catch (objError) {
                this.element.style.backgroundColor = '#ff0000';
                alert('"' + objError.description + '" in formula ' + (this.element.getAttribute('attrName') == null ? '' : '"' + this.element.getAttribute('attrName') + '"'));
            }
        }
    }

    if (!objExcluded) {
        var objExcluded = new Object();
    }

    objExcluded[this.attributeId] = new Object();

    if ((this.Triggers.length) && (!objError)) {
        for (var i = 0; i < this.Triggers.length; i++) {
            if (this.Triggers[i]) {
                if (objExcluded[this.Triggers[i].attributeId]) {
                    //alert('Was Excluded: '+this.Triggers[i].attributeId);
                } else {
                    //alert('Triggered: '+this.Triggers[i].attributeId);
                    objExcluded[this.Triggers[i].attributeId] = this.Triggers[i];
                    this.Triggers[i].exec(objExcluded);
                }
            }
        }
    }

}

function formulaContainer_addFormula(lngEntityID, lngAttrID, strFormula) {
    var arrMatch;
    var strTarget;
    var arrCalculations = new Array();
    var strMethod = 'parseInt';
    var objRegExp = new RegExp('([\[A])([0-9]*)(\])', 'ig');
    var bolAllFound = true;

    if (strFormula.substring(0, 1) == '=') {
        strFormula = strFormula.substring(1, strFormula.length);
    }

    if (this.Attributes[lngAttrID]) {
        if (this.Attributes[lngAttrID].valueField == 'lngValue') {
            strMethod = 'parseInt';
        } else {
            strMethod = 'parseFloat';
        }
        //this.Attributes[lngAttrID].element.disabled = true;
        this.Attributes[lngAttrID].isTopTrigger = false;
    }

    while ((arrMatch = objRegExp.exec(strFormula)) != null) {
        if (this.Attributes[arrMatch[2]]) {
            if (this.Attributes[arrMatch[2]].element.tagName == 'SELECT') {
                this.Attributes[arrMatch[2]].element.onchange = checkFormulaKeyEvent;
            } else {
                if (this.Attributes[arrMatch[2]].element.type.toUpperCase() == 'RADIO') {
                    var objTagInst = document.getElementsByName(this.Attributes[arrMatch[2]].element.name);
                    for (var i = 0; i < objTagInst.length; i++) {
                        objTagInst[i].onclick = checkFormulaKeyEvent;
                    }

                } else {
                    this.Attributes[arrMatch[2]].element.onkeyup = checkFormulaKeyEvent;
                }
            }
            this.Attributes[arrMatch[2]].Triggers[this.Attributes[arrMatch[2]].Triggers.length] = this.Attributes[lngAttrID];
            strFormula = strFormula.replace('[A' + this.Attributes[arrMatch[2]].attributeId + ']', 'parseFloat(getFormulaValueByID(\'' + this.Attributes[arrMatch[2]].HTMLReference + '\'))');
        } else {
            bolAllFound = false;
        }
    }

    //alert('setFormulaValueByID(\''+this.Attributes[lngAttrID].HTMLReference+'\', (isNaN('+strFormula+') ? 0 : '+strFormula+'); ');
    if (this.Attributes[lngAttrID]) {
        this.Attributes[lngAttrID].formula = 'setFormulaValueByID(\'' + this.Attributes[lngAttrID].HTMLReference + '\', (isNaN(' + strFormula + ') ? 0 : ' + strFormula + ')); '
    }
}


function formulaContainer_execTopFormulas() {
    //alert(gobjEntityFormulas.AllTriggers.length);
    var bolUseAny = true;
    for (var prp in this.Attributes) {
        //alert(this.Attributes[prp].attributeId+': '+this.Attributes[prp].isTopTrigger);
        if (this.Attributes[prp].attributeId) {
            if (this.Attributes[prp].isTopTrigger) {
                this.Attributes[prp].exec();
                bolUseAny = false;
            }
        }
    }

    if (bolUseAny && (this.Attributes)) {
        for (var prp in this.Attributes) {
            //alert(gobjEntityFormulas.Attributes[prp].attributeId+': '+gobjEntityFormulas.Attributes[prp].isTopTrigger);
            this.Attributes[prp].exec();
            break;
        }
    }
}


function reflectFormulaVisibleChanges(objTag) {
    //alert(objTag.id);
    var arrID = objTag.id.replace('__', '_-').split('_');
    var strVisibleRef = 'att_' + arrID[2] + '_' + arrID[3];

    strVisibleRef = strVisibleRef.replace('-', '_');


    
    var objVisible = jQuery('div[id^="'+strVisibleRef+'"]');
    if (objVisible.length>0) {
        objVisible.get(0).innerHTML = objTag.value + '\n' + objTag.outerHTML;
    }
}

function setFormulaValueByID(strID, varValue) {
    var objValueTag;
    var objTag = document.getElementById(strID);
    if (objTag.length) {
        for (var i = 0; i < objTag.length; i++) {
            objValueTag = objTag[i];
            if (objValueTag.tagName == 'INPUT') {
                objValueTag.value = varValue;
                if (objValueTag.type.toLowerCase() == 'hidden') {
                    reflectFormulaVisibleChanges(objValueTag);
                }
            } else {
                objValueTag(strID).innerHTML = varValue;
            }
        }
    } else {
        if (objTag.tagName == 'INPUT') {
            objTag.value = varValue;
            //alert(objTag.type.toLowerCase());
            if (objTag.type.toLowerCase() == 'hidden') {
                reflectFormulaVisibleChanges(objTag);
            }
        } else {
            objTag.innerHTML = varValue;
        }
    }
}

function getFormulaValueByID(strID) {
    var objValueTag;
    var varValue;
    var objTags = document.getElementsByName(strID);


    switch (objTags[0].tagName) {
        case 'INPUT':
            if (objTags[0].type.toUpperCase() == 'RADIO') {
                for (var i = 0; i < objTags.length; i++) {
                    if (objTags[i].checked) {
                        varValue = objTags[i].value.replace(',', '.');
                        break;
                    }
                }
            } else {
                varValue = objTags[0].value.replace(',', '.');
                break;
            }
            break;
        case 'SELECT': varValue = objTags[0].options[objTags[0].selectedIndex].value.replace(',', '.');
            break;
        default: varValue = objTag.innerHTML.toString().replace(',', '.');
    }



    /*
    var objTag = document.getElementById(strID);

    if (objTag.length) {
    objValueTag = objTag[0];
    if (objValueTag.tagName == 'INPUT') {
    varValue = objValueTag.value.toString().replace(',', '.');
    } else {
    varValue = objValueTag.innerHTML.toString().replace(',', '.');
    }
    } else {
    if (objTag.tagName == 'INPUT') {
    varValue = objTag.value.toString().replace(',', '.');
    } else {
    varValue = objTag.innerHTML.toString().replace(',', '.');
    }
    }
    */
    return varValue;
}

function hideTableAndButton() {
    if (document.getElementById('inspectionList') && document.getElementById('inspectionListBtn')) {
        document.getElementById('inspectionList').style.display = 'none';
        document.getElementById('inspectionListBtn').style.display = 'none'
    }
}


function monButtonclick(itemId, itemValue) {
    alert("Button " + itemId + " was pressed");
};


// Calendar functions

function getCalendar(lngEntityID, lngAttrID, tag, filter, tblWidth, tblHeight) {
    cal = new calendar(lngEntityID, lngAttrID, tag, filter, tblWidth, tblHeight);
    cal.initialize();
    cal.load();
}


var calendars = new Array();

function calendar(lngEntityID, lngAttrID, tag, filter, tblWidth, tblHeight) {
    if (!calendars.exists(lngEntityID + '_' + lngAttrID)) {
        calendars.add(lngEntityID + '_' + lngAttrID, this);

        this.lngEntityID = lngEntityID;
        this.lngAttrID = lngAttrID;
        this.tagID = tag.id;
        this.xmlPost = null;
        this.xmlDoc = null;
        this.listTagID = tag.id + '_list';
        this.lastClickedTag = null;
        this.selectYearTagID = tag.id + '_year';
        this.selectMonthTagID = tag.id + '_month';
        this.text = null;
        this.todayTagID = tag.id + '_today';
        this.loadToday = true;
        this.preparedForLoad = false;
        this.loadTagID = tag.id + '_load';
        this.tableTagID = tag.id + '_table';
        this.paintedOnce = false;
        this.filter = filter;
        this.tblWidth = tblWidth;
        this.tblHeight = tblHeight;


    } else {
        return calendars[lngEntityID + '_' + lngAttrID];
    }
}


calendar.prototype.load = calendar_Load;
calendar.prototype.paint = calendar_Paint;
calendar.prototype.initialize = calendar_Initialize;
calendar.prototype.xmlLoaded = calendar_xmlLoaded;
calendar.prototype.tag = function() { return document.getElementById(this.tagID) };
calendar.prototype.listTag = function() { return document.getElementById(this.listTagID) };
calendar.prototype.todayTag = function() { return document.getElementById(this.todayTagID) };
calendar.prototype.loadTag = function() { return document.getElementById(this.loadTagID) };
calendar.prototype.tableTag = function() { return document.getElementById(this.tableTagID) };
calendar.prototype.weekTag = function(weekNr) { return document.getElementById(this.tagID + '_week' + weekNr) };
calendar.prototype.pushMonth = calendar_PushMonth;
calendar.prototype.popMonth = calendar_PopMonth;
calendar.prototype.pushYear = calendar_PushYear;
calendar.prototype.popYear = calendar_PopYear;
calendar.prototype.jumpToMonth = calendar_JumpToMonth;
calendar.prototype.jumpToYear = calendar_JumpToYear;
calendar.prototype.clearActivities = calendar_ClearActivities;
calendar.prototype.activateDay = calendar_ActivateDay;
calendar.prototype.showActivities = calendar_ShowActivities;
calendar.prototype.hideActivities = calendar_HideActivities;
calendar.prototype.getActivities = calendar_GetActivities;
calendar.prototype.clear = calendar_Clear;
calendar.prototype.jumpToDate = calendar_JumpToDate;
calendar.prototype.today = calendar_Today;
calendar.prototype.activateToday = calendar_ActivateToday;
calendar.prototype.showLoad = calendar_ShowLoad;
calendar.prototype.hideLoad = calendar_HideLoad;
calendar.prototype.activateWeek = calendar_ActivateWeek;
calendar.prototype.getActivitiesForWeek = calendar_GetActivitiesForWeek;



function calendar_ActivateToday() {
    this.activateDay(this.todayTag())
}

function calendar_Initialize() {
    myDate = new Date();
    this.year = myDate.getFullYear();
    this.month = myDate.getMonth() + 1;
}

function calendar_Clear() {
    var nodes = this.tag().childNodes;
    len = nodes.length;
    for (var i = 0; i < len; i++) {
        this.tag().removeChild(nodes[0]);
    }
}

function calendar_ShowLoad() {
    this.loadTag().style.width = (this.tableTag().clientWidth + 1) + 'px';
    this.loadTag().style.height = (this.tableTag().clientHeight + 1 - 40) + 'px';
    this.tableTag().style.display = 'none';
    this.loadTag().style.display = 'block';
}

function calendar_HideLoad() {
    this.loadTag().style.display = 'none';
}

function calendar_ClearActivities() {
    this.listTag().innerHTML = '';
}

function calendar_GetActivities(date) {
    node = this.xmlDoc.selectSingleNode('//Day[ @Date="' + date + '"]');

    this.clearActivities();


    txt = node.textContent || node.text;

    if (txt.length > 3) {
        this.showActivities(txt);
    } else {
        this.showActivities(this.text[0].getAttribute('TextData'));
    }
}

function calendar_GetActivitiesForWeek(weekNr) {
    week = this.xmlDoc.selectSingleNode('//Week[ @Number="' + weekNr + '"]');

    var days;

    for (var i = 0; i < week.childNodes.length; i++) {
        days = week.childNodes[i].childNodes;
        if (week.childNodes[i].nodeType == 1) {
            break;
        }
    }

    var sText = '';
    var txt = '';

    for (var i = 0; i < days.length; i++) {
        if (days[i].nodeType == 1) {
            txt = days[i].textContent || days[i].text;
            if (txt.length > 2) {
                sText += '<span class="cal_DayActivities">' + days[i].getAttribute("Name") + ' ' + days[i].getAttribute("Date") + '</span>';
                sText += txt;
            }
        }
    }

    this.clearActivities();

    if (sText != '') {
        this.showActivities(sText);
    } else {
        this.showActivities(this.text[0].getAttribute('TextData'));
    }

}


function calendar_ActivateDay(tag) {

    if (this.lastClickedTag == tag && this.listTag().show) {
        this.hideActivities();
        tag.className = tag.oldClassName;
        return;
    }

    if (this.lastClickedTag) {
        this.lastClickedTag.className = this.lastClickedTag.oldClassName;
    }

    this.lastClickedTag = tag;
    tag.oldClassName = tag.className;
    tag.className = 'cal_DaySelected';
    this.getActivities(tag.date);

}

function calendar_ActivateWeek(tag) {

    weekNr = tag.weekNr;
    tag = this.weekTag(weekNr);

    if (this.lastClickedTag == tag && this.listTag().show) {
        this.hideActivities();
        tag.className = tag.oldClassName;
        return;
    }

    if (this.lastClickedTag) {
        this.lastClickedTag.className = this.lastClickedTag.oldClassName;
    }

    this.lastClickedTag = tag;
    tag.oldClassName = tag.className;
    tag.className = 'cal_WeekSelected';

    this.getActivitiesForWeek(weekNr);

}


function calendar_HideActivities() {
    this.listTag().className = 'cal_ListClosed';
    this.clearActivities();
    this.listTag().show = false;
}


function calendar_ShowActivities(text) {
    this.listTag().className = 'cal_ListOpen';
    this.listTag().innerHTML = text;
    this.listTag().show = true;
}

function calendar_PushMonth() {
    this.month++;
    if (this.month == 13) {
        this.month = 1;
        this.year++;
    }
    this.load();

}

function calendar_PopMonth() {
    this.month--;
    if (this.month == 0) {
        this.month = 12;
        this.year--;
    }
    this.load();

}

function calendar_PushYear() {
    this.year++;
    this.load();
}

function calendar_PopYear() {
    this.year--;
    this.load();
}

function calendar_JumpToMonth(month) {
    this.jumpToDate(this.year, month);
}

function calendar_JumpToYear(year) {
    this.jumpToDate(year, this.month);
}

function calendar_JumpToDate(year, month) {
    this.year = year;
    this.month = month;
    this.load();
}

function calendar_Today() {
    myDate = new Date();
    this.loadToday = true;
    this.jumpToDate(myDate.getFullYear(), myDate.getMonth() + 1);
}


function calendar_Paint() {
    var cell, row, nodes, cont, calref, root, lineheight;

    //Clear div element
    this.clear();

    //Local store of references for use where "this" do not work
    var calref = this.lngEntityID + '_' + this.lngAttrID;
    var boxref = this.tagID;

    //RootNode
    root = this.xmlDoc.selectSingleNode('/Calendar');

    //Resourcetexts
    this.text = this.xmlDoc.selectNodes('/Calendar/Resourcetexts/Resourcetext');

    var tbl = document.createElement('table');
    tbl.id = this.tableTagID;
    tbl.style.width = this.tblWidth + 'px';
    tbl.style.height = this.tblHeight + 'px';

    var tblHead = document.createElement('thead');
    var tblBody = document.createElement('tbody');

    tbl.className = 'cal_Table';

    //Create head
    nodes = this.xmlDoc.selectNodes('/Calendar/Headers/Header');
    row = document.createElement('tr');

    //Just a single one for weeknr
    cell = document.createElement('td');
    cell.className = 'cal_WeekNrHeader';

    cont = document.createTextNode(this.text[2].getAttribute('TextData'));
    //Append cell & content
    cell.appendChild(cont);
    row.appendChild(cell);

    for (var i = 0; i < nodes.length; i++) {
        cell = document.createElement('td');
        cell.className = 'cal_Header';

        cont = document.createTextNode(nodes[i].getAttribute('Name'));
        //Append cell & content
        cell.appendChild(cont);
        row.appendChild(cell);
    }

    //Append row
    tblHead.appendChild(row);

    //Append head
    tbl.appendChild(tblHead);

    //Create body
    var weeks, days, linktag;
    weeks = this.xmlDoc.selectNodes('/Calendar/Weeks/Week');

    lineheight = (this.tblHeight / weeks.length + 1) + 'px';

    for (var i = 0; i < weeks.length; i++) {
        days = this.xmlDoc.selectNodes('/Calendar/Weeks/Week[ @Number=' + weeks[i].getAttribute('Number') + ']/Days/Day');
        row = document.createElement('tr');
        row.className = 'cal_Week';
        row.id = this.tagID + '_week' + weeks[i].getAttribute('Number');
        if (weeks[i].getAttribute('ThisWeek') == 'True') row.className += ' cal_TodaysWeek';

        //Just one special for weeknr
        cell = document.createElement('td');
        cell.className = 'cal_WeekNr';
        cell.style.lineHeight = lineheight;
        cont = document.createTextNode(weeks[i].getAttribute('Number'));
        linktag = document.createElement('div');
        linktag.weekNr = weeks[i].getAttribute('Number');
        linktag.onclick = function() { calendars[calref].activateWeek(this) };
        linktag.className = 'cal_WeekNrLink';


        linktag.appendChild(cont);
        cell.appendChild(linktag);
        row.appendChild(cell);

        for (var k = 0; k < days.length; k++) {

            cell = document.createElement('td');
            cont = document.createTextNode(days[k].getAttribute('Number'));
            cell.style.lineHeight = lineheight;

            //CSS combinations
            cell.className = 'cal_Day';
            if (days[k].getAttribute('Weekday') == 'False') cell.className += ' cal_Weekend';
            if (days[k].getAttribute('HasItems') == 'True') cell.className += ' cal_HasItems';
            if (days[k].getAttribute('Today') == 'True') cell.className += ' cal_Today';

            //Special stuff for active/non-active days
            if (days[k].getAttribute('Active') == 'False') {
                cell.className = 'cal_NonActive'; //ie. ignore all other
                if (days[k].getAttribute('Weekday') == 'False') cell.className += ' cal_Weekend';
            } else {
                linktag = document.createElement('div');
                if (days[k].getAttribute('Today') == 'True') linktag.id = this.todayTagID;
                linktag.date = days[k].getAttribute('Date');
                linktag.onclick = function() { calendars[calref].activateDay(this) };
                linktag.className = 'cal_DayLink';
                linktag.appendChild(cont);
                cont = linktag;
            }

            //Append cell & content
            cell.appendChild(cont);
            row.appendChild(cell);
        }
        //Append row
        tblBody.appendChild(row);
    }

    //Append body
    tbl.appendChild(tblBody);

    boxes = document.createElement('div');
    boxes.className = 'cal_Boxes';

    image = document.createElement('input');
    image.type = 'button';
    image.className = 'cal_TodayButton';
    image.onclick = function() { calendars[calref].today() };
    image.value = this.text[1].getAttribute('TextData');

    boxes.appendChild(image);

    var selectbox, op;

    //Month select
    nodes = this.xmlDoc.selectNodes('/Calendar/Months/Month');
    selectbox = document.createElement('select');
    selectbox.className = 'cal_SelectMonth';
    selectbox.id = this.selectMonthTagID;
    selectbox.onchange = function() { calendars[calref].jumpToMonth(document.getElementById(boxref + '_month')[document.getElementById(boxref + '_month').selectedIndex].value) };
    for (var i = 0; i < 12; i++) {
        op = document.createElement('option');
        op.value = nodes[i].getAttribute('Number');
        op.innerHTML = nodes[i].getAttribute('Name');

        if (op.value == this.month) op.selected = 'true';
        selectbox.appendChild(op);
    }
    boxes.appendChild(selectbox);

    //Year select
    selectbox = document.createElement('select');
    selectbox.className = 'cal_SelectYear';
    selectbox.id = this.selectYearTagID;
    selectbox.onchange = function() { calendars[calref].jumpToYear(document.getElementById(boxref + '_year')[document.getElementById(boxref + '_year').selectedIndex].value) };
    for (var i = 0; i < 11; i++) {
        op = document.createElement('option');
        op.value = (this.year - 5) + i;
        op.innerHTML = op.value;
        if (op.value == this.year) op.selected = 'true';
        selectbox.appendChild(op);
    }
    boxes.appendChild(selectbox);


    //Create browsemenu
    browse = document.createElement('div');
    browse.className = 'cal_Browse';


    //Left btn
    cont = document.createElement('div');
    cont.className = 'cal_BrowseButton';
    cont.appendChild(document.createTextNode('<<'));
    cont.onclick = function() { calendars[calref].popMonth() };
    browse.appendChild(cont);

    //Title
    cont = document.createElement('div');
    cont.className = 'cal_BrowseTitle';
    cont.appendChild(document.createTextNode(root.getAttribute('SelectedMonthName') + ' ' + root.getAttribute('SelectedYear')));
    browse.appendChild(cont);

    //Right btn
    cont = document.createElement('div');
    cont.className = 'cal_BrowseButton';
    cont.appendChild(document.createTextNode('>>'));
    cont.onclick = function() { calendars[calref].pushMonth() };
    browse.appendChild(cont);

    //Create list
    list = document.createElement('div');
    list.className = 'cal_ListClosed';
    list.style.width = (this.tblWidth - 20) + 'px';
    list.id = this.listTagID;

    //Create loadlayer
    load_layer = document.createElement('div');
    load_layer.className = 'cal_LoadingLayer';
    load_layer.id = this.loadTagID;

    image = document.createElement('img');
    image.src = '../../../../images/ajax-loader.gif';
    load_layer.appendChild(image);

    //Append boxes
    this.tag().appendChild(boxes);

    //Append browsemenu
    this.tag().appendChild(browse);

    //Append loadlayer
    this.tag().appendChild(load_layer);

    //Append table
    this.tag().appendChild(tbl);

    //Append list
    this.tag().appendChild(list);

    //Width calculations
    try {
        list.style.width = tbl.clientWidth - 80;
    } catch (e) {

    }

    //this.tag().appendChild(document.createTextNode(this.tag().innerHTML));
}

function calendar_Load() {
    if (window.XMLHttpRequest) {// branch for native XMLHttpRequest object
        this.xmlPost = new XMLHttpRequest();
    } else if (window.ActiveXObject) {// branch for IE/Windows ActiveX version
        this.xmlPost = new ActiveXObject("Microsoft.XMLHTTP");
        if (!this.xmlPost) {
            alert('Failed to create load/save objects!');
        }
    }
    if (this.xmlPost) {
        if (this.paintedOnce) this.showLoad();

        eval('this.xmlPost.onreadystatechange = function() {calendar_xmlPostEvent_processHttpLoadRequest(calendars[\'' + this.lngEntityID + '_' + this.lngAttrID + '\'])}');

        var url = '../Calendar/CalendarLoader.asp?' + gstrURLBrowserIDs + '&Action=ViewMonth&Year=' + this.year + '&Month=' + this.month + '&nocache=' + Date().toString() + '&filter=' + this.filter;
        //alert(url);

        this.xmlPost.open('GET', url);
        this.xmlPost.send();
    } else {
        alert('Browser does not support XMLHttpRequest') //gvarResourceText()
    }
}

function calendar_xmlPostEvent_processHttpLoadRequest(objCalendar) {
    if (objCalendar.xmlPost.readyState == 4) {// only if req shows "complete"
        if (objCalendar.xmlPost.status == 200) {// only if "OK"
            objCalendar.xmlLoaded(objCalendar.xmlPost.responseXML);
            //objCalendar.updateHistory('Arbetsytan har lästs in.', true); //gvarResourceText()
        } else {
            alert('There was a problem retrieving the XML data:\n' + this.statusText); //gvarResourceText()
        }
    }
}

function calendar_xmlLoaded(xmlDoc) {
    if (this.tag()) {
        this.xmlDoc = xmlDoc
        this.paint();
        if (this.loadToday) this.activateToday();
        if (this.paintedOnce) this.hideLoad();
        this.paintedOnce = true;
        this.loadToday = false;
    }
}




function toggleResizeToFit(strID) {
    var objDiv = document.getElementById(strID);
    if (objDiv) {
        if (parseInt(objDiv.currentStyle.height) < parseInt(objDiv.scrollHeight)) {
            resizeToFit(strID);
        } else {
            resizeToZero(strID);
        }
    }
    delete objDiv;
}



function resizeToFit(strID) {
    try {
        var objDiv = document.getElementById(strID);
        objDiv.style.overflow = 'hidden';
        clearTimeout();
        if (parseInt(objDiv.currentStyle.height) < parseInt(objDiv.scrollHeight)) {
            if ((parseInt(objDiv.currentStyle.height) + (parseInt(objDiv.scrollHeight) / 5)) >= parseInt(objDiv.scrollHeight)) {
                objDiv.style.height = parseInt(objDiv.scrollHeight);

            } else {
                objDiv.style.height = parseInt(objDiv.currentStyle.height) + (parseInt(objDiv.scrollHeight) / 5);
                setTimeout("resizeToFit('" + strID + "')", 10);
            }
            delete objDiv;
        }
    } catch (e) { }
}

function resizeToZero(strID) {
    try {
        var objDiv = document.getElementById(strID);
        objDiv.style.overflow = 'hidden';
        clearTimeout();
        if (parseInt(objDiv.currentStyle.height) >= 1) {
            if ((parseInt(objDiv.currentStyle.height) - (parseInt(objDiv.scrollHeight) / 5)) <= 0) {

                objDiv.style.height = '1px';
            } else {
                objDiv.style.height = parseInt(objDiv.currentStyle.height) - (parseInt(objDiv.scrollHeight) / 5);
                setTimeout("resizeToZero('" + strID + "')", 10);
            }
            delete objDiv;
        }
    } catch (e) { }
}




function toggleVisibilityByID(strID) {
    var objDiv = document.getElementById(strID);
    if (objDiv) {
        if (objDiv.currentStyle.display == 'none') {
            objDiv.style.display = 'inline';
        } else {
            objDiv.style.display = 'none';
        }
    }
    delete objDiv;
}


function Ticker(strTicker) {
    var datNow = new Date();
    var datStart = new Date(2007, 08, 01);
    var datEnd = new Date(2007, 09, 01, 23, 59, 59, 999);
    var strFormat = '';
    var strDecFormat = '';
    var valTotal;

    var objTicker = document.getElementById(strTicker);

    if ((objTicker.getAttribute('TickerStartDate') != '') && (objTicker.getAttribute('TickerEndDate') != '')) {
        datStart.setTime(parseInt(objTicker.getAttribute('TickerStartDate')) * 1000);
        datEnd.setTime(parseInt(objTicker.getAttribute('TickerEndDate')) * 1000);
        //alert(datStart.toDateString() + ' and ' + datEnd.toDateString());
    }

    var intInterval = parseInt(objTicker.getAttribute('TickInterval'));
    var intDecRound = parseInt(objTicker.getAttribute('TickDecimals'));
    var strPrefix = objTicker.getAttribute('TickPrefix');
    var strSuffix = objTicker.getAttribute('TickSuffix');
    var strType = objTicker.getAttribute('Type');
    var strTick = '';
    var strDec = '';

    if (intInterval == 0) {
        intInterval = 1000;
    }

    if (strType == 'Int') {
        var valTotal = parseInt(objTicker.getAttribute('TotalNumber'));
    } else {
        var valTotal = parseFloat(objTicker.getAttribute('TotalNumber'));
    }

    if (valTotal > 0) {

        if (strType == 'Int') {
            var strTick = parseInt(valTotal / (datEnd.getTime() - datStart.getTime()) * (datNow.getTime() - datStart.getTime())).toString();
        } else {
            var strTick = (Math.round(parseFloat(valTotal / (datEnd.getTime() - datStart.getTime()) * (datNow.getTime() - datStart.getTime())) * (Math.pow(10, intDecRound))) / (Math.pow(10, intDecRound))).toString();
            strDec = strTick.split('.')[1];
            if (!strDec) strDec = '';

            if (strDec) {
                for (var j = 0; j <= intDecRound; j++) {
                    if (strDec.length < intDecRound) strDec = strDec + '0';
                }
            }
            strTick = strTick.split('.')[0];
        }

        for (var i = strTick.length; i >= 0; i--) {
            if (((strTick.length - i) % 3) == 1) strFormat = ' ' + strFormat;
            strFormat = strTick.substring(i, i + 1) + strFormat;
        }

        for (var i = 0; i <= strDec.length; i++) {
            if (((i) % 3) == 0) strDecFormat = strDecFormat + ' ';
            strDecFormat = strDecFormat + strDec.substring(i, i + 1);
        }

        if (strDec.length > 0) strFormat += '.' + strDecFormat;

        objTicker.innerHTML = strPrefix + strFormat.replace(' .', '.').replace('. ', '.') + strSuffix;
        delete objTicker;
        setTimeout('Ticker(\'' + strTicker + '\')', intInterval);
    }
}

// Adds onchange and onclick events to input, select and textareas that is a child or grandchild to tagObject
function addAttributeMonitor(tagObject, recursiveTagObject) {

    if (!recursiveTagObject) recursiveTagObject = tagObject;
    var iNodes;
    var lngAttrID;
    for (var iNodes = 0; iNodes < recursiveTagObject.childNodes.length; iNodes++) {
        var oNode = recursiveTagObject.childNodes[iNodes];
        if ((oNode.tagName == 'INPUT') || (oNode.tagName == 'SELECT') || (oNode.tagName == 'TEXTAREA')) {
            //alert('Adding to '+oNode.tagName+' of '+tagObject.id);
            tagObject.AttrID = tagObject.id.replace('__', '_-').split('_')[2]
            if (oNode.tagName == 'TEXTAREA') 
            {
                oNode.attachEvent('onchange', function() { addAttributeMonitorReflectChanges(tagObject); return true })
                break;
            } 
            else 
            {
                switch (oNode.type.toLowerCase()) {
                    case 'text':
                    case 'hidden':
                    case 'select-one':
                    case 'select-multiple':
                    case 'textarea':
                        oNode.attachEvent('onchange', function() { addAttributeMonitorReflectChanges(tagObject); return true })
                        break;
                    case 'radio':
                    case 'checkbox':
                        oNode.attachEvent('onclick', function() { addAttributeMonitorReflectChanges(tagObject); return true })
                        break;
                    default:
                        //alert('not implemented formfield: ' + oNode.type.toLowerCase())
                }
            }
        } else {
            addAttributeMonitor(tagObject, oNode);
        }
    }
}
// Onchange event!
function addAttributeMonitorReflectChanges(tagObject, sourceAttrID) {
    tinyMCE.triggerSave(true, true);
    var strURL = '../Attributes/AttributeChangesView.asp?RequestType=ajax&WindowType=subwindow';
    var reqInfo = new addsystems.ajax.requestInfo(strURL, this)

    reqInfo.target = -1;
    reqInfo.callback = addAttributeMonitorCallback;
    if (document.getElementById('frmEditEntity')) {
        reqInfo.dataTags.add(document.getElementById('frmEditEntity'));
    }
    //reqInfo.dataTags.add(tagObject)
    reqInfo.data.add('BID', gstrBrowserInstanceID);
    reqInfo.data.add('BPID', gstrBrowserParentInstanceID);
    reqInfo.data.add('AttrID', tagObject.AttrID);
    reqInfo.open().style.display = 'none';
}



// Onchange event: Ajax callback
function addAttributeMonitorCallback(oDocument) {
    if (oDocument) {


//        tinyMCE.triggerSave(true, true);

        for (var n = tinyMCE.editors.length - 1; n >= 0; n--) {
            tinyMCE.editors[n].remove();
        }

        var arrDivs = oDocument.getElementsByTagName('DIV');
        for (var iDivs = 0; iDivs < arrDivs.length; iDivs++) {
            var oDiv = arrDivs[iDivs];
            if (oDiv.id.substring(0, 4).toLowerCase() == 'att_' || oDiv.id.substring(0, 4).toLowerCase() == 'atn_') {
                var o2Div = document.getElementById(oDiv.id);
                o2Div.innerHTML = oDiv.innerHTML;
                if (o2Div.addsystemsonload) {
                    eval(o2Div.addsystemsonload);
                }
                
            }
        }
        var arrDivs = oDocument.getElementsByTagName('DIV');
        for (var iDivs = 0; iDivs < arrDivs.length; iDivs++) {
            var oDiv = arrDivs[iDivs];
            if (oDiv.id.substring(0, 4).toLowerCase() == 'att_' || oDiv.id.substring(0, 4).toLowerCase() == 'atn_') {
                var o2Div = document.getElementById(oDiv.id);
                addAttributeMonitorReplaceStyleOnTarget(getAttributeMonitorTopTag(oDiv), getAttributeMonitorTopTag(o2Div));
            }
        }

    }
    //try {
    loadTinyMCE();
    addsystems.gui.attributes.loaddateinput();
    //} catch (e) { 
    //}
    
    var iframe = document.getElementById(this.target);

    if (iframe) {
        var strCode = 'if(document.getElementById(\'' + this.target + '\')) document.getElementById(\'' + this.target + '\').parentNode.removeChild(document.getElementById(\'' + this.target + '\'));'
        setTimeout(strCode, 5000);
    }

}

function getAttributeMonitorTopTag(objTag) {
    while (objTag.getAttribute('lngStateEntityID') == objTag.parentNode.getAttribute('lngStateEntityID') && objTag.getAttribute('lngStateAttrID') == objTag.parentNode.getAttribute('lngStateAttrID')) {
        objTag = objTag.parentNode;
    }
    return objTag;
}

// Onchange event: Ajax callback (recursive subfunction)
function addAttributeMonitorReplaceStyleOnTarget(newTag, orgTag) {
    if (orgTag.nodeType == 1) {
        orgTag.style.display = 'inline';
        orgTag.style.cssText = newTag.style.cssText;
        //alert(newTag.tagName + '\nNEW:' +  newTag.style.cssText + '\nOLD: ' + orgTag.style.cssText + '\n\n' + newTag.innerHTML + '\n\n' + orgTag.innerHTML)
    } else {
    if (orgTag.parentNode.tagName.toUpperCase() != 'SCRIPT') {
        orgTag.parentNode.style.display = 'inline';
    } else {
        eval(newTag.parentNode.innerText.replace('addsystems.addEvent', 'addsystems.execEventFunction'));
    }
        //alert(orgTag.parentNode.parentNode.outerHTML+'\n'+newTag.parentNode.parentNode.outerHTML);
    }
    var iNodes
    var cntNodes = newTag.childNodes;
    for (var iNodes = 0; iNodes < cntNodes.length; iNodes++) {
        var oNodeNew = newTag.childNodes[iNodes];
        var oNodeOrg = orgTag.childNodes[iNodes];
        if ((oNodeNew.lngStateEntityID == newTag.lngStateEntityID) && (oNodeNew.lngStateAttrID == newTag.lngStateAttrID)) {
            addAttributeMonitorReplaceStyleOnTarget(oNodeNew, oNodeOrg);
        }

    }
}

function showHideAttributeByToggleGroup(strGroupName) {
    var oParent = event.srcElement;
    var oMainTag;
    if (!strGroupName) {
        if (this.toggle) {
            strGroupName = this.toggle;
        }
    }

    while (oParent) {
        if (oParent.className) {
            if (oParent.className.indexOf('TypeGeneric') >= 0) {
                oMainTag = oParent;
                oParent = null;
            } else {
                oParent = oParent.parentNode;
            }
        } else {
            oParent = oParent.parentNode;
        }
    }

    if (oMainTag) {
        var tagTypes = Array('div', 'span', 'table', 'td', 'tr');
        var arrElements;
        var oAttribute;
        var oAttributeValue;

        for (var j = 0; j < tagTypes.length; j++) {
            arrElements = oMainTag.getElementsByTagName(tagTypes[j]);
            for (var i = 0; i < arrElements.length; i++) {
                if (arrElements[i].togglegroup || arrElements[i].togglegroupedit) {

                    if (arrElements[i].togglegroup == strGroupName || arrElements[i].togglegroupedit == strGroupName) {
                        if (arrElements[i]) {
                            if (arrElements[i].currentStyle.display == 'none') {
                                arrElements[i].style.display = 'inline';
                            } else {
                                arrElements[i].style.display = 'none';
                            }
                        }
                    }
                }
            }
        }
        delete arrElements;
        delete oAttribute;
    }


}


function applyBorderRadius(oTag) {
    var classID = 'AddRC';

    if (!oTag.className.match(classID)) {

        if (oTag.currentStyle['border-radius'] != undefined) {

            if (!document.namespaces.v) {
                document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
            }

            oTag.className = oTag.className.concat(' ', classID);

            var arcSize = parseInt(oTag.currentStyle['border-radius']);
            var strokeColor = oTag.currentStyle.borderColor;
            var strokeWeight = parseInt(oTag.currentStyle.borderWidth);

            oTag.style.border = 'none';

            var fillColor = oTag.currentStyle.backgroundColor;
            var fillSrc = oTag.currentStyle.backgroundImage.replace(/^url\("(.+)"\)$/, '$1');

            oTag.style.background = 'transparent';

            var margin = oTag.currentStyle.margin;
            oTag.style.margin = '0';

            var styleFloat = oTag.currentStyle.styleFloat;
            oTag.style.styleFloat = 'none';

            var clear = oTag.currentStyle.clear;
            oTag.style.clear = 'none';

            var position = oTag.currentStyle.position;
            oTag.style.position = 'static';

            var left = oTag.currentStyle.left;
            oTag.style.left = '0';

            var right = oTag.currentStyle.right;
            oTag.style.right = '0';

            var top = oTag.currentStyle.top;
            oTag.style.top = '0';

            var bottom = oTag.currentStyle.bottom;
            oTag.style.bottom = '0';

            var width = oTag.offsetWidth;
            var height = oTag.offsetHeight;

            if (false) {
                if (oTag.currentStyle.width == 'auto' || oTag.currentStyle.height == 'auto') {
                    var display = oTag.style.display;
                    oTag.style.display = 'inline-block';

                    var width = oTag.offsetWidth;
                    var height = oTag.offsetHeight;

                    oTag.style.display = display;
                } else {
                    var width = oTag.currentStyle.width;
                    var height = oTag.currentStyle.height;
                }
            }

            oTag.style.width = '100%';
            oTag.style.height = '100%';
            var iRadius = arcSize;

            var iCoordSizeX = parseInt(width);
            var iCoordSizeY = parseInt(height);

            if (iRadius > iCoordSizeX / 2) { iRadius = parseInt(iCoordSizeX / 2) }
            if (iRadius > iCoordSizeY / 2) { iRadius = parseInt(iCoordSizeY / 2) }

            //alert('m '+iRadius+',0 l '+(iCoordSizeX-iRadius)+',0 qx '+iCoordSizeX+','+iRadius+' l '+iCoordSizeX+','+iCoordSizeY+' l 0,'+iCoordSizeY+' l 0,'+iRadius+' qy '+iRadius+',0 x e');    
            if (iCoordSizeX > 0 && iCoordSizeY > 0) {
                //    alert(oTag.offsetWidth + ',' + iCoordSizeX + ',' + oTag.currentStyle.width);
                var sPath = 'm ' + iRadius + ',0 l ' + (iCoordSizeX - iRadius) + ',0 qx ' + iCoordSizeX + ',' + iRadius + ' l ' + iCoordSizeX + ',' + iCoordSizeY + ' l 0,' + iCoordSizeY + ' l 0,' + iRadius + ' qy ' + iRadius + ',0 x e';
                oTag.outerHTML = '<div style="background: transparent; border: none; padding: 0; margin: ' + margin + '; float: ' + styleFloat + '; clear: ' + clear + '; position: ' + position + '; left: ' + left + '; right: ' + right + '; top: ' + top + '; bottom: ' + bottom + ';">'
                       + '<v:shape strokecolor="' + strokeColor + '" strokeweight="' + strokeWeight + '" style="behavior: url(#default#VML); display: inline-block; width: 99%; height: 99%; antialias: true; padding: ' + strokeWeight + 'px;" coordorigin="0 0" coordsize="' + iCoordSizeX + ',' + iCoordSizeY + '" path="' + sPath + '">'
                       + '<v:fill color="' + fillColor + '" src="' + fillSrc + '" type="tile" style="behavior: url(#default#VML);" />'
                       + oTag.outerHTML
                       + '</v:shape>'
                       + '</div>';
            } else {
                alert('?');
            }
        }
    }
}

function buildLogonRestrictionIP(strTarget, strPart1, strPart2, strPart3, strPart4) {

    if (document.getElementById(strPart1).value == '') { strPart1 = '*' } else { strPart1 = document.getElementById(strPart1).value }
    if (document.getElementById(strPart2).value == '') { strPart2 = '*' } else { strPart2 = document.getElementById(strPart2).value }
    if (document.getElementById(strPart3).value == '') { strPart3 = '*' } else { strPart3 = document.getElementById(strPart3).value }
    if (document.getElementById(strPart4).value == '') { strPart4 = '*' } else { strPart4 = document.getElementById(strPart4).value }

    document.getElementById(strTarget).value = strPart1 + '.' + strPart2 + '.' + strPart3 + '.' + strPart4;
}

function activateSearchField(keywordField, defaultText) {
    if(keywordField.value == defaultText) {
        keywordField.value = '';
        keywordField.style.color = '#000000';
        keywordField.style.fontStyle = 'normal';
    }
}


function deactivateSearchField(keywordField, defaultText) { 
    if(keywordField.value == '') {
        keywordField.value = defaultText;
        keywordField.style.color = '#dddddd';
        keywordField.style.fontStyle = 'italic';
    }
}
