var infowindow          = new google.maps.InfoWindow();
var markersmap          = [];
var to_htmlsmap         = [];
var from_htmlsmap       = [];
var iconmap             = [];
var show_dodo_results   = true;
var show_google_results = true;
var zoom_changed_func   = "reloadMarkers";
var default_zoom        = 7;
var default_section     = "general";

var mapmap=null;
var map_settings = new Array();

function initMap() {
	$(function(){
		onLoadmap();
	});
	setMapHtml();
}

function getMenuHtml() {
	var html = '\
			<ul id="map-nav">\n\
				<li class="selected"><a id="general"><span class="left">General</span><span class="right">&nbsp;</span></a></li>\n\
				<li><a id="clubs"><span class="left">Clubs</span><span class="right">&nbsp;</span></a></li>\n\
				<li><a id="events"><span class="left">Events</span><span class="right">&nbsp;</span></a></li>\n\
				<li><a id="djs"><span class="left">Artists</span><span class="right">&nbsp;</span></a></li>\n\
				<li><a id="prs"><span class="left">Pr\'s</span><span class="right">&nbsp;</span></a></li>\n\
				<li><a id="facebook"><span class="left">Facebook</span><span class="right">&nbsp;</span></a></li>\n\
			</ul>\n\
			';
	return html;
}

