// module_gmap.js
// Version: 1.1.1.1

var module_gmap = {

  save: function(close) {
    var form = $('gmap_form');
    var moduleId = $('moduleId').value;
    var param = {cmd: "function", funcName: "updateContentItem", moduleType: "gmap", moduleId: moduleId};
    for (i = 0; i < form.length; i++) {
    	param[form[i].name] = form[i].value;
    }
    
    var type = "markers";
    param['mapType'] = type;
    
    ajaxCM2(param, true);
    
    if (Object.isElement($('newTmpModule')))
      $('newTmpModule').remove();
    
    if (close) {
      Lightbox.hideBox();
      Content.reload();
    }
  },
  
  abort: function() {
  
  },
  
  changeType: function(newType) {
	  if (newType == "markers")
		  $('gmap_markers').show();
	  else
		  $('gmap_markers').hide();
  },
  
  initModules: function() {
	if (GBrowserIsCompatible()) {
      $$('div.gmapDiv').each(function(el) {
          var map = new GMap2(el);
          var moduleId = el.id.substring(5);
          
          new Ajax.Request(window.urlBase, {
        		method: 'post',
        		parameters: {contentManagement: 'gmapData', moduleId: moduleId},
        		onSuccess: function(response) {
                var json = eval('(' + response.responseText + ')');
                var lati = parseFloat(json.centerLat);
                var longi = parseFloat(json.centerLong);
                if (lati == 0 || longi == 0) return;
                map.setCenter(new GLatLng(lati, longi), parseFloat(json.zoom));
                
                // map control
                var customUI = map.getDefaultUI();
                customUI.maptypes.hybrid = false;
                map.setUI(customUI);
                
                // markers
                json.markers.each(function(m) {
                    if (m.latitude != 0 && m.longitude != 0) {
                    	// create map marker
                    	
                    	var position = new GLatLng(m.latitude, m.longitude);
                    	//var myIcon = new GIcon(G_DEFAULT_ICON);
                    	
                    	var myIcon = new GIcon(G_DEFAULT_ICON, window.urlBase + 'img/gmap_point.png');
                		myIcon.iconSize = new GSize(20, 20);
                		myIcon.shadow = '';
                		myIcon.iconAnchor = new GPoint(0, 10);
                      var marker = new GMarker(position, {title: m.name, icon: myIcon});
                      
                      map.addOverlay(marker);
                      	//
                      if (json.type == "hotels") {
                      	// create info Window
                    	  var img = new Image();
                    	  img.src = window.urlBase + m.image;
	                      var infoContent = "<div style='float: left; width: 250px;'><h2>" + m.name + "</h2>" + m.street + "<br />" + m.city + "<br /><a title='Mehr' href='" + m.detailUrl + "'>Mehr</a></div>";
	                      infoContent += "<div style='float: right;'><a title='Mehr' href='" + m.detailUrl + "'><img width='100' src='" + img.src + "' /></a></div><br style='clear: both;' />";
	                      GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(infoContent); });
                      }
                      
                    }
                });
            }
        	});
      });
    }    
  },
  
  showNewMarkerForm: function() {
    this.save(false);
    $('markerAddress').value = "";
    $('markerName').value = "";
    $('gmap_newMarker').show();
  },
  
  saveMarker: function() {
    var address = $('markerAddress').value;
    var name = $('markerName').value;
    var moduleId = $('moduleId').value;
    var param = {cmd: "function", funcName: "newGmapMarker", markerAddress: address, markerName: name, moduleId: moduleId};
    ajaxCM2(param);
    Lightbox.updateContent_ajax("editModule", {moduleType: "gmap", moduleId: moduleId});
  },
  
  editMarker: function() {
    var address = $('markerAddress_edit').value;
    var name = $('markerName_edit').value;
    var moduleId = $('moduleId').value;
    var markerId = $('markerId_edit').value;
    var param = {cmd: "function", funcName: "editGmapMarker", markerAddress: address, markerName: name, markerId: markerId};
    ajaxCM2(param);
    Lightbox.updateContent_ajax("editModule", {moduleType: "gmap", moduleId: moduleId});
  },
  
  abortMarker: function() {
    $('gmap_newMarker').hide();
    $('gmap_editMarker').hide();
  },
  
  showEditMarker: function(id, name, address) {
    $('markerId_edit').value = id;
    $('markerName_edit').value = name;
    $('markerAddress_edit').value = address;
    $('gmap_editMarker').show();
  },
  
  deleteMarker: function(id) {
    var sure = confirm("Sind Sie sicher, dass dieser Kartenpunkt gelöscht werden soll?");
    if (!sure) return;
    
    var moduleId = $('moduleId').value;
    ajaxCM2({cmd: "function", funcName: "deleteGmapMarker", markerId: id}, false);
    Lightbox.updateContent_ajax("editModule", {moduleType: "gmap", moduleId: moduleId});
  },
  
  checkCenterAddress: function() {
    var address = $('centerAddress').value;
    var param = {pageId: window.pageId, cmd: "function", funcName: "checkGmapCenterAddress", centerAddress: address};

    new Ajax.Request(window.ajaxUrl, {
        		method: 'post',
        		parameters: param,
        		onSuccess: function(response) {
              if (response.responseText == "OK") {
                $('centerAddressStatus').removeClassName("centerAddressStatus_fail");
                $('centerAddressStatus').addClassName("centerAddressStatus_ok");
                $('centerAddressStatus').innerHTML = "Adresse gefunden!";
              } else {
                $('centerAddressStatus').removeClassName("centerAddressStatus_ok");
                $('centerAddressStatus').addClassName("centerAddressStatus_fail");
                $('centerAddressStatus').innerHTML = "Adresse nicht gefunden!";      
              }
              $('centerAddressStatus').style.display = "block";
            }
    });
  }
}

Event.observe(window, 'load', module_gmap.initModules, false);
