/*
   Diese date ist für die Googlemaps-Anzeige des Anfahrtsplans und Notdienstes
   Datum: 12/08/2008
*/
    //<![CDATA[


function mapPharmacy(){
   
   this.zoom = 13;
   this.apoNames = new Array();
   this.apoStreets = new Array();
   this.apoCities  = new Array();
   this.apoPhones  = new Array();
   this.apoFaxes  = new Array();
   this.points = new Array();
   this.waitForObject;
   this.sidebar = false;
   this.calendar = false;
   this.googleParmacyAddress = new Array();
   this.googleOwnAddress = '';
   this.nameTag = new Array();

   this.direction = '';
   this.distances = new Array();
   this.routesContent = new Array();
   this.routesAvailable = new Array();
   this.startAddress = '';
   this.mapHeight;

   this.contentHeight = '' ;

   /**
    * Diese Methode holt alle Adressen der Apotheken die an einem bestimmten Tag Notdient haben
    * und zeigt diese in einem Googlemaps Fenster.
    *
    */
   this.getPharmaciesForMaps = function(  )
   {
      try
      {
         var mapDiv = document.getElementById("map");
         mapDiv.style.display = "block";

         var map = new GMap2(mapDiv);
      }
      catch(err)
      {
      }

      if(typeof(map) == 'object' && mapDiv != null )
      {
         mapObject.points = new Array();
         var namen = mapObject.getElementsByClassName('ApoName' , 'p');
         var street = mapObject.getElementsByClassName('ApoStreet' , 'p');
         var city = mapObject.getElementsByClassName('ApoCity' , 'p');
         var phone = mapObject.getElementsByClassName('ApoPhone' , 'p');
         var fax = mapObject.getElementsByClassName('ApoFax' , 'p');

         mapObject.googleOwnAddress = document.getElementById('ownAddress').innerHTML;

         var indexApo = gup('apotheke');
         var anzahlApo = gup('anzahl');


         mapObject.mapHeight = mapDiv.offsetHeight;


         if(indexApo != '' && anzahlApo != '' && mapObject.calendar == false)
         {
            mapObject.sidebar = true
         }
         else
         {
            mapObject.sidebar = false
         }


         var fullAdress = new Array();
         var infoText   = new Array();

         var tempAdress = "";
         var tempInfoText = "";
         var apothekenName =  "";

         // Wenn es keine Apotheken Infos gibt dann hört es hier auf.
         if(namen == '')
         {
            return ;
         }



         for (var i = 0; i <namen.length ; i++)
         {
            mapObject.nameTag[i] = namen[i];
            mapObject.apoNames[i] = namen[i].firstChild.nodeValue;
            mapObject.apoStreets[i] = street[i].firstChild.nodeValue;
            mapObject.apoCities[i] = city[i].firstChild.nodeValue;


            var phoneTemp = phone[i].firstChild;
            var faxTemp = fax[i].firstChild;

            if(phoneTemp === null)
            {
               mapObject.apoPhones[i] = "";
            }
            else
            {
               mapObject.apoPhones[i] = phoneTemp.nodeValue;
            }

            if(faxTemp === null)
            {
               mapObject.apoFaxes[i] = "";
            }
            else
            {
               mapObject.apoFaxes[i] = faxTemp.nodeValue;
            }
         }
         if (GBrowserIsCompatible())
         {
            var icon = new GIcon();
            icon.image = "/cmsCore/img/ApoA.png";
            icon.iconSize = new GSize(42, 34);
            icon.shadowSize = new GSize(22, 20);
            icon.iconAnchor = new GPoint(20, 30);
            icon.infoWindowAnchor = new GPoint(1, 1);

            geocoder = new GClientGeocoder();
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());

            for (var i = 0; i <namen.length ; i++)
            {
               tempAddress   = '';
               tempInfoText  = '';
               apothekenName = '';

               // Hier wird die vollständige Adresse zusammengestellt um die Marker auf den Plan zu setzen
               var tempValue = mapObject.apoCities[i].split(' ');
               
               // im idx 0 steht die PLZ
               var plz       = tempValue.shift();
               
               // in den restlichen Teilen das Arrays der name der Stadt
               var stadtText = tempValue.join(' ');
               
               // ts. warum hier noch einmal an - gesplitet wird, keine Ahnung
               var stadt     = stadtText.split('-');
               stadt         = stadt[0];

               //fullAdress[i] =  "D-"+plz + " " + mapObject.apoStreets[i];
               //mapObject.googleParmacyAddress[i] = fullAdress[i];

               fullAdress[i] =  mapObject.apoStreets[i] + ", " + plz + " " + stadt;

               mapObject.googleParmacyAddress[i] = fullAdress[i];

               // die Apotheken Informationen die in der Sprachblase angezeigt werden.
               infoText[i]   =  mapObject.apoStreets[i] +
                                "<br> " + mapObject.apoCities[i] +
                                "<br> " + mapObject.apoPhones[i] +
                                "<br> " + mapObject.apoFaxes[i];

               tempAdress = fullAdress[i];
               tempInfoText =  infoText[i];
               apothekenName = mapObject.apoNames[i];

               name = document.createTextNode(apothekenName);

               link = document.createElement("A");
               link.id = "link_"+i;
               link.innerHTML = apothekenName;

               text = document.createElement("input");
               text.id = "text_"+i;
               text.type = "hidden";
               text.value = apothekenName+"+"+infoText[i];

               namen[i].appendChild(link);
               namen[i].appendChild(text);
               namen[i].firstChild.nodeValue = "";


               // Hier wird die Adresse zu Koordinaten umgewandelt.
               mapObject.decodeAddress(map, mapObject.apoNames[i], icon, fullAdress[i], infoText[i], mapObject.zoom, i, 0);
               // Hier wird der Routenplaner abgefeuert.
               window.setTimeout("mapObject.getRouteForPharmacies('"+mapObject.googleOwnAddress+"','"+fullAdress[i]+"' ,"+i+" )", 2000);
            }

            // kommt der Aufruf aus der Sidebar.
            if(mapObject.sidebar == true)
            {
               mapObject.waitForObject = window.setInterval( "mapObject.showPharmacyDetailsFromSidebar("+indexApo+","+anzahlApo+")", 1000);
            }

         }
         else
         {
             // Hier geht er rein wenn der Browser nicht mit Googlemaps Kompatibel ist.
             var mapdiv = document.getElementById("map");
             if(mapDiv != null)
             {
                mapdiv.style.height = "0px";
                mapdiv.innerHTML = "<br /><b>Google Maps ist vor&uuml;bergehend nicht verf&uuml;gbar</b><br />";
             }
         }

      }
      else
      {
          // Hier geht er rein wenn der Browser nicht mit Googlemaps Kompatibel ist.
          var mapDiv = document.getElementById("map");
          if(mapDiv != null)
          {
             mapDiv.style.height = "0px";
             mapDiv.innerHTML = "<br /><b>Google Maps ist vor&uuml;bergehend nicht verf&uuml;gbar</b><br />";
          }
      }

   }

   /**
    * Diese Methode zeigt die Lage der angeclickten Apotheke in einem höheren Zommfaktor
    * und zentriet Sie in das Fenster.
    *
    * @param   string   index            Der Index der Apotheke in dem Apotheken-Array
    * @param   string   coordinates      Die von Google gelieferten globalen Koordinaten
    *
    */
   this.showPharmacyDetails = function(index , coordinates)
   {
      window.clearInterval(mapObject.waitForObject);

      if(coordinates !== "'undefined'")
      {
         document.getElementById('router').style.display = 'none';

         coordinates = coordinates.replace("'(" , "");
         coordinates = coordinates.replace(")'" , "");
         coordinates = coordinates.replace(" " , "");
         var coor = coordinates.split(",");
         var lat = coor[0];
         var lng = coor[1];

         var tempText = document.getElementById("text_"+index).value;
         tempText = tempText.split("+");
         name = tempText[0];

         infoText = tempText[1];
         document.getElementById("map").style.height = mapObject.mapHeight+"px";
         document.getElementById("map").innerHTML = '';
         document.getElementById("map").style.display = 'block';
         var map = new GMap2(document.getElementById("map"));

         var icon = new GIcon();
         icon.image = "/cmsCore/img/ApoA.png";
         icon.iconSize = new GSize(42, 34);
         icon.shadowSize = new GSize(22, 20);
         icon.iconAnchor = new GPoint(20, 30);
         icon.infoWindowAnchor = new GPoint(1, 1);

         var point = new GLatLng(lat,lng);
         map.setCenter(point, 17);
         map.addControl(new GSmallMapControl());

         map.addControl(new GMapTypeControl());
         var marker = new GMarker(point, icon);

         var displayHtml = "<div style=\"width:250px; height:80px;\"><b> " +
                        name + "</b><br>" +
                        infoText + "<br><div style=\"font-size:8pt; color:#008000;\"></div></div>";

         GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(displayHtml);
         });

         map.addOverlay(marker);
         map.openInfoWindowHtml(map.getCenter(), displayHtml);

         document.getElementById('router').style.display = 'none';

      }
      else
      {
         mapDiv = document.getElementById("map");
         //mapDiv.innerHTML = '';
         mapDiv.style.height = "0px";
         mapDiv.innerHTML = "<br /><b>Google Maps ist f&uuml;r diese Apotheke nicht verf&uuml;gbar</b><br />";
      }

   }

   /**
    * Diese Methode zeigt die Lage der angeclickten Apotheke aus der Sibar in einem höheren Zommfaktor
    * und zentriet Sie in das Fenster.
    *
    * @param   string   index            Der Index der Apotheke in dem Apotheken-Array
    * @param   string   coordinates      Die von Google gelieferten globalen Koordinaten
    *
    */
   this.showPharmacyDetailsFromSidebar = function(index , anzahl)
   {
      //window.setTimeout("mapObject.getRouteForPharmacies('"+mapObject.googleOwnAddress+"','"+fullAdress[i]+"' ,"+i+" )", 1000);
      window.clearInterval(mapObject.waitForObject);

      mapObject.showPharmacyDetails(index, "'"+mapObject.points[index]+"'");
   }


    /**
    * Hier ist der Geocoder der die Adresse zu einem Geopunkt mit Längen und Breiten Grade umwandelt.
    *
    * @param   Object   map           das Googlemap-Objekt.
    * @param   Object   point         Der genaue Punkt an dem die Apotheke dargestellt werden soll.
    * @param   Object   icon          Das Icon-Bild der Apotheke.
    * @param   String   name          Der Name der Apotheke.
    * @param   String   infoText      Der Text der in der Sprachblase angezeigt wird.
    * @param   Int      zomm          Der Zommfaktor für die Anzeige.
    * @param   string   index         Der Index der Apotheke in dem Apotheken-Array
    * @param   Int      showInfo      0 oder 1 (Die Variable enscheidet ob die Sprachblase angezeigt werden soll)
    */
   this.decodeAddress = function(map, name, icon, address,  infoText, zoom, index, showInfo)
   {
      if (geocoder)
      {
         geocoder.getLatLng(
            address,
            function(point)
            {
               if (!point )
               {
                  // wenn der geocoder keine Koordinaten für die Adresse geliefert bekommt und wir noch keine weitere Punkte haben.
                  if(mapObject.points.length == 0)
                  {
                     var mapdiv = document.getElementById("map");
                     document.getElementById("map").style.display = 'block';
                     mapdiv.innerHTML = "<br /><br /><b>Die Adresse konnte nicht geocodiert werden.</b><br />";
                  }
               }
               else
               {
                  // Hier wird die Funktion aufgerufen die den Marker und die Sprechblase erstellt.
                  mapObject.points.push(point);
                  if(document.getElementById("link_"+index) !== null)
                  {
                     var mapdiv = document.getElementById("map");
                     //mapdiv.innerHTML = '546546';
                     document.getElementById("map").style.height = mapObject.mapHeight+"px";

                     link = document.getElementById("link_"+index);
                     link.href = "javascript:;";
                     link.onclick = function()
                     {
                        mapObject.showPharmacyDetails(index, "'"+point+"'");
                     };
                  }


                  document.getElementById("map").style.display = 'block';

                  // Die Übersicht aller Apotheken soll nur dann angezeigt werden wenn der Aufruf nicht aus der Sidebar kommt.
                  if (mapObject.sidebar == false)
                  {
                     map.addOverlay(mapObject.createMarker(map, point, icon, name, infoText, zoom , showInfo));
                  }
               }
            }
         );
      }
   }

   /**
    * Hier wird der Marker für die Adressse erstellt und die Sprachblase und Click-Event definiert
    *
    * @param   Object   map           das Googlemap-Objekt.
    * @param   Object   point         Der genaue Punkt an dem die Apotheke dargestellt werden soll.
    * @param   Object   icon          Das Icon-Bild der Apotheke.
    * @param   String   name          Der Name der Apotheke.
    * @param   String   infoText      Der Text der in der Sprachblase angezeigt wird.
    * @param   Int      zomm          Der Zommfaktor für die Anzeige.    *
    * @param   Int      showInfo      0 oder 1 (Die Variable enscheidet ob die Sprachblase angezeigt werden soll)
    */
   this.createMarker = function(map, point, icon, name, infoText, zoom, showInfo)
   {
      map.setCenter(point, zoom);

      // Hier wird der Marker instanziert.
      var marker = new GMarker(point, icon);
      var displayHtml = "<div style=\"width:250px; height:170px;\"><b> " +
                           name + "</b><br>" +
                           infoText + "<br><div style=\"font-size:8pt; color:#008000;\"></div></div>";

      if(showInfo == 1)
      {
         // Die Info-Sprachblase.
         map.addOverlay(marker);
         map.openInfoWindowHtml(map.getCenter(), displayHtml);

      }
      // Wenn man auf der Karte auf das Apothekenzeichen klickt, soll die Sprachblase mit der Adresse angezeigt werden.
      GEvent.addListener(marker, "click", function() {
         map.setCenter(point ,16);
         marker.openInfoWindowHtml(displayHtml);
      });
      return marker;
   }

   /**
    * Diese Methode holt die Adresse der Apotheke und baut daraus den Anfahrtsplan mit der
    * Möglichkeit eine Addresse einzugeben und den Routenplaner dafür zu generieren.
    *
    */
   this.loadAnfahrtsplan = function()
   {
      // Sind wir überhaupt Online?
      try
      {
         // Die Karte und Bedienelement werde instanziert
         var mapDiv = document.getElementById("map");
         mapDiv.style.display = "block";
         var map = new GMap2(mapDiv);
      }
      catch(err)
      {
      }

      if(typeof(map) == 'object')
      {
         if (GBrowserIsCompatible())
         {
            // Hier werden die Informationen der Apotheke aus dem DOM abgelesen.
            var name         = document.getElementById("ctName").value;
            var streetName   = document.getElementById("ctStreetName").value;
            var streetNumber = document.getElementById("ctStreetNumber").value ;
            var postCode     = document.getElementById("ctPostcode").value;
            var city         = document.getElementById("ctCity").value;
            var phone        = document.getElementById("ctPhone").value;
            var fax          = document.getElementById("ctFax").value;

            // die vollständige Adresse für die Googemaps Koordinaten abfrage.
            var address = streetName + " " + streetNumber + ", " + postCode + " " + city;
            mapObject.googleOwnAddress = address;

            // die Informationen der Apotheke die in der Sprachblase angezeigt werden.
            var infoText = streetName + ' ' + streetNumber +
                           '<br/> ' + postCode + ' ' + city +
                           '<br/> Telefon: ' + phone+
                           '<br/>-------------------------<br/>' +
                           '<b>Routenplaner</b><br/>Ihre Startadresse (Str. Nr. PLZ Ort):<br/>' +
                           '<input id="startAddress" size="30" onkeypress="mapObject.onEnter(event)">' +
                           '<br/><button  type="submit" onclick="javascript:mapObject.getInteractivRoute();">Berechnen</button>'

            var zoom = 15;

            // Das Apotheken-Icon wird hier definiert
            var icon   = new GIcon();
            icon.image = "/images/anfahrtsplan/mapIcon.png";

            icon.shadowSize = new GSize(22, 20);
            icon.iconAnchor = new GPoint(20, 19);
            icon.infoWindowAnchor = new GPoint(40, 20);

            geocoder = new GClientGeocoder();
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());

            // Ab hier wird die Adresse des Apotheker decodiert und in dem Map angezeigt
            mapObject.decodeAddress(map, name, icon, address, infoText, zoom , 0, 1);
         }
         else
         {
            // Falls der Browser nicht GoogleMaps Kompatibel ist.
             var mapdiv = document.getElementById('map');
             mapdiv.style.height = '0px';
             mapdiv.style.display = 'block';
             mapdiv.innerHTML = '<br /><b>Der Anfahrtsplan ist vor&uuml;bergehend nicht verf&uuml;gbar</b><br />';
         }
      }
      else
      {
         // Falls map kein Objekt ist (probleme bei der Instanzieren, Offline, Timeout.....).
          var mapdiv = document.getElementById('map');
          mapdiv.style.height  = '0px';
          mapdiv.style.display = 'block';
          mapdiv.innerHTML = '<br /><b>Der Anfahrtsplan ist vor&uuml;bergehend nicht verf&uuml;gbar</b><br />';
      }
   }
   
   
   /**
    * Diese Methode wird abgefeuert wenn der User einen Routenplaner zu einer
    * selbst eingegebenen Adresse berechnen will.
    *
    */
   this.getInteractivRoute = function()
   {
      try
      {
         mapObject.startAddress = document.getElementById('startAddress').value;

         // Die versteckte Karte wird instanziert.
         var mapHidden   = new GMap2(document.getElementById('mapHidden'));
         var routerPanel = document.getElementById('router');
      }
      catch(err)
      {
         ;  
      }

      if(mapObject.startAddress == '')
      {
         // Es wurde keine Adresse eingegeben
      }
      else
      {
         // Ab hier wird der Routenplaner generiert.
         routerPanel.innerHTML = '';
         mapObject.direction   = new GDirections(mapHidden, routerPanel);
         
         mapObject.direction.load("from: " + mapObject.startAddress + " to: " + mapObject.googleOwnAddress);

         window.setTimeout("mapObject.showInteractivRoute()", 2000);
      }
   }


   /**
    * Diese Methode sorgt für den Routenplaner bei dem Anfahrtsplan.
    *
    */
   this.showInteractivRoute = function()
   {
      try
      {
         mapObject.startAddress = document.getElementById('startAddress').value

         var routerPanel = document.getElementById("router");
         
         if(mapObject.direction.getNumGeocodes() == 2)
         {
               routerPanel.innerHTML = '';
               routerPanel.style.display = 'block';
               var map = new GMap2(document.getElementById("map"));
               mapObject.direction = new GDirections(map, routerPanel);
               mapObject.direction.load("from: " + mapObject.startAddress + " to: " + mapObject.googleOwnAddress);
               window.setTimeout("mapObject.fixWindowArrivalInstructions();", 1000);
         }
         else
         {
            routerPanel.innerHTML = '';
            routerPanel.style.display = 'block';
            routerPanel.innerHTML = "<br /><b>Es liegen keine Informationen f&uuml;r die eingegebene Startadresse vor.</b><br />"
         }
      }
      catch(err){} ;
   }

   /**
    * Diese Methode wird bei der Notdienstanzeige verwendet und generiert
    * (soweit vorhanden) den Routenplaner zu jeder Notdienst Apotheke.
    *
    * @param   String   start               Die startadresse für den Routenplaner.
    * @param   String   detination          Die Zieladresse für den Routenplaner.
    * @param   Int      index               Der Index der Notdienst Apotheke in dem Apotheken-Array
    */
   this.getRouteForPharmacies = function(start , destination , index )
   {
      // den versteckten Routenplaner starten um die Entfernung zu berechnen.
      var mapHidden = new GMap2(document.getElementById("mapHidden"));
      var routerPanel = document.getElementById("routerHidden");

      var direction = new GDirections(mapHidden, routerPanel);

      direction.load("from: " + start + " to: " + destination);
      
      window.setTimeout( function() {mapObject.getRouteInfos(direction , index);},1000);
   }

   /**
    * Diese Methode wird bei der Notdienstanzeige verwendet und prüft ob Onkel
    * Google uns Sinnvole Daten liefert (Ob es wircklich einen Routenplaner von Ziel zu Detination gibt)
    * Und erstellt für jede Notdienst-Apotheke einen passenden Link für den zugehörigen Routenplaner.
    *
    * @param   GDirection   Gdirection          Das Google-Routenplaner Object.
    * @param   Int          index               Der Index der Notdienst Apotheke in dem Apotheken-Array
    */
   this.getRouteInfos = function(GDirection , index)
   {
       if(typeof(index) == 'number' && typeof(GDirection.getNumGeocodes()) == 'number')
       {
          mapObject.routesAvailable[index] = GDirection.getNumGeocodes();

          if(typeof(GDirection.getDistance()) == 'object' && mapObject.routesAvailable[index] == 2)
          {
             mapObject.distances[index]       =  GDirection.getDistance().html;
             if(mapObject.distances[index] != '')
             {
                var divContainer = mapObject.nameTag[index].parentNode;
                var routeDiv = document.createElement('p');
                routeDiv.innerHTML = 'Entfernung: ' + mapObject.distances[index]+' ';
                var routeLink = document.createElement('a');
                routeLink.innerHTML = "Anfahrtsplan."
                routeLink.href = "javascript:;";
                
                routeLink.onclick = function()
                {
                   mapObject.showPharmacyRoute(index);
                };
                
                routeDiv.appendChild(routeLink);
                divContainer.appendChild(routeDiv);
             }
          }
       }
   }


   /**
    * Diese Methode wird bei der Notdienstanzeige verwendet und sorgt für die Anzeige
    * eines bestimmten Apotheken-Routenplanersr wenn man auf den zugehörigen Link clickt.
    *
    * @param   Int          index               Der Index der Notdienst Apotheke in dem Apotheken-Array
    */
   this.showPharmacyRoute = function(index)
   {
      document.getElementById("map").style.display = 'block';
      document.getElementById("map").style.height = mapObject.mapHeight+"px";

      var routerPanel = document.getElementById("router");
      routerPanel.innerHTML = '';
      routerPanel.style.display = 'block';

      var map = new GMap2(document.getElementById("map"));

      mapObject.direction = new GDirections(map, routerPanel);
      mapObject.direction.load("from: " + mapObject.googleOwnAddress + " to: " + mapObject.googleParmacyAddress[index]);


   }



   /**
    * Dies ist eine Hilfsmethode beim Anfahrtsplan. die Lauscht und wartet auf die
    * Entertaste um den Routenplaner zu starten
    *
    */
   this.onEnter = function(event)
   {
        if(event.which==13)
        {
          mapObject.getInteractivRoute();
        }
        else if(event.keyCode==13)
        {
          mapObject.getInteractivRoute();
        }
   }

   /**
    * diese Klasse laesst sich analog zu 'getElementById()'
    * verwenden, nur halt mit einer Klasse als Uebergabewert.
    *
    * ACHTUNG: kann bei grossenen (start verschachtelten
    * Dokumenten) verhaeltnismaessig Langsam sein!
    *
    * @param   string   class_name     Name der Klasse, die die Container haben sollen
    * @param   string   html_tag       (OPTIONAL) HTML-Tag des gesuchten Containers
    * @return  array
    */
   this.getElementsByClassName = function(class_name, html_tag)
   {
      // nimmt alle HTML-Elemente des Dokuments auf
      var allObjects;

      // nimmt die HTML-Elemente mit dem ueberg. Klassennamen auf
      var classObj = new Array();

      // Zahelvariable f. Index von 'classObj'
      var index=0;

      var teststr;

      // HTML-Struktur 'reinziehen'...
      if (null != html_tag && "" != html_tag)
      {
         allObjects = document.getElementsByTagName(html_tag);
      }
      else
      {
         if (document.all)
         {
            // f. IE
            allObjects = document.all;
         }
         else if(document.getElementsByTagName && !document.all)
         {
            // f. Rest der Browser-Welt
            allObjects = document.getElementsByTagName("*");
         }
      }

      // HTML-Struktur durchgehen, und die Container mit ueberg.
      // Klassennamen als Objekt in 'classObj' speichern
      for(var i=0;i<allObjects.length;i++)
      {
         var myName = allObjects[i].className.split(' ');
         for(var j = 0; j < myName.length; j++)
         {
            if( myName[j].indexOf(class_name)!=-1 )
            {
               teststr="," + allObjects[i].className.split(" ").join(",") + ",";
               if(teststr.indexOf("," + class_name + ",")!= -1 )
               {
                 classObj[index]=allObjects[i];
                 index++;
               }
            }
         }
      }
      return classObj;
   }
}

   // Erstellt das Objekt, dass dann ï¿½l aufrufbar ist.
   var mapObject = new mapPharmacy();

    //]]>