function getFiltersHtml() {
	html = '';
	if(map_settings["show_filters"]) { 
		html += '\
		<form name="general-filters-form" id="general-filters-form">\n\
			<input type="hidden" name="section" />\
			<div class="map-filters-wrapper map-filters-wrapper-openned">\n\
				<div id="general-filters" class="map-filter-container">\n\
					<div class="background">\n\
						&nbsp;\n\
					</div>\n\
					<input type="hidden" name="tab" />';
	}
	
	if(map_settings["facebook_map"]) {
		html += '<a target="_blank" href="'+http+'" style="top: 179px;">To use full featured map visit DoDoMaps.com</a>';
		html += '\
			<div style="display:none" class="filters-group" id="facebook-filters">\n\
			<input checked="checked" class="checkbox" type="hidden" name="facebook" value="1" />\n\
			</div>';
	} else {
		if(map_settings["show_club_filters"]) {
			html += '\
						<div class="checkbox-filters">\n\
							<div class="filters-group" id="club-filters">\n\
								<div class="first-column">\n\
									<label class="dodo-checkbox club">\n\
										<input class="checkbox" type="checkbox" name="club" value="1" />\n\
										clubs\n\
									</label>\n\
									<label class="dodo-checkbox bar">\n\
										<input class="checkbox" type="checkbox" name="bar" value="1" />\n\
										bar\n\
									</label>\n\
									<label class="dodo-checkbox adult">\n\
										<input class="checkbox" type="checkbox" name="adult" value="1" />\n\
										adults\n\
									</label>\n\
								</div>\n\
								<div class="second-column">\n\
									<label class="dodo-checkbox wine-bar">\n\
										<input class="checkbox" type="checkbox" name="wine-bar" value="1" />\n\
										wine bar\n\
									</label>\n\
									<label class="dodo-checkbox beers-bar">\n\
										<input class="checkbox" type="checkbox" name="beer-bar" value="1" />\n\
										beers bar\n\
									</label>\n\
									<label class="dodo-checkbox gay">\n\
										<input class="checkbox" type="checkbox" name="gay" value="1" />\n\
										gay\n\
									</label>\n\
								</div>\n\
								<br clear="all" />\n\
							</div>\n\
							<div class="filters-group" id="music-filters">\n\
								<div class="first-column">\n\
									<label class="dodo-checkbox rock">\n\
										<input class="checkbox" type="checkbox" name="rock" value="1" />\n\
										rock\n\
									</label>\n\
									<label class="dodo-checkbox house">\n\
										<input class="checkbox" type="checkbox" name="house" value="1" />\n\
										house\n\
									</label>\n\
									<label class="dodo-checkbox rnb">\n\
										<input class="checkbox" type="checkbox" name="rnb" value="1" />\n\
										r&amp;b\n\
									</label>\n\
								</div>\n\
								<div class="second-column">\n\
									<label class="dodo-checkbox latino">\n\
										<input class="checkbox" type="checkbox" name="latino" value="1" />\n\
										latino\n\
									</label>\n\
									<label class="dodo-checkbox pop">\n\
										<input class="checkbox" type="checkbox" name="pop" value="1" />\n\
										pop\n\
									</label>\n\
									<label class="dodo-checkbox other">\n\
										<input class="checkbox" type="checkbox" name="other" value="1" />\n\
										other\n\
									</label>\n\
								</div>\n\
								<br clear="all" />\n\
							</div>';
		} else {
			/*
			html += '\
				<input class="checkbox" type="hidden" name="club" value="1" />\n\
				<input class="checkbox" type="hidden" name="bar" value="1" />\n\
				<input class="checkbox" type="hidden" name="adult" value="1" />\n\
				<input class="checkbox" type="hidden" name="wine-bar" value="1" />\n\
				<input class="checkbox" type="hidden" name="beer-bar" value="1" />\n\
				<input class="checkbox" type="hidden" name="gay" value="1" />\n\
				<input class="checkbox" type="hidden" name="rock" value="1" />\n\
				<input class="checkbox" type="hidden" name="house" value="1" />\n\
				<input class="checkbox" type="hidden" name="rnb" value="1" />\n\
				<input class="checkbox" type="hidden" name="latino" value="1" />\n\
				<input class="checkbox" type="hidden" name="pop" value="1" />\n\
				<input class="checkbox" type="hidden" name="other" value="1" />';
			*/
		}
		
		if(map_settings["show_facebook_filter"]) {
			html += '\
						<div class="filters-group" id="facebook-filters">\n\
							<div class="first-column">\n\
								<label class="dodo-checkbox facebook">\n\
									<input class="checkbox" type="checkbox" name="facebook" value="1" />\n\
									facebook\n\
								</label>\n\
							</div>\n\
							<br clear="all" />\n\
						</div>\n\
					</div>';
		} else {
			// html += '<input class="checkbox" type="hidden" name="facebook" value="1" />';
		}
	
		if(map_settings["show_event_filters"]) {
			html += '\
					<div class="filters-group" id="event-filters">\n\
						<input type="hidden" id="exact-date" name="exact-date"/>\n\
						<div class="dodo-calendar-wrapper">\n\
							<div class="dodo-calendar">\n\
							</div>\n\
						</div>\n\
						<label for="dodo-cal-from" class="dodo-cal-from-lbl">\n\
							From\n\
						</label>\n\
						<input type="text" id="dodo-cal-from" name="from-date"/>\n\
						<label for="dodo-cal-to" class="dodo-cal-to-lbl">\n\
							to\n\
						</label>\n\
						<input type="text" id="dodo-cal-to" name="to-date"/>\n\
						<br clear="all" />\n\
					</div>';
		}
		
		if(map_settings["show_location_filters"]) {
			html += '\
					<div class="filters-group last-filters-group">\n\
						<p style="height: 20px;" class="map-filter-row">\
						<label style="margin-top: 0px;" for="dodo-club-city" class="dodo-cal-from-lbl dodo-club-city-lbl">\n\
							City\n\
						</label>\n\
						<input type="text" style="width:95px; height: 16px;" id="city" name="city"/>\n\
						</p>\
						<p class="map-filter-row">\
						<label style="margin-top: 0px;" for="dodo-club-country" class="dodo-cal-to-lbl dodo-club-country-lbl">\n\
							Country\n\
						</label>\n\
						<input type="text" id="country" style="width:95px; height: 16px;" name="country"/>\n\
						</p>\
						<a id="search-filter-button">Search</a>\n\
						<br clear="all" />\n\
					</div>';
		}
	}
	if(map_settings["show_filters"]) {
		html += '\
				</div>\n\
			</div>\n\
		</form>\n\
		<a id="slide-filters" class="collapse-filters" title="Collapse filters"></a>';
	}
	return html;
}

function setMapHtml() {
	var html = '';
	
	if(map_settings["show_wrapper"]) {
		html += '<div id="map" class="dodo-box dodo-'+map_settings["map_width"]+' home-map" style="position:relative;">';
		html += '<div class="dodo-header dodo-gray-header">';
		if(map_settings["show_menu"]) {
			html += getMenuHtml();
		} else if(map_settings["header_title"] != undefined) {
			html += map_settings["header_title"];
		} else {
			html += 'Map Location';
		}
		html += '</div>';
		html += '<div id="map-home" class="dodo-content">';
	}
	
	html += getFiltersHtml();
	
	html += '<div id="mapmap" style="width: '+(map_settings["map_width"]-43)+'px; height: '+map_settings["map_height"]+'px; position:relative;"></div>';
	if(map_settings["show_wrapper"]) {
		html += '\
		</div>\n\
		<div class="dodo-footer"></div>\n\
	    </div><!-- map -->\n\
		<div id="sidebar_map" class="sidebar_map"></div>';
	}
	 
	$("#map-container").html(html);
}

