// big_google_map_func.js
// $Revision: 1.3 $
// $Date: 2009/05/07 14:24:31 $
var gbMapFunctionLoaded = true;


    function xGUnload()
    {
      var x;
    }
    function xGBrowserIsCompatible()
    {
      return 0;
    }

    var garProp = new Array();
    var gnPropTotal = 1;
    var gnMapDepth = 10;
    var gCurrIcon;
//    var gnMarker;
    var gbMarkerMoveOn = 0;
    var gbMouseOut = 0;

    var garMaps = new Array();
    var gnMapMax = 0;

    var gbEditMode = true;
    gbEditMode = false;
    var gcNewIconName = 'blue';
    var gcWebsitePrefix = 'dev';

  // Creates a marker at the given point with the given markernum label


  function createMarker(point, icon, mapnum, markernum, icDesc)
  {
    var messageid_name = 'mapmsg_' + mapnum;
    var messageid = document.getElementById(messageid_name);
    var marker;

    if (gbEditMode)
    {
      marker = new GMarker(point, {icon:icon, draggable: true, title:icDesc});
    }
    else
    {
      marker = new GMarker(point, {icon:icon, title:icDesc});
    }

    GEvent.addListener(marker, 'mouseover', function()
     {
      //var point = new GLatLong;
      //point = marker.getPoint();
      //point.lat() += .0001;
      var nPosLT = icDesc.indexOf('<');
      var nPosCR = icDesc.indexOf("\n");
      var nPos = icDesc.length;
      if (nPosLT > 0 && nPosLT < nPos)
      {
        nPos = nPosLT;
      }
      if (nPosCR > 0 && nPosCR < nPos)
      {
        nPos = nPosCR;
      }
      var cText = icDesc.substr(0, nPos);
      //alert ("nPos ["  + nPos + "]" +  cText + "[" + cText + "]");
      if (messageid)
      {
        messageid.innerHTML = cText + ' ' + marker.getPoint().toString();
      }
    }
    );

    GEvent.addListener(marker, 'mouseout', function()
     {
       if (messageid)
       {
         messageid.innerHTML = '&nbsp;';
       }  
    }
    );

    if (! gbEditMode)
    {
      GEvent.addListener(marker, 'click', function()
      {
        var namelat = 'lat' + markernum;
        var namelong = 'long' + markernum;
        if (garProp[mapnum][markernum]['url'])
        {
          window.open(garProp[mapnum][markernum]['url']);
        }
        else
        {
          marker.openInfoWindowHtml(icDesc);
        }
      }
      );
    }

    if (gbEditMode)
    {
      GEvent.addListener(marker, 'dragstart', function()
      {
        var namelat = 'lat' + markernum;
        var namelong = 'long' + markernum;
        if (messageid)
        {
          messageid.innerHTML = marker.getPoint().toString();
        }
      }
      );

      GEvent.addListener(marker, "dragend", function()
      {
        if (messageid)
        {
          messageid.innerHTML = 'dragend  markernum [' + markernum + ']' + marker.getPoint().toString();
        }
        garProp[mapnum][markernum]['x'] = marker.getPoint().lng().toString();
        garProp[mapnum][markernum]['y'] = marker.getPoint().lat().toString();
        fn_map_pos_output(mapnum);
      }
      );
    }

    return marker;
  }

