// ===============================================================================================================================
// Prüft den CheckedStatus einer RadioBox
// ===============================================================================================================================
function isCheckedRadioBox(aobj) {
  if ( aobj.checked == true ) {
    return true;
  }
  else {
    return false;
  }
}


// ===============================================================================================================================
// Setzt Fokus auf ein Element in einer SelectBox
// ===============================================================================================================================
function SetSelectBoxFocus(aDivName, aElement) {
  objDiv = GetObjDiv( aDivName );
  if ( (objDiv.style.display != "none") && ( aElement != null ) ) {  
    if(aElement.options[0] != null) {
      aElement.focus();
      aElement.options[0].selected = true;
    }
  }
}


// ===============================================================================================================================
// Setzt einen Wert in einem Input-Typefeld auf den Defaultwert
// ===============================================================================================================================
function SelectedValue(aobjinput, avalue) {
  if ( aobjinput != null ) {
    if ( aobjinput.value.toLowerCase() == avalue.toLowerCase() ) {    
      aobjinput.select();
    }
  }
}

// ===============================================================================================================================
// Setzt einen DefauktWert in einem Input-Typefeld, wenn dieser leer ist
// ===============================================================================================================================
function SetDefaultValueIfEmpty(aobjinput, avalue) {
  if ( aobjinput != null ) {
    if (aobjinput.value.toLowerCase() == "") {
      aobjinput.value = avalue;
    }
  }
}

// ===============================================================================================================================
// Zeigt ein verdecktes Div-Element an
// ===============================================================================================================================
function VisibleDivElementByLink(aElementID) {
  if (GetObjDiv(aElementID).style.display.toLowerCase() == "none") {
    GetObjDiv(aElementID).style.display = "inline";
  }
}

// ===============================================================================================================================
// Versteckt ein angezeigtes Div-Element
// ===============================================================================================================================
function HideDivElementByLink(aElementID) {
  var lid = GetObjDiv(aElementID);
  if ( (lid.style.display.toLowerCase() == "inline") || 
       (lid.style.display.toLowerCase() == "block") ||
       (lid.style.display.toLowerCase() == "") ) {
    lid.style.display = "none";
  }
}

// ===============================================================================================================================
// Zeigt ein verdecktes Div-Element an oder versteckt es
// ===============================================================================================================================
function showDivElementByLink(aElementID) {
  if (GetObjDiv(aElementID).style.display.toLowerCase() == "none") {
    GetObjDiv(aElementID).style.display = "block";
  }
  else {
    GetObjDiv(aElementID).style.display = "none";
  }
}

// ===============================================================================================================================
// Schließt ein DIV, wenn es geöffnet ist
// ===============================================================================================================================
function CloseDivShowElements(aElementID, aNewButton) {
  var WindowsObject = window.event.srcElement;
  if ( ( GetObjDiv(aElementID).style.display = "block" ) && (WindowsObject.className != aNewButton) ) {
    GetObjDiv(aElementID).style.display = "none";    
  }
}

// ===============================================================================================================================
// Befüllt das VisibleElement mit Werten der Select-Optionliste
// ===============================================================================================================================
function FillValuesToVisibleElement(aoptionnameselect, avisibleselectelementname) {
  var i = 0;
  avisibleselectelementname.value = "";
  for (i = 0; i < aoptionnameselect.length; i++) {
    if ( avisibleselectelementname.value.length == 0 ) {
      avisibleselectelementname.value = aoptionnameselect.options[i].text;
    }
    else {
      avisibleselectelementname.value = avisibleselectelementname.value + ", " + aoptionnameselect.options[i].text;
    }
  }
}

// ===============================================================================================================================
// Befüllt das NotesFeld aus einer HiddenNotesSelectBox bei Klick auf ein Selektiertes Element
// ===============================================================================================================================
function FillNotesByHiddenFields(aoptionnameselect, aoptionhiddennotes, anotesField) {
  var lselectedIndex = aoptionnameselect.selectedIndex;
  if ( lselectedIndex != -1 ) {
    if (aoptionhiddennotes.options[lselectedIndex] != null) {
      anotesField.value = aoptionhiddennotes.options[lselectedIndex].text;
    }
    else {
      anotesField.value = "";

      for (i = aoptionhiddennotes.length; i < aoptionnameselect.length; i++ ) {
        var loption = new Option(anotesField.value,anotesField.text,false,true);
        aoptionhiddennotes.options[i] = loption;
      }
    }
  }
}