var club_filters_selector     = "#club-filters input";
var music_filters_selector    = "#music-filters input";
var facebook_filters_selector = "#facebook-filters input";
var event_filters_selector    = "#event-filters input";
var location_filters_selector = "#location-filters input";
var my_map_filters            = ".my-map-filter";

function update_section_filters(section) {
	switch(section) {
		case "general":
			click_checkbox(club_filters_selector,true);
			click_checkbox(music_filters_selector,true);
			click_checkbox(facebook_filters_selector,true);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
		case "clubs":
			click_checkbox(club_filters_selector,true);
			click_checkbox(music_filters_selector,true);
			click_checkbox(facebook_filters_selector,false);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
		case "events":
			click_checkbox(club_filters_selector,false);
			click_checkbox(music_filters_selector,true);
			click_checkbox(facebook_filters_selector,true);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
		case "djs":
			click_checkbox(club_filters_selector,false);
			click_checkbox(music_filters_selector,true);
			click_checkbox(facebook_filters_selector,false);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
		case "prs":
			click_checkbox(club_filters_selector,false);
			click_checkbox(music_filters_selector,true);
			click_checkbox(facebook_filters_selector,false);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
		case "facebook":
			click_checkbox(club_filters_selector,false);
			click_checkbox(music_filters_selector,false);
			click_checkbox(facebook_filters_selector,true);
			$(event_filters_selector).val("");
			$(location_filters_selector).val("");
			break;
	}
	$('input[name="section"]').val(section);
}

function update_markers() {
	reload_map();
}

function click_checkbox(selector, selected) {
	if(selected == true) {
		$(selector).attr('checked', true);
		$(selector).parent().addClass("checked");
	} else {
		$(selector).attr('checked', false);
		$(selector).parent().removeClass("checked");
	}
}

$().ready( function() {
	//customizing form element's design
	try {
		$(".map-filter-container input:checkbox").uniform();
	} catch(err) { }
	
	//handling section clicks
	$("#map-nav li a, .my-map-filter").live("click", function() {
		update_section_filters($(this).attr('id'));
		update_markers();

		$("#map-nav li").removeClass("selected");
		$(this).parent().addClass("selected");
		reloadMarkers();

	})
	
	//initializing calendars
	$( ".dodo-calendar" ).datepicker({
		dateFormat: 'yy-mm-dd',
		onSelect: function(dateText, inst) {
			$("#from-date").val("");
			$("#to-date").val("");
			$("#exact-date").val(dateText);
			reloadMarkers();
		}
	});
	$('#dodo-cal-from').datepicker({
		dateFormat: 'yy-mm-dd',
		onSelect: function( selectedDate ) {
			instance = $( this ).data( "datepicker" );
			date = jQuery.datepicker.parseDate(
			instance.settings.dateFormat ||
			jQuery.datepicker._defaults.dateFormat,
			selectedDate, instance.settings );
			$('#dodo-cal-to').datepicker( "option", 'minDate', date );
		}
	});

	$('#dodo-cal-to').datepicker({
		dateFormat: 'yy-mm-dd',
		onSelect: function( selectedDate ) {
			instance = $( this ).data( "datepicker" );
			date = jQuery.datepicker.parseDate(
			instance.settings.dateFormat ||
			jQuery.datepicker._defaults.dateFormat,
			selectedDate, instance.settings );
			$('#dodo-cal-from').datepicker( "option", 'maxDate', date );
		}
	});
	//animating slide filters panel
	$("#slide-filters").css("cursor", "pointer");
	$(".map-filters-wrapper, .map-filters-wrapper .map-filter-container, .map-filters-wrapper .map-filter-container .background").css("height", map_settings["map_height"]+"px");
	$("#slide-filters").css("top", ((map_settings["map_height"]-39)/2+60)+"px");
	$("#slide-filters").css("right", "207px");
	$(".map-filters-wrapper").width(186);
	$("#slide-filters").click( function() {
		var wrapper = $(".map-filters-wrapper");
		if($(wrapper).hasClass("map-filters-wrapper-openned")) {
			$(this).animate({
				right: "21px"
			}, 500);
			$(this).removeClass("collapse-filters");
			$(this).addClass("expand-filters");
			$(this).attr("title", "Expand filters");
			$(wrapper).animate({
				width: "0px"
			}, 500);
			$(wrapper).removeClass("map-filters-wrapper-openned");
			$(wrapper).addClass("map-filters-wrapper-closed");
		} else {
			$(wrapper).animate({
				width: "186px"
			}, 500);
			$(this).animate({
				right: "207px"
			}, 500);
			$(this).addClass("collapse-filters");
			$(this).removeClass("expand-filters");
			$(this).attr("title", "Collapse filters");
			$(wrapper).removeClass("map-filters-wrapper-closed");
			$(wrapper).addClass("map-filters-wrapper-openned");
		}
	});
	if(map_settings["collapse_filters"] != false) {
		$("#slide-filters").click();
	}
	
	//handling filter checkbox filters
	$(".map-filters-wrapper input:checkbox, #search-filter-button").click( function () {
		if($(this).attr("id") == "search-filter-button") {
			if($("#from-date").val() != "" || $("#to-date").val() != "") {
				$("#exact-date").val("");
			}
			if($("#city").val() != "" && $("#country").val() != "") {
				goToAddress($("#city").val()+", "+$("#country").val());
			} else if($("#city").val() != "") {
				goToAddress($("#city").val());
			} else if($("#country").val() != "") {
				goToAddress($("#country").val());
			} else {
				reloadMarkers();
			}
		} else {
			var name = $(this).attr('name').toLowerCase();
			if($(this).attr('checked')) {
				$('input[rel|="'+name+'"]').attr('checked', true);
				$('input[rel|="'+name+'"]').parent().addClass('checked');
			} else {
				$('input[rel|="'+name+'"]').attr('checked', false);
				$('input[rel|="'+name+'"]').parent().removeClass('checked');
			}
			var section_selected_id = $("#map-nav li.selected a").attr("id");
			reloadMarkers(true);
		}
	});
});
var map_loaded = false;
function map_loaded() {
	map_ = true;
	jQuery("#loading-wrapper").hide();
	jQuery("#loading").html("");
}

