$(document).ready(
	function() {
		mapOffersDevelopers.init();

		$("#id_firma").change(function() {
			mapOffersDevelopers.markersUnset(["bullet_red","bullet_purple","bullet_orange","bullet_blue","bullet_green"]);
		
			mapOffersDevelopers.firmId = $(this).val();
			mapOffersDevelopers.getStartPoints();
		});
		
		$("#bullet_red").change(function() {
			mapOffersDevelopers.markersOnOff("bullet_red", $(this).attr("checked"));
			mapOffersDevelopers.getStartPoints();
		});

		$("#bullet_blue").change(function() {
			mapOffersDevelopers.markersOnOff("bullet_blue", $(this).attr("checked"));
			mapOffersDevelopers.getStartPoints();
		});

		$("#bullet_green").change(function() {
			mapOffersDevelopers.markersOnOff("bullet_green", $(this).attr("checked"));
			mapOffersDevelopers.getStartPoints();
		});

		$("#bullet_purple").change(function() {
			mapOffersDevelopers.markersOnOff("bullet_purple", $(this).attr("checked"));
			mapOffersDevelopers.getStartPoints();
		});

		$("#bullet_orange").change(function() {
			mapOffersDevelopers.markersOnOff("bullet_orange", $(this).attr("checked"));
			mapOffersDevelopers.getStartPoints();
		});
	});

