/***** INDICARE PATH CMS **************/
var cms = 'modules/mod_wi_pie/assets/';

var myIcon = new GIcon();
myIcon.image = cms+'img/markers/image.png';
myIcon.shadow = cms+'img/markers/shadow.png';
myIcon.iconSize = new GSize(32,37);
myIcon.shadowSize = new GSize(51,37);
myIcon.iconAnchor = new GPoint(32,37);
myIcon.infoWindowAnchor = new GPoint(16,0);
myIcon.printImage = cms+'img/markers/printImage.gif';
myIcon.mozPrintImage = cms+'img/markers/mozPrintImage.gif';
myIcon.printShadow = cms+'img/markers/printShadow.gif';
myIcon.transparent = cms+'img/markers/transparent.png';
myIcon.imageMap = [29,0,30,1,31,2,31,3,31,4,31,5,31,6,31,7,31,8,31,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,31,22,31,23,31,24,31,25,31,26,31,27,31,28,31,29,30,30,29,31,23,32,22,33,21,34,20,35,19,36,12,36,11,35,10,34,9,33,8,32,2,31,1,30,0,29,0,28,0,27,0,26,0,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,1,1,2,0];

var markerOptions = { icon:myIcon, draggable:false };


var map;
var geocoder;

function load() {
  if (GBrowserIsCompatible()) {
    geocoder = new GClientGeocoder();
    map = new GMap2(document.getElementById('map'));
    map.addControl(new GSmallMapControl());
    map.setCenter(new GLatLng(45, 8.3), 7);
  }
}

function searchLocations(val) {
  
	var address = val + ', Piemonte, Italia';
    geocoder.getLatLng(address, function(latlng) {
    if (!latlng) {
      alert(address + ' non trovato');
    } else {
      searchLocationsNear(latlng);
    }
  });
}

function searchLocationsNear(center) {
  	
	  	
	var radius = document.getElementById('radiusSelect').value;
    var searchUrl = cms+ 'application/phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
    GDownloadUrl(searchUrl, function(data) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName('marker');
    map.clearOverlays();

    var sidebar = document.getElementById('sidebar_1');
    sidebar.innerHTML = '<div><p><strong>Comuni nel raggio di 10 Km dalla citt&agrave; prescelta.</strong></p></div>';
    if (markers.length == 0) {
      sidebar.innerHTML = '<div><p><strong>Nessun risultato.</strong></p></div>';
      map.setCenter(new GLatLng(45, 8.3), 7);
      return;
    }

    var bounds = new GLatLngBounds();
    for (var i = 0; i < markers.length; i++) {
      var name = markers[i].getAttribute('name');
      var address = markers[i].getAttribute('address');
      var distance = parseFloat(markers[i].getAttribute('distance'));
      var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                              parseFloat(markers[i].getAttribute('lng')));

      var marker = createMarker(point, name, address,i);

      map.addOverlay(marker);

      if (i == 0) {
          GEvent.trigger(marker, "click");
      }

      var sidebarEntry = createSidebarEntry(marker, name, address, distance,point,i);
      sidebar.appendChild(sidebarEntry);
      bounds.extend(point);
    }

    map.checkResize();
    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds) - 2);

  });
}

function createMarker(point, name, address,id) {
  var marker = new GMarker(point,markerOptions);
  var html = address;
  GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
    map.setCenter(point,11);
  	selItem(id);
  });
  return marker;
}

function createSidebarEntry(marker, name, address, distance,point,id) {
  var div = document.createElement('div');
  var html = '<a id="'+id+'" class="alogo" href="javascript:void(0)">'+name + ' (' + distance.toFixed(1) + ' Km)</a>'; // <br />' + address;
  div.innerHTML = html;
  div.style.marginBottom = '5px';
  GEvent.addDomListener(div, 'click', function() {
  	GEvent.trigger(marker, 'click');
  	map.setCenter(point,11);
  	selItem(id);
   });
   
	selItem(0);
	
  return div;
}