function map_loading() {
	$("#loading-wrapper").hide();
	return;
	if(!loaded) {
		jQuery("#loading-wrapper").show();
		var loading_str = "loading";
		jQuery("#loading").html(loading_str);
		setTimeout('map_loading()', 500);
	}
}

function reload_map(src) {
	loaded = false;
	index = 1;
	map_loading();
	jQuery("#map-home iframe").attr("src", src);
}

map_loading();
$( function() {
	update_section_filters(default_section);
	update_markers();
});
function onLoadmap() {
	var mapObjmap=document.getElementById("mapmap");
	if(mapObjmap!='undefined'&&mapObjmap!=null) {
		var mapOptionsmap= {
			zoom:default_zoom,
			mapTypeId:google.maps.MapTypeId.ROADMAP,
			mapTypeControl:true,
			mapTypeControlOptions: {
				style:google.maps.MapTypeControlStyle.DROPDOWN_MENU
			}
		};
		if(map_settings["user_location"]["lat"] != 0 && map_settings["user_location"]["lng"] != 0) {
			mapOptionsmap.center=new google.maps.LatLng(map_settings["user_location"]["lat"], map_settings["user_location"]["lng"]);
		} else if(map_settings["user_location_str"] != undefined && map_settings["user_location_str"] != "") {
			goToAddress(map_settings["user_location_str"], default_zoom);
		} else {
			goToAddress("Check Republic", 4);
		}
		
		mapmap=new google.maps.Map(mapObjmap,mapOptionsmap);
		google.maps.event.addListener(mapmap, 'zoom_changed', function() {
			eval(zoom_changed_func+'();');
			var location = getCurrentLocation();
		});
		google.maps.event.addListener(mapmap, 'dragend', function() {
			eval(zoom_changed_func+'();');
			// reloadMarkers();
		});
		var today = new Date();

		var markers_loaded_first = false
		var time_started_to_drag = new Date();
		var now;

		google.maps.event.addListener(mapmap, 'bounds_changed', function() {
			if(!markers_loaded_first) {
				eval(zoom_changed_func+'();');
				// reloadMarkers();
				markers_loaded_first = true;
			}
		});
	}
}

function getCurrentLocation() {
	var bounds = mapmap.getBounds();
	var ne = bounds.getNorthEast();
	var sw = bounds.getSouthWest();

	var location = new Array();

	location["ne"] = new Array();
	location["ne"]["lat"] = ne.lat();
	location["ne"]["lng"] = ne.lng();

	location["sw"] = new Array();
	location["sw"]["lat"] = sw.lat();
	location["sw"]["lng"] = sw.lng();

	return location;
}

function goToAddress(address, zoom, fun) {
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode( { 'address': address}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			mapmap.fitBounds(results[0].geometry.bounds);
			if(zoom != undefined) {
				mapmap.setZoom(zoom);
			}
			if(fun == undefined) {
				reloadMarkers(true);
			} else {
				elval(fun+'()');
			}
			return true;
		} else {
			return false;
		}
	});
}

