﻿// JScript-Datei

// ----------------------------------
// Treeview
// ----------------------------------
var mobjTree = null;

// ----------------------------------
// Timer
// ----------------------------------
var mbTimerIsRunning = false;
var mlTimerID = null;
var mlTimerIDLoaded = null;

// ----------------------------------
// Unterformular-Steuerung
// ----------------------------------
var msSubformID = "frmData";
var msSubformFrameID = "fraData";
var msMenuID = "mnuMain";
var msToolbarID = "tlbMain";
var msTabID = "tabVerwaltung";
var msMasterRecordID = "MasterRecordID";
var msRecordID = "RecordID";
var msModuleID = "ModuleID";
var msFormNameID = "FormName";
var msRightsID = "Rights";
var msActionID = "Action";
var msMasterIDs = "MasterIDs";
var msOptionalData = "OptionalData";
var mlTimerMilliSeconds = 750;



// --------------------------------------------------------------
// allgemeine Routinen
// --------------------------------------------------------------
function kcsDateChooser_TextChanged(oDateChooser, newText, oEvent)
{
   if (newText=='') oDateChooser.setValue(null);
}
function kcsDateChooser_BeforeDropDown(oDateChooser, dropDownPanel, oEvent)
{
   if (oDateChooser.getValue() == null) oDateChooser.setValue(new Date());
}


