/*
* функции для загрузки карт гугл и нанесения на них адресов магазинов
* используется в разделе shops
*/
if (GBrowserIsCompatible()) 
{   
 var geoshop;
 var geocoder;
 var icon;
 var map;

 // инициализация карты
 function initialize() {
  geoshop = new Array();                          
  geocoder = new GClientGeocoder();               
  map = new GMap2(document.getElementById("map"));
  map.setCenter(new GLatLng(55.02640, 82.92347), 12);
  map.addControl(new GLargeMapControl());
  map.setMapType(map.getMapTypes()[0]);
  icon = new GIcon();                             
  icon.image = "http://www.fishingsib.ru/images/float.png";
  icon.shadow = "http://www.fishingsib.ru/images/float_shd.png";
  icon.iconSize = new GSize(13, 30);
  icon.shadowSize = new GSize(26, 22);
  icon.iconAnchor = new GPoint(4, 30);
  icon.infoWindowAnchor = new GPoint(10, 1);
 }
  
 // добавляет адрес на карту
 function addAddressToMap(response) {
  var shop_key = response.name;
  var place = response.Placemark[0];
  var point = new GLatLng(place.Point.coordinates[1],
                          place.Point.coordinates[0]);
  var marker = new GMarker(point, { title: geoshop[shop_key]['title'], icon: icon });
  map.addOverlay(marker);
  marker.html = '<b>' + geoshop[shop_key]['title'] + '</b>, <a href="' + geoshop[shop_key]['site'] + '">' + geoshop[shop_key]['site'] + '</a><br>' + shop_key + '<br><br><a href="#' + geoshop[shop_key]['forum_topic_id'] + '">подробнее</a>';
  GEvent.addListener(marker, "click", 
                 function() {
                     marker.openInfoWindowHtml(marker.html);
                 });
 }

 // Function is called when an answer arrives. 
 function cacheDone(result, errors) {
  if(errors) {
   //alert(errors);
  }
  //alert(result.responseText);
  return true;
 } 

 // добавляем ответ от гугла в кэш и вызываем отрисовку точки на карте
 function cacheAddress(response) {
  if (!response || response.Status.code != 200) {
   //alert("Адрес не найден: " + response.Status.code + response.name);
  } else {
   JsHttpRequest.query(
    '/sections/shops_backend.php', // backend
    {
     // pass complete form
     'coordinates': response.name.substr(0, response.name.length - 13),
     'lat': response.Placemark[0].Point.coordinates[1],
     'lon': response.Placemark[0].Point.coordinates[0]
    },
    cacheDone,
    false  // do not disable caching
   );   
   // рисуем адресок на карте
   addAddressToMap(response);
  }
 }


 // вызов геокодирования
 function callGeocoder(address, title, description, site, phone, forum_topic_id, lat, lon) {
  geoshop[address] = new Array();
  geoshop[address]['title'] = title;
  geoshop[address]['description'] = description;
  geoshop[address]['site'] = site;
  geoshop[address]['phone'] = phone;
  geoshop[address]['forum_topic_id'] = forum_topic_id;
  if(lat == '') {
   //alert('geo ' + address);
   geocoder.getLocations(address, cacheAddress);
  } else {
   var response = 
   {
    name: address,
    Status: {
      code: 200,
      request: "geocode"
    },
    Placemark: [
      {
        Point: {
          coordinates: [lon, lat, 0]
        }
      }
    ]
   };
   addAddressToMap(response);
  }
 }

 // позволяет добавить в свойсво window.onload более одного вызова функции
 function addLoadEvent(func, p1, p2, p3, p4, p5, p6, p7, p8) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
   window.onload = func;
  } else {
   window.onload = function() {
    if (oldonload) {
     oldonload();
    }
    func(p1, p2, p3, p4, p5, p6, p7, p8);
   }
  }
 }

 window.onload = initialize;
 window.onunload = GUnload;
}