// ===============================================================================================================================
// Verschieben von Werten aus einer SelectBox in zwei andere SelectBoxen, die vom Typ abhängig sind
// ===============================================================================================================================
function AddGWSkillUserOrGroupOptionValue( objAllValues, objSelectedValues, objSelectedValues2, aTypeList) {
  if ( objAllValues.selectedIndex > -1 ) {
    var SelectedArray = new Array();
    // Läuft die Schleife einmal komplett durch, um alle selektierten Werte abzuarbeiten und auf die andere Seite zu schieben
    for ( var i = 0; i < objAllValues.length; i++) {

      // Ist ein Wert selektiert, dann wird er in die SelectedBox verschoben
      if ( objAllValues.options[i].selected) {
        var AllValue = objAllValues.options[i].value;
        var AllText = objAllValues.options[i].text;

        lTypeList = aTypeList.value;

        // Den Typ des Values prüfen und dann entscheiden, in welche der beiden Selectboxen verschoben werden soll
        if ( lTypeList.indexOf(AllValue) == -1 ) {
          CreateNewOptionEntry( objSelectedValues2, AllText, AllValue);
        }
        else {
          CreateNewOptionEntry( objSelectedValues, AllText, AllValue);
        }

        lIndex = i;
        if (lIndex > 0) {
          objAllValues.options[ lIndex-1].selected = true;
        }
        SelectedArray[SelectedArray.length] = i;
      }
    }

    RemoveSelectedOptions(SelectedArray, objAllValues);
  }
}

// ===============================================================================================================================
// Erzeugt einen Neuen Eintrag in einer Select-Option-Liste
// ===============================================================================================================================
function CreateNewOptionEntry( aObj, atext, avalue) {
  aObj.options[aObj.length] = new Option(atext,avalue,true,false);

  // Wenn in der selektierten AuswahlListe ein Wert eingepflegt wird,dann wird der Fokus auf diesen gesetzt
  aObj.selectedIndex = -1;
  aObj.options[aObj.length-1].selected = true;
}


// ===============================================================================================================================
// Mit diesem Array werden mehrfach ausgewählte Werte nacheinander aus der SelectBox gelöscht, allerdings von hinten 
// nach vorne, da ansonsten der Index eines Wertes verfälscht wird, wenn er nach und nach gelöscht würde.
// Reverse dreht im EndEffekt die Werte um, so dass der zuletzt ausgewählte als erster gelöscht und so weiter
// ===============================================================================================================================
function RemoveSelectedOptions( aArray, aSelectObj) {
  aArray.reverse();
  for ( var i = 0; i < aArray.length; i++) {
    x = i;
    aSelectObj.options[ aArray[x] ] = null;
  }    

  aSelectObj.selectedIndex = -1;
}

// ===============================================================================================================================
// Verschieben und Befüllen der ListBoxdaten
// ===============================================================================================================================
function AddGWSkillOptionValue( objAllValues, objSelectedValues) {
  if ( objAllValues.selectedIndex > -1 ) {

    var SelValueList = '';
    for ( var i=0; i < objSelectedValues.length; i++) {
      SelValueList = SelValueList + objSelectedValues.options[i].value + ', ';
    }

    var SelectedArray = new Array();
    // Läuft die Schleife einmal komplett durch, um alle selektierten Werte abzuarbeiten und auf die andere Seite zu schieben
    for ( var i = 0; i < objAllValues.length; i++) {

      // Ist ein Wert selektiert, dann wird er in die SelectedBox verschoben
      if ( objAllValues.options[i].selected) {
        var AllValue = objAllValues.options[i].value;
        var AllText = objAllValues.options[i].text;
        
        // wenn der Wert nicht bereits ausgewählt wurde, ansonsten passiert nichts
        if ( SelValueList.indexOf(AllValue) == -1 ) {
          CreateNewOptionEntry( objSelectedValues, AllText, AllValue);

          lIndex = i;
          if (lIndex > 0) {
            objAllValues.options[ lIndex-1].selected = true;
          }
          SelectedArray[SelectedArray.length] = i;
        }
      }
    }

    RemoveSelectedOptions( SelectedArray, objAllValues)
  }
}