function selItem(id){
		jQuery("*").removeClass("selitem");	
		jQuery("#"+id).toggleClass('selitem');
}


jQuery.fn.fadeIn = function(speed, callback) {
    return this.animate({opacity: 'show'}, speed, function() {
        if (jQuery.browser.msie)
            this.style.removeAttribute('filter');
        if (jQuery.isFunction(callback))
            callback();
    });
};

jQuery.fn.fadeOut = function(speed, callback) {
    return this.animate({opacity: 'hide'}, speed, function() {
        if (jQuery.browser.msie)
            this.style.removeAttribute('filter');
        if (jQuery.isFunction(callback))
            callback();
    });
};



jQuery(window).bind("load", function(){
	
	jQuery("#addressInput").autocomplete(_comuni, {max:5});

	jQuery('#Gmbody').hide();
	jQuery("#applicativo_dialog").hide();
	jQuery("#mygmap :input:visible:enabled:first").focus();
	jQuery("#nota_wi_pie_dialog").hide();

	var _hash = location.href;
	var _item = _hash.split("/");
	if ( (_item[4] == 'il-tuo-comune-e-in-rete.html') || (_item[4]=='index.php?option=com_content&view=article&id=55&Itemid=73') ) {
		jQuery("#nota_wi_pie_dialog").show();	
	}

	
	jQuery("#mygmap").submit(function(){	

		load();		
		//controlli qui.
		var _v = jQuery("#addressInput", this).val();
		if (_v != chk_address) {
			if ( (_item[4] == 'il-tuo-comune-e-in-rete.html') || (_item[4]=='index.php?option=com_content&view=article&id=55&Itemid=73') ) {
				jQuery('#Gmbody').show();	
				jQuery("#nota_wi_pie_dialog").hide();	
				searchLocations(_v);
				return false;
			} else {
					jQuery("#applicativo_dialog").show();
					searchLocations(_v);
					jQuery("#nota_wi_pie_dialog").show();
					jQuery("#Gmbody").dialog({
					close: function () {
						var div = jQuery("#Gmbody").dialog("destroy");
						jQuery("#content").prepend(div);
						jQuery(".ui-dialog").remove();
						jQuery("#mydialog-target").remove();
					},
					title:dialog_title,
					height: dialog_height, 
					width: dialog_width, 
					modal : dialog_type,
					bgiframe:true, 
					resizable:false, 
					draggable:false
				});
				return false;
			}
			
		} else {
			alert('comune obbligatorio per verifica copertura!');
			jQuery("#mygmap :input:visible:enabled:first").focus();
			return false;
		}
	});
	
	
	jQuery("#mygmap_dialog").submit(function(){	

		//controlli qui.
		var _v = jQuery("#addressInput_dialog", this).val();
		if (_v != chk_address) {
			searchLocations(_v);
			return false;
		} else {
			alert('comune obbligatorio per verifica copertura!');
			jQuery("#mygmap_dialog :input:visible:enabled:first").focus();
			return false;
		}
	});
	
	jQuery("#addressInput_dialog").autocomplete(_comuni, {max:5});

	// blocco per la espansione/contrazione dei due tab
    //
    jQuery('#map_contr_a').hide();
    
    // espandi mappa
    jQuery('#map_esp_a').click(function(){
        jQuery('#map_esp_a').hide();
        jQuery('#map_contr_a').show();
        jQuery('#map').animate({ "width": "100%"}, { duration: "slow" });
        jQuery('#sidebar_1').hide();
        map.checkResize();
    });
    
    // nascondi mappa
    jQuery('#map_contr_a').click(function(){
        jQuery('#map_esp_a').show();
    	jQuery('#map_contr_a').hide();
        jQuery('#sidebar_1').show();
    	jQuery('#map').css( "width", "73%");
    });
    
});
jQuery(window).bind("unload", function(){
	GUnload();
});