// load all the maps

    function fn_map_load()
    {
      //alert('map gnMapMax ' + gnMapMax);

      {
        for (var i = 0; i <= gnMapMax; i ++)
        {
          //alert('map line ' + i);
          if (garMaps[i] == 1)
          {
            // define on the fly function to call named function then call it
            var fn_temp_set_data_new =  new Function('fn_map_set_data_new_' + i + '(); ');
            fn_temp_set_data_new();
            fn_map_load_single(i);
          }
        }
      }
    }

    function fn_map_load_single(mapnum)
    {
      //alert ( 'fn_map_load_single(' + mapnum + ')' );
      if (GBrowserIsCompatible())
      {
        var maptitleid_name = 'maptitle_' + mapnum;
        var maptitleid = document.getElementById(maptitleid_name);

        var mapid_name = 'map_' + mapnum;
        var mapid = document.getElementById(mapid_name);

        var mapmsgid_name = 'mapmsg_' + mapnum;
        var mapmsgid = document.getElementById(mapmsgid_name);

        if (mapid)
        {
          maptitleid.innerHTML = garProp[mapnum]['c']['d'];

          var map = new GMap2(mapid);

           if (garProp[mapnum]['c']['large'] == 1)
           {
             map.addControl(new GLargeMapControl());
           }
           else
           {
             //if (garProp[mapnum]['c']['small'] == 1)
             map.addControl(new GSmallMapControl());
           }

           if (garProp[mapnum]['c']['type'] == 1)
           {
             map.addControl(new GMapTypeControl());
           }
           if (garProp[mapnum]['c']['scale'] == 1)
           {
             map.addControl(new GScaleControl());
           }
           if (garProp[mapnum]['c']['overview'] == 1)
           {
             map.addControl(new GOverviewMapControl());
           }

           GEvent.addListener(map, "moveend", function()
           {
             var center = map.getCenter();
             if (mapmsgid)
             {
               mapmsgid.innerHTML = 'Center ' + center.toString() + ' zoom ' + garProp[mapnum]['c']['z'];
             }  
             garProp[mapnum]['c']['x'] = center.lng().toString();
             garProp[mapnum]['c']['y'] = center.lat().toString();
             fn_map_pos_output(mapnum);
           });

           GEvent.addListener(map, "zoomend", function()
           {
             gnMapDepth = map.getZoom();
             garProp[mapnum]['c']['z'] = gnMapDepth;
             fn_map_pos_output(mapnum);
           });



           var nZoomLevel = parseInt(garProp[mapnum]['c']['z']);
           map.setCenter(new GLatLng(garProp[mapnum]['c']['y'], garProp[mapnum]['c']['x']), nZoomLevel);

           var arIcons = new Array();

           //icon_default.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";

           // Create our "tiny" marker icon
           arIcons['default'] = new GIcon();
           arIcons['default'].image = "/images/" + gcWebsitePrefix + "_map_pin_default.png";
           arIcons['default'].shadow = "/images/" + gcWebsitePrefix + "_map_shadow.png";
           arIcons['default'].iconSize = new GSize(12, 20);
           arIcons['default'].shadowSize = new GSize(22, 20);
           arIcons['default'].iconAnchor = new GPoint(6, 20);
           arIcons['default'].infoWindowAnchor = new GPoint(5, 1);

           for (var nMarker = 0; nMarker < garProp[mapnum]['total']; nMarker++)
           {
             var point = new GLatLng(garProp[mapnum][nMarker]['y'], garProp[mapnum][nMarker]['x']);
             var cIcon = garProp[mapnum][nMarker]['i'];
             if (! arIcons[cIcon])
             {
               arIcons[cIcon] = new GIcon(arIcons['default'])
               arIcons[cIcon].image = "/images/" + gcWebsitePrefix + "_map_pin_" + cIcon + ".png";
               //alert ("Show Image is " + arIcons[cIcon].image);
             }
             map.addOverlay(createMarker(point, arIcons[cIcon], mapnum, nMarker, garProp[mapnum][nMarker]['d']));
           }

           GEvent.addListener(map, "mousemove", function(point)
           {
             if (gbMouseOut)
             {
               if (mapmsgid)
               {
                 mapmsgid.innerHTML = 'map Mouse move mouse out  ' + point.toString();
               }  
             }
           });


           if (gbEditMode)
           {
             GEvent.addListener(map, "click", function(marker, point)
             {
               if (marker)
               {
                 var map_deletename = 'mapdelete_' + mapnum;
                 var map_deleteid = document.getElementById(map_deletename);
                 var bMarkerDelete = map_deleteid.checked;

                 var l_point = marker.getPoint()
                 var nMarker;
                 var nMarkerMatch = -1;
                 var x = l_point.lng();
                 var y = l_point.lat();

                 // run through checking x y coordinates for match
                 for (nMarker = 0; nMarker < garProp[mapnum]['total'] && nMarkerMatch == -1; nMarker ++)
                 {
                   if (garProp[mapnum][nMarker]['x'] == x && garProp[mapnum][nMarker]['y'] == y)
                   {
                     nMarkerMatch = nMarker;
                   }
                 }


                 if (bMarkerDelete)
                 {
                   if (confirm('Confirm delete P' + nMarkerMatch + ' - ' + garProp[mapnum][nMarkerMatch]['d']))
                   {
                     if (mapmsgid)
                     {
                       mapmsgid.innerHTML = 'Point remove ' + l_point.toString();
                     }  
                     map.removeOverlay(marker);

                     if (nMarkerMatch >= 0)
                     {
                       garProp[mapnum][nMarkerMatch]['del'] = true;
                     }
                     fn_map_pos_output(mapnum);
                   }
                 }
                 else
                 {
                   if (nMarkerMatch >= 0)
                   {
                     cDesc = prompt('P' + nMarkerMatch + ' description' , garProp[mapnum][nMarkerMatch]['d']);
                     if (cDesc)
                     {
                       garProp[mapnum][nMarkerMatch]['d'] = cDesc;
                       //alert ('setting desc to xxx');
                       fn_map_pos_output(mapnum);
                     }
                   }
                 }

               }
               else
               {
                 var map_insertname = 'mapinsert_' + mapnum;
                 var map_insertid = document.getElementById(map_insertname);
                 var bMarkerInsert = map_insertid.checked;

                 if (bMarkerInsert)
                 {
                   var nCurrentMarker = garProp[mapnum]['total'];
                   var cDesc;
                   cDesc = prompt('P' + nCurrentMarker + ' description', '');
                   if (cDesc)
                   {
                     if (mapmsgid)
                     {
                       mapmsgid.innerHTML = 'Point Add ' + point.toString();
                     }  

                     var map_iconname = 'mapicon_' + mapnum;
                     var map_iconid = document.getElementById(map_iconname);
                     var cIcon = map_iconid.value;

                     if (cIcon.length == 0)
                     {
                       cIcon =  gcNewIconName;
                     }

                     if (! arIcons[cIcon])
                     {
                       arIcons[cIcon] = new GIcon(arIcons['default'])
                       arIcons[cIcon].image = "/images/" + gcWebsitePrefix + "_map_pin_" + cIcon + ".png";
                     }

                     map.addOverlay(createMarker(point, arIcons[cIcon], mapnum, nCurrentMarker, cDesc));

                     garProp[mapnum][nCurrentMarker] = new Array();
                     garProp[mapnum][nCurrentMarker]['x'] = point.lng().toString();
                     garProp[mapnum][nCurrentMarker]['y'] = point.lat().toString();
                     garProp[mapnum][nCurrentMarker]['i'] = cIcon;
                     garProp[mapnum][nCurrentMarker]['d'] = cDesc;

                     garProp[mapnum]['total'] ++;

                     fn_map_pos_output(mapnum);
                   }
                 }
               }
             }
             );
           }
        }
      }
    }


    function fn_map_pos_output(mapnum)
    {
      //alert ( 'fn_map_pos_output(' + mapnum + ')   start' );
      //alert ( 'xxx   gbEditMode [' + gbEditMode + ']' );
      if (gbEditMode)
      {
        // alert ( 'fn_map_pos_output(' + mapnum + ')' );
        var map_posname = 'mappos_' + mapnum;
        var map_posid = document.getElementById(map_posname);

        var mapdescid_name = 'mapdesc_' + mapnum;
        var mapdescid = document.getElementById(mapdescid_name);
        if (mapdescid)
        {
          garProp[mapnum]['c']['d'] = mapdescid.value;

          var maptitleid_name = 'maptitle_' + mapnum;
          var maptitleid = document.getElementById(maptitleid_name);
          if (maptitleid)
          {
            maptitleid.innerHTML =  mapdescid.value;
          }
        }

        var mapwidthid_name = 'mapwidth_' + mapnum;
        var mapwidthid = document.getElementById(mapwidthid_name);
        if (mapwidthid)
        {
          garProp[mapnum]['c']['w'] = mapwidthid.value;
        }

        var mapheightid_name = 'mapheight_' + mapnum;
        var mapheightid = document.getElementById(mapheightid_name);
        if (mapheightid)
        {
          garProp[mapnum]['c']['h'] = mapheightid.value;
        }



        var mapsmallid_name = 'mapsmall_' + mapnum;
        var mapsmallid = document.getElementById(mapsmallid_name);
        if (mapsmallid)
        {
          garProp[mapnum]['c']['small'] = 0;
          if (mapsmallid.checked == true)
          {
            garProp[mapnum]['c']['small'] = 1;
          }
        }


        var maplargeid_name = 'maplarge_' + mapnum;
        var maplargeid = document.getElementById(maplargeid_name);
        if (maplargeid)
        {
          garProp[mapnum]['c']['large'] = 0;
          if (maplargeid.checked == true)
          {
            garProp[mapnum]['c']['large'] = 1;
          }
        }

        var maptypeid_name = 'maptype_' + mapnum;
        var maptypeid = document.getElementById(maptypeid_name);
        if (maptypeid)
        {
          garProp[mapnum]['c']['type'] = 0;
          if (maptypeid.checked == true)
          {
            garProp[mapnum]['c']['type'] = 1;
          }
        }
        var mapscaleid_name = 'mapscale_' + mapnum;
        var mapscaleid = document.getElementById(mapscaleid_name);
        if (mapscaleid)
        {
          garProp[mapnum]['c']['scale'] = 0;
          if (mapscaleid.checked == true)
          {
            garProp[mapnum]['c']['scale'] = 1;
          }
        }
        var mapoverviewid_name = 'mapoverview_' + mapnum;
        var mapoverviewid = document.getElementById(mapoverviewid_name);
        if (mapoverviewid)
        {
          garProp[mapnum]['c']['overview'] = 0;
          if (mapoverviewid.checked == true)
          {
            garProp[mapnum]['c']['overview'] = 1;
          }
        }

        // --- outputs --- 
        var mapzoomid_name = 'mapzoom_' + mapnum;
        var mapzoomid = document.getElementById(mapzoomid_name);
        if (mapzoomid)
        {
          mapzoomid.value = garProp[mapnum]['c']['z'];
        }


        var cOutput;

        cOutput = 'C'
                  + ',' + garProp[mapnum]['c']['y']
                  + ',' + garProp[mapnum]['c']['x']
                  + ',' + garProp[mapnum]['c']['w']
                  + ',' + garProp[mapnum]['c']['h']
                  + ',' + garProp[mapnum]['c']['z']
                  + ',' + garProp[mapnum]['c']['d']
                  + ',' + garProp[mapnum]['c']['small']
                  + ',' + garProp[mapnum]['c']['large']
                  + ',' + garProp[mapnum]['c']['type']
                  + ',' + garProp[mapnum]['c']['scale']
                  + ',' + garProp[mapnum]['c']['overview']
                  ;

        for (var nMarker = 0; nMarker < garProp[mapnum]['total']; nMarker++)
        {
          if (garProp[mapnum][nMarker]['del']  != true)
          {
            cOutput = cOutput + "\n"
                    + 'P' + nMarker
                    + ',' + garProp[mapnum][nMarker]['y']
                    + ',' + garProp[mapnum][nMarker]['x']
                    + ',' + garProp[mapnum][nMarker]['i']
                    + ',' + garProp[mapnum][nMarker]['d']
                    ;
          }





          var catid_name = 'cat_' + mapnum + '_' + nMarker;
          var catid = document.getElementById(catid_name);

          if (catid)
          {
            if (garProp[mapnum][nMarker]['del'])
            {
              catid.value = '';
            }
            else
            {
              catid.value = garProp[mapnum][nMarker]['i'];
            }
          }

          var latid_name = 'lat_' + mapnum + '_' + nMarker;
          var latid = document.getElementById(latid_name);
          if (latid)
          {
            latid.value = garProp[mapnum][nMarker]['y'];
          }
          var lngid_name = 'lng_' + mapnum + '_' + nMarker;
          var lngid = document.getElementById(lngid_name);
          if (lngid)
          {
            lngid.value = garProp[mapnum][nMarker]['x'];
          }
          var descid_name = 'desc_' + mapnum + '_' + nMarker;
          var descid = document.getElementById(descid_name);
          if (descid)
          {
            descid.value = garProp[mapnum][nMarker]['d'];
          }

        }

        if (map_posid)
        {
          //alert ('innerHTML '  + map_posid.innerHTML);
          //map_posid.innerHTML = cOutput ;
          // text area so set value not innerHTML
          map_posid.value = cOutput ;
        }
      }
    }

