// Wenn ein Link in einer Zeile nicht abgesetzt werden soll, dann BlockHref setzen
var BlockHREF = false;

// 2 zweidimensionale Arrays für die Checkbox-Integration in einer Liste:
// ----------------------------------------------------------------------
// 1. Dimension: immer die entsprechende Listen-GUID (wichtig bei mehreren Listen pro Seite)
// 2. Dimension: Array mit den GUIDs aller angezeigter bzw. markierter Datensätze in der entsprechenden Liste

var arrListWithMarkedGuids = new Array();
var arrListWithCheckBoxGuids = new Array();

// ===============================================================================================================================
// setChecked: Nimmt die GUID des markierten Datensatzes in ein Array auf,
//         das beim  Ausführen einer Action durchlaufen wird
// ===============================================================================================================================
function setChecked(objInput, ListGUID){
  if (objInput.checked) {
    arrListWithMarkedGuids[ListGUID][arrListWithMarkedGuids[ListGUID].length] = objInput.value;
  }
  else {
    lHelpArray = new Array();
    for (var i=0; i < arrListWithMarkedGuids[ListGUID].length; i++) {
      if (arrListWithMarkedGuids[ListGUID][i] != objInput.value) {
        lHelpArray[lHelpArray.length] = arrListWithMarkedGuids[ListGUID][i];
      }
    }
    arrListWithMarkedGuids[ListGUID] = lHelpArray;
  }
}

// ===============================================================================================================================
// setCheckedAll:   Schreibt alle GUIDs einer Liste in ein Array,
//          das beim  Ausführen einer Action durchlaufen wird
// ===============================================================================================================================
function setCheckedAll(ListGUID){
  arrListWithMarkedGuids[ListGUID].length = 0;
  for (var i=0; i < arrListWithCheckBoxGuids[ListGUID].length; i++) {
    GetObjDiv("checkbox" + arrListWithCheckBoxGuids[ListGUID][i] + "_" + ListGUID).checked = true;
    arrListWithMarkedGuids[ListGUID][arrListWithMarkedGuids[ListGUID].length] = arrListWithCheckBoxGuids[ListGUID][i];
  }
}

// ===============================================================================================================================
// setCheckboxAction:   Aufruf einer Action aus der Liste heraus.
// Gibt die URL der Action zurück, markierte Datensätze werden kommasepariert der Action übergeben (guid=...)
// Sind keine Datensätze markiert, dann wird eine Fehlermeldung ausgegeben und ein Leerstring zurückgegeben.
// ===============================================================================================================================
function setCheckboxAction(aAction, ErrorStr, ListGUID){
  lResult = "";
  if (arrListWithMarkedGuids[ListGUID].length == 0) {
    alert(ErrorStr);
  }
  else {
    for( var i=0; i < arrListWithMarkedGuids[ListGUID].length; i++) {
      if (i==0) {
        lGUIDList = arrListWithMarkedGuids[ListGUID][i];
      }
      else {
        lGUIDList = lGUIDList + ',' + arrListWithMarkedGuids[ListGUID][i];
      }
    }

    if (aAction.indexOf('?') != -1) {
      lResult = aAction + "&guid=" + lGUIDList + "&OQS=" + ssid;
    } else {
      lResult = aAction + "?guid=" + lGUIDList + "&OQS=" + ssid;
    }
  }

  return lResult;
}

// ===============================================================================================================================
// Aktiviert JS-Fehlermeldungen
// ===============================================================================================================================
function showErrors() {
  return false;
}

// ===============================================================================================================================
// Unterbindet _EINE_ JS-Fehlermeldung und schaltet die Fehlerüberwachung anschließend wieder ein
// ===============================================================================================================================
function ignoreErrors() {
  window.onerror = showErrors;
  return true;
}

// ===============================================================================================================================
// Öffnet einen Datensatz mit der angegebenen GUID in dem dazugehörigen Formular in genesisWorld
// ===============================================================================================================================
function OpenInGW(form,guid) {
  window.onerror = ignoreErrors;
  var AxSession = new ActiveXObject('Genesis.TWCAxSession');
  AxSession.OpenInGW(form,guid);
  window.onerror = showErrors;
}