// ===============================================================================================================================
// Verschieben und Befüllen der ListBoxdaten
// ===============================================================================================================================
function MoveSelectedSingleOptionValue( objAllValues, objSelectedValues) {
  if (objAllValues.length > 0) {
    var AllValue = objAllValues.options[0].value;
    var AllText = objAllValues.options[0].text;

    objSelectedValues.options[objSelectedValues.length] = new Option(AllText,AllValue,true,false);
    objAllValues.options[0] = null;
  }
}

// ===============================================================================================================================
// Befüllt ein TextFeld mit dem Selektierten Wert der OptionListe, löscht jedoch nicht den ausgewählten Wert in der optionliste
// ===============================================================================================================================
function AddSingleOptionUrl( aoptionname, aselectname, aselecthiddentext, aselectedindex, ainternalurl) {
  if (ainternalurl.checked) {
    if (aselectedindex.value.length > 0) {
      aselectname.value = aoptionname.options[aselectedindex.value].text;
      aselecthiddentext.value = aoptionname.options[aselectedindex.value].value;
    }
  }
}

// ===============================================================================================================================
// Befüllt ein TextFeld mit dem Selektierten Wert der OptionListe, löscht jedoch nicht den ausgewählten Wert in der optionliste
// ===============================================================================================================================
function AddSingleExtUrl( ainputname, ainputvalue, aselectname, aselecthiddentext, aexternalurl) {
  if (aexternalurl.checked) {
    aselectname.value = ainputname.value;
    aselecthiddentext.value = ainputvalue.value;
    ainputname.value = "";
    ainputvalue.value = "";
  }
}

// ===============================================================================================================================
// Schreibt die geänderten Notizen in die vorgesehene HiddenFieldSelectBox an den gleichen Index wie in SelectBox
// ===============================================================================================================================
function SetHiddenFieldByNotes(ahiddenselectedindex, aoptionhiddennotes, anotesField) {
  var lselectedindex = ahiddenselectedindex.value;

  if ( (lselectedindex != null) && 
       (lselectedindex != -1) ) {

    if (aoptionhiddennotes.options[lselectedindex] != null) {
      aoptionhiddennotes.options[lselectedindex].value = anotesField.value;
      aoptionhiddennotes.options[lselectedindex].text = anotesField.value;
    }
    else {
      for (var i = aoptionhiddennotes.length; i <= parseInt(lselectedindex); i++) {

        if ( i == parseInt(lselectedindex) ) {
          loptionhiddenvalue = new Option(anotesField.value,anotesField.text,false,true);          
        }
        else {
          loptionhiddenvalue = new Option("","",false,true);
        }
        aoptionhiddennotes.options[i] = loptionhiddenvalue;        
      }
    }
  }
  else {
    loptionhiddenvalue = new Option(anotesField.value,anotesField.text,false,true);
    aoptionhiddennotes.options[aoptionhiddennotes.length] = loptionhiddenvalue;
  }
}

// ===============================================================================================================================
// Löscht eine Notiz aus der HiddenFieldSelectBox am gleichen Index wie in SelectBox
// ===============================================================================================================================
function DeleteHiddenFieldByNotes(ahiddenselectedindex, aoptionhiddennotes, anotesField) {
  if ( (ahiddenselectedindex != null) && (ahiddenselectedindex.value != -1) )  {
    if (aoptionhiddennotes.options[ahiddenselectedindex.value] != null) {
      if (aoptionhiddennotes.options[ahiddenselectedindex.value].text == anotesField.value) {
        anotesField.value = "";
      }
      aoptionhiddennotes.options[ahiddenselectedindex.value] = null;
    }
  }
}

// ===============================================================================================================================
// Löscht eine Notiz aus der HiddenFieldSelectBox am Index 0
// ===============================================================================================================================
function DeleteSingleHiddenFieldByNotes(aoptionhiddennotes, anotesField) {

  if (aoptionhiddennotes.length > 0)  {
    if (aoptionhiddennotes.options[0] != null) {
      if (aoptionhiddennotes.options[0].text == anotesField.value) {
        anotesField.value = "";
      }
      aoptionhiddennotes.options[0] = null;
    }
  }
}

