var Hmap;
var markerCluster;
var config = new Object;
config.markers_gym = new Array;
var marker_index = 0;
var infowindowLevel = 0;
var markerStyles = null;

var origo_point = new google.maps.LatLng(47.1422647, 19.5894158);
var origo_zoom = 7;
var infowindow;

var markersArray = [];

var handleResponse_gyms =
{
  success: success_gyms,
  failure: failure_gyms
}

function success_gyms(o)
{
	//itt álj
	mapAjaxLoader(false)
	if (o.overrideMimeType) o.overrideMimeType("text/plain");
		
	var gyms = YAHOO.lang.JSON.parse(o.responseText);
	setMarkers('gym', gyms, '/images/markers/sportolj.png', '/images/markers/sportolj_no_order.png');	
}

function failure_gyms(o)
{
	//itt álj
	mapAjaxLoader(false)
	if (o.overrideMimeType) o.overrideMimeType("text/plain");
}

function initMap(needToLoadPoints)
{	
	needToLoadPoints = needToLoadPoints || 0;
	
	mapAjaxLoader(true)
	infowindow = new google.maps.InfoWindow(
		         	{content : ''}
		         );		  
	
    markerStyles = [[{
        url: '../images/markers/m1.png',
        height: 48,
        width: 20,
        opt_anchor: [10, 0],
        textColor: '#ffffff',
        opt_textSize: 10
      }, {
        url: '../images/markers/m2.png',
        height: 48,
        width: 20,
        opt_anchor: [10, 0],
        textColor: '#ffffff',
        opt_textSize: 10
      }, {
        url: '../images/markers/m3.png',
        height: 48,
        width: 20,
        opt_anchor: [10, 0],
        textColor: '#ffffff',
        opt_textSize: 10
      }, {
        url: '../images/markers/m4.png',
        height: 48,
        width: 20,
        opt_anchor: [10, 0],
        textColor: '#ffffff',
        opt_textSize: 10
      }, {
        url: '../images/markers/m5.png',
        height: 48,
        width: 20,
        opt_anchor: [10, 0],
        textColor: '#ffffff',
        opt_textSize: 10
        }
      ]];	
	
	var myOptions = {
		zoom: origo_zoom,
		center: origo_point,
		mapTypeControl: false,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		navigationControl: true,
	    navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}		
	};

	Hmap =  new google.maps.Map(document.getElementById("sportolj_map"), myOptions);	

	sportId = document.getElementById('selectedSport');
	parameters = '&sport='+sportId.value;
	if(needToLoadPoints){
		YAHOO.util.Connect.asyncRequest('POST', '/ajax/gyms', handleResponse_gyms, parameters);
	}
	
}  // init

function loadPoints(sport){
	if (Hmap == undefined) {
		initMap()
	}
	config.markers_gym = new Array();
	if(markerCluster) markerCluster.clearMarkers();
	clearOverlays();
	
	parameters = '&sport='+sport;
	//itt start ajax
	mapAjaxLoader(true)
	YAHOO.util.Connect.asyncRequest('POST', '/ajax/gyms', handleResponse_gyms, parameters);			
}

function clearOverlays() {
  if (markersArray) {
    for (i in config.markers_gym) {
      markersArray[i].setMap(null);
    }
  }
}

function setMarkers(name, locations, image, image_no_order)
{

	if(markerCluster) markerCluster.clearMarkers();
	clearOverlays();
	
	var image = new google.maps.MarkerImage(image,
		new google.maps.Size(20, 33),
		new google.maps.Point(0,0),
		new google.maps.Point(0, 33)
	);
	var image_no_order = new google.maps.MarkerImage(image_no_order,
		new google.maps.Size(20, 33),
		new google.maps.Point(0,0),
		new google.maps.Point(0, 33)
	);
	
	for (var i = 0; i < locations.length; i++)
	{
		var item = locations[i];		
		
		if (item['sp_gym_lattitude'] != parseFloat(item['sp_gym_lattitude']) ||
		    item['sp_gym_longitude'] != parseFloat(item['sp_gym_longitude'])
		    ) {			
			//console.log( item['sp_gym_id']+' | '+item['sp_gym_lattitude']+' | '+item['sp_gym_longitude'] );
		} else {
			var myLatLng = new google.maps.LatLng(item['sp_gym_lattitude'], item['sp_gym_longitude']);
		}
		
		
		img = image;
		if(item['sp_gym_active'] == 2) {
			img = image_no_order
		}		
		
		m = new google.maps.Marker({
			position: myLatLng,
			map: Hmap,
			icon: img,
			title: item['sp_gym_name'],
			zIndex: i,
			id: item['sp_gym_id']
		});

		href = '/'+item['sp_gym_seo_name'];
		var content  = '<div style="height:120px;">';
		content += '<strong><a href="'+href+'">'+item['sp_gym_name']+'</a></strong>';
		content += '<p>&nbsp;</p>';
		content += '<p><a href="'+href+'"><img src="http://static.sportolj.hu/images/'+item['sp_gym_id']+'/thu/'+item['sp_gym_thumb']+'" alt="'+item['sp_gym_thumb_alt']+'" style="float:left; margin-right:10px;"/></a>'
			       '<a href="'+href+'">'+item['sp_gym_short_description']+'</a></p>';
		content += '<p><a href="'+href+'">tovább</a></p>';
		content += '<p>'+item['sports']+'</p>';

		attachInfowindow(m, marker_index, content, item['sp_gym_id']);

		if (name == 'gym') config.markers_gym[i] = m;
		
		marker_index++;
	}
	
	if (name == 'gym') {
		markerCluster = new MarkerClusterer(Hmap, config.markers_gym, {
			maxZoom: null,
			gridSize: 20,
			styles: markerStyles[0]
		});
	}
	
} // setMarkers


function attachInfowindow(marker, number, content_message, i) {
	  markersArray.push(marker);
	  google.maps.event.addListener(marker, 'click', function() {
		infowindow.setContent(content_message);
	    infowindow.setZIndex(++infowindowLevel);
	    infowindow.open(Hmap, marker);
	  });
	}

function mapAjaxLoader(e) {
	if (e) {
		//show
		var pos = $("#sportolj_map").position();
		var x = pos.left + ($("#sportolj_map").width() - $("#ajax_loader_map").width()) / 2;
		var y = pos.top + ($("#sportolj_map").height() - $("#ajax_loader_map").height()) / 2;
		$("#ajax_loader_map").css("top", y) 
		$("#ajax_loader_map").css("left", x) 
		$("#ajax_loader_map").show()
	} else {
		//hide
		$("#ajax_loader_map").hide()
	}
}
//YAHOO.util.Event.addListener(window, 'load', init);
//YAHOO.util.Event.onDOMReady(init);