// ===============================================================================================================================
// Wechselt zwischen zwei Style-Klassen und setzt alle anderen StyleKlassen auf den Defaultwert
// ===============================================================================================================================
function switchStdListClass(aobj, aClass, aDefaultClass) {
  if ( (aobj != null ) && (StdListRows != null) ){
    var lcurrentid;
    for (var i = 0; i < StdListRows.length; i++) {
      lcurrentid = GetObjDiv(StdListRows[i]);
      if ( lcurrentid != null ) {
        lcurrentid.className = aDefaultClass;
      }
    }
    aobj.className = aClass;

    // Aktive Reihe setzen
    FActiveListRow = aobj.id;
  }
}

// ===============================================================================================================================
// Wechselt zwischen zwei Style-Klassen und setzt alle anderen StyleKlassen auf den Defaultwert, abhängig vom KeyCode
// ===============================================================================================================================
function switchStdListRowOnEvent(aClass, aDefaultClass) {
  if ( (StdListRows != null) && ( !FocusOnSearchValues) ) {
    var lactiveid;
    // Pfeiltaste nach Oben
    if ( PortalKeyDownCode == 38 ) {
      for (i = 0; i < StdListRows.length; i++) {
        if (FActiveListRow == StdListRows[i]) {
          if ( i > 0) {
            lactiveid = GetObjDiv(StdListRows[i-1]);
            switchStdListClass(lactiveid, aClass, aDefaultClass);
            FActiveListRow = StdListRows[i-1];
          }
          else if (StdListPreviousLink != "") {
            location.href = StdListPreviousLink;
          }
          break;
        }
      }
    }
    // Pfeiltaste nach unten
    else if ( PortalKeyDownCode == 40 ) {
      for (i = 0; i < StdListRows.length; i++) {
        if (FActiveListRow == StdListRows[i]) {
          if ( i < StdListRows.length-1) {
            lactiveid = GetObjDiv(StdListRows[i+1]);
            switchStdListClass(lactiveid, aClass, aDefaultClass);
            FActiveListRow = StdListRows[i+1];
          }
          else if (StdListNextLink != "") {
            location.href = StdListNextLink;
          }
          break;
        }
      }
    }
    // Pos1-Taste
    else if ( PortalKeyDownCode == 36 ) {
      lactiveid = GetObjDiv(StdListRows[0]);
      switchStdListClass(lactiveid, aClass, aDefaultClass);
      FActiveListRow = StdListRows[0];
    }
    // Ende-Taste
    else if ( PortalKeyDownCode == 35 ) {
      lactiveid = GetObjDiv(StdListRows[StdListRows.length-1]);
      switchStdListClass(lactiveid, aClass, aDefaultClass);
      FActiveListRow = StdListRows[StdListRows.length-1];
    }
    // Bild-Taste nach oben 
    else if ( PortalKeyDownCode == 33 ) {
      if (StdListPreviousLink != "") {
        location.href = StdListPreviousLink;
      }
    }
    // Bild-Taste nach unten 
    else if ( PortalKeyDownCode == 34 ) {
      if (StdListNextLink != "") {
        location.href = StdListNextLink;
      }
    }
  }

  return true;
}

// ===============================================================================================================================
// Linkt auf eine andere Seite, abhängig vom KeyCode und der Location für die aktuelle Zeile
// ===============================================================================================================================
function executeLocationOnEvent() {
  lexecute = false;
  if ( (StdListRows != null) && ( !FocusOnSearchValues) ) {
    if ( PortalKeyDownCode == 13 ) {  
      for (i = 0; i < StdListRows.length; i++) {
        if (FActiveListRow == StdListRows[i]) {
          if ( StdListRowEditForms != null) {
            if (StdListRowEditForms[i] != "") {
              document.getElementsByTagName("body")[0].style.cursor = "wait";
              location.href = StdListRowEditForms[i];
              lexecute = true;     
            }
          }
          break;
        }
      }
    }
  }
  return lexecute;
}

// ===============================================================================================================================
// Setzt einen Defaultwert, wenn die Suche ohne Suchbegriff abgesetzt wird
// ===============================================================================================================================
function setDefaultOnEmptySearchValue(aSearchValue, aDefault) {
  if (aSearchValue != null) {
    if (aSearchValue.value == '') {
      aSearchValue.value = aDefault;
    }
  }
}