/*
	http://metro.deeptext.ru/
	(c) DeepText
	mail@deeptext.ru
	January 12, 2008
*/

var stations = [
	[[19791230, 666, 404, 8, 'Авиамоторная']],
	[[19430101, 550, 596, 2, 'Завод имени Сталина'], [19560705, 550, 596, 2, 'Автозаводская']],
	[[19621013, 211, 612, 6, 'Академическая']],
	[[19350515, 274, 426, 1, 'Коминтерн'], [19380313, 274, 426, 3, 'Коминтерн'], [19461224, 274, 426, 3, 'Калининская'], [19530405, 274, 426, 4, 'Калининская', 'closed'], [19580101, 274, 426, 4, 'Калининская'], [19901105, 274, 426, 4, 'Александровский сад']],
	[[19580501, 470, 109, 6, 'Мир'], [19660620, 470, 109, 6, 'Щербаковская'], [19901105, 470, 109, 6, 'Алексеевская']],
	[[19940715, 345, 0, 9, 'Алтуфьево']],
	[[20011212, 362, 730, 9, 'Аннино']],
	[[19530405, 274, 436, 3, 'Арбатская']],
	[[19350515, 247, 400, 1, 'Арбатская'], [19380313, 247, 400, 3, 'Арбатская'], [19530405, 247, 400, 4, 'Арбатская', 'closed'], [19580101, 247, 400, 4, 'Арбатская']],
	[[19380911, 242, 109, 2, 'Аэропорт']],
	[[19780929, 470, 45, 6, 'Бабушкинская']],
	[[19611013, 30, 304, 4, 'Багратионовская']],
	[[19721230, 182, 255, 7, 'Баррикадная']],
	[[19440118, 610, 320, 3, 'Бауманская']],
	[[19721230, 125, 184, 7, 'Беговая']],
	[[19380911, 242, 193, 2, 'Белорусская']],
	[[19520130, 242, 183, 5, 'Белорусская']],
	[[19740812, 211, 678, 6, 'Беляево']],
	[[19921231, 345, 16, 9, 'Бибирево']],
	[[19350515, 274, 446, 1, 'Библиотека имени Ленина']],
	[[19900117, 211, 742, 6, 'Битцевский парк'], [20080606, 211, 742, 6, 'Новоясеневская']],
	[[19860123, 274, 416, 9, 'Боровицкая']],
	[[19780929, 470, 77, 6, 'Ботанический сад']],
	[[19961225, 685, 708, 10, 'Братиславская']],
	[[20021226, 362, 746, 9, 'Бульвар Дмитрия Донского']],
	[[19580501, 470, 93, 6, 'ВСХВ'], [19591212, 470, 93, 6, 'ВДНХ']],
	[[19690811, 472, 639, 2, 'Варшавская'], [19951120, 472, 639, 11, 'Варшавская']],
	[[19910301, 345, 48, 9, 'Владыкино']],
	[[19641231, 242, 61, 2, 'Водный стадион']],
	[[19641231, 242, 77, 2, 'Войковская']],
	[[19661231, 634, 541, 7, 'Волгоградский проспект']],
	[[19951228, 685, 676, 10, 'Волжская']],
	[[19590112, 61, 671, 1, 'Ленинские горы'], [19831020, 61, 671, 1, 'Ленинские горы', 'closed'], [19990512, 61, 671, 1, 'Воробьевы горы', 'closed'], [20021214, 61, 671, 1, 'Воробьевы горы']],
	[[19661231, 698, 605, 7, 'Ждановская'], [19890113, 698, 605, 7, 'Выхино']],
	[[20050910, 136, 304, 4, 'Деловой центр'], [20080606, 136, 304, 4, 'Выставочная']],
	[[19380911, 242, 125, 2, 'Динамо']],
	[[19910301, 345, 109, 9, 'Дмитровская']],
	[[19500101, 362, 559, 5, 'Добрынинская']],
	[[19850907, 550, 692, 2, 'Домодедовская']],
	[[19991211, 685, 626, 10, 'Дубровка']],
	[[19541105, 672, 257, 3, 'Первомайская (в депо)'], [19611021, 674, 256, 3, 'Измайловский парк'], [19630820, 674, 256, 3, 'Измайловская']],
	[[19640415, 211, 662, 6, 'Калужская (в депо)'], [19740812, 211, 662, 6, 'Калужская']],
	[[19841230, 550, 644, 2, 'Кантемировская'], [19841231, 550, 644, 2, 'Кантемировская', 'closed'], [19850209, 550, 644, 2, 'Кантемировская']],
	[[19690811, 462, 650, 2, 'Каховская'], [19831108, 462, 650, 2, 'Каховская'], [19951120, 462, 650, 11, 'Каховская']],
	[[19690811, 550, 628, 2, 'Каширская']],
	[[19841231, 482, 628, 2, 'Каширская'], [19951120, 482, 628, 11, 'Каширская']],
	[[19530405, 157, 403, 3, 'Киевская']],
	[[19540314, 157, 393, 5, 'Киевская']],
	[[19370320, 157, 383, 1, 'Киевская'], [19380313, 157, 383, 3, 'Киевская'], [19530405, 157, 383, 4, 'Киевская', 'closed'], [19580101, 157, 383, 4, 'Киевская']],
	[[19710105, 486, 383, 6, 'Площадь Ногина', 'half'], [19751217, 486, 383, 6, 'Площадь Ногина'], [19901105, 486, 383, 6, 'Китай-город']],
	[[19710105, 486, 393, 7, 'Площадь Ногина', 'half'], [19751217, 486, 393, 7, 'Площадь Ногина'], [19901105, 486, 393, 7, 'Китай-город']],
	[[19951228, 685, 642, 10, 'Кожуховская']],
	[[19690811, 550, 612, 2, 'Коломенская']],
	[[19350515, 545, 255, 1, 'Комсомольская']],
	[[19520130, 545, 265, 5, 'Комсомольская']],
	[[19871106, 211, 694, 6, 'Коньково']],
	[[19850907, 550, 708, 2, 'Красногвардейская']],
	[[19540314, 182, 245, 5, 'Краснопресненская']],
	[[19350515, 619, 181, 1, 'Красносельская']],
	[[19350515, 515, 285, 1, 'Красные ворота'], [19620529, 515, 285, 1, 'Лермонтовская'], [19860825, 515, 285, 1, 'Красные ворота']],
	[[19951228, 618, 515, 10, 'Крестьянская застава']],
	[[19350515, 225, 463, 1, 'Дворец Советов'], [19571008, 225, 463, 1, 'Кропоткинская']],
	[[19891231, 14, 224, 4, 'Крылатское'], [20080108, 14, 224, 3, 'Крылатское']],
	[[19751217, 393, 360, 7, 'Кузнецкий мост']],
	[[19661231, 666, 573, 7, 'Кузьминки']],
	[[19650705, 14, 256, 4, 'Кунцевская', 'closed'], [19650831, 14, 256, 4, 'Кунцевская'], [20080108, 14, 256, 3, 'Кунцевская']],
	[[19380313, 564, 350, 3, 'Курская']],
	[[19500101, 564, 360, 5, 'Курская']],
	[[19581107, 30, 336, 4, 'Кутузовская']],
	[[19621013, 211, 596, 6, 'Ленинский проспект']],
	[[19350515, 393, 370, 1, 'Дзержинская'], [19901105, 393, 370, 1, 'Лубянка']],
	[[19961225, 685, 692, 10, 'Люблино']],
	[[19791230, 544, 461, 8, 'Марксистская']],
	[[19961225, 685, 725, 10, 'Марьино']],
	[[19380911, 316, 268, 2, 'Маяковская']],
	[[19780929, 470, 29, 6, 'Медведково']],
	[[20060830, 136, 288, 4, 'Международная']],
	[[19881231, 345, 158, 9, 'Менделеевская']],
	[[19650705, 14, 240, 4, 'Молодежная'], [20080108, 14, 240, 3, 'Молодежная']],
	[[19831108, 362, 596, 9, 'Нагатинская']],
	[[19831108, 362, 612, 9, 'Нагорная']],
	[[19831108, 362, 628, 9, 'Нахимовский<br />проспект']],
	[[19791230, 713, 356, 8, 'Новогиреево']],
	[[19430101, 430, 447, 2, 'Ново-кузнецкая'], [19431120, 430, 447, 2, 'Новокузнецкая']],
	[[19520130, 345, 147, 5, 'Новослободская']],
	[[19621013, 211, 645, 6, 'Новые Черемушки']],
	[[19621013, 265, 528, 6, 'Октябрьская']],
	[[19500101, 265, 538, 5, 'Калужская'], [19610606, 265, 538, 5, 'Октябрьская']],
	[[19721230, 125, 152, 7, 'Октябрьское поле']],
	[[19841230, 550, 676, 2, 'Орехово'], [19841231, 550, 676, 2, 'Орехово', 'closed'], [19850209, 550, 676, 2, 'Орехово']],
	[[19910301, 345, 32, 9, 'Отрадное']],
	[[19350515, 370, 392, 1, 'Охотный ряд'], [19380313, 370, 392, 1, 'Охотный ряд'], [19551125, 370, 392, 1, 'Имени Л. М. Кагановича'], [19570901, 370, 392, 1, 'Охотный ряд'], [19611130, 370, 392, 1, 'Проспект Маркса'], [19901105, 370, 392, 1, 'Охотный ряд']],
	[[19430101, 503, 509, 2, 'Павелецкая', 'closed'], [19431120, 503, 509, 2, 'Павелецкая']],
	[[19500101, 503, 499, 5, 'Павелецкая']],
	[[19350515, 206, 482, 1, 'Парк культуры']],
	[[19500101, 206, 492, 5, 'Парк культуры']],
	[[20030506, 30, 403, 3, 'Парк Победы']],
	[[19440118, 658, 272, 3, 'Измайловская'], [19630820, 658, 272, 3, 'Измайловский парк'], [20050503, 658, 272, 3, 'Партизанская']],
	[[19611021, 690, 240, 3, 'Первомайская']],
	[[19791230, 698, 372, 8, 'Перово']],
	[[19910301, 345, 68, 9, 'Петровско-<br />Разумовская']],
	[[19951228, 685, 658, 10, 'Печатники']],
	[[19611013, 30, 272, 4, 'Пионерская'], [20080108, 30, 272, 4, 'Пионерская']],
	[[19751230, 125, 88, 7, 'Планерная']],
	[[19791230, 618, 451, 8, 'Площадь Ильича']],
	[[19380313, 370, 402, 3, 'Площадь Революции']],
	[[19721230, 125, 168, 7, 'Полежаевская']],
	[[19860123, 362, 502, 9, 'Полянка']],
	[[19851106, 362, 698, 9, 'Пражская']],
	[[19651231, 619, 149, 1, 'Преображенская площадь']],
	[[19661231, 618, 525, 7, 'Пролетарская']],
	[[19631230, 61, 703, 1, 'Проспект Вернадского']],
	[[19580501, 470, 168, 6, 'Ботанический сад'], [19660620, 470, 168, 6, 'Проспект Мира']],
	[[19520130, 470, 178, 5, 'Ботанический сад'], [19660620, 470, 178, 5, 'Проспект Мира']],
	[[19621013, 211, 628, 6, 'Профсоюзная']],
	[[19751217, 316, 343, 7, 'Пушкинская']],
	[[19641231, 242, 45, 2, 'Речной вокзал']],
	[[19580501, 470, 125, 6, 'Рижская']],
	[[19951228, 618, 441, 10, 'Римская']],
	[[19661231, 682, 589, 7, 'Рязанский проспект']],
	[[19881231, 345, 125, 9, 'Савеловская']],
	[[19780929, 470, 61, 6, 'Свиблово']],
	[[19831108, 362, 650, 9, 'Севастопольская']],
	[[19440118, 642, 288, 3, 'Сталинская'], [19611130, 642, 288, 3, 'Семеновская'], [20050515, 642, 288, 3, 'Семеновская', 'closed'], [20060428, 642, 288, 3, 'Семеновская']],
	[[19831108, 362, 549, 9, 'Серпуховская']],
	[[19530405, 179, 425, 3, 'Смоленская']],
	[[19350515, 230, 383, 1, 'Смоленская'], [19380313, 230, 383, 3, 'Смоленская'], [19530405, 230, 383, 4, 'Смоленская', 'closed'], [19580101, 230, 383, 4, 'Смоленская']],
	[[19380911, 242, 93, 2, 'Сокол']],
	[[19350515, 619, 165, 1, 'Сокольники']],
	[[19570501, 61, 655, 1, 'Спортивная']],
	[[20071229, 470, 319, 10, 'Сретенский бульвар']],
	[[20080107, 14, 209, 4, 'Строгино'], [20080108, 14, 209, 3, 'Строгино']],
	[[19581107, 30, 352, 4, 'Студенческая']],
	[[19711231, 470, 220, 6, 'Колхозная'], [19901105, 470, 220, 6, 'Сухаревская']],
	[[19751230, 125, 104, 7, 'Сходненская']],
	[[19661231, 544, 451, 7, 'Таганская']],
	[[19500101, 544, 441, 5, 'Таганская']],
	[[19790720, 316, 333, 2, 'Горьковская'], [19901105, 316, 333, 2, 'Тверская']],
	[[19380911, 370, 412, 2, 'Площадь Свердлова'], [19901105, 370, 412, 2, 'Театральная']],
	[[19661231, 650, 557, 7, 'Текстильщики']],
	[[19871106, 211, 710, 6, 'Теплый Стан']],
	[[19910301, 345, 93, 9, 'Тимирязевская']],
	[[19710105, 430, 437, 6, 'Новокузнецкая'], [19831104, 430, 437, 6, 'Третьяковская']],
	[[19860125, 430, 457, 8, 'Третьяковская']],
	[[20070830, 345, 194, 10, 'Трубная']],
	[[19831108, 362, 580, 9, 'Тульская']],
	[[19711231, 470, 339, 6, 'Тургеневская']],
	[[19751230, 125, 120, 7, 'Тушинская']],
	[[19721230, 125, 200, 7, 'Улица 1905 года']],
	[[19900801, 619, 117, 1, 'Улица Подбельского']],
	[[20000831, 362, 714, 9, 'Улица академика Янгеля']],
	[[19590112, 61, 686, 1, 'Университет']],
	[[19611013, 30, 288, 4, 'Филевский парк']],
	[[19591107, 30, 320, 4, 'Фили']],
	[[19570501, 61, 639, 1, 'Фрунзенская']],
	[[19841230, 550, 660, 2, 'Ленино'], [19841231, 550, 660, 2, 'Ленино', 'closed'], [19850209, 550, 660, 2, 'Ленино'], [19901105, 550, 660, 2, 'Царицыно']],
	[[19881231, 345, 184, 9, 'Цветной бульвар']],
	[[19900801, 619, 133, 1, 'Черкизовская']],
	[[19831108, 362, 666, 9, 'Чертановская']],
	[[19871231, 316, 323, 9, 'Чеховская']],
	[[19350515, 470, 329, 1, 'Кировская'], [19901105, 470, 329, 1, 'Чистые пруды']],
	[[19951228, 564, 370, 10, 'Чкаловская']],
	[[19801105, 211, 580, 6, 'Шаболовская']],
	[[19791230, 682, 388, 8, 'Шоссе Энтузиастов']],
	[[19630722, 706, 224, 3, 'Щелковская']],
	[[19751230, 125, 136, 7, 'Щукинская']],
	[[19440515, 626, 304, 3, 'Электрозаводская'], [20070519, 626, 304, 3, 'Электрозаводская', 'closed'], [20081128, 626, 304, 3, 'Электрозаводская']],
	[[19631230, 61, 719, 1, 'Юго-Западная']],
	[[19831108, 362, 682, 9, 'Южная']],
	[[19900117, 211, 726, 6, 'Ясенево']],
	[[20031227, 362, 756, 12, 'Улица Старокачаловская']],
	[[20031227, 362, 770, 12, 'Улица Скобелевская']],
	[[20031227, 362, 786, 12, 'Бульвар адмирала Ушакова']],
	[[20031227, 362, 802, 12, 'Улица Горчакова']],
	[[20031227, 362, 818, 12, 'Бунинская аллея']]
];