function reloadMarkers(clear_current_markers) {
	
	var section = $("[name=section]").val();
	switch(section) {
		case "general":
			show_google_results = true;
			break;
		case "clubs":
			show_google_results = true;
			break;
		case "events":
			show_google_results = false;
			break;
		case "djs":
			show_google_results = false;
			break;
		case "prs":
			show_google_results = false;
			break;
		case "facebook":
			show_google_results = false;
			break;
		default: show_google_results = false;
	}
	
	clearOverlays(clear_current_markers);
	if(show_google_results) {
		searchOnGoogle();
	}
	
	if(show_dodo_results) {
		var location = getCurrentLocation();
		
		var loop = 0;
		var filter_selectors = new Array();
		
		if(map_settings["show_club_filters"])     filter_selectors[loop++] = club_filters_selector;
		if(map_settings["show_music_filters"])    filter_selectors[loop++] = music_filters_selector;
		if(map_settings["show_facebook_filter"])  filter_selectors[loop++] = facebook_filters_selector;
		if(map_settings["show_event_filters"])    filter_selectors[loop++] = event_filters_selector;
		if(map_settings["show_location_filters"]) filter_selectors[loop++] = location_filters_selector;
		if(map_settings["club_filters_selector"]) filter_selectors[loop++] = club_filters_selector;
		if(map_settings["show_my_map_filters"])   filter_selectors[loop++] = my_map_filters;
		
		var data = "";
		data += "fun="+map_settings["markers_webservice"];
		data += "&neLat="+location["ne"]["lat"];
		data += "&neLng="+location["ne"]["lng"];
		data += "&swLat="+location["sw"]["lat"];
		data += "&swLng="+location["sw"]["lng"];
		
		
		if(filter_selectors.length > 0) {
			var filter_selectors_str = "";
			for(var i=0; i<filter_selectors.length; i++) {
				if(i > 0) {
					filter_selectors_str += ",";
				}
				filter_selectors_str += filter_selectors[i];
			}
		}
		$(filter_selectors_str).each(function() {
			if($(this).attr("type") == "checkbox" && $(this).is(":checked")) {
				data += "&"+$(this).attr("name")+"="+$(this).val();
			} else if($(this).attr("type") == "text" || $(this).attr("type") == "hidden") {
				data += "&"+$(this).attr("name")+"="+$(this).val();
			}
		})
		data += "&section="+$('input[name="section"]').val();
		
		
		$.ajax({
			type: "POST",
			url: map_settings["markers_url"],
			data: data,
			dataType: "html",
			success: function(_response) {
				var obj = $.parseJSON(_response);
				if(obj.msg != 1) {
					for(var i in obj) {
						if(obj[i].latitude != "" && obj[i].latitude != undefined &&
						   obj[i].longitude != "" && obj[i].longitude != undefined // &&
						   // markersmap.length < 20
						   ) {
						   	
							var marker_url = obj[i].marker;
							var marker_map_key = marker_url.replace(/\/|:|\.|_/g, "");
							if(iconmap[marker_map_key] == null) {
								iconmap[marker_map_key] = {};
								iconmap[marker_map_key].image = new google.maps.MarkerImage(
																	marker_url, 
																	new google.maps.Size(22,47), 
																	new google.maps.Point(0,0), 
																	new google.maps.Point(22,47));
								iconmap[marker_map_key].id = obj[i].id;
							}
							var point = new google.maps.LatLng(parseFloat(obj[i].latitude), parseFloat(obj[i].longitude));
							var content = "";
							if(obj[i].owner_button == true) {
								content = '<div class="tooltip-content">'+obj[i].content+' <a style="position: absolute; bottom: 0px; right: 0px;" target="_top" href="?params=en/user/create-club/'+obj[i].id+'">owner?</a></div>';
							} else {
								content = obj[i].content;
							}
							markersmap.push(createMarker(
								mapmap,
								point,
								obj[i].title,
								content,
								iconmap[marker_map_key].image,
								'',
								'',
								'')
							);
						}
					}
				} else {
				}
			}
		});
	}
}


