var retailers_gmap = null;

Drupal.theme.prototype.neova_retailers_list_item = function(html, first, last, delta) {
	return ['<li class="views-row views-row-', delta, ' views-row-', (delta % 2? 'odd': 'even'), (first? ' views-row-first': ''), (last? ' views-row-last': ''), '">', html, '</li>'].join('');
}

Drupal.behaviors.neova_retailers_gmap = function(context) {
	//Display content first after submit
	$('#neova-retailers-region-selector-form #edit-regions', context).change(function(){
			var $block = $('#block-views-retailers_gmap-block_1');
			if($block.length && 'neova_retailers_gmap' in Drupal.settings && retailers_gmap == null) {
				var map_wrap = $block.show().find('.view-retailers-gmap .view-content').empty().get(0);
				retailers_gmap = neova_retailers_map_init(map_wrap);
				google.maps.event.addListener(retailers_gmap, 'bounds_changed', function() {
						var retailers_show = [];
						for(node in Drupal.settings.neova_product_retailer_nodes) {
							if(node in Drupal.settings.neova_retailers_gmap) {
								var retailer = Drupal.settings.neova_retailers_gmap[node];
								if(retailers_gmap.getBounds().contains(new google.maps.LatLng(retailer.lat, retailer.lng))) {
									retailers_show.push(Drupal.settings.neova_product_retailer_nodes[node]);
								}
							}
						}
						var retailers_html = [];
						for(i in retailers_show) {
							retailers_html.push(Drupal.theme('neova_retailers_list_item', retailers_show[i], parseInt(i) === 0, (parseInt(i) === retailers_show.length - 1), parseInt(i) + 1));
						}
						var $retailers_block = $('#block-views-product_retailers-block_1').show();
						$('.view-product-retailers ol', $retailers_block).html(retailers_html.join(''));
					}
				);
			}
			//Check witch retailes to display
			var region = Drupal.settings.neova_retailer_regions['node_' + this.value];
			var new_center = new google.maps.LatLng(parseFloat(region.lat), parseFloat(region.lng));
			retailers_gmap.setCenter(new_center);
			retailers_gmap.setZoom(parseInt(region.zoom));
		}
	);

	/*	
	 if(!$('.view-empty', context).length) {
	 $('#content-bottom .node-type-product .title').each(function(){
	 $(this).html($(this).children().eq(0).text()).show();
 });
 var $map_wrap = $('.view-retailers-gmap .view-content', context).empty();
 var map_wrap = $map_wrap[0];
 neova_retailers_map = neova_retailers_map_init(map_wrap);

 if('neova_retailers_gmap_region' in Drupal.settings) {
 region = Drupal.settings.neova_retailers_gmap_region;
 var new_center = new google.maps.LatLng(parseFloat(region.lat), parseFloat(region.lng));
 neova_retailers_map.setCenter(new_center);
 neova_retailers_map.setZoom(parseInt(region.zoom));
			}
			//neova_get_shit
		}
		*/
}

function neova_retailers_map_init(map_wrap) {

	// setting defaults in two diffeent places, bad bad bad
	var options = {
		//zoom: 4,
		//center: default_latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	function addMarker(map, latlng, content) {
		var marker = new google.maps.Marker({
				position : 	latlng,
				map: map
			});
		var info_window = new google.maps.InfoWindow({
				content: content
			});

		google.maps.event.addListener(marker, 'click', function() {
				info_window.open(map, marker);
			});
		return marker;
	}

	var map = new google.maps.Map(map_wrap, options);

	var map_markers = [];
	var marker_settings = {};
	for(i in Drupal.settings.neova_retailers_gmap) {
		marker_settings = Drupal.settings.neova_retailers_gmap[i];
		marker_latlng = new google.maps.LatLng(marker_settings.lat, marker_settings.lng);
		map_markers[i] = addMarker(map, marker_latlng, marker_settings.content);
	}
	return map;
}
