<!--
/**
 * Saemtliche Funktionen fuer das Pharmacy-Object
 *
 * @package emergencyPlan
 */

function pharmacy()
{

   var tag = null;
   var monat = null;
   var yahr = null;

   /**
    * Diese Methode lädt die Informationen einer bestimmten Apotheke.
    *
    * @param Integer pharmacyID        Die ID der Apotheke, die gelöscht werden soll
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.getPharmacyByID = function(pharmacyID, pSortField,pSortDirection,pCurrentPage)
   {
      params    = new Array();
      params[0] = 'id='+pharmacyID;
      params[1] = 'sortField=' + pSortField;
      params[2] = 'sortDirection=' + pSortDirection;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/getPharmacies';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback);
   }

   /**
    * Methode veranlasst das Sortieren von Apotheken in einer Liste.
    *
    * @param String  pSortField Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage   Die Seite, die momentan angezeigt wird
    */
   this.sortPharmacies = function(pSortField,pSortDirection,pCurrentPage)
   {
      params    = new Array();
      params[0] = 'cmd=sortPharmacies';
      params[1] = 'sortDirection=' + pSortDirection;
      params[2] = 'sortField=' + pSortField;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/getPharmacies';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback, 'fileLoader');
   }

   /**
    * Methode veranlasst das Paging von Apotheken in einer Liste.
    *
    * @param Object obj            Das HTML-Dokument
    * @param String pSortField     Der Name des Feldes, nach dem sortiert werden soll
    * @param String pSortDirection Die Sortierrichtung (DESC oder ASC). Wird ASC übergeben, so wird daraus DESC und umgekehrt (nur wenn pCalledFromPager == true)
    */
   this.browsePharmacies = function(obj,pSortField,pSortDirection)
   {
      var pageNumber = ':';
      if(obj.value)
      {
         pageNumber = obj.value;
      }else
      {
         pageNumber = obj.innerHTML;
      }

      params    = new Array();
      params[0] = 'cmd=sortPharmacies';
      params[1] = 'sortDirection=' + pSortDirection;
      params[2] = 'sortField=' + pSortField;
      params[3] = 'currentPage=' + pageNumber
      mySrc     = '../emergencyPlan/getPharmacies';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback);
   }

   /**
    * Diese Methode löscht die Inhalte des Apotheken-Erstellformulars. ( bei drücken des Abbrechen-Buttons)
    *
    * @param Integer pharmacyID        Die ID der Apotheke, die gelöscht werden soll
    */
   this.resetPharmacyInfos = function(pharmacyID)
   {
      params    = new Array();
      params[0] = 'reset=ja';
      mySrc     = '../emergencyPlan/getPharmacies';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback);
   }

   /**
    * Methode als Sicherheitsabfrage bevor man eine Apotheke löscht.
    *
    * @param Integer pharmacyID     Die ID der Apotheke, die gelöscht werden soll
    * @param Integer pharmacyName   Der Nem der Apotheke, die gelöscht werden soll
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.deletePharmacy = function(pharmacyID , pharmacyName, pSortField, pSortDirection, pCurrentPage)
   {
      params    = new Array();
      params[0] = 'id='+pharmacyID;
      params[1] = 'sortField=' + pSortField;
      params[2] = 'sortDirection=' + pSortDirection;
      params[3] = 'currentPage=' + pCurrentPage;
      boDialog('confirm',"Wollen Sie die Apotheke '"+pharmacyName+"' wicklich l&ouml;schen?",null,null,pharmacyObject.deletePharmacyConfirmed,params,null,null);
      return false;
   }

   /**
    * Methode zum Löschen einer bestimmten Apotheke.
    *
    * @param Array params     die Parameter die die Methode deletePharmacy() liefert
    */
   this.deletePharmacyConfirmed = function(params)
   {
      mySrc     = '../emergencyPlan/deletePharmacy';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback);
   }

    /**
    * Methode zum Ändern des Status einer bestimmten Apotheke.
    *
    * @param Integer pharmacyID     Die ID der Apotheke dessen Status geändert werden soll
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.changePharmacyStatus = function(pharmacyID , pSortField, pSortDirection, pCurrentPage)
   {
      params    = new Array();
      params[0] = 'id='+pharmacyID;
      params[1] = 'sortField=' + pSortField;
      params[2] = 'sortDirection=' + pSortDirection;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/changePharmacyStatus';
      sendXmlHttpRequest(mySrc, 'getPharmacies', params, pharmacyObject.callback);
   }


   // Ab hier sind die Methoden für den menüpunkt Gruppen.

   /**
    * Methode veranlasst das Sortieren von Gruppen in einer Liste.
    *
    * @param String  pSortField Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage   Die Seite, die momentan angezeigt wird
    */
   this.sortGroups = function(pSortField,pSortDirection,pCurrentPage)
   {
      params    = new Array();
      params[0] = 'cmd=sortGroups';
      params[1] = 'sortDirection=' + pSortDirection;
      params[2] = 'sortField=' + pSortField;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/getGroups';
      sendXmlHttpRequest(mySrc, 'groupLists', params, pharmacyObject.callback, 'fileLoader');
   }

   /**
    * Methode veranlasst das Paging von gruppen in einer Liste.
    *
    * @param Object obj            Das HTML-Dokument
    * @param String pSortField     Der Name des Feldes, nach dem sortiert werden soll
    * @param String pSortDirection Die Sortierrichtung (DESC oder ASC). Wird ASC übergeben, so wird daraus DESC und umgekehrt (nur wenn pCalledFromPager == true)
    */
   this.browseGroups = function(obj,pSortField,pSortDirection)
   {
      var pageNumber = ':';
      if(obj.value)
      {
         pageNumber = obj.value;
      }else
      {
         pageNumber = obj.innerHTML;
      }

      params    = new Array();
      params[0] = 'cmd=sortGroups';
      params[1] = 'sortDirection=' + pSortDirection;
      params[2] = 'sortField=' + pSortField;
      params[3] = 'currentPage=' + pageNumber
      mySrc     = '../emergencyPlan/getGroups';
      sendXmlHttpRequest(mySrc, 'groupLists', params, pharmacyObject.callback);
   }

   /**
    * Methode zum Löschen einer bestimmten Gruppe (Mit Confirm Abfrage).
    *
    * @param Integer groupID           Die ID der Gruppe, die gelöscht werden soll
    * @param String  groupName         Der Name der Gruppe, die gelöscht werden soll
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.deleteGroup = function(groupID , groupName , pSortField,pSortDirection,pCurrentPage)
   {
     params    = new Array();
     params[0] = 'id='+groupID;
     params[1] = 'sortField=' + pSortField;
     params[2] = 'sortDirection=' + pSortDirection;
     params[3] = 'currentPage=' + pCurrentPage;
     boDialog('confirm',"Wollen Sie die Gruppe '"+groupName+"' wicklich l&ouml;schen?",null,null,pharmacyObject.deleteGroupConfirmed,params,null,null);
     return false;
   }

   /**
    * Methode zum Löschen einer bestimmten gruppe.
    *
    * @param Array params     Array mit den Parametern der methode deleteGroup().
    */
   this.deleteGroupConfirmed = function(params)
   {
      mySrc     = '../emergencyPlan/deleteGroup';
      sendXmlHttpRequest(mySrc, 'groupLists', params, pharmacyObject.callback);
   }

   /**
    * Methode zur Bearbeitung einer Gruppe.
    *
    * @param Integer groupID     Die ID der Gruppe, die bearbeitet werden soll
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.editGroup = function(groupID, pSortField, pSortDirection, pCurrentPage)
   {
      dragAndDropObject.makeDragable('groupDetails', 'Gruppe bearbeiten');
      params    = new Array();
      params[0] = 'id='+groupID;
      params[1] = 'sortField=' + pSortField;
      params[2] = 'sortDirection=' + pSortDirection;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/editGroup';
      sendXmlHttpRequest(mySrc, 'groupDetailsContent', params, pharmacyObject.callback);
   }

   /**
    * Methode zum Ändern des Status einer bestimmten Gruppe.
    *
    * @param Integer groupID     Die ID der gruppe dessn Status geändert werden soll.
    * @param String  pSortField        Der Name des Feldes, nach dem sortiert werden soll
    * @param String  pSortDirection    Die Sortierrichtung (DESC oder ASC)
    * @param Integer pCurrentPage      Die Seite, die momentan angezeigt wird
    */
   this.changeGroupStatus = function(groupID, pSortField, pSortDirection, pCurrentPage)
   {
      params    = new Array();
      params[0] = 'id='+groupID;
      params[1] = 'sortField=' + pSortField;
      params[2] = 'sortDirection=' + pSortDirection;
      params[3] = 'currentPage=' + pCurrentPage;
      mySrc     = '../emergencyPlan/changeGroupStatus';
      sendXmlHttpRequest(mySrc, 'groupLists', params, pharmacyObject.callback);
   }

   /**
    * Methode fügt eine Apotheke zu einer Gruppe hinzu.
    *
    * @param Integer groupID        Die ID der gruppe zu der die Apotheke hinzugefügt werden soll.
    * @param Integer pharmacyID     Die ID der Apotheke die zur Gruppe gehören soll.
    */
   this.addPharmacyToGroup = function( pharmacyID  )
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inGroup = document.getElementById('inGroup').firstChild.nextSibling;
      var outerGroup = document.getElementById('outerGroup').firstChild.nextSibling;

      // der Add-Icon wird hier geschnappt.
      var apoName = pharmacy.nextSibling;
      var icon = pharmacy.firstChild;
      var link = pharmacy;
      var tr   = link.parentNode.parentNode;
      outerGroup.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Add" , "Delete");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;
      link.appendChild(icon);
      td.appendChild(apoName);
      td.appendChild(link);
      tr.appendChild(td);

      inGroup.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.deletePharmacyFromGroup( '"+pharmacyID+"' )");
   }


   /**
    * Löscht eine Apotheke aus einer Gruppe.
    *
    * @param Integer groupID        Die ID der gruppe aus der die Apotheke gelöscht werden soll.
    * @param Integer pharmacyID     Die ID der Apotheke die aus der Gruppe gelöscht werden soll.
    */
   this.deletePharmacyFromGroup = function( pharmacyID )
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inGroup = document.getElementById('inGroup').firstChild.nextSibling;
      var outerGroup = document.getElementById('outerGroup').firstChild.nextSibling;
      var apoName = pharmacy.parentNode.firstChild;
      var link = pharmacy;
      var tr   = pharmacy.parentNode.parentNode;
      var icon = pharmacy.firstChild;
      inGroup.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Delete" , "Add");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;
      link.appendChild(icon);
      td.appendChild(link);
      td.appendChild(apoName);
      tr.appendChild(td);
      outerGroup.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.addPharmacyToGroup( '"+pharmacyID+"' )");
   }

   this.savePharmaciesToGroup = function(pSortField, pSortDirection, pCurrentPage)
   {
      var pharmaciesOn = new Array();
      var pharmaciesOut = new Array();
      var groupID = document.getElementById('group_id').value;
      var inGroup = document.getElementById('inGroup').firstChild.nextSibling;
      var outerGroup = document.getElementById('outerGroup').firstChild.nextSibling;
      var tableContentOn = inGroup.getElementsByTagName('A');
      var tableContentOuter = outerGroup.getElementsByTagName('A');
      var groupName = document.getElementById('gName').value;

      for (var i=0 ; i< tableContentOn.length ; i++)
      {
         pharmaciesOn[i] = tableContentOn[i].id;
      }

      for (var i=0 ; i< tableContentOuter.length ; i++)
      {
         pharmaciesOut[i] = tableContentOuter[i].id;
      }

      params    = new Array();
      params[0] = 'groupID='+groupID;
      params[1] = 'pharmaciesOn='+pharmaciesOn;
      params[2] = 'pharmaciesOut='+pharmaciesOut;
      params[3] = 'sortField=' + pSortField;
      params[4] = 'sortDirection=' + pSortDirection;
      params[5] = 'currentPage=' + pCurrentPage;
      params[6] = 'groupName=' + groupName;
      mySrc     = '../emergencyPlan/savePharmaciesToGroup';
      sendXmlHttpRequest(mySrc, 'groupList', params, pharmacyObject.callback);
   }

   /**
    * holt das gecklikte Datum aus dem Calender
    *
    * @param Calender calender     der Calender.js selbst
    */
   this.getDate = function(calendar)
   {
      if(calendar != undefined)
      {
         pharmacyObject.tag = calendar.date.getDate();
         pharmacyObject.monat = calendar.date.getMonth()+1;
         pharmacyObject.jahr = calendar.date.getFullYear();
      }

      params    = new Array();
      params[0] = 'day='+pharmacyObject.tag;
      params[1] = 'month='+pharmacyObject.monat;
      params[2] = 'year='+pharmacyObject.jahr;
      mySrc     = '../emergencyPlan/getCalendarDate';
      sendXmlHttpRequest(mySrc, 'managePlan', params, pharmacyObject.callback);
   }

   /**
    * Öffnet das DragAndDrop-Menü um Gruppen in den Primären-Notdienst-Kalender zu bearbeiten (Hinzufügen/löschen).
    *
    * @param int     date              das UNIX-Timestamp des Tages
    */
   this.editGroupsOnPlanDate = function(date)
   {
      dragAndDropObject.makeDragable('planDetails', 'Primärer Notdienst');

      params    = new Array();
      params[0] = 'date='+date;
      mySrc     = '../emergencyPlan/editGroupsOnPlanDate';
      sendXmlHttpRequest(mySrc, 'planDetailsContent', params, pharmacyObject.callback);
   }

   /**
    * Öffnet das DragAndDrop-Menü um Gruppen in den Sekundären-Notdienst-Kalender zu bearbeiten (Hinzufügen/löschen).
    *
    * @param int     date              das UNIX-Timestamp des Tages
    */
   this.editGroupsOnSupplementPlanDate = function(date)
   {
      dragAndDropObject.makeDragable('planDetails', 'Zusätzlicher Notdienst');

      params    = new Array();
      params[0] = 'date='+date;
      mySrc     = '../emergencyPlan/editGroupsOnSupplementPlanDate';
      sendXmlHttpRequest(mySrc, 'planDetailsContent', params, pharmacyObject.callback);
   }

    /**
    * Fügt eine Gruppe zu einem bestimmten Tag des Primären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.addGroupToPlanDate = function(groupID)
   {
      var group = document.getElementById(groupID);
      var inPlan = document.getElementById('groupsOnPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('groupsOuterPlanDate').firstChild.nextSibling;
      var groupName = group.nextSibling;
      var icon = group.firstChild;
      var link = group;
      var tr   = link.parentNode.parentNode;
      outerPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Add" , "Delete");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = groupID;
      link.appendChild(icon);
      td.appendChild(groupName);
      td.appendChild(link);
      tr.appendChild(td);

      inPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.deleteGroupFromPlanDate( '"+groupID+"' )");
   }

   /**
    * Löscht eine Gruppe aus einem bestimmten Tag des Primären-Notdienst-Kalenders.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.deleteGroupFromPlanDate = function(groupID)
   {
      var group = document.getElementById(groupID);
      var inPlan = document.getElementById('groupsOnPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('groupsOuterPlanDate').firstChild.nextSibling;
      var groupName = group.parentNode.firstChild;
      var icon = group.firstChild;
      var link = group;
      var tr   = link.parentNode.parentNode;
      inPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Delete" , "Add");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = groupID;
      link.appendChild(icon);
      td.appendChild(link);
      td.appendChild(groupName);
      tr.appendChild(td);
      outerPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.addGroupToPlanDate( '"+groupID+"' )");
   }

   /**
    * speichert eine Anzahl der gruppen für einen bestimmten Tag des primären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.saveGroupsToPlanDate = function()
   {
      var groupsOn = new Array();
      var groupsOut = new Array();

      var timestamp = document.getElementById('timestamp').value;
      var date = document.getElementById('datum').value;
      var groupsOnPlanDate = document.getElementById('groupsOnPlanDate').firstChild.nextSibling;
      var groupsOuterPlanDate = document.getElementById('groupsOuterPlanDate').firstChild.nextSibling;

      var dateContentOn = groupsOnPlanDate.getElementsByTagName('A');
      var dateContentOuter = groupsOuterPlanDate.getElementsByTagName('A');

      for (var i=0 ; i< dateContentOn.length ; i++)
      {
         groupsOn[i] = dateContentOn[i].id;
      }

      for (var i=0 ; i< dateContentOuter.length ; i++)
      {
         groupsOut[i] = dateContentOuter[i].id;
      }

      params    = new Array();
      params[0] = 'datum='+date;
      params[1] = 'timestamp='+timestamp;
      params[2] = 'groupsOn='+groupsOn;
      params[3] = 'groupsOut='+groupsOut;
      mySrc     = '../emergencyPlan/saveGroupsToPlanDate';
      sendXmlHttpRequest(mySrc, 'managePlan', params, pharmacyObject.callback);

   }

   /**
    * Fügt eine Gruppe zu einem bestimmten Tag des Sekundären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.addGroupToSupplementPlanDate = function(groupID)
   {
      var group = document.getElementById(groupID);
      var inPlan = document.getElementById('groupsOnSupplementPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('groupsOuterSupplementPlanDate').firstChild.nextSibling;
      var groupName = group.nextSibling;
      var icon = group.firstChild;
      var link = group;
      var tr   = link.parentNode.parentNode;
      outerPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Add" , "Delete");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = groupID;
      link.appendChild(icon);
      td.appendChild(groupName);
      td.appendChild(link);
      tr.appendChild(td);

      inPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.deleteGroupFromSupplementPlanDate( '"+groupID+"' )");
   }

   /**
    * Löscht eine Gruppe aus einem bestimmten Tag des Sekundären-Notdienst-Kalenders.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.deleteGroupFromSupplementPlanDate = function(groupID)
   {
      var group = document.getElementById(groupID);
      var inPlan = document.getElementById('groupsOnSupplementPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('groupsOuterSupplementPlanDate').firstChild.nextSibling;
      var groupName = group.parentNode.firstChild;
      var icon = group.firstChild;
      var link = group;
      var tr   = link.parentNode.parentNode;
      inPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Delete" , "Add");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var td = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = groupID;
      link.appendChild(icon);
      td.appendChild(link);
      td.appendChild(groupName);
      tr.appendChild(td);
      outerPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.addGroupToSupplementPlanDate( '"+groupID+"' )");
   }

    /**
    * speichert eine Anzahl der gruppen für einen bestimmten Tag des sekundären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.saveGroupsToSupplementPlanDate = function()
   {
      var groupsOn = new Array();
      var groupsOut = new Array();

      var timestamp = document.getElementById('timestamp').value;
      var date = document.getElementById('datum').value;
      var groupsOnSupplementPlanDate = document.getElementById('groupsOnSupplementPlanDate').firstChild.nextSibling;
      var groupsOuterSupplementPlanDate = document.getElementById('groupsOuterSupplementPlanDate').firstChild.nextSibling;

      var dateContentOn = groupsOnSupplementPlanDate.getElementsByTagName('A');
      var dateContentOuter = groupsOuterSupplementPlanDate.getElementsByTagName('A');

      for (var i=0 ; i< dateContentOn.length ; i++)
      {
         groupsOn[i] = dateContentOn[i].id;
      }

      for (var i=0 ; i< dateContentOuter.length ; i++)
      {
         groupsOut[i] = dateContentOuter[i].id;
      }

      params    = new Array();
      params[0] = 'datum='+date;
      params[1] = 'timestamp='+timestamp;
      params[2] = 'groupsOn='+groupsOn;
      params[3] = 'groupsOut='+groupsOut;
      mySrc     = '../emergencyPlan/saveGroupsToSupplementPlanDate';
      sendXmlHttpRequest(mySrc, 'managePlan', params, pharmacyObject.callback);
   }

   /**
    * Öffnet das DragAndDrop-Menü um Apotheken in den Primären-Notdienst-Kalenders zu bearbeiten (Hinzufügen/löschen).
    *
    * @param int     date              das UNIX-Timestamp des Tages
    */
   this.editPharmaciesOnPlanDate = function(date)
   {
      dragAndDropObject.makeDragable('planDetails', 'Primärer Notdienst');

      params    = new Array();
      params[0] = 'date='+date;
      mySrc     = '../emergencyPlan/editPharmaciesOnPlanDate';

      sendXmlHttpRequest(mySrc, 'planDetailsContent', params, pharmacyObject.callback);
   }

   /**
    * Öffnet das DragAndDrop-Menü um Apotheken in den Sekundären-Notdienst-Kalenders zu bearbeiten (Hinzufügen/löschen).
    *
    * @param int     date              das UNIX-Timestamp des Tages
    */
   this.editPharmaciesOnSupplementPlanDate = function(date)
   {
      dragAndDropObject.makeDragable('planDetails', 'Zusätzlicher Notdienst');

      params    = new Array();
      params[0] = 'date='+date;
      mySrc     = '../emergencyPlan/editPharmaciesOnSupplementPlanDate';
      sendXmlHttpRequest(mySrc, 'planDetailsContent', params, pharmacyObject.callback);
   }

    /**
    * Fügt eine Apotheke zu einem bestimmten Tag des Primären-Notdienst-Kalenders hinzu.
    *
    * @param Integer pharmacyID        Die ID der Apotheke die hinzugefügt werden soll.
    */
   this.addPharmacyToPlanDate = function(pharmacyID)
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inPlan = document.getElementById('pharmaciesOnPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('pharmaciesOuterPlanDate').firstChild.nextSibling;
      var pharmacyName = pharmacy.nextSibling;

      var icon = pharmacy.firstChild;
      var link = pharmacy;
      var tr   = link.parentNode.parentNode;
      var pharmacyPostCode = link.parentNode.nextSibling.firstChild;
      outerPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Add" , "Delete");
      icon.title = "Apotheke Löschen";
      icon.alt="Apotheke Löschen";
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var tdName = document.createElement('TD');
      var tdCode = document.createElement('TD');
      var tdLink = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;

      link.appendChild(icon);
      tdLink.appendChild(link);
      tdName.appendChild(pharmacyName);
      tdCode.appendChild(pharmacyPostCode);

      tr.appendChild(tdName);
      tr.appendChild(tdCode);
      tr.appendChild(tdLink);

      inPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.deletePharmacyFromPlanDate( '"+pharmacyID+"' )");
   }

   /**
    * löscht eine Apotheke aus einem bestimmten Tag des Primären-Notdienst-Kalenders.
    *
    * @param Integer pharmacyID        Die ID der Apotheke die gelöscht werden soll.
    */
   this.deletePharmacyFromPlanDate = function(pharmacyID)
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inPlan = document.getElementById('pharmaciesOnPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('pharmaciesOuterPlanDate').firstChild.nextSibling;
      var icon = pharmacy.firstChild;
      var link = pharmacy;
      var pharmacyName = pharmacy.parentNode.parentNode.firstChild.firstChild;
      var pharmacyCode = pharmacy.parentNode.parentNode.firstChild.nextSibling.firstChild;

      var tr   = link.parentNode.parentNode;
      inPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Delete" , "Add");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var tdName = document.createElement('TD');
      var tdCode = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;
      link.appendChild(icon);
      tdName.appendChild(link);
      tdName.appendChild(pharmacyName);
      tdCode.appendChild(pharmacyCode);
      tr.appendChild(tdName);
      tr.appendChild(tdCode);
      outerPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.addPharmacyToPlanDate( '"+pharmacyID+"' )");
   }

    /**
    * speichert eine Anzahl der Apotheken für einen bestimmten Tag des primären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.savePharmaciesToPlanDate = function()
   {
      var pharmaciesOn = new Array();
      var pharmaciesOut = new Array();

      var timestamp = document.getElementById('timestamp').value;
      var date = document.getElementById('datum').value;
      var pharmaciesOnPlanDate = document.getElementById('pharmaciesOnPlanDate').firstChild.nextSibling;
      var pharmaciesOuterPlanDate = document.getElementById('pharmaciesOuterPlanDate').firstChild.nextSibling;

      var dateContentOn = pharmaciesOnPlanDate.getElementsByTagName('A');
      var dateContentOuter = pharmaciesOuterPlanDate.getElementsByTagName('A');

      for (var i=0 ; i< dateContentOn.length ; i++)
      {
         pharmaciesOn[i] = dateContentOn[i].id;
      }

      for (var i=0 ; i< dateContentOuter.length ; i++)
      {
         pharmaciesOut[i] = dateContentOuter[i].id;
      }

      params    = new Array();
      params[0] = 'datum='+date;
      params[1] = 'timestamp='+timestamp;
      params[2] = 'pharmaciesOn='+pharmaciesOn;
      params[3] = 'pharmaciesOut='+pharmaciesOut;
      mySrc     = '../emergencyPlan/savePharmaciesToPlanDate';
      sendXmlHttpRequest(mySrc, 'managePlan', params, pharmacyObject.callback);
   }

    /**
    * Fügt eine Apotheke zu einem bestimmten Tag des Sekundären-Notdienst-Kalenders hinzu.
    *
    * @param Integer pharmacyID        Die ID der Apotheke die hinzugefügt werden soll.
    */
   this.addPharmacyToSupplementPlanDate = function(pharmacyID)
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inPlan = document.getElementById('pharmaciesOnSupplementPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('pharmaciesOuterSupplementPlanDate').firstChild.nextSibling;
      var pharmacyName = pharmacy.nextSibling;

      var icon = pharmacy.firstChild;
      var link = pharmacy;
      var tr   = link.parentNode.parentNode;
      var pharmacyPostCode = link.parentNode.nextSibling.firstChild;
      outerPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Add" , "Delete");
      icon.title = "Apotheke Löschen";
      icon.alt="Apotheke Löschen";
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var tdName = document.createElement('TD');
      var tdCode = document.createElement('TD');
      var tdLink = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;

      link.appendChild(icon);
      tdLink.appendChild(link);
      tdName.appendChild(pharmacyName);
      tdCode.appendChild(pharmacyPostCode);

      tr.appendChild(tdName);
      tr.appendChild(tdCode);
      tr.appendChild(tdLink);

      inPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.deletePharmacyFromSupplementPlanDate( '"+pharmacyID+"' )");
   }


   /**
    * löscht eine Apotheke aus einem bestimmten Tag des Sekundären-Notdienst-Kalenders.
    *
    * @param Integer pharmacyID        Die ID der Apotheke die gelöscht werden soll.
    */
   this.deletePharmacyFromSupplementPlanDate = function(pharmacyID)
   {
      var pharmacy = document.getElementById(pharmacyID);
      var inPlan = document.getElementById('pharmaciesOnSupplementPlanDate').firstChild.nextSibling;
      var outerPlan = document.getElementById('pharmaciesOuterSupplementPlanDate').firstChild.nextSibling;
      var icon = pharmacy.firstChild;
      var link = pharmacy;
      var pharmacyName = pharmacy.parentNode.parentNode.firstChild.firstChild;
      var pharmacyCode = pharmacy.parentNode.parentNode.firstChild.nextSibling.firstChild;

      var tr   = link.parentNode.parentNode;
      inPlan.removeChild(tr);
      // Icon-Bild wird von Add auf löschen geändert.
      icon.src = icon.src.replace("Delete" , "Add");
      // Der passende Link wird erstellt
      var tr = document.createElement('TR');
      var tdName = document.createElement('TD');
      var tdCode = document.createElement('TD');
      var link = document.createElement('A');
      link.href = "#";
      link.id = pharmacyID;
      link.appendChild(icon);
      tdName.appendChild(link);
      tdName.appendChild(pharmacyName);
      tdCode.appendChild(pharmacyCode);
      tr.appendChild(tdName);
      tr.appendChild(tdCode);
      outerPlan.appendChild(tr);
      link.setAttribute("onclick", "pharmacyObject.addPharmacyToSupplementPlanDate( '"+pharmacyID+"' )");
   }

    /**
    * speichert eine Anzahl der Apotheken für einen bestimmten Tag des sekundären-Notdienst-Kalenders hinzu.
    *
    * @param Integer groupID           Die ID der gruppe die gelöscht werden soll.
    */
   this.savePharmaciesToSupplementPlanDate = function()
   {
      var pharmaciesOn = new Array();
      var pharmaciesOut = new Array();

      var timestamp = document.getElementById('timestamp').value;
      var date = document.getElementById('datum').value;
      var pharmaciesOnSupplementPlanDate = document.getElementById('pharmaciesOnSupplementPlanDate').firstChild.nextSibling;
      var pharmaciesOuterSupplementPlanDate = document.getElementById('pharmaciesOuterSupplementPlanDate').firstChild.nextSibling;

      var dateContentOn = pharmaciesOnSupplementPlanDate.getElementsByTagName('A');
      var dateContentOuter = pharmaciesOuterSupplementPlanDate.getElementsByTagName('A');

      for (var i=0 ; i< dateContentOn.length ; i++)
      {
         pharmaciesOn[i] = dateContentOn[i].id;
      }

      for (var i=0 ; i< dateContentOuter.length ; i++)
      {
         pharmaciesOut[i] = dateContentOuter[i].id;
      }

      params    = new Array();
      params[0] = 'datum='+date;
      params[1] = 'timestamp='+timestamp;
      params[2] = 'pharmaciesOn='+pharmaciesOn;
      params[3] = 'pharmaciesOut='+pharmaciesOut;
      mySrc     = '../emergencyPlan/savePharmaciesToSupplementPlanDate';
      sendXmlHttpRequest(mySrc, 'managePlan', params, pharmacyObject.callback);
   }

   // Ab Hier sind die Frontend-Methoden

    /**
    * holt das gecklikte Datum aus dem Calender und zeigt die Notdienst-Apotheken für den
    * angeclickten Tag.
    *
    * @param Calender calender     der Calender.js selbst
    */
   this.getDateFrontend = function(calendar)
   {
      if(calendar != undefined)
      {
         pharmacyObject.tag = calendar.date.getDate();
         pharmacyObject.monat = calendar.date.getMonth()+1;
         pharmacyObject.jahr = calendar.date.getFullYear();
      }

      params    = new Array();
      params[0] = 'day='+pharmacyObject.tag;
      params[1] = 'month='+pharmacyObject.monat;
      params[2] = 'year='+pharmacyObject.jahr;
      mySrc     = '../Service/Notdienstplan';
      sendXmlHttpRequest(mySrc, 'showDetailsEmergencyPlan', params, pharmacyObject.callbackFE);
   }

   // Callback Methoden.

   /**
    * Standard Callback-methode für den XMLHttpRequest des backoffice/Verwaltung
    *
    */
   this.callback = function()
   {
      if((xhr.readyState != 4) || (xhr.status != 200))
      {
         return;
      }
      document.getElementById(xhrData['idOutput']).innerHTML = xhr.responseText;
   }

   /**
    * Standard Callback-methode für den XMLHttpRequest des Frontends
    *
    */
   this.callbackFE = function()
   {
      if((xhr.readyState != 4) || (xhr.status != 200))
      {
         return;
      }
      document.getElementById(xhrData['idOutput']).innerHTML = xhr.responseText;
      mapObject.getPharmaciesForMaps();
   }

}
// Erstellt das Objekt, dass dann überall aufrufbar ist.
var pharmacyObject = new pharmacy();
-->