var sliderHeight = 810;
var calendar = {start: 19350515};
var line_drawings = new Array();
var slider;
var month_name = ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'];

function BuildMap(when) {
	var stations_area = document.getElementById('metro-stations');
	var lines_area = document.getElementById('metro-lines');
	if (!stations_area || !lines_area) return;

	if (!when) {
		when = document.location.hash ? document.location.hash.substr(1) : calendar.today;
	}
	if (when.length != 8) return;

	var lines = new Array();
	var html = '';
	
	for (var c = 0; c != stations.length; c++) {
		var station_html = '';
		var station_history = stations[c];
		for (var t = station_history.length - 1; t >= 0; t--) {
			var station = station_history[t];

			var station_date = station[0];
			var station_left = station[1];
			var station_top  = station[2];
			var station_line = station[3];
			var station_name = station[4];

			if (station_date <= when) {
				var is_renamed_or_modified = 
					   (t && station_name   != station_history[t - 1][4]  )
					|| (t && station.length != station_history[t-1].length);

				if (
						    !lines[station_line] 
						|| (!is_renamed_or_modified && lines[station_line] < station_date)
					) {

					lines[station_line] = station_date;
				}

				if (!station_html) {
					if (station.length > 5)
						station_name = '<span class="' + station[5] + '">' + station_name + '</span>';
					station_html 
						= '<div style="left:' + station_left + ';top:' + station_top + '">' + station_name + '</div>\n'
						+  '<div class="ln' + station_line + '" style="left:' + (station_left - 11) + ';top:' + station_top + '">&nbsp;</div>';
				}
			}		
		}
		html += station_html;
	}
	stations_area.innerHTML = html;

	if (!line_drawings.length) createLineBoxes(lines.length);
	line_drawings[5].style.backgroundImage = lines[5] ? 'url(\'img/ln5-' + lines[5] + '.gif\')' : 'none';
	for (var c = 1; c < line_drawings.length; c++) {
		if (c != 5) line_drawings[c].style.backgroundImage = lines[c] ? 'url(\'img/ln' + c + '-' + lines[c] + '.gif\')' : 'none';
	}
}