// ===============================================================================================================================
// Löscht eine Notiz aus der HiddenFieldSelectBox am Index 0
// ===============================================================================================================================
function DeleteSingleHiddenFieldByNotes(aoptionhiddennotes, anotesField) {
  if (aoptionhiddennotes.options[0] != null) {
    anotesField.value = "";
    aoptionhiddennotes.options[0] = null;
  }
}

// ===============================================================================================================================
// Der SelectedIndex der SelectBox wird hier zwischengespeichert
// ===============================================================================================================================
function SetSelectedIndex(aoptionnameselect, ahiddenselectedindex) {
  if (aoptionnameselect.selectedIndex != -1) {
    for ( var i=0; i < aoptionnameselect.length; i++) {
      if ( aoptionnameselect.options[i].selected == true ) {
        ahiddenselectedindex.value = i.toString(10);
        break;
      }
    }
  }
  else {
    ahiddenselectedindex.value = "0";
  }
}

// ===============================================================================================================================
// Löscht den Inhalt des TextNotesFeldes, für den Fall einer SingleAuswahl
// ===============================================================================================================================
function ClearTextField(aname) {
  aname.value = "";
}

// ===============================================================================================================================
// Füllt ein HiddenTextFeld mit Werten einer SelectBox,  Komma separiert
// ===============================================================================================================================
function FillHiddenValueByOptions(aoptionname, ahiddenfield) {
  if (aoptionname.options != null) {
    var lfillvalue = "";
    for( var i = 0; i < aoptionname.length; i++) {
      if (i == 0) {
        lfillvalue = aoptionname.options[i].value;
      }
      else {
        lfillvalue = lfillvalue + "," + aoptionname.options[i].value;
      }
    }
    ahiddenfield.value = lfillvalue;
  }
}

// ===============================================================================================================================
// Markiert den vollständigen Text bei onClick
// ===============================================================================================================================
function SelectCurrentText(objinput) {
  objinput.select();
}

// ===============================================================================================================================
// Füllt den HiddenNotesStr aus der HiddenNotesFields-Options, Komma separiert
// ===============================================================================================================================
function FillHiddenNotesStr(ahiddennotesfields, ahiddennotesstr, aseparator) {
  if (ahiddennotesfields.options != null) {
    var lfillvalue = "";
    for( var i = 0; i < ahiddennotesfields.length; i++) {
      if (i == 0) {
        lfillvalue = ahiddennotesfields.options[i].text;
      }
      else {
        lfillvalue = lfillvalue + aseparator + ahiddennotesfields.options[i].text;
      }
    }
    ahiddennotesstr.value = lfillvalue;
  }
}

// ===============================================================================================================================
// Schaltet zwischen zwei Ansichten Link
// ===============================================================================================================================
function SwitchLinkView(aLink1,aLink2, aElementID1, aElementID2, aExtUrlValue) {
  if (aLink1.checked) {
    GetObjDiv(aElementID1).style.display = "block";
    GetObjDiv(aElementID2).style.display = "none";
    aLink2.checked = false;
  }
  else {
    GetObjDiv(aElementID1).style.display = "none";
    GetObjDiv(aElementID2).style.display = "block";
    aLink2.checked = true;
  }

  if (aExtUrlValue.value == "") {
    aExtUrlValue.value = "http://";
  }

}

// ===============================================================================================================================
// Setzt den Status Interner / Externer Link in ein HiddenFeld
// ===============================================================================================================================
function AddLinkState(alinkstate,ainternalstate,aexternalstate) {
  if (ainternalstate.checked) {
    alinkstate.value = "internal";
  }
  else {
    alinkstate.value = "external";    
  }  
}

var DefaultFontColor;

// ===============================================================================================================================
// Ändert die SchriftFarbe
// ===============================================================================================================================
function ChangeFontColor(aobj, acolor) {
  DefaultFontColor = aobj.style.color;
  aobj.style.color = acolor;
}

// ===============================================================================================================================
// Setzt die SchriftFarbe zurück
// ===============================================================================================================================
function SetDefaultFontColor(aobj) {
  aobj.style.color = DefaultFontColor;
}
                           