var service;
var searched_for;
function searchOnGoogle() {
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['club'] };
		var request = { bounds: bounds, keyword: ['club', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesClubRock);
	}
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['club'] };
		var request = { bounds: bounds, keyword: ['club', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesClubHouse);
	}
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['club'] };
		var request = { bounds: bounds, keyword: ['club', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesClubLatino);
	}
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['club'] };
		var request = { bounds: bounds, keyword: ['club', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesClubRnB);
	}
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['club'] };
		var request = { bounds: bounds, keyword: ['club', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesClubPop);
	}
	
	if($("[name=bar]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['bar'] };
		var request = { bounds: bounds, keyword: ['bar', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBarRock);
	}
	
	if($("[name=bar]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['bar'] };
		var request = { bounds: bounds, keyword: ['bar', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBarHouse);
	}
	
	if($("[name=club]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: [barb'] };
		var request = { bounds: bounds, keyword: ['bar', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBarLatino);
	}
	
	if($("[name=bar]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['bar'] };
		var request = { bounds: bounds, keyword: ['bar', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBarRnB);
	}
	
	if($("[name=bar]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['bar'] };
		var request = { bounds: bounds, keyword: ['bar', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBarPop);
	}
	
	if($("[name=adult]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['adult'] };
		var request = { bounds: bounds, keyword: ['adult', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesAdultRock);
	}
	
	if($("[name=adult]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['adult'] };
		var request = { bounds: bounds, keyword: ['adult', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesAdultHouse);
	}
	
	if($("[name=adult]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['adult'] };
		var request = { bounds: bounds, keyword: ['adult', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesAdultLatino);
	}
	
	if($("[name=adult]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['adult'] };
		var request = { bounds: bounds, keyword: ['adult', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesAdultRnB);
	}
	
	if($("[name=adult]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['adult'] };
		var request = { bounds: bounds, keyword: ['adult', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesAdultPop);
	}
	
	if($("[name=wine-bar]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['wine bar'] };
		var request = { bounds: bounds, keyword: ['wine bar', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesWineBarRock);
	}
	
	if($("[name=wine-bar]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['wine bar'] };
		var request = { bounds: bounds, keyword: ['wine bar', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesWineBarHouse);
	}
	
	if($("[name=wine-bar]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['wine bar'] };
		var request = { bounds: bounds, keyword: ['wine bar', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesWineBarLatino);
	}
	
	if($("[name=wine-bar]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['wine bar'] };
		var request = { bounds: bounds, keyword: ['wine bar', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesWineBarRnB);
	}
	
	if($("[name=wine-bar]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['wine bar'] };
		var request = { bounds: bounds, keyword: ['wine bar', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesWineBarPop);
	}
	
	if($("[name=beer-bar]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['beer bar'] };
		var request = { bounds: bounds, keyword: ['beer bar', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBeerBarRock);
	}
	
	if($("[name=beer-bar]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['beer bar'] };
		var request = { bounds: bounds, keyword: ['beer bar', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBeerBarHouse);
	}
	
	if($("[name=beer-bar]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['beer bar'] };
		var request = { bounds: bounds, keyword: ['beer bar', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBeerBarLatino);
	}
	
	if($("[name=beer-bar]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['beer bar'] };
		var request = { bounds: bounds, keyword: ['beer bar', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBeerBarRnB);
	}
	
	if($("[name=beer-bar]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['beer bar'] };
		var request = { bounds: bounds, keyword: ['beer bar', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesBeerBarPop);
	}
	
	if($("[name=gay]").attr("checked") == "checked" && $("[name=rock]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['gay'] };
		var request = { bounds: bounds, keyword: ['gay', 'rock'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesGayRock);
	}
	
	if($("[name=gay]").attr("checked") == "checked" && $("[name=house]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['gay'] };
		var request = { bounds: bounds, keyword: ['gay', 'house'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesGayHouse);
	}
	
	if($("[name=gay]").attr("checked") == "checked" && $("[name=latino]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['gay'] };
		var request = { bounds: bounds, keyword: ['gay', 'latino'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesGayLatino);
	}
	
	if($("[name=gay]").attr("checked") == "checked" && $("[name=rnb]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['gay'] };
		var request = { bounds: bounds, keyword: ['gay', 'rnb'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesGayRnB);
	}
	
	if($("[name=gay]").attr("checked") == "checked" && $("[name=pop]").attr("checked") == "checked") {
		var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, name: ['gay'] };
		var request = { bounds: bounds, keyword: ['gay', 'pop'], types: ['bar','cafe','night_club'] };
		service = new google.maps.places.PlacesService(mapmap);
		service.search(request, searchGooglePlacesGayPop);
	}
	
	// if($("[name=club]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// // var request = { bounds: bounds, name: ['club'] };
		// var request = { bounds: bounds, keyword: ['club'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesClub);
	// }
// 	
	// if($("[name=bar]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['bar'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesBar);
	// }
// 	
	// if($("[name=adult]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['adult+club'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesAdult);
	// }
// 	
	// if($("[name=wine-bar]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['wine+bar'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesWineBar);
	// }
// 	
	// if($("[name=beer-bar]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['bar'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesBeerBar);
	// }
// 	
	// if($("[name=gay]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['gay+club'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesGay);
	// }
// 	
	// if($("[name=rock]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['rock'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesRock);
	// }
// 
	// if($("[name=latino]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['latino'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesLatino);
	// }
// 	
	// if($("[name=house]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['house'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesHouse);
	// }
// 	
	// if($("[name=rnb]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['R&B'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesRnB);
	// }
// 	
	// if($("[name=pop]").attr("checked") == "checked") {
		// var bounds = mapmap.getBounds();
		// var request = { bounds: bounds, keyword: ['pop'], types: ['bar','cafe','night_club'] };
		// service = new google.maps.places.PlacesService(mapmap);
		// service.search(request, searchGooglePlacesPop);
	// }
}

function searchGooglePlacesClubRock(results, status) {
	searchGooglePlaces(results, status, "club", "Club", "Rock");
}

function searchGooglePlacesClubHouse(results, status) {
	searchGooglePlaces(results, status, "club", "Club", "House");
}

function searchGooglePlacesClubLatino(results, status) {
	searchGooglePlaces(results, status, "club", "Club", "Latino");
}

function searchGooglePlacesClubRnB(results, status) {
	searchGooglePlaces(results, status, "club", "Club", "R&B");
}

function searchGooglePlacesClubPop(results, status) {
	searchGooglePlaces(results, status, "club", "Club", "Pop");
}

function searchGooglePlacesBarRock(results, status) {
	searchGooglePlaces(results, status, "bar", "Bar", "Rock");
}

function searchGooglePlacesBarHouse(results, status) {
	searchGooglePlaces(results, status, "bar", "Bar", "House");
}

function searchGooglePlacesBarLatino(results, status) {
	searchGooglePlaces(results, status, "bar", "Bar", "Latino");
}

function searchGooglePlacesBarRnB(results, status) {
	searchGooglePlaces(results, status, "bar", "Bar", "R&B");
}

function searchGooglePlacesBarPop(results, status) {
	searchGooglePlaces(results, status, "bar", "Bar", "Pop");
}

function searchGooglePlacesAdultRock(results, status) {
	searchGooglePlaces(results, status, "adulti", "Adult", "Rock");
}

function searchGooglePlacesAdultHouse(results, status) {
	searchGooglePlaces(results, status, "adulti", "Adult", "House");
}

function searchGooglePlacesAdultLatino(results, status) {
	searchGooglePlaces(results, status, "adulti", "Adult", "Latino");
}

function searchGooglePlacesAdultRnB(results, status) {
	searchGooglePlaces(results, status, "adulti", "Adult", "R&B");
}

function searchGooglePlacesAdultPop(results, status) {
	searchGooglePlaces(results, status, "adulti", "Adult", "Pop");
}

function searchGooglePlacesWineBarRock(results, status) {
	searchGooglePlaces(results, status, "winebar", "Wine Bar", "Rock");
}

function searchGooglePlacesWineBarHouse(results, status) {
	searchGooglePlaces(results, status, "winebar", "Wine Bar", "House");
}

function searchGooglePlacesWineBarLatino(results, status) {
	searchGooglePlaces(results, status, "winebar", "Wine Bar", "Latino");
}

function searchGooglePlacesWineBarRnB(results, status) {
	searchGooglePlaces(results, status, "winebar", "Wine Bar", "R&B");
}

function searchGooglePlacesWineBarPop(results, status) {
	searchGooglePlaces(results, status, "winebar", "Wine Bar", "Pop");
}

function searchGooglePlacesBeerBarRock(results, status) {
	searchGooglePlaces(results, status, "beerbar", "Beer Bar", "Rock");
}

function searchGooglePlacesBeerBarHouse(results, status) {
	searchGooglePlaces(results, status, "beerbar", "Beer Bar", "House");
}

function searchGooglePlacesBeerBarLatino(results, status) {
	searchGooglePlaces(results, status, "beerbar", "Beer Bar", "Latino");
}

function searchGooglePlacesBeerBarRnB(results, status) {
	searchGooglePlaces(results, status, "beerbar", "Beer Bar", "R&B");
}

function searchGooglePlacesBeerBarPop(results, status) {
	searchGooglePlaces(results, status, "beerbar", "Beer Bar", "Pop");
}

function searchGooglePlacesGayRock(results, status) {
	searchGooglePlaces(results, status, "gay", "Gay", "Rock");
}

function searchGooglePlacesGayHouse(results, status) {
	searchGooglePlaces(results, status, "gay", "Gay", "House");
}

function searchGooglePlacesGayLatino(results, status) {
	searchGooglePlaces(results, status, "gay", "Gay", "Latino");
}

function searchGooglePlacesGayRnB(results, status) {
	searchGooglePlaces(results, status, "gay", "Gay", "R&B");
}

function searchGooglePlacesGayPop(results, status) {
	searchGooglePlaces(results, status, "gay", "Gay", "Pop");
}

// function searchGooglePlacesBar(results, status) {
	// searchGooglePlaces(results, status, "bar", "Bar");
// }
// 
// function searchGooglePlacesAdult(results, status) {
	// searchGooglePlaces(results, status, "adult", "Bar");
// }
// 
// function searchGooglePlacesWineBar(results, status) {
	// searchGooglePlaces(results, status, "winebar", "Wine Bar");
// }
// 
// function searchGooglePlacesBeerBar(results, status) {
	// searchGooglePlaces(results, status, "beerbar", "Beer Bar");
// }
// 
// function searchGooglePlacesGay(results, status) {
	// searchGooglePlaces(results, status, "gay", "Gay");
// }

// function searchGooglePlacesRock(results, status) {
	// searchGooglePlaces(results, status, "rock");
// }
// 
// function searchGooglePlacesLatino(results, status) {
	// searchGooglePlaces(results, status, "latino");
// }
// 
// function searchGooglePlacesHouse(results, status) {
	// searchGooglePlaces(results, status, "house");
// }
// 
// function searchGooglePlacesRnB(results, status) {
	// searchGooglePlaces(results, status, "rnb");
// }
// 
// function searchGooglePlacesPop(results, status) {
	// searchGooglePlaces(results, status, "pop");
// }

function searchGooglePlaces(results, status, icon, club_cat, music_cat) {
	if (status == google.maps.places.PlacesServiceStatus.OK) {
		// console.log(results);
		for (var i = 0; i < results.length; i++) {
			var place = results[i];
			markersmap.push(
				createMarker(
					mapmap,
					place.geometry.location,
					place.name,
					'<div class="tooltip-content">'+place.name+'\
					<a style="position: absolute; bottom: 0px; right: 0px;"\
						target="_top"\
						href="?params=en/user/create&user-type=pro">\
						owner?\
					</a><br />\
					Club Category: '+club_cat+'<br />\
					Music Category: '+music_cat+'<br />\
					Address: '+place.vicinity+'<br />\
					</div>',
					map_settings["marker_icons"]["std"][icon], 
					'',
					'',
				'')
			);
		}
	}
	// $("#mapmap > div:nth-child(n+3)").hide();
	var loop = 0;
	$("#mapmap div:first").children().each(function() {
		if(loop >= 5) {
			$(this).hide();
		}
		loop++;
	});
}

function clearOverlays(remove_current_markers) {
	if (markersmap) {
		for (i in markersmap) {
			markersmap[i].setMap(null);
		}
	}
}

function createMarker(map,point,title,html,icon,icon_shadow,sidebar_id,openers) {
	var marker_options= {
		position:point,
		map:map,
		title:title
	};
	if(icon!='') {
		marker_options.icon=icon;
	}
	if(icon_shadow!='') {
		marker_options.icon_shadow=icon_shadow;
	}
	var new_marker=new google.maps.Marker(marker_options);
	if(html!='') {
		google.maps.event.addListener(new_marker,'click', function() {
			infowindow.setContent(html);
			infowindow.open(map,new_marker);
		});
		if(openers!=''&&!isEmpty(openers)) {
			for(var i in openers) {
				var opener=document.getElementById(openers[i]);
				opener.onclick= function() {
					infowindow.open(map,new_marker);
					return false
				};
			}
		}
		if(sidebar_id!='') {
			var sidebar=document.getElementById(sidebar_id);
			if(sidebar!=null&&sidebar!=undefined&&title!=null&&title!='') {
				var newlink=document.createElement('a');
				newlink.onclick= function() {
					infowindow.open(map,new_marker);
					return false
				};
				newlink.innerHTML=title;
				sidebar.appendChild(newlink);
			}
		}
	}
	return new_marker;
}

function isArray(a) {
	return isObject(a)&&a.constructor==Array;
}

function isObject(a) {
	return(a&&typeof a=='object')||isFunction(a);
}

function isFunction(a) {
	return typeof a=='function';
}

function isEmpty(obj) {
	for(var i in obj) {
		return false;
	}
	return true;
}
