/* Copyright 2010 Moe-Tvoe.Ru */
var MT = {
	map : null,
	markers: [],
	reload_map_pts : function() {
		var bounds = MT.map.getBounds();
		if (MT.map.getZoom() < 11) {
			$('#books').html('<div class="attn">Пожалуйста, выберите более мелкий масштаб карты для отображения доступных книг</div>');
			for (var i = 0; i < MT.markers.length; i++)
				MT.map.removeOverlay(MT.markers[i]);
		} else {
			loadXMLDoc('/ajax/map_pts/nearest/' + [bounds.getBottom(), bounds.getLeft(), bounds.getTop(), bounds.getRight()].join(','), 2);
		}
	},
	initialize : function() {
		MT.reload_map_pts();
	},
	h_Update : function() {
		MT.reload_map_pts();
	},
	h_DragEnd : function() {
		MT.reload_map_pts();
	},
	set_markers : function(map_pts) {
		for (var i = 0; i < MT.markers.length; i++)
			if (!MT.map.getBounds().contains(MT.markers[i].getCoordPoint()))
				MT.map.removeOverlay(MT.markers[i]);

		for (var i = 0; i < map_pts.length; i++) {
			var mp = map_pts[i];
			var pt = new YMaps.GeoPoint(mp.lng, mp.lat);

			var marker = new YMaps.Placemark(pt, { style: eval(mp.icon), hasHint: true, hideIcon: false });
			var content = document.createElement('div');
			content.innerHTML = mp.content;
			marker.setBalloonContent(content);
			marker.setHintContent(mp.description);
			YMaps.Events.observe(marker, marker.Events.BalloonClose, MT.reload_map_pts);

			MT.markers.push(marker);
			MT.map.addOverlay(marker);
		}
	},
	set_books : function(books) {
		if (books.length == 0) {
			$('#books').html('<div class="attn">Здесь пока никто не обменивается книгами. <a href="/new_lot/">Добавить свою книгу на сайт</a></div>');
			return;
		}

		var tbl = $('#books_tbl');

		if (tbl.length == 0) {
			tbl = $('<table id="books_tbl" class="pad5" style="border-spacing: 3px 3px; margin: 10px 0px; width: 100%;"></table>')
				.append('<thead>')
			$('#books').html(tbl);
			tbl.find('thead').append($('<tr><th colspan="2">Книга</th><th>Желание владельца</th></tr>'));
		} else {
			tbl.find('tbody').remove();
			tbl.find('tfoot').remove();
			$('#books_pager').remove();
		}

		var tbody;
		for (var i = 0; i < books.length; i++) {
			if (i % 10 == 0) {
				tbody = $('<tbody id="books_page_' + ((i / 10) + 1) + '">').appendTo(tbl);
				if (i != 0)
					tbody.css('display', 'none');
			}
			var b = books[i];
			tbody.append(
					$('<tr></tr>')
					.append('<td>' + b.img + '</td>')
					.append('<td>' + b.name + '</td>')
					.append('<td>' + b.wants + '</td>')
			       );
		}

		var tfoot = $('<tfoot>').appendTo(tbl);
		tfoot.append(
				$('<tr>')
				.append('<th colspan=3>Найдено книг: ' + books.length + '</th>')
			    );


		if (books.length > 10) {
			var pager = $('<div id="books_pager" class="pager"></div>');

			function make_pager(i) {
				return function() {
					$('#books_page_' + i).css('display', 'table-row-group');
					tbl.find('tbody:not(#books_page_' + i + ')').css('display', 'none');

					pager.find('span.pager_active').css('display', 'none');
					pager.find('a.page').css('display', 'inline');

					$('#page_' + i + '_active').css('display', 'inline');
					$('#page_' + i + '_link').css('display', 'none');

					document.location = '#books_tbl';

					return false;
				}
			}

			for (var i = 0; i < books.length / 10; i++) {
				var container = $('<span id="page_' + (i + 1) + '" class="container"></span>').appendTo(pager);
				pager.append(' ');
				var active = $('<span id="page_' + (i + 1) + '_active" class="pager_active">' + (i + 1) + '</span>').appendTo(container);
				if (i > 0)
					active.css('display', 'none');

				var link = $('<a id="page_' + (i + 1) + '_link" href="" class="page">' + (i + 1) + '</a>')
					.appendTo(container)
					.bind('click', make_pager(i+1));
				if (i == 0)
					link.css('display', 'none');
			}
			pager.appendTo('#books');
		}
	}
}