var mapOffersDevelopers = {
		map: null,
		infoWindow: null,
		showId: null,
		firmId: 0,
		visibleMarkersCount: 0,
		allMarkersCount: 0,
		markers: {
			"bullet_red":{"count":0,"marker":{},"state":true,"icon":new google.maps.MarkerImage("http://www.nieruchomosci.com.pl/img/index/img/marker/red_MarkerA.png", new google.maps.Size(20,34))},
			"bullet_purple":{"count":0,"marker":{},"state":true,"icon":new google.maps.MarkerImage("http://www.nieruchomosci.com.pl/img/index/img/marker/purple_MarkerB.png", new google.maps.Size(20,34))},
			"bullet_orange":{"count":0,"marker":{},"state":true,"icon":new google.maps.MarkerImage("http://www.nieruchomosci.com.pl/img/index/img/marker/orange_MarkerC.png", new google.maps.Size(20,34))},
			"bullet_blue":{"count":0,"marker":{},"state":false,"icon":new google.maps.MarkerImage("http://www.nieruchomosci.com.pl/img/index/img/marker/blue_MarkerD.png", new google.maps.Size(20,34))},
			"bullet_green":{"count":0,"marker":{},"state":false,"icon":new google.maps.MarkerImage("http://www.nieruchomosci.com.pl/img/index/img/marker/green_MarkerE.png", new google.maps.Size(20,34))}
		},
		init: function() {
			this.markers["bullet_red"].state = $("#bullet_red").is(":checked");
			this.markers["bullet_purple"].state = $("#bullet_purple").is(":checked");
			this.markers["bullet_orange"].state = $("#bullet_orange").is(":checked");
			this.markers["bullet_blue"].state = $("#bullet_blue").is(":checked");
			this.markers["bullet_green"].state = $("#bullet_green").is(":checked");
			
			this.infoWindow = new google.maps.InfoWindow();
			this.showId = $("#show_id").val();
		    var mapSettings = {
		    		zoom: 11,  
		    		center: new google.maps.LatLng(51.1078852,17.0385376),
		    		mapTypeId: google.maps.MapTypeId.ROADMAP,
		    		scrollwheel: false
		    };
		    this.map = new google.maps.Map(document.getElementById("map"), mapSettings);
		    this.getStartPoints();
		},
		getStartPoints: function() {
			var temp;
			this.visibleMarkersCount = 0;
			this.allMarkersCount = 0;
			$("#liczba_ofert, #liczba_ofert_opis").hide();
			$("#aktualizacja").show();
			var rn = $("#bullet_red").is(":checked")+","+$("#bullet_purple").is(":checked")+","+$("#bullet_orange").is(":checked")+","+$("#bullet_blue").is(":checked")+","+$("#bullet_green").is(":checked");
			$.ajax({
				url: "ajax/google_map/getInvestMapStartPoints.php",
				method: "get",
				data: {show_id:this.showId,id_firma:this.firmId,"rn":rn},
				dataType: "json",
				async: false,
				success: function(data) {
					if(data.err) {
						$("#map").html(data.msg);
					} else {
						mapOffersDevelopers.allMarkersCount = data.count;
						if(data.points == null) {
							alert("Brak ofert do pokazania.");
							mapOffersDevelopers.infoWindow.close();
						} else {
							$.each(data.points, function(key, value){
								temp = mapOffersDevelopers.addMarker(value.lat, value.lng, value.skrot, value.icon, value.show);
								if(value.icon == 'bullet_red' && !mapOffersDevelopers.markers['bullet_red'].state) {
									temp.setVisible(false);
									mapOffersDevelopers.visibleMarkersCount--;
								}
								if(value.icon == 'bullet_purple' && !mapOffersDevelopers.markers['bullet_purple'].state) {
									temp.setVisible(false);
									mapOffersDevelopers.visibleMarkersCount--;
								}
								if(value.icon == 'bullet_orange' && !mapOffersDevelopers.markers['bullet_orange'].state) {
									temp.setVisible(false);
									mapOffersDevelopers.visibleMarkersCount--;
								}
								if(value.icon == 'bullet_blue' && !mapOffersDevelopers.markers['bullet_blue'].state) {
									temp.setVisible(false);
									mapOffersDevelopers.visibleMarkersCount--;
								}
								if(value.icon == 'bullet_green' && !mapOffersDevelopers.markers['bullet_green'].state) {
									temp.setVisible(false);
									mapOffersDevelopers.visibleMarkersCount--;
								}
							});
						}
					}
				}
		    });
			
			$("#liczba_ofert").html("<b>"+this.visibleMarkersCount+"</b> z "+this.allMarkersCount);
			$("#liczba_ofert, #liczba_ofert_opis").show();
			$("#aktualizacja").hide();
		},
		addMarker: function(lat,lng,txt,marker_name,show) {
			var markerSettings = {
				position: new google.maps.LatLng(lat,lng),
				map: this.map,
				icon: this.markers[marker_name].icon
			}
			
			var marker = new google.maps.Marker(markerSettings);
			marker.txt = txt;
			
			google.maps.event.addListener(marker,"click",function() {  
				mapOffersDevelopers.infoWindow.setContent(marker.txt);
				mapOffersDevelopers.infoWindow.open(mapOffersDevelopers.map,marker); 
		    });
			
			if(this.showId) {
				if(show) {
					this.infoWindow.setContent(marker.txt);
					this.infoWindow.open(this.map,marker);
				}
			}
			
			this.markers[marker_name].marker[this.markers[marker_name].count] = marker;
			this.markers[marker_name].count++;
			
			this.visibleMarkersCount++;
			
		    return marker; 
		},
		markersOnOff: function(marker_group_name, state) {
			this.markers[marker_group_name].state = state;
			if(state) {
				$.each(this.markers[marker_group_name].marker, function(index, value) {
					value.setVisible(true);
					mapOffersDevelopers.visibleMarkersCount++;
				});
			} else {
				$.each(this.markers[marker_group_name].marker, function(index, value) {
					value.setVisible(false);
					mapOffersDevelopers.visibleMarkersCount--;
				});
			}
			
			$("#liczba_ofert").html(this.visibleMarkersCount+"/"+this.allMarkersCount);
		},
		markersUnset: function(marker_group_name) {
			if(typeof marker_group_name == "string") {
				$.each(this.markers[marker_group_name].marker, function(index, value) {
					value.setMap(null);
				});
				mapOffersDevelopers.markers[marker_group_name].count = 0;
				mapOffersDevelopers.markers[marker_group_name].marker = {};
			} else if (typeof marker_group_name === "object" && marker_group_name.constructor === Array) {
				$.each(marker_group_name, function(index, group_name) {
					$.each(mapOffersDevelopers.markers[group_name].marker, function(index, value) {
						value.setMap(null);
					});
					mapOffersDevelopers.markers[group_name].count = 0;
					mapOffersDevelopers.markers[group_name].marker = {};
				});
			}
		}
	}