function kcs_getWindowHeight()
{
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) 
    {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
    {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
    {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    return myHeight;
}
function kcs_getWindowWidth()
{
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) 
    {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
    {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
    {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    return myWidth;
}


// --------------------------------------------------------------
// liefert den aktuellen Tree oder legt diesen fest
// --------------------------------------------------------------
function kcs_getTreeview()
{
    return mobjTree;
}
function kcs_setTreeview(TreeObject)
{
    mobjTree = TreeObject;
}
function kcs_getSelectedNode()
{
    return mobjTree.getSelectedNode();
}


// --------------------------------------------------------------
// liefert das mit index (0-basiert) angegebene Register
// --------------------------------------------------------------
function kcs_getTabItem(index)
{
    var ultraTab = igtab_getTabById(msTabID); 
    return ultraTab.Tabs[index]; 
}

// --------------------------------------------------------------
// liefert das aktuelle Menu
// --------------------------------------------------------------
function kcs_getMenu()
{
    return igmenu_getMenuById(msMenuID);
}

// --------------------------------------------------------------
// liefert das aktuelle Node im Tree
// --------------------------------------------------------------
function kcs_getCurrentNode()
{
    return igmenu_getMenuById(msMenuID);
}

// --------------------------------------------------------------
// liefert die aktuelle Symbolleiste
// --------------------------------------------------------------
function kcs_getToolbar()
{
    return igtbar_getToolbarById(msToolbarID);
}

// --------------------------------------------------------------
// liefert des aktuelle document-Objekt im Frame
// --------------------------------------------------------------
function kcs_getFrameDocument()
{
    var objDocument = null;
    var objFrame = document.getElementById(msSubformFrameID);
    if (objFrame != null)
    {
        if (objFrame.contentDocument)
            objDocument=objFrame.contentDocument;
        else
            objDocument=frames[msSubformFrameID].document;
    }
    return objDocument;
}

// --------------------------------------------------------------
// liefert die aktuelle ASPX-Seite
// --------------------------------------------------------------
function kcs_getCurrentSubform()
{
    return kcs_getFrameDocument().getElementById(msSubformID);
}

// --------------------------------------------------------------
// liefert die aktuell eingestellte Aktion des aktuellen Objekts
// --------------------------------------------------------------
function kcs_getSubformAction()
{
    var objField = kcs_getFrameDocument().getElementById(msActionID);
    if (objField != null)
        return objField.value;
    else
        return "";
}
// --------------------------------------------------------------
// definiert die aktuelle Aktion des aktuellen Objekts
// --------------------------------------------------------------
function kcs_setSubformAction(Action)
{
    var objField = kcs_getFrameDocument().getElementById(msActionID);
    if (objField != null)
        objField.value = Action;
}

// --------------------------------------------------------------
// liefert die DatensatzID des aktuellen Objekts
// --------------------------------------------------------------
function kcs_getSubformRecordID()
{
    var objField = kcs_getFrameDocument().getElementById(msRecordID);
    if (objField != null)
        return objField.value;
    else
        return "0";
}

// --------------------------------------------------------------
// liefert die DatensatzID des aktuellen Haupt-Objekts
// --------------------------------------------------------------
function kcs_getSubformMasterRecordID()
{
    var objField = kcs_getFrameDocument().getElementById(msMasterRecordID);
    if (objField != null)
        return objField.value;
    else
        return "0";
}

// --------------------------------------------------------------
// liefert die ModulID des aktuellen Objekts
// --------------------------------------------------------------
function kcs_getSubformModuleID()
{
    var objField = kcs_getFrameDocument().getElementById(msModuleID);
    if (objField != null)
        return objField.value;
    else
        return "0";
}

// --------------------------------------------------------------
// liefert zugeordnete MasterIDs des aktuellen Objekts
// --------------------------------------------------------------
function kcs_getSubformMasterIDs()
{
    var objField = kcs_getFrameDocument().getElementById(msMasterIDs);
    if (objField != null)
        return objField.value;
    else
        return "";
}

// --------------------------------------------------------------
// liefert den Namen (ASPX) der aktuell angezeigten Seite
// --------------------------------------------------------------
function kcs_getSubformName()
{
    var objField = kcs_getFrameDocument().getElementById(msFormNameID);
    if (objField != null)
        return objField.value;
    else
        return "";
}

// --------------------------------------------------------------
// liefert die Berechtigungen des aktuellen Objekts
// --------------------------------------------------------------
function kcs_getSubformRights()
{
    var objField = kcs_getFrameDocument().getElementById(msRightsID);
    if (objField != null)
        return parseInt(objField.value);
    else
        return 0;
}

// --------------------------------------------------------------
// liefert den Wert des angegebenen Objekts/Feldes
// --------------------------------------------------------------
function kcs_getSubformValue(ObjectName)
{
    var objField = kcs_getFrameDocument().getElementById(ObjectName);
    if (objField != null)
        return objField.value;
    else
        return "";
}

// --------------------------------------------------------------
// lädt die angegebene ASPX-Seite in das Anzeige-Frame
// --------------------------------------------------------------
function kcs_loadSubform(url)
{
    if (url != null && url.length > 0)
    {
        var objFrame = ig_csom.getElementById(msSubformFrameID);
        objFrame.src = url;
        checkForSubform();
    }
}

// --------------------------------------------------------------
// sendet das angegebene Formular an den Server zurück
// --------------------------------------------------------------
function kcs_submitSubform(action)
{
    var sUrl = "";
    var bRefresh = false;
    var bExpanded = true;
    var form = null;
    var iNodeCount = 0;
    
    // Url zusammensetzen
    kcs_setSubformAction(action);
    sUrl = kcs_getSubformName() + "?ID=" + kcs_getSubformRecordID();
    if (kcs_getSubformMasterIDs().length > 0)
        sUrl = sUrl + "&" + kcs_getSubformMasterIDs();
    
    form = kcs_getCurrentSubform();
    if (form != null)
    {
        // senden
        form.action = sUrl;
        form.submit();
        checkForSubform();
    }
}

// --------------------------------------------------------------
// liefert den Wert einer Formularvariablen als STRING
// --------------------------------------------------------------
function kcs_getStringValue(varName)
{
    var objIDField = kcs_getFrameDocument().getElementById(varName);
    if (objIDField != null)
        return objIDField.value;
    else
        return "";
}

// --------------------------------------------------------------
// liefert den Wert einer Formularvariablen als INT
// --------------------------------------------------------------
function kcs_getIntValue(varName)
{
    var objIDField = kcs_getFrameDocument().getElementById(varName);
    if (objIDField != null)
        return parseInt(objIDField.value);
    else
        return 0;
}

// --------------------------------------------------------------
// liefert einen Menüpunkt anhand seines TAGs
// --------------------------------------------------------------
function kcs_getMenuItemFromTag(tag, items)
{
    // Menüpunkt anhand des TAG suchen
    for(var i = 0; i < items.length; i++)
    {
        if(items[i].getTag() == tag)
	        return items[i];
		
        var returnVal = kcs_getMenuItemFromTag(tag, items[i].getItems());
				
        if(returnVal != null)
	        return returnVal;
    }	
    return null;
}


// --------------------------------------------------------------
// aktiviert Menüpunkte und Symbole anhand der Berechtigungen
// --------------------------------------------------------------
function CheckMenuAndToolbar(Rights)
{
    // Prüfen der Rechte 
    
    // Symbolleiste verarbeiten
    var objToolbar = kcs_getToolbar();
    if (objToolbar != null)
    {
        var objButtonSave = objToolbar.Items.fromKey("Save");
        var objButtonNew = objToolbar.Items.fromKey("New");
        var objButtonDelete = objToolbar.Items.fromKey("Delete");
        var objButtonPrint = objToolbar.Items.fromKey("Print");
        if (objButtonSave != null)
            objButtonSave.setEnabled((Rights & 2) == 2);
        if (objButtonNew != null)
            objButtonNew.setEnabled((Rights & 4) == 4);
        if (objButtonDelete != null)
            objButtonDelete.setEnabled((Rights & 8) == 8);
        if (objButtonPrint != null)
            objButtonPrint.setEnabled((Rights & 16) == 16);
    }
    
    // Menü verarbeiten
    var objMenu = kcs_getMenu();
    if (objMenu != null)
    {
        var objMenuItems = objMenu.getItems();
        var objMenuItemSave = kcs_getMenuItemFromTag("Save", objMenuItems);
        var objMenuItemNew = kcs_getMenuItemFromTag("New", objMenuItems);
        var objMenuItemDelete = kcs_getMenuItemFromTag("Delete", objMenuItems);
        var objMenuItemPrint = kcs_getMenuItemFromTag("Print", objMenuItems);
        if (objMenuItemSave != null)
            objMenuItemSave.setEnabled((Rights & 2) == 2);
        if (objMenuItemNew != null)
            objMenuItemNew.setEnabled((Rights & 4) == 4);
        if (objMenuItemDelete != null)
            objMenuItemDelete.setEnabled((Rights & 8) == 8);
        if (objMenuItemPrint != null)
            objMenuItemPrint.setEnabled((Rights & 16) == 16);
    }
}


// --------------------------------------------------------------
// prüfen, ob ein Unterformular geladen ist
// --------------------------------------------------------------
function checkForSubform()
{
    if (!mbTimerIsRunning)
    {
        mbTimerIsRunning = true;
        mlTimerID=setTimeout("checkForSubform()",mlTimerMilliSeconds);
    }
    else 
    {
        clearTimeout(mlTimerID);
        mlTimerID = null;
        mbTimerIsRunning = false;
        if (kcs_getCurrentSubform() != null && kcs_getSubformRecordID() != "")
        {
            // gefunden
            // Verarbeitungsroutine starten
            onSubformLoaded();
            // EventHandler aktivieren für "submit-event" --> WICHTIG: keine Klammern an den Funktionsnamen anhängen
            kcs_getCurrentSubform().onsubmit = checkForSubform;
        }
        else
        {
            // nicht gefunden, weiter warten
            mbTimerIsRunning = true;
            mlTimerID = setTimeout("checkForSubform()", mlTimerMilliSeconds);
        }
    }
}


// --------------------------------------------------------------
// Event-Handler, Unterformular wurde geladen
// --------------------------------------------------------------
function onSubformLoaded()
{
    // Timer deaktivieren
    if (mlTimerIDLoaded != null)
    {
        clearTimeout(mlTimerIDLoaded);
    }
    
    // Menüpunkte und Symbolleiste verarbeiten
    var lRights = kcs_getSubformRights();
    if (lRights != null) CheckMenuAndToolbar(lRights);
    // Datum / Benutzer der Erfassung
    var sErfasstVon = kcs_getStringValue("ErfasstVon")
    if (sErfasstVon == null) sErfasstVon = "";
    var sErfasstAm = kcs_getStringValue("ErfasstAm");
    if (sErfasstAm == null) sErfasstAm = "";
    var sGeaendertVon = kcs_getStringValue("GeaendertVon")
    if (sGeaendertVon == null) sGeaendertVon = "";
    var sGeaendertAm = kcs_getStringValue("GeaendertAm");
    if (sGeaendertAm == null) sGeaendertAm = "";
    var objlblErfasst = ig_csom.getElementById("lblErfasst");
    if (objlblErfasst != null)
        ig_csom.setText(objlblErfasst, " " + sErfasstVon + "/" + sErfasstAm);
    var objlblGeaendert = ig_csom.getElementById("lblGeaendert");
    if (objlblGeaendert != null)
        ig_csom.setText(objlblGeaendert, " " + sGeaendertVon + "/" + sGeaendertAm);
    // Modul, Datensatz
    var objModuleID = ig_csom.getElementById("ModuleID");
    if (objModuleID != null)
    {
        var sValue = kcs_getStringValue(msModuleID);
        if (sValue == null) sValue = '';
        if (objModuleID.value == sValue)
        {
            var objRecordID = ig_csom.getElementById("RecordID");
            if (objRecordID != null)
            {
                sValue = kcs_getStringValue(msRecordID);
                if (sValue == null) sValue = "";
                objRecordID.value = sValue;
            }
            // Infozeilen und Titel
            var sValue = kcs_getStringValue(msOptionalData);
            if (sValue == null) sValue = "";
            if (sValue != "")
            {
                var arr = sValue.split("|");
                document.title = arr[0];
                // Info 1
                if (arr.length > 1)
                {
                    if (document.title != arr[0] + ": " + arr[1])
                        document.title = arr[0] + ": " + arr[1];
                    var objInfo = ig_csom.getElementById("lblInfo1");
                    if (objInfo != null) ig_csom.setText(objInfo, arr[1]);
                }
                else
                {
                    ig_csom.setText(objInfo, "");
                }
                // Info 2
                if (arr.length > 2)
                {
                    var objInfo = ig_csom.getElementById("lblInfo2");
                    if (objInfo != null) ig_csom.setText(objInfo, arr[2]);
                }
                else
                {
                    ig_csom.setText(objInfo, "");
                }
            }
        }
    }
    // Timer wieder aktivieren
    mlTimerIDLoaded = setTimeout("onSubformLoaded()", mlTimerMilliSeconds);
}