function createLineBoxes (count) {
	var lines_area = document.getElementById('metro-lines');
	if (!lines_area) return;

	var lines_html = '';
	for (var c = 1; c != count; c++) {
		lines_html += '<div class="line" id="ld' + c + '" />';
	}
	lines_area.innerHTML = lines_html;

	for (var c = 1; c != count; c++) {
		line_drawings[c] = document.getElementById('ld' + c);
	}
}

function sliderInit() {
	slider = YAHOO.widget.Slider.getVertSlider("sliderbg", "sliderthumb", 0, sliderHeight);

	var now = new Date();
	calendar.today
		= now.getFullYear() + ''
		+ (now.getMonth() < 9 ? '0' + (now.getMonth() + 1) : now.getMonth() + 1)
		+ (now.getDate() < 10 ? '0' + now.getDate() : now.getDate());
	calendar.today = '20081128';
	calendar.startyear = +(calendar.start + '').substr(0, 4); 
	calendar.startmonth = +(calendar.start + '').substr(4, 2) - 1; 
	calendar.coef = (12 * (now.getFullYear() - calendar.startyear) + now.getMonth() - calendar.startmonth) / sliderHeight;
	calendar.current = calendar.today;
	calendar.whatthedate = document.getElementById('whatthedate');

	slider.subscribe("change", updateSliderAndMap);

	slider.setValue(sliderHeight); // TODO: depends on today from hash
}

function updateSliderAndMap (offset) {
	var months = offset * calendar.coef;
	var year = parseInt ((months / 12) + calendar.startyear);
	var month = parseInt (months - 12 * (year - calendar.startyear)) + calendar.startmonth;
	if (month >= 12) {
		month = 0;
		year++;
	}

	if (calendar.whatthedate) {
		calendar.whatthedate.innerHTML = month_name[month] + '<br />' + year;
		calendar.whatthedate.style.top = offset - 22;
	}

	var position = '' + year + (month < 9 ? '0' + (month + 1): month + 1)+ '15'; // sucks
	if (position != calendar.current) {
		if (offset == sliderHeight) position = calendar.today;
		BuildMap(position);
		calendar.current = position;
	}
}
